diff options
| author | Manolo Gouy <Manolo> | 2010-03-25 13:59:00 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2010-03-25 13:59:00 +0000 |
| commit | d748d323b993c5560443aca2a13b2e0ded3a8c6d (patch) | |
| tree | 6fca476530786075e5fcc9bd5f24c1a83d1255e5 /FL/Fl_Device.H | |
| parent | 309e47801322afea091619f9d5ac45fea04158ab (diff) | |
Reorganized code to allow compilation with Fl_Device, Fl_Display but without Fl_Abstract_Printer
(may be useful for embarked devices)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7330 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'FL/Fl_Device.H')
| -rw-r--r-- | FL/Fl_Device.H | 89 |
1 files changed, 31 insertions, 58 deletions
diff --git a/FL/Fl_Device.H b/FL/Fl_Device.H index c596f1203..8eaaa0c87 100644 --- a/FL/Fl_Device.H +++ b/FL/Fl_Device.H @@ -2,7 +2,7 @@ // "$Id$" // // Definition of classes Fl_Device, Fl_Display, Fl_Quartz_Display, Fl_GDI_Display, -// Fl_Xlib_Display and Fl_Device_Plugin for the Fast Light Tool Kit (FLTK). +// and Fl_Xlib_Display for the Fast Light Tool Kit (FLTK). // // Copyright 2010 by Bill Spitzak and others. // @@ -25,12 +25,19 @@ // // http://www.fltk.org/str.php // +/** \file Fl_Device.H + \brief declaration of classes Fl_Device, Fl_Display. +*/ #ifndef Fl_Device_H #define Fl_Device_H #include <FL/x.H> #include <FL/Fl_Plugin.H> +#include <FL/Fl_Image.H> +#include <FL/Fl_Bitmap.H> +#include <FL/Fl_Pixmap.H> +#include <FL/Fl_RGB_Image.H> #ifdef WIN32 #include <commdlg.h> #elif defined(__APPLE__) @@ -39,14 +46,23 @@ #endif class Fl_Widget; -class Fl_Image; -class Fl_RGB_Image; -class Fl_Pixmap; -class Fl_Bitmap; +class Fl_Device; class Fl_Display; class Fl_Abstract_Printer; -extern FL_EXPORT Fl_Display *fl_display_device; -typedef void (*Fl_Draw_Image_Cb)(void* ,int,int,int,uchar*); +/** \brief Points to the device that currently receives all graphics requests */ +FL_EXPORT extern Fl_Device *fl_device; +/** \brief Points to the platform's display device */ +FL_EXPORT extern Fl_Display *fl_display_device; + +/** + signature of image generation callback function. + \param[in] data user data passed to function + \param[in] x,y,w position and width of scan line in image + \param[out] buf buffer for generated image data. You must copy \p w + pixels from scanline \p y, starting at pixel \p x + to this buffer. + */ +typedef void (*Fl_Draw_Image_Cb)(void* data,int x,int y,int w,uchar* buf); /** \brief A pure virtual class subclassed to send the output of drawing functions to display, printers, or local files. @@ -63,7 +79,7 @@ typedef void (*Fl_Draw_Image_Cb)(void* ,int,int,int,uchar*); function of the \ref fl_drawings and \ref fl_attributes modules which bears the same name prefixed with fl_ . */ -class FL_EXPORT Fl_Device { +class Fl_Device { protected: /** \brief The device type */ int type_; @@ -73,6 +89,9 @@ protected: uchar bg_g_; /** \brief blue color for background and/or mixing if device does not support masking or alpha */ uchar bg_b_; + friend class Fl_Pixmap; + friend class Fl_Bitmap; + friend class Fl_RGB_Image; friend void fl_rect(int x, int y, int w, int h); friend void fl_rectf(int x, int y, int w, int h); friend void fl_line_style(int style, int width, char* dashes); @@ -220,24 +239,9 @@ protected: /** \brief see fl_draw_image_mono(Fl_Draw_Image_Cb cb, void* data, int X,int Y,int W,int H, int D). */ virtual void draw_image_mono(Fl_Draw_Image_Cb cb, void* data, int X,int Y,int W,int H, int D=1); // Image classes - /** \brief Draws an Fl_Pixmap object to the device. - * - Specifies a bounding box for the image, with the origin (upper left-hand corner) of - the image offset by the cx and cy arguments. - */ - virtual void draw(Fl_Pixmap * pxm,int XP, int YP, int WP, int HP, int cx, int cy); - /** \brief Draws an Fl_RGB_Image object to the device. - * - Specifies a bounding box for the image, with the origin (upper left-hand corner) of - the image offset by the cx and cy arguments. - */ virtual void draw(Fl_RGB_Image * rgb,int XP, int YP, int WP, int HP, int cx, int cy); - /** \brief Draws an Fl_Bitmap object to the device. - * - Specifies a bounding box for the image, with the origin (upper left-hand corner) of - the image offset by the cx and cy arguments. - */ - virtual void draw(Fl_Bitmap * bmp,int XP, int YP, int WP, int HP, int cx, int cy); + virtual void draw(Fl_Bitmap * bmp,int XP, int YP, int WP, int HP, int cx, int cy); + virtual void draw(Fl_Pixmap * pxm,int XP, int YP, int WP, int HP, int cx, int cy); public: /** @@ -254,19 +258,10 @@ public: /** @brief An RTTI emulation of device classes. It returns values < 256 if it is a display device */ - int type() {return type_;}; - /** - @brief Sets this device (display, printer, local file) as the target of future graphics calls. - * - @return The current target device of graphics calls. - */ - virtual Fl_Device *set_current(); + inline int type() {return type_;}; + virtual Fl_Device *set_current(void); virtual ~Fl_Device() {}; - - /** - @brief Returns the current target device of graphics calls. - */ static Fl_Device *current(); /** @@ -312,28 +307,6 @@ public: }; #endif -/** - This plugin socket allows the integration of new device drivers for special - window or screen types. It is currently used to provide an automated printing - service for OpenGL windows, if linked with fltk_gl. - */ -class Fl_Device_Plugin : public Fl_Plugin { -public: - /** \brief The constructor */ - Fl_Device_Plugin(const char *name) - : Fl_Plugin(klass(), name) { } - /** \brief Returns the class name */ - virtual const char *klass() { return "fltk:device"; } - /** \brief Returns the plugin name */ - virtual const char *name() = 0; - /** \brief Prints a widget - \param p the printer - \param w the widget - \param x,y offsets where to print relatively to coordinates origin - */ - virtual int print(Fl_Abstract_Printer* p, Fl_Widget* w, int x, int y) { return 0; } -}; - #endif // Fl_Device_H // |
