diff options
| -rw-r--r-- | FL/Fl_Device.H | 19 | ||||
| -rw-r--r-- | src/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/Fl_Device.cxx | 41 | ||||
| -rw-r--r-- | src/drivers/GDI/Fl_GDI_Graphics_Driver.cxx | 42 | ||||
| -rw-r--r-- | src/drivers/Quartz/Fl_Quartz_Display_Device.cxx | 5 | ||||
| -rw-r--r-- | src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx | 15 | ||||
| -rw-r--r-- | src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx | 39 |
7 files changed, 107 insertions, 56 deletions
diff --git a/FL/Fl_Device.H b/FL/Fl_Device.H index 082d65775..5daf1a6bf 100644 --- a/FL/Fl_Device.H +++ b/FL/Fl_Device.H @@ -117,6 +117,14 @@ class FL_EXPORT Fl_Graphics_Driver : public Fl_Device { friend class Fl_Bitmap; friend class Fl_RGB_Image; public: + // The following functions create the various graphics drivers that are required + // for core operations. They must be implemented as members of Fl_Graphics_Driver, + // but located in the device driver module that is linked to the core library + static Fl_Graphics_Driver *newMainGraphicsDriver(); + //static Fl_Graphics_Driver *newOpenGLGraphicsDriver(); + //static Fl_Graphics_Driver *newPrinterGraphicsDriver(); + //static Fl_Graphics_Driver *new...; +public: /** A 2D coordinate transformation matrix */ struct matrix {double a, b, c, d, x, y;}; /** Features that a derived class may possess. */ @@ -354,23 +362,16 @@ public: There is no need to create any other object of this class. */ class FL_EXPORT Fl_Display_Device : public Fl_Surface_Device { - friend class Fl_Quartz_Graphics_Driver; - static Fl_Display_Device *_display; // the platform display device -#ifdef __APPLE__ friend class Fl_X; friend class Fl_Graphics_Driver; + static Fl_Display_Device *_display; // the platform display device static bool high_res_window_; //< true when drawing to a window of a retina display (Mac OS X only) - static bool high_resolution() {return high_res_window_;} -#elif defined(WIN32) -#elif defined(FL_PORTING) -# pragma message "FL_PORTING: implement functions for extra high res drawing if your platform supports it" -#else -#endif public: static const char *class_id; const char *class_name() {return class_id;}; Fl_Display_Device(Fl_Graphics_Driver *graphics_driver); static Fl_Display_Device *display_device(); + static bool high_resolution() {return high_res_window_;} }; /** diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4225b5377..ad0572e3c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -159,6 +159,7 @@ if (USE_X11) # X11 (including APPLE with X11) set(DRIVER_FILES + drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx drivers/Xlib/Fl_Xlib_Graphics_Driver_color.cxx drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx @@ -198,6 +199,7 @@ else () # Windows (GDI) set(DRIVER_FILES + drivers/GDI/Fl_GDI_Graphics_Driver.cxx drivers/GDI/Fl_GDI_Graphics_Driver_arci.cxx drivers/GDI/Fl_GDI_Graphics_Driver_color.cxx drivers/GDI/Fl_GDI_Graphics_Driver_font.cxx diff --git a/src/Fl_Device.cxx b/src/Fl_Device.cxx index 6701ed68f..efbd0712d 100644 --- a/src/Fl_Device.cxx +++ b/src/Fl_Device.cxx @@ -22,36 +22,12 @@ #include <FL/Fl_Image.H> #include <FL/fl_draw.H> -#ifdef FL_CFG_GFX_QUARTZ -#include "drivers/Quartz/Fl_Quartz_Graphics_Driver.h" -#endif - -#if defined(WIN32) || defined(__APPLE__) -#elif defined(FL_PORTING) -# pragma message "FL_PORTING: instantiate and implement various device drivers here" -#else -#endif - const char *Fl_Device::class_id = "Fl_Device"; const char *Fl_Surface_Device::class_id = "Fl_Surface_Device"; const char *Fl_Display_Device::class_id = "Fl_Display_Device"; const char *Fl_Graphics_Driver::class_id = "Fl_Graphics_Driver"; -#if defined(__APPLE__) || defined(FL_DOXYGEN) -# ifndef FL_DOXYGEN - bool Fl_Display_Device::high_res_window_ = false; -# endif -#endif -#if defined(WIN32) || defined(FL_DOXYGEN) -const char *Fl_GDI_Graphics_Driver::class_id = "Fl_GDI_Graphics_Driver"; -const char *Fl_GDI_Printer_Graphics_Driver::class_id = "Fl_GDI_Printer_Graphics_Driver"; -#endif -#if !(defined(__APPLE__) || defined(WIN32)) -#if defined(FL_PORTING) -# pragma message "FL_PORTING: instantiate the main graphics driver here" -#else -const char *Fl_Xlib_Graphics_Driver::class_id = "Fl_Xlib_Graphics_Driver"; -#endif -#endif + +bool Fl_Display_Device::high_res_window_ = false; /** \brief Make this surface the current drawing surface. @@ -103,18 +79,7 @@ Fl_Display_Device::Fl_Display_Device(Fl_Graphics_Driver *graphics_driver) : Fl_S /** Returns the platform display device. */ Fl_Display_Device *Fl_Display_Device::display_device() { - static Fl_Display_Device *display = new Fl_Display_Device(new -#if defined(__APPLE__) - Fl_Quartz_Graphics_Driver -#elif defined(WIN32) - Fl_GDI_Graphics_Driver -#elif defined(FL_PORTING) -# pragma message "FL_PORTING: instantiate your display driver here" - Fl_XXX_Graphics_Driver -#else - Fl_Xlib_Graphics_Driver -#endif - ); + static Fl_Display_Device *display = new Fl_Display_Device(Fl_Graphics_Driver::newMainGraphicsDriver()); return display; }; diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver.cxx new file mode 100644 index 000000000..6e782b2b5 --- /dev/null +++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver.cxx @@ -0,0 +1,42 @@ +// +// "$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.h> +#include "../../config_lib.h" +#include "Fl_GDI_Graphics_Driver.h" + + +const char *Fl_GDI_Graphics_Driver::class_id = "Fl_GDI_Graphics_Driver"; + +// FIXME: move to printer graphics driver +const char *Fl_GDI_Printer_Graphics_Driver::class_id = "Fl_GDI_Printer_Graphics_Driver"; + +/* + * By linking this module, the following static method will instatiate the + * MSWindows GDI Graphics driver as the main display driver. + */ +Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() +{ + return new Fl_GDI_Graphics_Driver(); +} + + +// +// End of "$Id$". +// diff --git a/src/drivers/Quartz/Fl_Quartz_Display_Device.cxx b/src/drivers/Quartz/Fl_Quartz_Display_Device.cxx index df0eaba5d..d397cd005 100644 --- a/src/drivers/Quartz/Fl_Quartz_Display_Device.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Display_Device.cxx @@ -38,11 +38,6 @@ const char *Fl_Device::class_id = "Fl_Device"; const char *Fl_Surface_Device::class_id = "Fl_Surface_Device"; const char *Fl_Display_Device::class_id = "Fl_Display_Device"; const char *Fl_Graphics_Driver::class_id = "Fl_Graphics_Driver"; -#if defined(__APPLE__) || defined(FL_DOXYGEN) -# ifndef FL_DOXYGEN - bool Fl_Display_Device::high_res_window_ = false; -# endif -#endif #if defined(WIN32) || defined(FL_DOXYGEN) const char *Fl_GDI_Graphics_Driver::class_id = "Fl_GDI_Graphics_Driver"; const char *Fl_GDI_Printer_Graphics_Driver::class_id = "Fl_GDI_Printer_Graphics_Driver"; diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx index 3e0f8e319..f2d68eaa1 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx @@ -18,13 +18,22 @@ #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"; + +/* + * By linking this module, the following static method will instatiate the + * OS X Quartz Graphics driver as the main display driver. + */ +Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() +{ + return new 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(); @@ -34,8 +43,6 @@ Fl_Offscreen Fl_Quartz_Graphics_Driver::create_offscreen_with_alpha(int w, int h } -#endif // FL_CFG_GFX_QUARTZ - // // End of "$Id$". // diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx new file mode 100644 index 000000000..0385413f1 --- /dev/null +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx @@ -0,0 +1,39 @@ +// +// "$Id$" +// +// Rectangle drawing routines for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2012 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.h> +#include "../../config_lib.h" +#include "Fl_Xlib_Graphics_Driver.h" + + +const char *Fl_Xlib_Graphics_Driver::class_id = "Fl_Xlib_Graphics_Driver"; + + +/* + * By linking this module, the following static method will instatiate the + * X11 Xlib Graphics driver as the main display driver. + */ +Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() +{ + return new Fl_Xlib_Graphics_Driver(); +} + +// +// End of "$Id$". +// |
