diff options
| author | Manolo Gouy <Manolo> | 2018-05-22 17:00:27 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2018-05-22 17:00:27 +0000 |
| commit | ce71c4b679b7afdb07de1133d0c600051e2601f6 (patch) | |
| tree | 0a64edbcf68c8275bf512cd21e78bd69951a5b65 | |
| parent | 4c65d976e4a7eab9a881735c70c416eafc28f538 (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.H | 1 | ||||
| -rw-r--r-- | FL/Fl_Window.H | 2 | ||||
| -rw-r--r-- | documentation/src/drawing.dox | 2 | ||||
| -rw-r--r-- | src/Fl.cxx | 6 | ||||
| -rw-r--r-- | src/Fl_Window.cxx | 2 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm | 2 |
6 files changed, 11 insertions, 4 deletions
@@ -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); |
