FLTK
Fl_Image_Surface.H
1 //
2 // Draw-to-image code for the Fast Light Tool Kit (FLTK).
3 //
4 // Copyright 1998-2016 by Bill Spitzak and others.
5 //
6 // This library is free software. Distribution and use rights are outlined in
7 // the file "COPYING" which should have been included with this file. If this
8 // file is missing or damaged, see the license at:
9 //
10 // https://www.fltk.org/COPYING.php
11 //
12 // Please see the following page on how to report bugs and issues:
13 //
14 // https://www.fltk.org/bugs.php
15 //
16 
17 #ifndef Fl_Image_Surface_H
18 #define Fl_Image_Surface_H
19 
20 #include <FL/Fl_Widget_Surface.H>
21 #include <FL/Fl_Image.H>
22 #include <FL/Fl_Shared_Image.H>
23 #include <FL/platform_types.h> // for Fl_Offscreen
24 
25 
65 class FL_EXPORT Fl_Image_Surface : public Fl_Widget_Surface {
66  friend class Fl_Graphics_Driver;
67 private:
68  class Fl_Image_Surface_Driver *platform_surface;
69  Fl_Offscreen get_offscreen_before_delete_();
70 protected:
71  void translate(int x, int y);
72  void untranslate();
73 public:
74  Fl_Image_Surface(int w, int h, int high_res = 0, Fl_Offscreen off = 0);
76  void set_current();
77  virtual bool is_current();
78  Fl_RGB_Image *image();
79  Fl_Shared_Image *highres_image();
80  void origin(int *x, int *y);
81  void origin(int x, int y);
82  int printable_rect(int *w, int *h);
83  Fl_Offscreen offscreen();
84  void rescale();
85 };
86 
87 
99 class Fl_Image_Surface_Driver : public Fl_Widget_Surface {
100  friend class Fl_Image_Surface;
101 protected:
102  int width;
103  int height;
105  int external_offscreen;
106  Fl_Image_Surface_Driver(int w, int h, int high_res, Fl_Offscreen off) : Fl_Widget_Surface(NULL), width(w), height(h), offscreen(off) {external_offscreen = (off != 0);}
107  virtual ~Fl_Image_Surface_Driver() {}
108  virtual void set_current() = 0;
109  virtual void translate(int x, int y) = 0;
110  virtual void untranslate() = 0;
111  int printable_rect(int *w, int *h);
112  virtual Fl_RGB_Image *image() = 0;
117  static Fl_Image_Surface_Driver *newImageSurfaceDriver(int w, int h, int high_res, Fl_Offscreen off);
118 };
119 
125 #endif // Fl_Image_Surface_H
void untranslate()
Undoes the effect of a previous translate() call.
Definition: Fl_Image_Surface.cxx:66
opaque Fl_Offscreen
an offscreen drawing buffer
Definition: platform_types.h:35
virtual void set_current(void)
Make this surface the current drawing surface.
Definition: Fl_Device.cxx:67
Definitions of platform-dependent types.
Fl_Image, Fl_RGB_Image classes.
virtual void untranslate()
Undoes the effect of a previous translate() call.
Definition: Fl_Widget_Surface.cxx:121
The Fl_RGB_Image class supports caching and drawing of full-color images with 1 to 4 channels of colo...
Definition: Fl_Image.H:287
virtual int printable_rect(int *w, int *h)
Computes the width and height of the drawable area of the drawing surface.
Definition: Fl_Widget_Surface.cxx:190
Directs all graphics requests to an Fl_Image.
Definition: Fl_Image_Surface.H:65
virtual bool is_current()
Is this surface the current drawing surface?
Definition: Fl_Device.cxx:79
int printable_rect(int *w, int *h)
Computes the width and height of the drawable area of the drawing surface.
Definition: Fl_Image_Surface.cxx:78
Fl_Widget_Surface(Fl_Graphics_Driver *d)
The constructor.
Definition: Fl_Widget_Surface.cxx:28
Fl_RGB_Image * image()
Returns an image made of all drawings sent to the Fl_Image_Surface object.
Definition: Fl_Image_Surface.cxx:98
A surface on which any FLTK widget can be drawn.
Definition: Fl_Widget_Surface.H:25
Fl_Shared_Image class.
void translate(int x, int y)
Translates the current graphics origin accounting for the current rotation.
Definition: Fl_Image_Surface.cxx:62
void set_current()
Make this surface the current drawing surface.
Definition: Fl_Image_Surface.cxx:54
This class supports caching, loading, and drawing of image files.
Definition: Fl_Shared_Image.H:49
virtual void translate(int x, int y)
Translates the current graphics origin accounting for the current rotation.
Definition: Fl_Widget_Surface.cxx:114
Fl_Offscreen offscreen()
Returns the Fl_Offscreen object associated to the image surface.
Definition: Fl_Image_Surface.cxx:74
virtual void origin(int x, int y)
Sets the position of the origin of graphics in the drawable part of the drawing surface.
Definition: Fl_Widget_Surface.cxx:145