diff options
Diffstat (limited to 'src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx')
| -rw-r--r-- | src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx index 9d82d5c73..acabf6e73 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx @@ -17,6 +17,7 @@ #include <config.h> #include "Fl_Quartz_Graphics_Driver.H" #include "../Darwin/Fl_Darwin_System_Driver.H" +#include "../../Fl_Screen_Driver.H" #include <FL/platform.H> #include <FL/fl_draw.H> #include <FL/Fl_Image_Surface.H> @@ -158,3 +159,19 @@ void Fl_Quartz_Graphics_Driver::cache_size(Fl_Image *img, int &width, int &heigh width *= 2 * scale(); height *= 2 * scale(); } + +float Fl_Quartz_Graphics_Driver::remove_scale() { + float s = scale(); + if (s != 1.f && Fl_Display_Device::display_device()->is_current()) { + Fl::screen_driver()->scale(0, 1.f); + CGContextScaleCTM(gc_, 1/s, 1/s); + } + return s; +} + +void Fl_Quartz_Graphics_Driver::restore_scale(float s) { + if (s != 1.f && Fl_Display_Device::display_device()->is_current()) { + Fl::screen_driver()->scale(0, s); + CGContextScaleCTM(gc_, s, s); + } +} |
