From 4aa388d4ffb2f62986fb5dc7b06325a4dd0cf56a Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Tue, 19 Apr 2016 17:34:15 +0000 Subject: Add static Fl_XXX_Window_Driver *driver(Fl_Window*) to get the platform-specific driver of a window. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11663 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm | 2 +- src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx | 4 ++-- src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H | 1 + src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H | 1 + src/drivers/X11/Fl_X11_Window_Driver.H | 1 + 5 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/drivers') diff --git a/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm b/src/drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm index 2003f2d46..9ff5090cd 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_Cocoa_Window_Driver*)win->driver())->CGImage_from_window_rect(x, y, w, h); + CGImageRef img = Fl_Cocoa_Window_Driver::driver(win)->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 1506fbbc4..e54f45750 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx +++ b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx @@ -168,7 +168,7 @@ void Fl_Cocoa_Screen_Driver::grab(Fl_Window* win) if (win) { if (!Fl::grab_) { fl_capture = Fl_X::i(Fl::first_window())->xid; - ((Fl_Cocoa_Window_Driver*)Fl::first_window()->driver())->set_key_window(); + Fl_Cocoa_Window_Driver::driver(Fl::first_window())->set_key_window(); } Fl::grab_ = win; } else { @@ -339,7 +339,7 @@ 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 - Fl_Cocoa_Window_Driver *d = (Fl_Cocoa_Window_Driver*)Fl_Window::current()->driver(); + Fl_Cocoa_Window_Driver *d = Fl_Cocoa_Window_Driver::driver(Fl_Window::current()); base = d->bitmap_from_window_rect(x,y,w,h,&delta); if (!base) return NULL; rowBytes = delta*w; diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H index bd1071716..dba1021f8 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H @@ -75,6 +75,7 @@ private: public: Fl_Cocoa_Window_Driver(Fl_Window*); ~Fl_Cocoa_Window_Driver(); + static inline Fl_Cocoa_Window_Driver* driver(Fl_Window *w) {return (Fl_Cocoa_Window_Driver*)w->driver();} CGContextRef gc; // graphics context NSCursor *cursor; static void q_release_context(Fl_Cocoa_Window_Driver *x = 0); // free all resources associated with gc diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H index a286bcec0..775b40f9b 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.H @@ -68,6 +68,7 @@ private: public: Fl_WinAPI_Window_Driver(Fl_Window*); ~Fl_WinAPI_Window_Driver(); + static inline Fl_WinAPI_Window_Driver* driver(Fl_Window *w) {return (Fl_WinAPI_Window_Driver*)w->driver();} struct icon_data *icon_; HCURSOR cursor; diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H index d49d0e9e7..79efc22ec 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Window_Driver.H @@ -78,6 +78,7 @@ private: public: Fl_X11_Window_Driver(Fl_Window*); virtual ~Fl_X11_Window_Driver(); + static inline Fl_X11_Window_Driver* driver(Fl_Window *w) {return (Fl_X11_Window_Driver*)w->driver();} // --- window data virtual int decorated_w(); -- cgit v1.2.3