summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2018-05-22 17:00:27 +0000
committerManolo Gouy <Manolo>2018-05-22 17:00:27 +0000
commitce71c4b679b7afdb07de1133d0c600051e2601f6 (patch)
tree0a64edbcf68c8275bf512cd21e78bd69951a5b65
parent4c65d976e4a7eab9a881735c70c416eafc28f538 (diff)
Add Fl::screen_scale(int) function to get the scaling factor value of a screen.
This allows to keep class Fl_Screen_Driver away from the public API. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12926 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--FL/Fl.H1
-rw-r--r--FL/Fl_Window.H2
-rw-r--r--documentation/src/drawing.dox2
-rw-r--r--src/Fl.cxx6
-rw-r--r--src/Fl_Window.cxx2
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm2
6 files changed, 11 insertions, 4 deletions
diff --git a/FL/Fl.H b/FL/Fl.H
index 775123b75..4cf19b030 100644
--- a/FL/Fl.H
+++ b/FL/Fl.H
@@ -1008,6 +1008,7 @@ int main() {
static void screen_work_area(int &X, int &Y, int &W, int &H, int mx, int my); // via screen driver
static void screen_work_area(int &X, int &Y, int &W, int &H, int n); // via screen driver
static void screen_work_area(int &X, int &Y, int &W, int &H); // via screen driver
+ static float screen_scale(int n); // via screen driver
/** @} */
diff --git a/FL/Fl_Window.H b/FL/Fl_Window.H
index 4153199bf..9ffe218e8 100644
--- a/FL/Fl_Window.H
+++ b/FL/Fl_Window.H
@@ -543,7 +543,7 @@ public:
void shape(const Fl_Image* img);
void shape(const Fl_Image& b) ;
int is_shaped();
- inline int screen_num();
+ int screen_num();
};
#endif
diff --git a/documentation/src/drawing.dox b/documentation/src/drawing.dox
index 666fe541d..26c615f03 100644
--- a/documentation/src/drawing.dox
+++ b/documentation/src/drawing.dox
@@ -62,7 +62,7 @@ for the screen in use and obtains quantities in <b>drawing units</b>.
The current scale factor value, for an Fl_Window named \e window, is given by
\code
int nscreen = window->screen_num(); // the screen where window is mapped
-float s = Fl::screen_driver()->scale(nscreen); // this screen's scale factor
+float s = Fl::screen_scale(nscreen); // this screen's scale factor
\endcode
One drawing unit generally corresponds to one screen pixel...
<li>...but not on Mac OS X and for retina displays, where one drawing unit corresponds
diff --git a/src/Fl.cxx b/src/Fl.cxx
index 6e60e524c..81aecdb25 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -2110,6 +2110,12 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) {
return Fl_Graphics_Driver::default_driver().get_font_sizes(fnum, sizep);
}
+/** Current value of the GUI scaling factor for screen number \p n */
+float Fl::screen_scale(int n) {
+ return Fl::screen_driver()->scale(n);
+}
+
+
// Pointers you can use to change FLTK to another language.
// Note: Similar pointers are defined in FL/fl_ask.H and src/fl_ask.cxx
FL_EXPORT const char* fl_local_shift = Fl::system_driver()->shift_name();
diff --git a/src/Fl_Window.cxx b/src/Fl_Window.cxx
index c34988cf3..f8b25042c 100644
--- a/src/Fl_Window.cxx
+++ b/src/Fl_Window.cxx
@@ -632,7 +632,7 @@ void Fl_Window::size_range(int minw, int minh, int maxw, int maxh, int dw, int d
}
/** The number of the screen containing the mapped window */
-inline int Fl_Window::screen_num() {
+int Fl_Window::screen_num() {
return pWindowDriver->screen_num();
}
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
index fabfcaa8f..fbc4584b7 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
+++ b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
@@ -383,7 +383,7 @@ void Fl_Cocoa_Printer_Driver::draw_decorated_window(Fl_Window *win, int x_offset
CGContextRef gc = (CGContextRef)driver()->gc();
CGContextSaveGState(gc);
CGContextTranslateCTM(gc, x_offset - 0.5, y_offset + bt - 0.5);
- float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(win)->screen_num());
+ float s = Fl::screen_scale(win->screen_num());
CGContextScaleCTM(gc, 1/s, -1/s);
Fl_Cocoa_Window_Driver::draw_layer_to_context(layer, gc, win->w() * s, bt);
CGContextRestoreGState(gc);