diff options
| -rw-r--r-- | FL/mac.H | 1 | ||||
| -rw-r--r-- | FL/porting.H | 1 | ||||
| -rw-r--r-- | src/Fl_cocoa.mm | 20 | ||||
| -rw-r--r-- | src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx | 20 |
4 files changed, 17 insertions, 25 deletions
@@ -162,7 +162,6 @@ public: void in_windowDidResize(bool); // sets whether window is performing windowDidResize // Quartz additions: CGContextRef gc; // graphics context (NULL when using QD) - static void q_fill_context(); // fill a Quartz context with current FLTK state static void q_release_context(Fl_X *x=0); // free all resources associated with fl_gc // Cocoa additions static NSOpenGLPixelFormat *mode_to_NSOpenGLPixelFormat(int mode, const int*); // computes NSOpenGLPixelFormat from Gl window's mode diff --git a/FL/porting.H b/FL/porting.H index 77a999317..6c3d7cfc9 100644 --- a/FL/porting.H +++ b/FL/porting.H @@ -97,7 +97,6 @@ public: // void in_windowDidResize(bool); // sets whether window is performing windowDidResize // // Quartz additions: // CGContextRef gc; // graphics context (NULL when using QD) -// static void q_fill_context(); // fill a Quartz context with current FLTK state // static void q_release_context(Fl_X *x=0); // free all resources associated with fl_gc // // Cocoa additions // static NSOpenGLPixelFormat *mode_to_NSOpenGLPixelFormat(int mode, const int*); // computes NSOpenGLPixelFormat from Gl window's mode 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); } } |
