FLTK 1.4.0
Loading...
Searching...
No Matches
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
65class FL_EXPORT Fl_Image_Surface : public Fl_Widget_Surface {
66 friend class Fl_Graphics_Driver;
67private:
68 class Fl_Image_Surface_Driver *platform_surface;
69 Fl_Offscreen get_offscreen_before_delete_();
70protected:
71 void translate(int x, int y) FL_OVERRIDE;
73public:
74 Fl_Image_Surface(int w, int h, int high_res = 0, Fl_Offscreen off = 0);
78 Fl_RGB_Image *image();
79 Fl_Shared_Image *highres_image();
80 void origin(int *x, int *y) FL_OVERRIDE;
81 void origin(int x, int y) FL_OVERRIDE;
82 int printable_rect(int *w, int *h) FL_OVERRIDE;
83 Fl_Offscreen offscreen();
84 void rescale();
85 void mask(const Fl_RGB_Image *);
86};
87
88
100class Fl_Image_Surface_Driver : public Fl_Widget_Surface {
101 friend class Fl_Image_Surface;
102private:
103 Fl_Image_Surface *image_surface_;
104protected:
105 int width;
106 int height;
107 Fl_Offscreen offscreen;
108 int external_offscreen;
109 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);}
110 virtual ~Fl_Image_Surface_Driver() {}
111 static void copy_with_mask(Fl_RGB_Image* mask, uchar *dib_dst, uchar *dib_src,
112 int line_size, bool bottom_to_top);
113 static Fl_RGB_Image *RGB3_to_RGB1(const Fl_RGB_Image *rgb3, int W, int H);
114 void set_current() FL_OVERRIDE = 0;
115 void translate(int x, int y) FL_OVERRIDE = 0;
116 void untranslate() FL_OVERRIDE = 0;
117 int printable_rect(int *w, int *h) FL_OVERRIDE;
118 virtual Fl_RGB_Image *image() = 0;
119 virtual void mask(const Fl_RGB_Image *) {}
124 static Fl_Image_Surface_Driver *newImageSurfaceDriver(int w, int h, int high_res, Fl_Offscreen off);
125public:
127 Fl_Image_Surface *image_surface() { return image_surface_; }
128};
129
135#endif // Fl_Image_Surface_H
Fl_Image, Fl_RGB_Image classes.
Fl_Shared_Image class.
Directs all graphics requests to an Fl_Image.
Definition Fl_Image_Surface.H:65
The Fl_RGB_Image class supports caching and drawing of full-color images with 1 to 4 channels of colo...
Definition Fl_Image.H:339
This class supports caching, loading, and drawing of image files.
Definition Fl_Shared_Image.H:94
virtual bool is_current()
Is this surface the current drawing surface?
Definition Fl_Device.cxx:92
virtual void set_current(void)
Make this surface the current drawing surface.
Definition Fl_Device.cxx:80
A surface on which any FLTK widget can be drawn.
Definition Fl_Widget_Surface.H:25
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
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
virtual void untranslate()
Undoes the effect of a previous translate() call.
Definition Fl_Widget_Surface.cxx:121
virtual void translate(int x, int y)
Translates the current graphics origin accounting for the current rotation.
Definition Fl_Widget_Surface.cxx:114
#define FL_OVERRIDE
This macro makes it safe to use the C++11 keyword override with older compilers.
Definition fl_attr.h:46
unsigned char uchar
unsigned char
Definition fl_types.h:30
Definitions of platform-dependent types.
opaque Fl_Offscreen
Platform-specific value representing an offscreen drawing buffer.
Definition platform_types.h:46