From ec290bc9e03c67de690649d1d3174cce0f5b3eec Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Sun, 14 Feb 2016 06:36:20 +0000 Subject: Remove Fl_X::q_fill_context() used only once. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11171 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- .../Quartz/Fl_Quartz_Graphics_Driver_rect.cxx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 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 f06ef6f3d..aa84d7777 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx @@ -265,6 +265,9 @@ void Fl_Quartz_Graphics_Driver::pop_clip() { restore_clip(); } +// helper function to manage the current CGContext fl_gc +extern void fl_quartz_restore_line_style_(); + void Fl_Quartz_Graphics_Driver::restore_clip() { fl_clip_state_number++; Fl_Region r = rstack[rstackptr]; @@ -273,9 +276,20 @@ void Fl_Quartz_Graphics_Driver::restore_clip() { CGContextRestoreGState(fl_gc); CGContextSaveGState(fl_gc); } - Fl_X::q_fill_context();//flip coords if bitmap context - //apply program clip - if (r) { + // FLTK has only one global graphics state. + // This copies the FLTK state into the current Quartz context + if ( ! fl_window ) { // a bitmap context + CGFloat hgt = CGBitmapContextGetHeight(fl_gc); + CGAffineTransform at = CGContextGetCTM(fl_gc); + if (at.a != 1 && at.a == at.d && at.b == 0 && at.c == 0) { // proportional scaling, no rotation + hgt /= at.a; + } + CGContextTranslateCTM(fl_gc, 0.5, hgt-0.5f); + CGContextScaleCTM(fl_gc, 1.0f, -1.0f); // now 0,0 is top-left point of the context + } + color(color()); + fl_quartz_restore_line_style_(); + if (r) { //apply program clip CGContextClipToRects(fl_gc, r->rects, r->count); } } -- cgit v1.2.3