summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2016-04-19 14:25:47 +0000
committerManolo Gouy <Manolo>2016-04-19 14:25:47 +0000
commitf9edd867538f44af3eaf56cb8673b05668b56428 (patch)
tree760895218ea2803d7ab49371ebe5db81abd4903d /src/drivers
parent034cfc94a31b92a02454630da1edb27670633ebb (diff)
Move several of the methods of class Fl_X for Mac platform to class Fl_Cocoa_Window_Driver.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11657 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm2
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx3
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H16
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx4
4 files changed, 20 insertions, 5 deletions
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
index aa23818e6..2003f2d46 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
+++ b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
@@ -373,7 +373,7 @@ void Fl_Cocoa_Printer_Driver::print_window_part(Fl_Window *win, int x, int y, in
Fl_Window *save_front = Fl::first_window();
win->show();
Fl::check();
- CGImageRef img = Fl_X::CGImage_from_window_rect(win, x, y, w, h);
+ CGImageRef img = ((Fl_Cocoa_Window_Driver*)win->driver())->CGImage_from_window_rect(x, y, w, h);
if (save_front != win) save_front->show();
current->set_current();
((Fl_Quartz_Graphics_Driver*)driver())->draw_CGImage(img,delta_x, delta_y, w, h, 0,0,w,h);
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
index d4054affc..1506fbbc4 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
+++ b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
@@ -339,7 +339,8 @@ Fl_Cocoa_Screen_Driver::read_image(uchar *p, // I - Pixel buffer or NULL to all
if( (sw - x < w) || (sh - y < h) ) return NULL;
}
else { // reading from current window
- base = Fl_X::bitmap_from_window_rect(Fl_Window::current(),x,y,w,h,&delta);
+ Fl_Cocoa_Window_Driver *d = (Fl_Cocoa_Window_Driver*)Fl_Window::current()->driver();
+ base = d->bitmap_from_window_rect(x,y,w,h,&delta);
if (!base) return NULL;
rowBytes = delta*w;
x = y = 0;
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H
index caf705cbe..406182967 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H
+++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H
@@ -66,7 +66,10 @@ class FL_EXPORT Fl_Cocoa_Window_Driver : public Fl_Window_Driver
private:
void shape_bitmap_(Fl_Image* b);
void shape_alpha_(Fl_Image* img, int offset);
-
+ CGRect* subRect_; // makes sure subwindow remains inside its parent window
+ // stores 3 binary flags: whether window is mapped to retina display; whether resolution just changed;
+ // whether window is OpenGL and is currently being resized.
+ unsigned window_flags_;
public:
Fl_Cocoa_Window_Driver(Fl_Window*);
~Fl_Cocoa_Window_Driver();
@@ -74,6 +77,17 @@ public:
NSCursor *cursor;
static void q_release_context(Fl_Cocoa_Window_Driver *x = 0); // free all resources associated with gc
void set_key_window();
+ bool mapped_to_retina(); // is window mapped to retina display?
+ void mapped_to_retina(bool); // sets whether window is mapped to retina display
+ bool changed_resolution(); // did window just moved to display with another resolution?
+ void changed_resolution(bool);// sets whether window just moved to display with another resolution
+ bool in_windowDidResize(); // is window performing windowDidResize?
+ void in_windowDidResize(bool); // sets whether window is performing windowDidResize
+ CGRect* subRect() { return subRect_; } // getter
+ void subRect(CGRect *r) { subRect_ = r; } // setter
+ void destroy();
+ unsigned char *bitmap_from_window_rect(int x, int y, int w, int h, int *bytesPerPixel);
+ CGImageRef CGImage_from_window_rect(int x, int y, int w, int h);
// --- window data
virtual int decorated_w();
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
index df1bb114e..8e1b59ee2 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
+++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx
@@ -240,7 +240,7 @@ void Fl_Cocoa_Window_Driver::hide() {
if ( ip->xid == fl_window )
fl_window = 0;
if (ip->region) Fl_Graphics_Driver::default_driver().XDestroyRegion(ip->region);
- ip->destroy();
+ destroy();
delete ip;
}
@@ -273,7 +273,7 @@ void Fl_Cocoa_Window_Driver::decoration_sizes(int *top, int *left, int *right,
int Fl_Cocoa_Window_Driver::scroll(int src_x, int src_y, int src_w, int src_h, int dest_x, int dest_y, void (*draw_area)(void*, int,int,int,int), void* data)
{
- CGImageRef img = Fl_X::CGImage_from_window_rect(Fl_Window::current(), src_x, src_y, src_w, src_h);
+ CGImageRef img = CGImage_from_window_rect(src_x, src_y, src_w, src_h);
if (img) {
((Fl_Quartz_Graphics_Driver*)fl_graphics_driver)->draw_CGImage(img,dest_x,dest_y,src_w,src_h,0,0,src_w,src_h);
CFRelease(img);