diff --git a/FL/mac.H b/FL/mac.H index 9123b92e0..9656d54d3 100644 --- a/FL/mac.H +++ b/FL/mac.H @@ -167,7 +167,6 @@ public: static unsigned char *bitmap_from_window_rect(Fl_Window *win, int x, int y, int w, int h, int *bytesPerPixel); 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); 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 a2e12df5c..a0aa4121e 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -45,6 +45,7 @@ extern "C" { #include #include #include "drivers/Quartz/Fl_Quartz_Graphics_Driver.H" +#include "drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.H" #include "drivers/Cocoa/Fl_Cocoa_Screen_Driver.H" #include "drivers/Cocoa/Fl_Cocoa_Window_Driver.H" #include "drivers/Darwin/Fl_Darwin_System_Driver.H" @@ -3317,7 +3318,7 @@ void Fl_X::set_high_resolution(bool new_val) Fl_Display_Device::high_res_window_ = new_val; } -void Fl_X::complete_copy_pdf_and_tiff(CGContextRef gc, CFMutableDataRef pdfdata) +Fl_Quartz_Copy_Surface_Driver::~Fl_Quartz_Copy_Surface_Driver() { CGContextRestoreGState(gc); CGContextEndPage(gc); diff --git a/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.H b/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.H new file mode 100644 index 000000000..c1f87de26 --- /dev/null +++ b/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.H @@ -0,0 +1,49 @@ +// +// "$Id: Fl_Quartz_Copy_Surface_Driver.H 11017 2016-01-20 21:40:12Z matt $" +// +// Definition of Apple Quartz graphics driver +// for the Fast Light Tool Kit (FLTK). +// +// Copyright 2010-2016 by Bill Spitzak and others. +// +// This library is free software. Distribution and use rights are outlined in +// the file "COPYING" which should have been included with this file. If this +// file is missing or damaged, see the license at: +// +// http://www.fltk.org/COPYING.php +// +// Please report all bugs and problems on the following page: +// +// http://www.fltk.org/str.php +// + + +#ifndef Fl_Quartz_Copy_Surface_Driver_H +#define Fl_Quartz_Copy_Surface_Driver_H + +#include + +class Fl_Quartz_Copy_Surface_Driver : public Fl_Copy_Surface_Driver { + friend class Fl_Copy_Surface_Driver; +protected: + CFMutableDataRef pdfdata; + CGContextRef gc; + void prepare_copy_pdf_and_tiff(int w, int h); + void init_PDF_context(int w, int h); + static size_t MyPutBytes(void* info, const void* buffer, size_t count); + Fl_Quartz_Copy_Surface_Driver(int w, int h); + // implemented in Fl_cocoa.mm because uses Objective-c + ~Fl_Quartz_Copy_Surface_Driver(); + void set_current(); + void translate(int x, int y); + void untranslate(); + int w() {return width;} + int h() {return height;} + int printable_rect(int *w, int *h) {*w = width; *h = height; return 0;} +}; + +#endif /* Fl_Quartz_Copy_Surface_Driver_H */ + +// +// End of "$Id: Fl_Quartz_Copy_Surface_Driver.H 11017 2016-01-20 21:40:12Z matt $". +// diff --git a/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx index da400e5d3..4646fc1f0 100644 --- a/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx @@ -22,24 +22,7 @@ #include #include #include "Fl_Quartz_Graphics_Driver.H" - -class Fl_Quartz_Copy_Surface_Driver : public Fl_Copy_Surface_Driver { - friend class Fl_Copy_Surface_Driver; -protected: - CFMutableDataRef pdfdata; - CGContextRef gc; - void prepare_copy_pdf_and_tiff(int w, int h); - void init_PDF_context(int w, int h); - static size_t MyPutBytes(void* info, const void* buffer, size_t count); - Fl_Quartz_Copy_Surface_Driver(int w, int h); - ~Fl_Quartz_Copy_Surface_Driver(); - void set_current(); - void translate(int x, int y); - void untranslate(); - int w() {return width;} - int h() {return height;} - int printable_rect(int *w, int *h) {*w = width; *h = height; return 0;} -}; +#include "Fl_Quartz_Copy_Surface_Driver.H" Fl_Copy_Surface_Driver *Fl_Copy_Surface_Driver::newCopySurfaceDriver(int w, int h) { @@ -51,11 +34,6 @@ Fl_Quartz_Copy_Surface_Driver::Fl_Quartz_Copy_Surface_Driver(int w, int h) : Fl_ prepare_copy_pdf_and_tiff(w, h); } -Fl_Quartz_Copy_Surface_Driver::~Fl_Quartz_Copy_Surface_Driver() { - // that code is implemented in Fl_cocoa.mm because it uses some Objective-c - Fl_X::complete_copy_pdf_and_tiff(gc, pdfdata); -} - void Fl_Quartz_Copy_Surface_Driver::set_current() { driver()->gc(gc); fl_window = (Window)1;