diff options
Diffstat (limited to 'src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx')
| -rw-r--r-- | src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx | 56 |
1 files changed, 40 insertions, 16 deletions
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx index 4dd21f587..5fd811e1a 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx @@ -16,33 +16,57 @@ // http://www.fltk.org/str.php // - #include "../../config_lib.h" #include "Fl_Quartz_Graphics_Driver.H" #include "../Darwin/Fl_Darwin_System_Driver.H" #include <FL/x.H> +Fl_Quartz_Graphics_Driver::pter_to_draw_member Fl_Quartz_Graphics_Driver::CoreText_or_ATSU_draw; +Fl_Quartz_Graphics_Driver::pter_to_width_member Fl_Quartz_Graphics_Driver::CoreText_or_ATSU_width; + +int Fl_Quartz_Graphics_Driver::CoreText_or_ATSU = 0; + +void Fl_Quartz_Graphics_Driver::init_CoreText_or_ATSU() +{ +#if HAS_ATSU && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 + if (Fl_Darwin_System_Driver::calc_mac_os_version() < 100500) { + // before Mac OS 10.5, only ATSU is available + CoreText_or_ATSU = use_ATSU; + CoreText_or_ATSU_draw = &Fl_Quartz_Graphics_Driver::draw_ATSU; + CoreText_or_ATSU_width = &Fl_Quartz_Graphics_Driver::width_ATSU; + } else { + CoreText_or_ATSU = use_CoreText; + CoreText_or_ATSU_draw = &Fl_Quartz_Graphics_Driver::draw_CoreText; + CoreText_or_ATSU_width = &Fl_Quartz_Graphics_Driver::width_CoreText; + } +#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 + CoreText_or_ATSU = use_ATSU; + CoreText_or_ATSU_draw = &Fl_Quartz_Graphics_Driver::draw_ATSU; + CoreText_or_ATSU_width = &Fl_Quartz_Graphics_Driver::width_ATSU; +#else + CoreText_or_ATSU = use_CoreText; + CoreText_or_ATSU_draw = &Fl_Quartz_Graphics_Driver::draw_CoreText; + CoreText_or_ATSU_width = &Fl_Quartz_Graphics_Driver::width_CoreText; +#endif +} + /* * By linking this module, the following static method will instantiate the * OS X Quartz Graphics driver as the main display driver. */ Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() { -#if HAS_ATSU - static int option = 0; // 0: not initialized, 1: use CoreText, 2: use ATSU - if (!option) { - option = 2; - if (Fl_Darwin_System_Driver::calc_mac_os_version() >= Fl_Quartz_Graphics_Driver::CoreText_threshold) { - option = 1; - } - } - if (option == 2) return new Fl_ATSU_Graphics_Driver(); -#endif // HAS_ATSU -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 - return new Fl_CoreText_Graphics_Driver(); -#else - return NULL; // should not happen -#endif + return new Fl_Quartz_Graphics_Driver(); +} + +Fl_Quartz_Graphics_Driver::Fl_Quartz_Graphics_Driver() : Fl_Graphics_Driver(), gc_(NULL), p_size(0), p(NULL) { + quartz_line_width_ = 1.f; + quartz_line_cap_ = kCGLineCapButt; + quartz_line_join_ = kCGLineJoinMiter; + quartz_line_pattern = 0; + quartz_line_pattern_size = 0; + high_resolution_ = false; + if (!CoreText_or_ATSU) init_CoreText_or_ATSU(); } char Fl_Quartz_Graphics_Driver::can_do_alpha_blending() { |
