diff options
| author | Manolo Gouy <Manolo> | 2016-04-19 12:46:07 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2016-04-19 12:46:07 +0000 |
| commit | 034cfc94a31b92a02454630da1edb27670633ebb (patch) | |
| tree | 2790a839d1c2e4d5e37780b499f96c32167da902 /src/drivers | |
| parent | 366f4bfbc9e6d71e7b5fccf6d666d5dd3cab600c (diff) | |
Move Fl_X::set_high_resolution() to classes Fl_Graphics_Driver and Fl_Quartz_Graphics_Driver
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11656 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers')
4 files changed, 14 insertions, 13 deletions
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H index d022ff1df..e6daeff74 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H @@ -39,8 +39,11 @@ protected: int p_size; typedef struct { float x; float y; } XPOINT; XPOINT *p; + bool high_resolution_; public: - Fl_Quartz_Graphics_Driver() : Fl_Graphics_Driver(), gc_(NULL), p_size(0), p(NULL) {} + Fl_Quartz_Graphics_Driver() : Fl_Graphics_Driver(), gc_(NULL), p_size(0), p(NULL) { + high_resolution_ = false; + } virtual ~Fl_Quartz_Graphics_Driver() { if (p) free(p); } virtual int has_feature(driver_feature mask) { return mask & NATIVE; } virtual void gc(void *ctxt) {if (ctxt != gc_) global_gc(); gc_ = (CGContextRef)ctxt; } @@ -67,6 +70,7 @@ public: void add_rectangle_to_region(Fl_Region r, int x, int y, int w, int h); Fl_Region XRectangleRegion(int x, int y, int w, int h); void XDestroyRegion(Fl_Region r); + void high_resolution(bool b) { high_resolution_ = b; } protected: void transformed_vertex0(float x, float y); void fixloop(); @@ -127,7 +131,7 @@ protected: void text_extents(const char*, int n, int& dx, int& dy, int& w, int& h); int height(); int descent(); -protected: + virtual bool high_resolution() { return high_resolution_; } virtual void global_gc(); }; diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx index d66694a35..44e6d008f 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx @@ -293,7 +293,7 @@ void Fl_Quartz_Graphics_Driver::draw_CGImage(CGImageRef cgimg, int x, int y, int doit = true; } else if (at.a == 0.5) { doit = true; - if (Fl_Display_Device::high_resolution()) { // make .tx and .ty have int or half-int values + if (high_resolution()) { // make .tx and .ty have int or half-int values deltax = -(at.tx*2 - round(at.tx*2)); deltay = (at.ty*2 - round(at.ty*2)); } else { // make .tx and .ty have integral values diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx index d61c7ad7e..caa5dc64c 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx @@ -78,7 +78,7 @@ void Fl_Quartz_Graphics_Driver::xyline(int x, int y, int x1) { CGContextMoveToPoint(gc_, x, y); CGContextAddLineToPoint(gc_, x1, y); CGContextStrokePath(gc_); - if (Fl_Display_Device::high_resolution()) { + if (high_resolution()) { /* On retina displays, all xyline() and yxline() functions produce lines that are half-unit (or one pixel) too short at both ends. This is corrected by filling at both ends rectangles of size one unit by line-width. @@ -95,7 +95,7 @@ void Fl_Quartz_Graphics_Driver::xyline(int x, int y, int x1, int y2) { CGContextAddLineToPoint(gc_, x1, y); CGContextAddLineToPoint(gc_, x1, y2); CGContextStrokePath(gc_); - if (Fl_Display_Device::high_resolution()) { + if (high_resolution()) { CGContextFillRect(gc_, CGRectMake(x-0.5, y - fl_quartz_line_width_/2, 1 , fl_quartz_line_width_)); CGContextFillRect(gc_, CGRectMake(x1 - fl_quartz_line_width_/2, y2-0.5, fl_quartz_line_width_, 1)); } @@ -109,7 +109,7 @@ void Fl_Quartz_Graphics_Driver::xyline(int x, int y, int x1, int y2, int x3) { CGContextAddLineToPoint(gc_, x1, y2); CGContextAddLineToPoint(gc_, x3, y2); CGContextStrokePath(gc_); - if (Fl_Display_Device::high_resolution()) { + if (high_resolution()) { CGContextFillRect(gc_, CGRectMake(x-0.5, y - fl_quartz_line_width_/2, 1 , fl_quartz_line_width_)); CGContextFillRect(gc_, CGRectMake(x3-0.5, y2 - fl_quartz_line_width_/2, 1 , fl_quartz_line_width_)); } @@ -121,7 +121,7 @@ void Fl_Quartz_Graphics_Driver::yxline(int x, int y, int y1) { CGContextMoveToPoint(gc_, x, y); CGContextAddLineToPoint(gc_, x, y1); CGContextStrokePath(gc_); - if (Fl_Display_Device::high_resolution()) { + if (high_resolution()) { CGContextFillRect(gc_, CGRectMake(x - fl_quartz_line_width_/2, y-0.5, fl_quartz_line_width_, 1)); CGContextFillRect(gc_, CGRectMake(x - fl_quartz_line_width_/2, y1-0.5, fl_quartz_line_width_, 1)); } @@ -134,7 +134,7 @@ void Fl_Quartz_Graphics_Driver::yxline(int x, int y, int y1, int x2) { CGContextAddLineToPoint(gc_, x, y1); CGContextAddLineToPoint(gc_, x2, y1); CGContextStrokePath(gc_); - if (Fl_Display_Device::high_resolution()) { + if (high_resolution()) { CGContextFillRect(gc_, CGRectMake(x - fl_quartz_line_width_/2, y-0.5, fl_quartz_line_width_, 1)); CGContextFillRect(gc_, CGRectMake(x2-0.5, y1 - fl_quartz_line_width_/2, 1 , fl_quartz_line_width_)); } @@ -148,7 +148,7 @@ void Fl_Quartz_Graphics_Driver::yxline(int x, int y, int y1, int x2, int y3) { CGContextAddLineToPoint(gc_, x2, y1); CGContextAddLineToPoint(gc_, x2, y3); CGContextStrokePath(gc_); - if (Fl_Display_Device::high_resolution()) { + if (high_resolution()) { CGContextFillRect(gc_, CGRectMake(x - fl_quartz_line_width_/2, y-0.5, fl_quartz_line_width_, 1)); CGContextFillRect(gc_, CGRectMake(x2 - fl_quartz_line_width_/2, y3-0.5, fl_quartz_line_width_, 1)); } diff --git a/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx index db01a3fe0..528548ea4 100644 --- a/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx @@ -30,7 +30,6 @@ class Fl_Quartz_Image_Surface_Driver : public Fl_Image_Surface_Driver { public: Fl_Surface_Device *previous; Window pre_window; - int was_high; Fl_Quartz_Image_Surface_Driver(int w, int h, int high_res); ~Fl_Quartz_Image_Surface_Driver(); void set_current(); @@ -81,8 +80,7 @@ void Fl_Quartz_Image_Surface_Driver::set_current() { driver()->gc(offscreen); fl_window = 0; Fl_Surface_Device::set_current(); - was_high = Fl_Display_Device::high_resolution(); - Fl_X::set_high_resolution( CGBitmapContextGetWidth(offscreen) > width ); + ((Fl_Quartz_Graphics_Driver*)driver())->high_resolution( CGBitmapContextGetWidth(offscreen) > width ); } void Fl_Quartz_Image_Surface_Driver::translate(int x, int y) { @@ -111,7 +109,6 @@ Fl_RGB_Image* Fl_Quartz_Image_Surface_Driver::image() void Fl_Quartz_Image_Surface_Driver::end_current() { - Fl_X::set_high_resolution(was_high); previous->Fl_Surface_Device::set_current(); fl_window = pre_window; } |
