diff options
| author | Manolo Gouy <Manolo> | 2016-04-19 14:25:47 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2016-04-19 14:25:47 +0000 |
| commit | f9edd867538f44af3eaf56cb8673b05668b56428 (patch) | |
| tree | 760895218ea2803d7ab49371ebe5db81abd4903d /src/drivers | |
| parent | 034cfc94a31b92a02454630da1edb27670633ebb (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.mm | 2 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx | 3 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H | 16 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx | 4 |
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); |
