summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FL/fl_draw.H9
-rw-r--r--src/fl_draw.cxx25
2 files changed, 26 insertions, 8 deletions
diff --git a/FL/fl_draw.H b/FL/fl_draw.H
index f10bcaa7c..ea2d315fb 100644
--- a/FL/fl_draw.H
+++ b/FL/fl_draw.H
@@ -203,14 +203,7 @@ inline Fl_Fontsize fl_size() {return fl_size_;}
You can also use the value of \p size passed to fl_font()
*/
FL_EXPORT int fl_height(); // using "size" should work ok
-/**
- Dummy passthru function called only in Fl_Text_Display that simply returns
- the font height as given by the \p size parameter in the same call!
-
- \todo Is fl_height(int, int size) required for Fl_Text_Dispay?
- Why not use \p size parameter directly?
-*/
-inline int fl_height(int, int size) {return size;}
+FL_EXPORT int fl_height(int font, int size);
/**
Returns the recommended distance above the bottom of a fl_height() tall box to
draw the text at so it looks centered vertically in that box.
diff --git a/src/fl_draw.cxx b/src/fl_draw.cxx
index 061b50e77..65f554f6b 100644
--- a/src/fl_draw.cxx
+++ b/src/fl_draw.cxx
@@ -422,6 +422,31 @@ void fl_measure(const char* str, int& w, int& h, int draw_symbols) {
h = lines*h;
}
+/**
+ This function returns the actual height of the specified \p font
+ and \p size. Normally the font height should always be 'size',
+ but with the advent of XFT, there are (currently) complexities
+ that seem to only be solved by asking the font what its actual
+ font height is. (See STR#2115)
+
+ This function was originally undocumented in 1.1.x, and was used
+ only by Fl_Text_Display. We're now documenting it in 1.3.x so that
+ apps that need precise height info can get it with this function.
+
+ \returns the height of the font in pixels.
+
+ \todo In the future, when the XFT issues are resolved, this function
+ should simply return the 'size' value.
+*/
+int fl_height(int font, int size) {
+ if ( font == fl_font() && size == fl_size() ) return(fl_height());
+ int tf = fl_font(), ts = fl_size(); // save
+ fl_font(font,size);
+ int height = fl_height();
+ fl_font(tf,ts); // restore
+ return(height);
+}
+
//
// End of "$Id$".
//