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$". //