FLTK 1.4.0
Loading...
Searching...
No Matches
Fl_Device.H
Go to the documentation of this file.
1//
2// Definition of classes Fl_Surface_Device, Fl_Display_Device
3// for the Fast Light Tool Kit (FLTK).
4//
5// Copyright 2010-2021 by Bill Spitzak and others.
6//
7// This library is free software. Distribution and use rights are outlined in
8// the file "COPYING" which should have been included with this file. If this
9// file is missing or damaged, see the license at:
10//
11// https://www.fltk.org/COPYING.php
12//
13// Please see the following page on how to report bugs and issues:
14//
15// https://www.fltk.org/bugs.php
16//
17
22#ifndef Fl_Device_H
23#define Fl_Device_H
24
25#include <FL/Fl_Plugin.H>
26#include <FL/platform_types.h>
27
28class Fl_Graphics_Driver;
29class Fl_RGB_Image;
30class Fl_Widget;
32
66class FL_EXPORT Fl_Surface_Device {
68 Fl_Graphics_Driver *pGraphicsDriver;
69 static Fl_Surface_Device *surface_; // the surface that currently receives graphics requests
70 static Fl_Surface_Device *default_surface(); // create surface if none exists yet
71protected:
76 virtual void end_current() { surface_ = 0;}
78 Fl_Surface_Device(Fl_Graphics_Driver *graphics_driver) {pGraphicsDriver = graphics_driver; }
80 inline void driver(Fl_Graphics_Driver *graphics_driver) {pGraphicsDriver = graphics_driver;}
81public:
82 virtual void set_current(void);
83 virtual bool is_current();
85 inline Fl_Graphics_Driver *driver() {return pGraphicsDriver; }
90 static inline Fl_Surface_Device *surface() {
91 return surface_ ? surface_ : default_surface();
92 }
94 virtual ~Fl_Surface_Device();
95 static void push_current(Fl_Surface_Device *new_current);
96 static Fl_Surface_Device *pop_current();
97};
98
104class FL_EXPORT Fl_Display_Device : public Fl_Surface_Device {
105 Fl_Display_Device(Fl_Graphics_Driver *graphics_driver);
106public:
107 static Fl_Display_Device *display_device();
108};
109
118public:
120 Fl_Device_Plugin(const char *pluginName)
121 : Fl_Plugin(klass(), pluginName) { }
123 virtual const char *klass() { return "fltk:device"; }
125 virtual const char *name() = 0;
127 virtual int print(Fl_Widget* w) = 0;
131 virtual Fl_RGB_Image* rectangle_capture(Fl_Widget *widget, int x, int y, int w, int h) = 0;
134};
135
136#endif // Fl_Device_H
This plugin socket allows the integration of new device drivers for special window or screen types.
Definition Fl_Device.H:117
static Fl_Device_Plugin * opengl_plugin()
Returns the OpenGL plugin.
Definition Fl_Device.cxx:149
virtual int print(Fl_Widget *w)=0
Prints a widget.
Fl_Device_Plugin(const char *pluginName)
The constructor.
Definition Fl_Device.H:120
virtual const char * klass()
Returns the class name.
Definition Fl_Device.H:123
virtual const char * name()=0
Returns the plugin name.
virtual Fl_RGB_Image * rectangle_capture(Fl_Widget *widget, int x, int y, int w, int h)=0
Captures a rectangle of a widget as an image.
The computer's display.
Definition Fl_Device.H:104
Directs all graphics requests to an Fl_Image.
Definition Fl_Image_Surface.H:65
Fl_Plugin allows link-time and run-time integration of binary modules.
Definition Fl_Plugin.H:59
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
A drawing surface that's susceptible to receive graphical output.
Definition Fl_Device.H:66
void driver(Fl_Graphics_Driver *graphics_driver)
Sets the graphics driver of this drawing surface.
Definition Fl_Device.H:80
virtual void end_current()
FLTK calls this each time a surface ceases to be the current drawing surface.
Definition Fl_Device.H:76
Fl_Graphics_Driver * driver()
Returns the graphics driver of this drawing surface.
Definition Fl_Device.H:85
Fl_Surface_Device(Fl_Graphics_Driver *graphics_driver)
Constructor that sets the graphics driver to use for the created surface.
Definition Fl_Device.H:78
static Fl_Surface_Device * surface()
The current drawing surface.
Definition Fl_Device.H:90
Fl_Widget is the base class for all widgets in FLTK.
Definition Fl_Widget.H:104
Definitions of platform-dependent types.