From a0d7addea8ac8d68b54ae4e7b15593fec6fe0a39 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Wed, 9 May 2018 15:22:26 +0000 Subject: Fix fl_overlay_rect() for MacOS platform when GUI is scaled. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12911 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- .../Quartz/Fl_Quartz_Graphics_Driver_rect.cxx | 24 ++++++---------------- 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'src/drivers') diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx index 8153f4e78..a30eeec09 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx @@ -173,25 +173,13 @@ void Fl_Quartz_Graphics_Driver::loop(int x, int y, int x1, int y1, int x2, int y if (quartz_line_width_ > 1.5f) CGContextSetShouldAntialias(gc_, false); } -// returns y of horizontal line corresponding to pixels of current window -// read by Fl_Cocoa_Screen_Driver::read_win_rectangle( -, y, -, 1) -// when GUI is scaled by s -static float overlay_y(int y, float s, int H) { - int a, b, c; - a = int(H*s) - (y+1)*s; // in Cocoa units from window bottom - c = (s > 1 ? s : 1); // height of pixels read in Cocoa units - b = H*s - (a+c); // top of read image from window top in Cocoa units - return b/s; // top of read image from window top in FLTK units -} - void Fl_Quartz_Graphics_Driver::overlay_rect(int x, int y, int w , int h) { - float s = scale(); - CGContextSetLineWidth(gc_, 0.01); - int H = Fl_Window::current()->h(); - CGContextMoveToPoint(gc_, x, overlay_y(y, s, H)); - CGContextAddLineToPoint(gc_, x+w-1, overlay_y(y, s, H)); - CGContextAddLineToPoint(gc_, x+w-1, overlay_y(y+h-1, s, H)); - CGContextAddLineToPoint(gc_, x, overlay_y(y+h-1, s, H)); + float s = scale(); if (s < 2) s = 0; + CGContextSetLineWidth(gc_, 0.05); + CGContextMoveToPoint(gc_, x, y); + CGContextAddLineToPoint(gc_, x+w-1 +s/8, y); + CGContextAddLineToPoint(gc_, x+w-1 +s/8, y+h-1 -s/8); + CGContextAddLineToPoint(gc_, x, y+h-1 -s/8); CGContextClosePath(gc_); CGContextStrokePath(gc_); CGContextSetLineWidth(gc_, quartz_line_width_); -- cgit v1.2.3