summaryrefslogtreecommitdiff
path: root/src/drivers/Quartz
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2016-04-19 12:46:07 +0000
committerManolo Gouy <Manolo>2016-04-19 12:46:07 +0000
commit034cfc94a31b92a02454630da1edb27670633ebb (patch)
tree2790a839d1c2e4d5e37780b499f96c32167da902 /src/drivers/Quartz
parent366f4bfbc9e6d71e7b5fccf6d666d5dd3cab600c (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/Quartz')
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver.H8
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx2
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx12
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx5
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;
}