Add an argument to the private, virtual member function void Fl_Surface_Device::end_current_().
The X11 platform uses this argument to restore the correct clipping state after drawing to an Fl_Image_Surface object. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12226 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
f15f477243
commit
2ddc89fb61
@ -4,7 +4,7 @@
|
||||
// Definition of classes Fl_Surface_Device, Fl_Display_Device
|
||||
// for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
// Copyright 2010-2016 by Bill Spitzak and others.
|
||||
// Copyright 2010-2017 by Bill Spitzak and others.
|
||||
//
|
||||
// This library is free software. Distribution and use rights are outlined in
|
||||
// the file "COPYING" which should have been included with this file. If this
|
||||
@ -57,9 +57,10 @@ class FL_EXPORT Fl_Surface_Device {
|
||||
Fl_Graphics_Driver *pGraphicsDriver;
|
||||
static Fl_Surface_Device *surface_; // the surface that currently receives graphics requests
|
||||
static Fl_Surface_Device *default_surface(); // create surface if none exists yet
|
||||
// Some drawing surfaces (e.g., Fl_XXX_Image_Surface_Driver) re-implement this.
|
||||
// Gets called each time a surface ceases to be the current drawing surface.
|
||||
virtual void end_current_() {}
|
||||
/* Some drawing surfaces (e.g., Fl_XXX_Image_Surface_Driver) re-implement this.
|
||||
Gets called each time a surface ceases to be the current drawing surface.
|
||||
The next_current argument gives the drawing surface that will become current next */
|
||||
virtual void end_current_(Fl_Surface_Device *next_current) {}
|
||||
protected:
|
||||
/** Constructor that sets the graphics driver to use for the created surface. */
|
||||
Fl_Surface_Device(Fl_Graphics_Driver *graphics_driver) {pGraphicsDriver = graphics_driver; }
|
||||
|
@ -3,7 +3,7 @@
|
||||
//
|
||||
// implementation of Fl_Device class for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
// Copyright 2010-2016 by Bill Spitzak and others.
|
||||
// Copyright 2010-2017 by Bill Spitzak and others.
|
||||
//
|
||||
// This library is free software. Distribution and use rights are outlined in
|
||||
// the file "COPYING" which should have been included with this file. If this
|
||||
@ -50,7 +50,7 @@
|
||||
is Fl_Surface_Device::push_current( ) / Fl_Surface_Device::pop_current().*/
|
||||
void Fl_Surface_Device::set_current(void)
|
||||
{
|
||||
if (surface_) surface_->end_current_();
|
||||
if (surface_) surface_->end_current_(this);
|
||||
fl_graphics_driver = pGraphicsDriver;
|
||||
surface_ = this;
|
||||
pGraphicsDriver->global_gc();
|
||||
|
@ -3,7 +3,7 @@
|
||||
//
|
||||
// Draw-to-image code for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
// Copyright 1998-2016 by Bill Spitzak and others.
|
||||
// Copyright 1998-2017 by Bill Spitzak and others.
|
||||
//
|
||||
// This library is free software. Distribution and use rights are outlined in
|
||||
// the file "COPYING" which should have been included with this file. If this
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
class Fl_GDI_Image_Surface_Driver : public Fl_Image_Surface_Driver {
|
||||
friend class Fl_Image_Surface;
|
||||
virtual void end_current_();
|
||||
virtual void end_current_(Fl_Surface_Device*);
|
||||
public:
|
||||
Fl_Surface_Device *previous;
|
||||
Window pre_window;
|
||||
@ -97,7 +97,7 @@ Fl_RGB_Image* Fl_GDI_Image_Surface_Driver::image()
|
||||
}
|
||||
|
||||
|
||||
void Fl_GDI_Image_Surface_Driver::end_current_()
|
||||
void Fl_GDI_Image_Surface_Driver::end_current_(Fl_Surface_Device*)
|
||||
{
|
||||
HDC gc = (HDC)driver()->gc();
|
||||
RestoreDC(gc, _savedc);
|
||||
|
@ -3,7 +3,7 @@
|
||||
//
|
||||
// Draw-to-image code for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
// Copyright 1998-2016 by Bill Spitzak and others.
|
||||
// Copyright 1998-2017 by Bill Spitzak and others.
|
||||
//
|
||||
// This library is free software. Distribution and use rights are outlined in
|
||||
// the file "COPYING" which should have been included with this file. If this
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
class Fl_Quartz_Image_Surface_Driver : public Fl_Image_Surface_Driver {
|
||||
friend class Fl_Image_Surface;
|
||||
virtual void end_current_();
|
||||
virtual void end_current_(Fl_Surface_Device*);
|
||||
public:
|
||||
Window pre_window;
|
||||
Fl_Quartz_Image_Surface_Driver(int w, int h, int high_res, Fl_Offscreen off);
|
||||
@ -105,7 +105,7 @@ Fl_RGB_Image* Fl_Quartz_Image_Surface_Driver::image()
|
||||
return image;
|
||||
}
|
||||
|
||||
void Fl_Quartz_Image_Surface_Driver::end_current_()
|
||||
void Fl_Quartz_Image_Surface_Driver::end_current_(Fl_Surface_Device*)
|
||||
{
|
||||
fl_window = pre_window;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
//
|
||||
// Copy-to-clipboard code for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
// Copyright 1998-2016 by Bill Spitzak and others.
|
||||
// Copyright 1998-2017 by Bill Spitzak and others.
|
||||
//
|
||||
// This library is free software. Distribution and use rights are outlined in
|
||||
// the file "COPYING" which should have been included with this file. If this
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
class Fl_Xlib_Copy_Surface_Driver : public Fl_Copy_Surface_Driver {
|
||||
friend class Fl_Copy_Surface_Driver;
|
||||
virtual void end_current_();
|
||||
virtual void end_current_(Fl_Surface_Device*);
|
||||
protected:
|
||||
Fl_Offscreen xid;
|
||||
Window oldwindow;
|
||||
@ -80,7 +80,7 @@ void Fl_Xlib_Copy_Surface_Driver::set_current() {
|
||||
Fl_Surface_Device::set_current();
|
||||
}
|
||||
|
||||
void Fl_Xlib_Copy_Surface_Driver::end_current_() {
|
||||
void Fl_Xlib_Copy_Surface_Driver::end_current_(Fl_Surface_Device*) {
|
||||
fl_window = oldwindow;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
class Fl_Xlib_Image_Surface_Driver : public Fl_Image_Surface_Driver {
|
||||
friend class Fl_Image_Surface;
|
||||
virtual void end_current_();
|
||||
virtual void end_current_(Fl_Surface_Device *next_current);
|
||||
public:
|
||||
Window pre_window;
|
||||
Fl_Xlib_Image_Surface_Driver(int w, int h, int high_res, Fl_Offscreen off);
|
||||
@ -79,9 +79,10 @@ Fl_RGB_Image* Fl_Xlib_Image_Surface_Driver::image()
|
||||
return image;
|
||||
}
|
||||
|
||||
void Fl_Xlib_Image_Surface_Driver::end_current_()
|
||||
void Fl_Xlib_Image_Surface_Driver::end_current_(Fl_Surface_Device *next_current)
|
||||
{
|
||||
fl_pop_clip();
|
||||
next_current->driver()->restore_clip();
|
||||
fl_window = pre_window;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user