diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2021-02-25 11:06:54 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2021-02-25 11:07:07 +0100 |
| commit | 5bd467fa17be55397f433dddc065b57cbb7a0615 (patch) | |
| tree | 6698febfde050bf76f84873ea749b031467d7cbb /FL | |
| parent | bef46b5cb82464713a117b9bdb920735d1b7de37 (diff) | |
Add fl_remove_scale()/fl_restore_scale() to transiently draw without scaling factor.
This new API is a response to this message in fltk.general :
Can custom box type functions handle their own high-DPI screen scaling?
Diffstat (limited to 'FL')
| -rw-r--r-- | FL/Fl_Device.H | 4 | ||||
| -rw-r--r-- | FL/Fl_Graphics_Driver.H | 4 | ||||
| -rw-r--r-- | FL/fl_draw.H | 5 |
3 files changed, 12 insertions, 1 deletions
diff --git a/FL/Fl_Device.H b/FL/Fl_Device.H index c03219b70..e1b80adab 100644 --- a/FL/Fl_Device.H +++ b/FL/Fl_Device.H @@ -81,7 +81,9 @@ public: /** \brief Returns the graphics driver of this drawing surface. */ inline Fl_Graphics_Driver *driver() {return pGraphicsDriver; }; /** The current drawing surface. - In other words, the Fl_Surface_Device object that currently receives all graphics requests */ + In other words, the Fl_Surface_Device object that currently receives all graphics requests + \note It's possible to transiently remove the GUI scaling factor in force in the current + drawing surface with \ref fl_remove_scale(). */ static inline Fl_Surface_Device *surface() { return surface_ ? surface_ : default_surface(); }; diff --git a/FL/Fl_Graphics_Driver.H b/FL/Fl_Graphics_Driver.H index 8a7a93b6f..fdebd1d50 100644 --- a/FL/Fl_Graphics_Driver.H +++ b/FL/Fl_Graphics_Driver.H @@ -364,6 +364,8 @@ public: virtual void font_name(int num, const char *name); // Defaut implementation may be enough virtual void overlay_rect(int x, int y, int w , int h); + virtual float remove_scale(); + virtual void restore_scale(float); }; #ifndef FL_DOXYGEN @@ -486,6 +488,8 @@ protected: void transformed_vertex(double xf, double yf); virtual void transformed_vertex0(float x, float y); void vertex(double x, double y); + virtual float remove_scale(); + virtual void restore_scale(float); }; #endif // FL_DOXYGEN diff --git a/FL/fl_draw.H b/FL/fl_draw.H index 4b9796acf..58168a0d7 100644 --- a/FL/fl_draw.H +++ b/FL/fl_draw.H @@ -687,6 +687,11 @@ FL_EXPORT const char *fl_local_to_mac_roman(const char *t, int n=-1); /** \addtogroup fl_drawings @{ */ + +FL_EXPORT float fl_remove_scale(); + +FL_EXPORT void fl_restore_scale(float s); + /** Draws a nul-terminated UTF-8 string starting at the given \p x, \p y location. |
