diff --git a/FL/mac.H b/FL/mac.H index e631af305..9123b92e0 100644 --- a/FL/mac.H +++ b/FL/mac.H @@ -168,7 +168,6 @@ public: static void screen_work_area(int &X, int &Y, int &W, int &H, int n); // compute work area of a given screen static void clip_to_rounded_corners(CGContextRef gc, int w, int h); static void complete_copy_pdf_and_tiff(CGContextRef gc, CFMutableDataRef pdfdata); - static void draw_layer_to_context(CALayer *layer, CGContextRef gc, int w, int h); private: CGRect* subRect_; // makes sure subwindow remains inside its parent window // stores 3 binary flags: whether window is mapped to retina display; whether resolution just changed; diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index a8a5e073e..95419af07 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -4287,7 +4287,7 @@ static CALayer *get_titlebar_layer(Fl_Window *win) } -void Fl_X::draw_layer_to_context(CALayer *layer, CGContextRef gc, int w, int h) +void Fl_Cocoa_Screen_Driver::draw_layer_to_context(CALayer *layer, CGContextRef gc, int w, int h) { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 CGContextSaveGState(gc); @@ -4315,7 +4315,7 @@ void Fl_Cocoa_Window_Driver::capture_titlebar_and_borders(Fl_Shared_Image*& top, CGColorSpaceRelease(cspace); CGContextScaleCTM(auxgc, 2, 2); if (layer) { - Fl_X::draw_layer_to_context(layer, auxgc, w(), htop); + Fl_Cocoa_Screen_Driver::draw_layer_to_context(layer, auxgc, w(), htop); } else { CGImageRef img = Fl_X::CGImage_from_window_rect(pWindow, 0, -htop, w(), htop); CGContextSaveGState(auxgc); diff --git a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm index 3c536ae7c..30fec61e1 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm +++ b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm @@ -21,6 +21,7 @@ #include #include "../Quartz/Fl_Quartz_Printer_Graphics_Driver.H" #include "../Darwin/Fl_Darwin_System_Driver.H" +#include "Fl_Cocoa_Screen_Driver.H" #include #include @@ -403,7 +404,7 @@ void Fl_Cocoa_Printer_Driver::draw_decorated_window(Fl_Window *win, int x_offset CGContextSaveGState(gc); CGContextTranslateCTM(gc, x_offset - 0.5, y_offset + bt - 0.5); CGContextScaleCTM(gc, 1, -1); - Fl_X::draw_layer_to_context(layer, gc, win->w(), bt); + Fl_Cocoa_Screen_Driver::draw_layer_to_context(layer, gc, win->w(), bt); CGContextRestoreGState(gc); } else { @@ -411,7 +412,7 @@ void Fl_Cocoa_Printer_Driver::draw_decorated_window(Fl_Window *win, int x_offset CGContextRef gc = CGBitmapContextCreate(NULL, 2*win->w(), 2*bt, 8, 0, cspace, kCGImageAlphaPremultipliedLast); CGColorSpaceRelease(cspace); CGContextScaleCTM(gc, 2, 2); - Fl_X::draw_layer_to_context(layer, gc, win->w(), bt); + Fl_Cocoa_Screen_Driver::draw_layer_to_context(layer, gc, win->w(), bt); Fl_RGB_Image *image = new Fl_RGB_Image((const uchar*)CGBitmapContextGetData(gc), 2*win->w(), 2*bt, 4, CGBitmapContextGetBytesPerRow(gc)); // 10.2 int ori_x, ori_y; diff --git a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H index a1f278a63..063985b7e 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.H @@ -26,6 +26,7 @@ #define FL_COCOA_SCREEN_DRIVER_H #include +#include /* Move everything here that manages the native screen interface. @@ -39,6 +40,11 @@ class Fl_Window; +#ifdef __OBJC__ +@class CALayer; +#else +class CALayer; +#endif // __OBJC__ class FL_EXPORT Fl_Cocoa_Screen_Driver : public Fl_Screen_Driver @@ -87,6 +93,7 @@ public: int insertion_point_location(int *px, int *py, int *pheight); virtual int dnd(int use_selection); virtual int compose(int &del); + static void draw_layer_to_context(CALayer *layer, CGContextRef gc, int w, int h); };