summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2016-01-27 22:35:58 +0000
committerMatthias Melcher <fltk@matthiasm.com>2016-01-27 22:35:58 +0000
commit780f43a4f14f56678c503fa279517c418b697877 (patch)
treefdb76e5f5b0b47ca652b497e5c096d60d0a67c54 /src/drivers
parent6177c23d901c8748fd908b3bd1106b403f017d7f (diff)
Removed all references to Quartz driver files from library headers in Xcode. Works in Xcode.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11065 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/GDI/Fl_GDI_Graphics_Driver_color.cxx4
-rw-r--r--src/drivers/GDI/Fl_GDI_Graphics_Driver_rect.cxx4
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx41
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver.h17
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_arci.cxx6
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx5
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx7
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx122
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_line_style.cxx16
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx14
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx6
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Printer_Graphics_Driver.cxx34
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Printer_Graphics_Driver.h42
13 files changed, 282 insertions, 36 deletions
diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_color.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_color.cxx
index 2113b13b5..24744a927 100644
--- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_color.cxx
+++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver_color.cxx
@@ -34,10 +34,6 @@
// FIXME: maybe we can forget about color mapping and assume RGB?
-static unsigned fl_cmap[256] = {
-#include "../../fl_cmap.h" // this is a file produced by "cmap.cxx":
-};
-
// Translations to win32 data structures:
Fl_XMap fl_xmap[256];
diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_rect.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_rect.cxx
index 5adb0056d..f3077119e 100644
--- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_rect.cxx
+++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver_rect.cxx
@@ -16,8 +16,6 @@
// http://www.fltk.org/str.php
//
-#ifndef FL_CFG_GFX_QUARTZ_RECT_CXX
-#define FL_CFG_GFX_QUARTZ_RECT_CXX
/**
@@ -232,8 +230,6 @@ void Fl_GDI_Graphics_Driver::restore_clip() {
}
-#endif // FL_CFG_GFX_GDI_RECT_CXX
-
//
// End of "$Id$".
//
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx
new file mode 100644
index 000000000..3e0f8e319
--- /dev/null
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx
@@ -0,0 +1,41 @@
+//
+// "$Id$"
+//
+// Rectangle drawing routines for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-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
+//
+
+
+#include "../../config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
+#include "Fl_Quartz_Graphics_Driver.h"
+
+
+const char *Fl_Quartz_Graphics_Driver::class_id = "Fl_Quartz_Graphics_Driver";
+
+Fl_Offscreen Fl_Quartz_Graphics_Driver::create_offscreen_with_alpha(int w, int h) {
+ void *data = calloc(w*h,4);
+ CGColorSpaceRef lut = CGColorSpaceCreateDeviceRGB();
+ CGContextRef ctx = CGBitmapContextCreate(data, w, h, 8, w*4, lut, kCGImageAlphaPremultipliedLast);
+ CGColorSpaceRelease(lut);
+ return (Fl_Offscreen)ctx;
+}
+
+
+#endif // FL_CFG_GFX_QUARTZ
+
+//
+// End of "$Id$".
+//
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.h b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.h
index 150e51358..829c3dd5e 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.h
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.h
@@ -22,8 +22,11 @@
\brief Definition of Apple Quartz graphics driver.
*/
-#ifndef FL_CFG_GFX_QUARTZ_H
-#define FL_CFG_GFX_QUARTZ_H
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
+#ifndef FL_QUARTZ_GRAPHICS_DRIVER_H
+#define FL_QUARTZ_GRAPHICS_DRIVER_H
#include <FL/Fl_Device.H>
@@ -117,15 +120,9 @@ protected:
};
-/** Graphics driver used for Mac OS X printing. */
-class Fl_Quartz_Printer_Graphics_Driver : public Fl_Quartz_Graphics_Driver {
-public:
- virtual int has_feature(driver_feature mask) { return mask & (NATIVE | PRINTER); }
-};
-
-
+#endif // FL_QUARTZ_GRAPHICS_DRIVER_H
-#endif // FL_CFG_GFX_QUARTZ_H
+#endif // FL_CFG_GFX_QUARTZ
//
// End of "$Id: quartz.H 11017 2016-01-20 21:40:12Z matt $".
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_arci.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_arci.cxx
index c6288d7fe..2375c3ef3 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_arci.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_arci.cxx
@@ -16,8 +16,8 @@
// http://www.fltk.org/str.php
//
-#ifndef FL_CFG_GFX_QUARTZ_ARCI_CXX
-#define FL_CFG_GFX_QUARTZ_ARCI_CXX
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
#include "Fl_Quartz_Graphics_Driver.h"
@@ -68,7 +68,7 @@ void Fl_Quartz_Graphics_Driver::pie(int x,int y,int w,int h,double a1,double a2)
CGContextSetShouldAntialias(fl_gc, false);
}
-#endif // FL_CFG_GFX_QUARTZ_ARCI_CXX
+#endif // FL_CFG_GFX_QUARTZ
//
// End of "$Id$".
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx
index 178fb6604..1a4b11aea 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx
@@ -16,6 +16,9 @@
// http://www.fltk.org/str.php
//
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
// The fltk "colormap". This allows ui colors to be stored in 8-bit
// locations, and provides a level of indirection so that global color
// changes can be made. Not to be confused with the X colormap, which
@@ -77,6 +80,8 @@ void Fl::set_color(Fl_Color i, unsigned c) {
}
}
+#endif // FL_CFG_GFX_QUARTZ
+
//
// End of "$Id$".
//
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx
index b48a14f4a..cdcbd2cf2 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx
@@ -16,10 +16,15 @@
// http://www.fltk.org/str.php
//
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
#include "Fl_Quartz_Graphics_Driver.h"
#include <config.h>
#include <math.h>
+#include <FL/Fl.H>
+#include <FL/fl_utf8.h>
Fl_Fontdesc* fl_fonts = NULL;
@@ -583,6 +588,8 @@ void Fl_Quartz_Graphics_Driver::rtl_draw(const char* c, int n, int x, int y) {
draw(c, n, x - w - dx, y);
}
+#endif // FL_CFG_GFX_QUARTZ
+
//
// End of "$Id$".
//
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
index 87fcbc068..8b3229459 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx
@@ -16,7 +16,10 @@
// http://www.fltk.org/str.php
//
-////////////////////////////////////////////////////////////////
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
+#include "Fl_Quartz_Graphics_Driver.h"
#include <config.h>
#include <FL/Fl.H>
@@ -162,6 +165,123 @@ void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
fl_rectf(x,y,w,h);
}
+void Fl_Quartz_Graphics_Driver::draw(Fl_Bitmap *bm, int XP, int YP, int WP, int HP, int cx, int cy) {
+ int X, Y, W, H;
+ if (bm->start(XP, YP, WP, HP, cx, cy, X, Y, W, H)) {
+ return;
+ }
+ if (bm->id_ && fl_gc) {
+ CGRect rect = { { (CGFloat)X, (CGFloat)Y }, { (CGFloat)W, (CGFloat)H } };
+ Fl_X::q_begin_image(rect, cx, cy, bm->w(), bm->h());
+ CGContextDrawImage(fl_gc, rect, (CGImageRef)bm->id_);
+ Fl_X::q_end_image();
+ }
+}
+
+static void imgProviderReleaseData (void *info, const void *data, size_t size)
+{
+ if (!info || *(bool*)info) delete[] (unsigned char *)data;
+ delete (bool*)info;
+}
+
+static int start(Fl_RGB_Image *img, int XP, int YP, int WP, int HP, int w, int h, int &cx, int &cy,
+ int &X, int &Y, int &W, int &H)
+{
+ // account for current clip region (faster on Irix):
+ fl_clip_box(XP,YP,WP,HP,X,Y,W,H);
+ cx += X-XP; cy += Y-YP;
+ // clip the box down to the size of image, quit if empty:
+ if (cx < 0) {W += cx; X -= cx; cx = 0;}
+ if (cx+W > w) W = w-cx;
+ if (W <= 0) return 1;
+ if (cy < 0) {H += cy; Y -= cy; cy = 0;}
+ if (cy+H > h) H = h-cy;
+ if (H <= 0) return 1;
+ return 0;
+}
+
+void Fl_Quartz_Graphics_Driver::draw(Fl_RGB_Image *img, int XP, int YP, int WP, int HP, int cx, int cy) {
+ int X, Y, W, H;
+ // Don't draw an empty image...
+ if (!img->d() || !img->array) {
+ img->draw_empty(XP, YP);
+ return;
+ }
+ if (start(img, XP, YP, WP, HP, img->w(), img->h(), cx, cy, X, Y, W, H)) {
+ return;
+ }
+ if (!img->id_) {
+ CGColorSpaceRef lut = img->d()<=2 ? CGColorSpaceCreateDeviceGray() : CGColorSpaceCreateDeviceRGB();
+ int ld = img->ld();
+ if (!ld) ld = img->w() * img->d();
+ // If img->alloc_array == 0, the CGImage data provider must not release the image data.
+ // If img->alloc_array != 0, the CGImage data provider will take responsibilty of deleting RGB image data after use:
+ // when the CGImage is deallocated, the release callback of its data provider
+ // (imgProviderReleaseData) is called and can delete the RGB image data.
+ // If the CGImage is printed, it is not deallocated until after the end of the page,
+ // therefore, with img->alloc_array != 0, the RGB image can be safely deleted any time after return from this function.
+ // The previously unused mask_ member allows to make sure the RGB image data is not deleted by Fl_RGB_Image::uncache().
+ if (img->alloc_array) img->mask_ = new bool(true);
+ CGDataProviderRef src = CGDataProviderCreateWithData(img->mask_, img->array, ld * img->h(),
+ img->alloc_array?imgProviderReleaseData:NULL);
+ img->id_ = CGImageCreate(img->w(), img->h(), 8, img->d()*8, ld,
+ lut, (img->d()&1)?kCGImageAlphaNone:kCGImageAlphaLast,
+ src, 0L, false, kCGRenderingIntentDefault);
+ CGColorSpaceRelease(lut);
+ CGDataProviderRelease(src);
+ }
+ if (img->id_ && fl_gc) {
+ if (!img->alloc_array && has_feature(PRINTER) && !CGImageGetShouldInterpolate((CGImageRef)img->id_)) {
+ // When printing, the image data is used when the page is completed, that is, after return from this function.
+ // If the image has alloc_array = 0, we must protect against image data being freed before it is used:
+ // we duplicate the image data and have it deleted after use by the release-callback of the CGImage data provider
+ Fl_RGB_Image* img2 = (Fl_RGB_Image*)img->copy();
+ img2->alloc_array = 0;
+ const uchar *img_bytes = img2->array;
+ int ld = img2->ld();
+ if (!ld) ld = img2->w() * img2->d();
+ delete img2;
+ img->uncache();
+ CGColorSpaceRef lut = img->d()<=2 ? CGColorSpaceCreateDeviceGray() : CGColorSpaceCreateDeviceRGB();
+ CGDataProviderRef src = CGDataProviderCreateWithData( NULL, img_bytes, ld * img->h(), imgProviderReleaseData);
+ img->id_ = CGImageCreate(img->w(), img->h(), 8, img->d()*8, ld,
+ lut, (img->d()&1)?kCGImageAlphaNone:kCGImageAlphaLast,
+ src, 0L, true, kCGRenderingIntentDefault);
+ CGColorSpaceRelease(lut);
+ CGDataProviderRelease(src);
+ }
+ CGRect rect = CGRectMake(X, Y, W, H);
+ Fl_X::q_begin_image(rect, cx, cy, img->w(), img->h());
+ CGContextDrawImage(fl_gc, rect, (CGImageRef)img->id_);
+ Fl_X::q_end_image();
+ }
+}
+
+int Fl_Quartz_Graphics_Driver::draw_scaled(Fl_Image *img, int XP, int YP, int WP, int HP) {
+ int X, Y, W, H;
+ fl_clip_box(XP,YP,WP,HP,X,Y,W,H); // X,Y,W,H will give the unclipped area of XP,YP,WP,HP
+ if (W == 0 || H == 0) return 1;
+ fl_push_no_clip(); // remove the FLTK clip that can't be rescaled
+ CGContextSaveGState(fl_gc);
+ CGContextClipToRect(fl_gc, CGRectMake(X, Y, W, H)); // this clip path will be rescaled & translated
+ CGContextTranslateCTM(fl_gc, XP, YP);
+ CGContextScaleCTM(fl_gc, float(WP)/img->w(), float(HP)/img->h());
+ img->draw(0, 0, img->w(), img->h(), 0, 0);
+ CGContextRestoreGState(fl_gc);
+ fl_pop_clip(); // restore FLTK's clip
+ return 1;
+}
+
+void Fl_Quartz_Graphics_Driver::draw(Fl_Pixmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy) {
+ int X, Y, W, H;
+ if (pxm->prepare(XP, YP, WP, HP, cx, cy, X, Y, W, H)) return;
+ copy_offscreen(X, Y, W, H, (Fl_Offscreen)pxm->id_, cx, cy);
+}
+
+
+
+#endif // FL_CFG_GFX_QUARTZ
+
//
// End of "$Id$".
//
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_line_style.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_line_style.cxx
index a70a067b6..e680ea43a 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_line_style.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_line_style.cxx
@@ -16,8 +16,12 @@
// http://www.fltk.org/str.php
//
-#ifndef FL_CFG_GFX_QUARTZ_LINE_STYLE_CXX
-#define FL_CFG_GFX_QUARTZ_LINE_STYLE_CXX
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
+#include <FL/fl_draw.h>
+
+extern int fl_line_width_;
/**
\file quartz_line_style.cxx
@@ -53,9 +57,11 @@ void Fl_Quartz_Graphics_Driver::line_style(int style, int width, char* dashes) {
fl_quartz_line_width_ = (float)width;
fl_quartz_line_cap_ = Cap[(style>>8)&3];
// when printing kCGLineCapSquare seems better for solid lines
- if ( Fl_Surface_Device::surface() != Fl_Display_Device::display_device() && style == FL_SOLID && dashes == NULL ) {
+ if ( Fl_Surface_Device::surface() != Fl_Display_Device::display_device()
+ && style == FL_SOLID && dashes == NULL )
+ {
fl_quartz_line_cap_ = kCGLineCapSquare;
- }
+ }
fl_quartz_line_join_ = Join[(style>>12)&3];
char *d = dashes;
static CGFloat pattern[16];
@@ -91,7 +97,7 @@ void Fl_Quartz_Graphics_Driver::line_style(int style, int width, char* dashes) {
fl_quartz_restore_line_style_();
}
-#endif // FL_CFG_GFX_QUARTZ_LINE_STYLE_CXX
+#endif // FL_CFG_GFX_QUARTZ
//
// End of "$Id$".
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
index c4f3c9973..fed0a6a4c 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
@@ -17,8 +17,10 @@
//
-#ifndef FL_CFG_GFX_QUARTZ_RECT_CXX
-#define FL_CFG_GFX_QUARTZ_RECT_CXX
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
+#include <FL/Fl.H>
/**
@@ -210,7 +212,7 @@ void Fl_Quartz_Graphics_Driver::push_clip(int x, int y, int w, int h) {
}
if (rstackptr < region_stack_max) rstack[++rstackptr] = r;
else Fl::warning("Fl_Quartz_Graphics_Driver::push_clip: clip stack overflow!\n");
- fl_restore_clip();
+ restore_clip();
}
int Fl_Quartz_Graphics_Driver::clip_box(int x, int y, int w, int h, int& X, int& Y, int& W, int& H){
@@ -251,7 +253,7 @@ int Fl_Quartz_Graphics_Driver::not_clipped(int x, int y, int w, int h) {
void Fl_Quartz_Graphics_Driver::push_no_clip() {
if (rstackptr < region_stack_max) rstack[++rstackptr] = 0;
else Fl::warning("Fl_Quartz_Graphics_Driver::push_no_clip: clip stack overflow!\n");
- fl_restore_clip();
+ restore_clip();
}
// pop back to previous clip:
@@ -260,7 +262,7 @@ void Fl_Quartz_Graphics_Driver::pop_clip() {
Fl_Region oldr = rstack[rstackptr--];
if (oldr) XDestroyRegion(oldr);
} else Fl::warning("Fl_Quartz_Graphics_Driver::pop_clip: clip stack underflow!\n");
- fl_restore_clip();
+ restore_clip();
}
void Fl_Quartz_Graphics_Driver::restore_clip() {
@@ -277,7 +279,7 @@ void Fl_Quartz_Graphics_Driver::restore_clip() {
}
-#endif // FL_CFG_GFX_QUARTZ_RECT_CXX
+#endif // FL_CFG_GFX_QUARTZ
//
// End of "$Id$".
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx
index b7404e299..83316507c 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx
@@ -16,8 +16,8 @@
// http://www.fltk.org/str.php
//
-#ifndef FL_CFG_GFX_QUARTZ_VERTEX_CXX
-#define FL_CFG_GFX_QUARTZ_VERTEX_CXX
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
/**
\file quartz_vertex.cxx
@@ -135,7 +135,7 @@ void Fl_Quartz_Graphics_Driver::circle(double x, double y,double r) {
CGContextSetShouldAntialias(fl_gc, false);
}
-#endif // FL_CFG_GFX_QUARTZ_VERTEX_CXX
+#endif // FL_CFG_GFX_QUARTZ
//
// End of "$Id$".
diff --git a/src/drivers/Quartz/Fl_Quartz_Printer_Graphics_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Printer_Graphics_Driver.cxx
new file mode 100644
index 000000000..73d24bd0f
--- /dev/null
+++ b/src/drivers/Quartz/Fl_Quartz_Printer_Graphics_Driver.cxx
@@ -0,0 +1,34 @@
+//
+// "$Id$"
+//
+// Rectangle drawing routines for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-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
+//
+
+
+#include "config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
+#include "Fl_Quartz_Printer_Graphics_Driver.h"
+
+int Fl_Quartz_Printer_Graphics_Driver::has_feature(driver_feature mask)
+{
+ return mask & (NATIVE | PRINTER);
+}
+
+#endif // FL_CFG_GFX_QUARTZ
+
+//
+// End of "$Id$".
+//
diff --git a/src/drivers/Quartz/Fl_Quartz_Printer_Graphics_Driver.h b/src/drivers/Quartz/Fl_Quartz_Printer_Graphics_Driver.h
new file mode 100644
index 000000000..38c865f36
--- /dev/null
+++ b/src/drivers/Quartz/Fl_Quartz_Printer_Graphics_Driver.h
@@ -0,0 +1,42 @@
+//
+// "$Id: quartz.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
+//
+
+#include "../../config_lib.h"
+#ifdef FL_CFG_GFX_QUARTZ
+
+#ifndef FL_QUARTZ_PRINTER_GRAPHICS_DRIVER_H
+#define FL_QUARTZ_PRINTER_GRAPHICS_DRIVER_H
+
+#include "Fl_Quartz_Graphics_Driver.h"
+
+
+/** Graphics driver used for Mac OS X printing. */
+class Fl_Quartz_Printer_Graphics_Driver : public Fl_Quartz_Graphics_Driver {
+public:
+ virtual int has_feature(driver_feature mask);
+};
+
+
+#endif // FL_QUARTZ_PRINTER_GRAPHICS_DRIVER_H
+
+#endif // FL_CFG_GFX_QUARTZ
+
+//
+// End of "$Id: quartz.H 11017 2016-01-20 21:40:12Z matt $".
+//