Directs all graphics requests to an Fl_Image. More...
#include <Fl_Image_Surface.H>
Public Member Functions | |
const char * | class_name () |
Returns the name of the class of this object. | |
void | draw (Fl_Widget *, int delta_x=0, int delta_y=0) |
Draws a widget in the image surface. | |
void | draw_decorated_window (Fl_Window *win, int delta_x=0, int delta_y=0) |
Draws a window and its borders and title bar to the image drawing surface. | |
Fl_Image_Surface (int w, int h, int highres=0) | |
Constructor with optional high resolution. | |
Fl_Shared_Image * | highres_image () |
Returns a possibly high resolution image made of all drawings sent to the Fl_Image_Surface object. | |
Fl_RGB_Image * | image () |
Returns an image made of all drawings sent to the Fl_Image_Surface object. | |
void | set_current () |
Make this surface the current drawing surface. | |
~Fl_Image_Surface () | |
The destructor. | |
Static Public Attributes | |
static const char * | class_id = "Fl_Image_Surface" |
A string that identifies each subclass of Fl_Device. |
Directs all graphics requests to an Fl_Image.
After creation of an Fl_Image_Surface object, call set_current() on it, and all subsequent graphics requests will be recorded in the image. It's possible to draw widgets (using Fl_Image_Surface::draw()) or to use any of the Drawing functions or the Color & Font functions. Finally, call image() on the object to obtain a newly allocated Fl_RGB_Image object.
Fl_GL_Window objects can be drawn in the image as well.
Usage example:
Fl_Widget *g = ...; // a widget you want to draw in an image Fl_Image_Surface *img_surf = new Fl_Image_Surface(g->w(), g->h()); // create an Fl_Image_Surface object img_surf->set_current(); // direct graphics requests to the image fl_color(FL_WHITE); fl_rectf(0, 0, g->w(), g->h()); // draw a white background img_surf->draw(g); // draw the g widget in the image Fl_RGB_Image* image = img_surf->image(); // get the resulting image delete img_surf; // delete the img_surf object Fl_Display_Device::display_device()->set_current(); // direct graphics requests back to the display
Fl_Image_Surface::Fl_Image_Surface | ( | int | w, | |
int | h, | |||
int | highres = 0 | |||
) |
Constructor with optional high resolution.
w | and | |
h | give the size in pixels of the resulting image. | |
highres | if non-zero, the surface pixel size is twice as high and wide as w and h, which is useful to draw it later on a high resolution display (e.g., retina display). This is implemented for the Mac OS platform only. If highres is non-zero, use Fl_Image_Surface::highres_image() to get the image data. |
const char* Fl_Image_Surface::class_name | ( | ) | [inline, virtual] |
Returns the name of the class of this object.
Use of the class_name() function is discouraged because it will be removed from future FLTK versions.
The class of an instance of an Fl_Device subclass can be checked with code such as:
if ( instance->class_name() == Fl_Printer::class_id ) { ... }
Reimplemented from Fl_Surface_Device.
void Fl_Image_Surface::draw | ( | Fl_Widget * | widget, | |
int | delta_x = 0 , |
|||
int | delta_y = 0 | |||
) |
Draws a widget in the image surface.
widget | any FLTK widget (e.g., standard, custom, window, GL view) to draw in the image | |
delta_x | and | |
delta_y | give the position in the image of the top-left corner of the widget |
void Fl_Image_Surface::draw_decorated_window | ( | Fl_Window * | win, | |
int | delta_x = 0 , |
|||
int | delta_y = 0 | |||
) |
Draws a window and its borders and title bar to the image drawing surface.
win | an FLTK window to draw in the image | |
delta_x | and | |
delta_y | give the position in the image of the top-left corner of the window's title bar |
Fl_Shared_Image * Fl_Image_Surface::highres_image | ( | ) |
Returns a possibly high resolution image made of all drawings sent to the Fl_Image_Surface object.
The Fl_Image_Surface object should have been constructed with Fl_Image_Surface(W, H, 1). The returned image is scaled to a size of WxH drawing units and may have a pixel size twice as wide and high. The returned object should be deallocated with Fl_Shared_Image::release() after use.
Fl_RGB_Image * Fl_Image_Surface::image | ( | ) |
Returns an image made of all drawings sent to the Fl_Image_Surface object.
The returned object contains its own copy of the RGB data. Prefer Fl_Image_Surface::highres_image() if the surface was constructed with the highres option on.
void Fl_Image_Surface::set_current | ( | void | ) | [virtual] |
Make this surface the current drawing surface.
This surface will receive all future graphics requests.
Reimplemented from Fl_Surface_Device.
const char * Fl_Image_Surface::class_id = "Fl_Image_Surface" [static] |
A string that identifies each subclass of Fl_Device.
Function class_name() applied to a device of this class returns this string.
Reimplemented from Fl_Surface_Device.