summaryrefslogtreecommitdiff
path: root/src/Fl_Graphics_Driver.cxx
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2020-02-03 16:35:28 +0100
committerAlbrecht Schlosser <albrechts.fltk@online.de>2020-02-03 16:35:28 +0100
commitdd3485c57a0ef7ffa5e00edc9fb9937004f3ca54 (patch)
tree7b48142d1eec3e61318e9de4f9b3addfc688bfd7 /src/Fl_Graphics_Driver.cxx
parentb8ab77e39c01b9019edaeaa09d5d08c7b21f75ab (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/Fl_Graphics_Driver.cxx')
-rw-r--r--src/Fl_Graphics_Driver.cxx16
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;}