diff options
| author | Manolo Gouy <Manolo> | 2018-05-06 07:14:13 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2018-05-06 07:14:13 +0000 |
| commit | 5c16dcb65bfd8831a6834589fcfe5d5854386098 (patch) | |
| tree | 5b1abc66856de9dd36ce65c75467b842969d4289 /src/drivers/X11 | |
| parent | aab1b72af4924293ffc2fa74180480dc9afcc06f (diff) | |
Simplify Fl_XXX_Window_Driver::capture_titlebar_and_borders() using Fl_Image::scale().
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12902 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/X11')
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.H | 2 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.cxx | 21 |
2 files changed, 9 insertions, 14 deletions
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H index 800cc1d40..a3eb304ea 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Window_Driver.H @@ -137,7 +137,7 @@ public: virtual void icon(const void * ic); virtual void free_icons(); void set_icons(); // driver-internal support function - virtual void capture_titlebar_and_borders(Fl_Shared_Image*& top, Fl_Shared_Image*& left, Fl_Shared_Image*& bottom, Fl_Shared_Image*& right); + virtual void capture_titlebar_and_borders(Fl_RGB_Image*& top, Fl_RGB_Image*& left, Fl_RGB_Image*& bottom, Fl_RGB_Image*& right); virtual int can_do_overlay(); virtual void redraw_overlay(); virtual int 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); diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx index b89688b47..2e3de7b59 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx @@ -390,9 +390,8 @@ void Fl_X11_Window_Driver::free_icons() { This function exploits a feature of Fl_X11_Screen_Driver::read_win_rectangle() which, when called with negative 4th argument, captures the window decoration. */ -void Fl_X11_Window_Driver::capture_titlebar_and_borders(Fl_Shared_Image*& top, Fl_Shared_Image*& left, Fl_Shared_Image*& bottom, Fl_Shared_Image*& right) +void Fl_X11_Window_Driver::capture_titlebar_and_borders(Fl_RGB_Image*& top, Fl_RGB_Image*& left, Fl_RGB_Image*& bottom, Fl_RGB_Image*& right) { - Fl_RGB_Image *r_top, *r_left, *r_bottom, *r_right; top = left = bottom = right = NULL; if (pWindow->decorated_h() == h()) return; Window from = fl_window; @@ -413,24 +412,20 @@ void Fl_X11_Window_Driver::capture_titlebar_and_borders(Fl_Shared_Image*& top, F htop /= s; wsides /= s; fl_window = parent; if (htop) { - r_top = Fl::screen_driver()->read_win_rectangle(0, 0, - (w() + 2 * wsides), htop); - top = Fl_Shared_Image::get(r_top); + top = Fl::screen_driver()->read_win_rectangle(0, 0, - (w() + 2 * wsides), htop); top->scale(w() + 2 * wsides, htop, 0, 1); } if (wsides) { - r_left = Fl::screen_driver()->read_win_rectangle(0, htop, -wsides, h()); - if (r_left) { - left = Fl_Shared_Image::get(r_left); + left = Fl::screen_driver()->read_win_rectangle(0, htop, -wsides, h()); + if (left) { left->scale(wsides, h(), 0, 1); } - r_right = Fl::screen_driver()->read_win_rectangle(w() + wsides, htop, -wsides, h()); - if (r_right) { - right = Fl_Shared_Image::get(r_right); + right = Fl::screen_driver()->read_win_rectangle(w() + wsides, htop, -wsides, h()); + if (right) { right->scale(wsides, h(), 0, 1); } - r_bottom = Fl::screen_driver()->read_win_rectangle(0, htop + h(), -(w() + 2*wsides), hbottom); - if (r_bottom) { - bottom = Fl_Shared_Image::get(r_bottom); + bottom = Fl::screen_driver()->read_win_rectangle(0, htop + h(), -(w() + 2*wsides), hbottom); + if (bottom) { bottom->scale(w() + 2*wsides, wsides, 0, 1); } } fl_window = from; |
