diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2020-02-03 16:35:28 +0100 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2020-02-03 16:35:28 +0100 |
| commit | dd3485c57a0ef7ffa5e00edc9fb9937004f3ca54 (patch) | |
| tree | 7b48142d1eec3e61318e9de4f9b3addfc688bfd7 /src | |
| parent | b8ab77e39c01b9019edaeaa09d5d08c7b21f75ab (diff) | |
Fix regression calling fl_font() w/o draw context
According to the documentation fl_font(face, size) may be called
"outside a draw context if necessary to call fl_width()".
This worked in 1.3.5 but did not in 1.4 (so far). I reworded the
docs to make clear that other measurement functions can be called
as well and refactored the code to make sure that fl_font(face, size)
will open the display if necessary.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_Graphics_Driver.cxx | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/Fl_Graphics_Driver.cxx b/src/Fl_Graphics_Driver.cxx index 0fbe80106..3d1b720cd 100644 --- a/src/Fl_Graphics_Driver.cxx +++ b/src/Fl_Graphics_Driver.cxx @@ -557,6 +557,22 @@ void Fl_Graphics_Driver::rtl_draw(const char *str, int nChars, int x, int y) { /** Returns non-zero if the graphics driver possesses the \p feature */ int Fl_Graphics_Driver::has_feature(driver_feature feature) { return 0; } +/** + Sets the current font, which is then used in various drawing routines. + You may call this outside a draw context if necessary to measure text, + for instance by calling fl_width(), fl_measure(), or fl_text_extents(), + but on X this will open the display. + + The font is identified by a \p face and a \p size. + The size of the font is measured in pixels and not "points". + Lines should be spaced \p size pixels apart or more. +*/ +void fl_font(Fl_Font face, Fl_Fontsize fsize) { + if (!fl_graphics_driver) + fl_open_display(); + fl_graphics_driver->font(face, fsize); +} + /** see fl_font(Fl_Font, Fl_Fontsize) */ void Fl_Graphics_Driver::font(Fl_Font face, Fl_Fontsize fsize) {font_ = face; size_ = fsize;} |
