diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_cocoa.mm | 20 | ||||
| -rw-r--r-- | src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx | 20 |
2 files changed, 17 insertions, 23 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 6c52ccb98..02a5b4a35 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -3305,26 +3305,6 @@ void Fl_Window::make_current() #endif } -// helper function to manage the current CGContext fl_gc -extern void fl_quartz_restore_line_style_(); - -// FLTK has only one global graphics state. This function copies the FLTK state into the -// current Quartz context -void Fl_X::q_fill_context() { - if (!fl_gc) return; - 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 - } - fl_color(fl_graphics_driver->color()); - fl_quartz_restore_line_style_(); -} - // Give the Quartz context back to the system void Fl_X::q_release_context(Fl_X *x) { if (x && x->gc!=fl_gc) return; 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); } } |
