summaryrefslogtreecommitdiff
path: root/FL
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2021-02-25 11:06:54 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2021-02-25 11:07:07 +0100
commit5bd467fa17be55397f433dddc065b57cbb7a0615 (patch)
tree6698febfde050bf76f84873ea749b031467d7cbb /FL
parentbef46b5cb82464713a117b9bdb920735d1b7de37 (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.H4
-rw-r--r--FL/Fl_Graphics_Driver.H4
-rw-r--r--FL/fl_draw.H5
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.