summaryrefslogtreecommitdiff
path: root/FL
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2010-04-18 06:57:37 +0000
committerManolo Gouy <Manolo>2010-04-18 06:57:37 +0000
commitd0b1cc30f7eac228caddadb2bc675865a4124b1b (patch)
tree210bf48b7ca03062c9a02c9b057539263f3d7ae1 /FL
parent828568a33610d7696f4764ce2ad0f4014f4a6e26 (diff)
Removed multiple inheritance: back to r. 7519 exactly.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7522 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'FL')
-rw-r--r--FL/Fl_Abstract_Printer.H9
-rw-r--r--FL/Fl_Bitmap.H5
-rw-r--r--FL/Fl_Device.H137
-rw-r--r--FL/Fl_Image.H3
-rw-r--r--FL/Fl_PSfile_Device.H431
-rw-r--r--FL/Fl_Pixmap.H3
-rw-r--r--FL/Fl_Printer.H7
7 files changed, 282 insertions, 313 deletions
diff --git a/FL/Fl_Abstract_Printer.H b/FL/Fl_Abstract_Printer.H
index 97f4092dc..919126fac 100644
--- a/FL/Fl_Abstract_Printer.H
+++ b/FL/Fl_Abstract_Printer.H
@@ -39,7 +39,10 @@
*
This class has no public constructor: don't instantiate it; use Fl_Printer or Fl_PSfile_Device instead.
*/
-class Fl_Abstract_Printer {
+class Fl_Abstract_Printer : public Fl_Device {
+ friend class Fl_Pixmap;
+ friend class Fl_RGB_Image;
+ friend class Fl_Bitmap;
private:
#ifdef __APPLE__
struct chain_elt {
@@ -59,11 +62,14 @@ protected:
struct chain_elt *image_list_;
/** \brief the printer's graphics context, if there's one, NULL otherwise */
void *gc;
+ /** \brief the constructor */
+ Fl_Abstract_Printer(void) { gc = NULL; bg_r_ = bg_g_ = bg_b_ = 0; };
#ifdef __APPLE__
/** \brief deletes the page image list */
void delete_image_list();
#endif
public:
+ Fl_Device *set_current(void);
virtual int start_job(int pagecount, int *frompage = NULL, int *topage = NULL);
virtual int start_page(void);
virtual int printable_rect(int *w, int *h);
@@ -85,4 +91,3 @@ public:
//
// End of "$Id$"
//
-
diff --git a/FL/Fl_Bitmap.H b/FL/Fl_Bitmap.H
index 92fe91eee..d47a82acf 100644
--- a/FL/Fl_Bitmap.H
+++ b/FL/Fl_Bitmap.H
@@ -40,8 +40,8 @@ struct Fl_Menu_Item;
(bitmap) images. Images are drawn using the current color.
*/
class FL_EXPORT Fl_Bitmap : public Fl_Image {
- friend class Fl_Graphics_Device;
-public:
+ friend class Fl_Device;
+ public:
/** pointer to raw bitmap data */
const uchar *array;
@@ -58,6 +58,7 @@ public:
unsigned id_;
#endif // __APPLE__ || WIN32
+ void generic_device_draw(int XP, int YP, int WP, int HP, int cx, int cy);
public:
/** The constructors create a new bitmap from the specified bitmap data */
diff --git a/FL/Fl_Device.H b/FL/Fl_Device.H
index ad8506f1e..8eaaa0c87 100644
--- a/FL/Fl_Device.H
+++ b/FL/Fl_Device.H
@@ -1,8 +1,8 @@
//
// "$Id$"
//
-// Definition of classes Fl_Device, Fl_Display_Device, Fl_Graphics_Device
-// for the Fast Light Tool Kit (FLTK).
+// Definition of classes Fl_Device, Fl_Display, Fl_Quartz_Display, Fl_GDI_Display,
+// and Fl_Xlib_Display for the Fast Light Tool Kit (FLTK).
//
// Copyright 2010 by Bill Spitzak and others.
//
@@ -26,7 +26,7 @@
// http://www.fltk.org/str.php
//
/** \file Fl_Device.H
- \brief declaration of classes Fl_Device, Fl_Display_Device.
+ \brief declaration of classes Fl_Device, Fl_Display.
*/
#ifndef Fl_Device_H
@@ -45,12 +45,14 @@
#include <stdio.h>
#endif
+class Fl_Widget;
class Fl_Device;
-class Fl_Display_Device;
+class Fl_Display;
+class Fl_Abstract_Printer;
/** \brief Points to the device that currently receives all graphics requests */
-extern Fl_Device *fl_device;
+FL_EXPORT extern Fl_Device *fl_device;
/** \brief Points to the platform's display device */
-extern Fl_Display_Device *fl_display_device;
+FL_EXPORT extern Fl_Display *fl_display_device;
/**
signature of image generation callback function.
@@ -69,18 +71,18 @@ typedef void (*Fl_Draw_Image_Cb)(void* data,int x,int y,int w,uchar* buf);
support all of FLTK drawing functions.
<br> The preferred FLTK API for drawing operations is the function collection of the
\ref fl_drawings and \ref fl_attributes modules.
- <br> Alternatively, methods of the Fl_Device class can be called
+ <br> Alternatively, member functions of the Fl_Device class can be called
using the global variable Fl_Device * \ref fl_device that points at all time to the single device
(an instance of an Fl_Device subclass) that's currently receiving graphics requests:
\code fl_device->rect(x, y, w, h); \endcode
- <br>Each protected method of the Fl_Device class has the same effect as the
+ <br>Each member function of the Fl_Device class has the same effect and parameter list as the
function of the \ref fl_drawings and \ref fl_attributes modules which bears the same name
- prefixed with fl_ and has the same parameter list.
+ prefixed with fl_ .
*/
class Fl_Device {
protected:
/** \brief The device type */
- const char *type_;
+ int type_;
/** \brief red color for background and/or mixing if device does not support masking or alpha */
uchar bg_r_;
/** \brief green color for background and/or mixing if device does not support masking or alpha */
@@ -90,7 +92,6 @@ protected:
friend class Fl_Pixmap;
friend class Fl_Bitmap;
friend class Fl_RGB_Image;
- friend class Fl_PS_Device;
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);
@@ -238,103 +239,73 @@ 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_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_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_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 *bm, int XP, int YP, int WP, int HP, int cx, int cy) {};
-
+ virtual void draw(Fl_RGB_Image * rgb,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:
- /** A name that identifies each subclass of Fl_Device */
- static const char *device_type;
/**
- @brief An RTTI emulation of device classes.
- *
- The type of an instance of an Fl_Device subclass can be checked with code such as:
- \code
- if ( fl_device->type() == Fl_Printer::device_type ) { ... }
- \endcode
+ @brief All implemented graphics output devices.
*/
- inline const char *type() {return type_;};
+ enum device_types {
+ xlib_display = 0, /**< The X11 display. */
+ quartz_display, /**< The Mac OS X display. */
+ gdi_display, /**< The MSWindows display. */
+ gdi_printer = 256, /**< The MSWindows printer. */
+ quartz_printer, /**< The Mac OS X printer. */
+ postscript_device /**< The PostScript device. */
+ };
+ /**
+ @brief An RTTI emulation of device classes. It returns values < 256 if it is a display device
+ */
+ inline int type() {return type_;};
virtual Fl_Device *set_current(void);
-
+
virtual ~Fl_Device() {};
static Fl_Device *current();
/**
@brief Returns the platform's display device.
*/
- static Fl_Display_Device *display_device() { return fl_display_device; };
+ static Fl_Display *display_device() { return fl_display_device; };
};
+extern FL_EXPORT Fl_Device *fl_device;
-#if defined(__APPLE__)
-// The Mac OS X-specific graphics class.
-class Fl_Graphics_Device : public Fl_Device {
-protected:
- Fl_Graphics_Device() { type_ = device_type; };
-public:
- static const char *device_type;
- void draw(Fl_Pixmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy);
- void draw(Fl_Bitmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy);
- void draw(Fl_RGB_Image *img, int XP, int YP, int WP, int HP, int cx, int cy);
+/**
+ @brief A virtual class subclassed for OS-specific display graphics.
+ */
+class Fl_Display : public Fl_Device {
+ friend class Fl_PSfile_Device;
};
-typedef Fl_Graphics_Device Fl_Quartz_Device;
-#elif defined(WIN32)
-// The MSWindows-specific graphics class.
-class Fl_Graphics_Device : public Fl_Device {
-protected:
- Fl_Graphics_Device() { type_ = device_type; };
+#if defined(__APPLE__) || defined(FL_DOXYGEN)
+/**
+ @brief The Mac OS X-specific display graphics class.
+ */
+class Fl_Quartz_Display : public Fl_Display {
public:
- static const char *device_type;
- void draw(Fl_Pixmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy);
- void draw(Fl_Bitmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy);
- void draw(Fl_RGB_Image *img, int XP, int YP, int WP, int HP, int cx, int cy);
+ Fl_Quartz_Display() { type_ = quartz_display; };
};
-typedef Fl_Graphics_Device Fl_GDI_Device;
-
-#else
+#endif
+#if defined(WIN32) || defined(FL_DOXYGEN)
/**
- @brief A class representing OS-specific graphics system.
- *
- This class is also named Fl_Quartz_Device on Mac OS X, Fl_GDI_Device on MS-Win, Fl_Xlib_Device on X11.
- A graphics system can be shared by various devices (e.g., display, printer, clipboard).
+ @brief The MSWindows-specific display graphics class.
*/
-class Fl_Graphics_Device : public Fl_Device {
-protected:
- Fl_Graphics_Device() { type_ = device_type; };
+class Fl_GDI_Display : public Fl_Display {
public:
- static const char *device_type;
- void draw(Fl_Pixmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy);
- void draw(Fl_Bitmap *pxm, int XP, int YP, int WP, int HP, int cx, int cy);
- void draw(Fl_RGB_Image *img, int XP, int YP, int WP, int HP, int cx, int cy);
+ Fl_GDI_Display() { type_ = gdi_display; };
};
-typedef Fl_Graphics_Device Fl_Xlib_Device;
#endif
-
+#if !( defined(__APPLE__) || defined(WIN32)) || defined(FL_DOXYGEN)
/**
- @brief The platform's display.
-*/
-class Fl_Display_Device : public Fl_Graphics_Device {
+ @brief The X11-specific display graphics class.
+ */
+class Fl_Xlib_Display : public Fl_Display {
public:
- static const char *device_type;
- Fl_Display_Device() { type_ = device_type; };
+ Fl_Xlib_Display() { type_ = xlib_display; };
};
-
+#endif
#endif // Fl_Device_H
diff --git a/FL/Fl_Image.H b/FL/Fl_Image.H
index 2cb77978c..ff10b1ef6 100644
--- a/FL/Fl_Image.H
+++ b/FL/Fl_Image.H
@@ -188,7 +188,8 @@ class FL_EXPORT Fl_Image {
&lt;FL/Fl_RGB_Image.H&gt; should be included.
*/
class FL_EXPORT Fl_RGB_Image : public Fl_Image {
- friend class Fl_Graphics_Device;
+ friend class Fl_Device;
+ void generic_device_draw(int X, int Y, int W, int H, int cx=0, int cy=0);
public:
const uchar *array;
diff --git a/FL/Fl_PSfile_Device.H b/FL/Fl_PSfile_Device.H
index d829e0789..a0fdba70d 100644
--- a/FL/Fl_PSfile_Device.H
+++ b/FL/Fl_PSfile_Device.H
@@ -33,238 +33,229 @@
#define NO_PAGE_FORMATS 30 /* MSVC6 compilation fix */
/**
- \brief Sends all graphics to PostScript.
+ \brief Sends all graphics to a local PostScript file; same API as Fl_Printer class.
*
- PostScript text output is presently implemented only for the latin character set.
+ This class has the same API as class Fl_Printer except for start_job() member function.
+ <p>PostScript text output is presently implemented only for the latin character set.
FLTK's standard fonts are output using PostScript's standard fonts: Helvetica, Courier,
Times (and their bold, oblique, italic variants), Symbol, ZapfDingbats.
*/
-FL_EXPORT class Fl_PS_Device : public Fl_Device {
-public:
- static const char *device_type;
- /**
- \brief Possible page formats.
- */
- enum Page_Format {
- A0 = 0,
- A1,
- A2,
- A3,
- A4,
- A5,
- A6,
- A7,
- A8,
- A9,
- B0,
- B1,
- B2,
- B3,
- B4,
- B5,
- B6,
- B7,
- B8,
- B9,
- B10,
- C5E,
- DLE,
- EXECUTIVE,
- FOLIO,
- LEDGER,
- LEGAL,
- LETTER,
- TABLOID,
- ENVELOPE,
- MEDIA = 0x1000
- };
-
- /**
- \brief Possible page layouts.
- */
- enum Page_Layout {PORTRAIT = 0, LANDSCAPE = 0x100, REVERSED = 0x200, ORIENTATION = 0x300};
+FL_EXPORT class Fl_PSfile_Device : public Fl_Abstract_Printer {
+ public:
+ /**
+ \brief Possible page formats.
+ */
+ enum Page_Format {
+ A0 = 0,
+ A1,
+ A2,
+ A3,
+ A4,
+ A5,
+ A6,
+ A7,
+ A8,
+ A9,
+ B0,
+ B1,
+ B2,
+ B3,
+ B4,
+ B5,
+ B6,
+ B7,
+ B8,
+ B9,
+ B10,
+ C5E,
+ DLE,
+ EXECUTIVE,
+ FOLIO,
+ LEDGER,
+ LEGAL,
+ LETTER,
+ TABLOID,
+ ENVELOPE,
+ MEDIA = 0x1000
+ };
+
+ /**
+ \brief Possible page layouts.
+ */
+ enum Page_Layout {PORTRAIT = 0, LANDSCAPE = 0x100, REVERSED = 0x200, ORIENTATION = 0x300};
#ifndef FL_DOXYGEN
-protected:
- enum SHAPE{NONE=0, LINE, LOOP, POLYGON, POINTS};
-
-typedef struct page_format {
- int width;
- int height;
- const char *name;
-} page_format;
-
-class Clip {
+ private:
+ enum SHAPE{NONE=0, LINE, LOOP, POLYGON, POINTS};
+
+ class Clip{
+ public:
+ int x, y, w, h;
+ Clip *prev;
+ };
+ Clip * clip_;
+
+ int lang_level_;
+ int font_;
+ int size_;
+ Fl_Color color_;
+ int gap_;
+ int pages_;
+
+ double width_;
+ double height_;
+
+ int shape_;
+ int linewidth_;// need for clipping, lang level 1-2
+ int linestyle_;//
+ int interpolate_; //interpolation of images
+ unsigned char cr_,cg_,cb_;
+ char linedash_[256];//should be enought
+ void concat(); // transform ror scalable dradings...
+ void reconcat(); //invert
+ void recover(); //recovers the state afrer grestore (such as line styles...)
+ void reset();
+
+ uchar * mask;
+ int mx; // width of mask;
+ int my; // mask lines
+ //Fl_Color bg_;
+ int (*close_cmd_)(FILE *);
+ int page_policy_;
+ int nPages;
+ int orientation_;
+
+ float scale_x;
+ float scale_y;
+ float angle;
+ int left_margin;
+ int top_margin;
+ protected:
+ typedef struct page_format {
+ int width;
+ int height;
+ const char *name;
+ } page_format;
+
+ FILE *output;
+ double pw_, ph_;
+ static const page_format page_formats[NO_PAGE_FORMATS];
+
+ uchar bg_r, bg_g, bg_b;
+ int start_postscript (int pagecount, enum Page_Format format, enum Page_Layout layout);
+ /* int alpha_mask(const uchar * data, int w, int h, int D, int LD=0);
+ */
+ void draw(const char* s, int n, int x, int y) {transformed_draw(s,n,x,y); };
+ void draw(int angle, const char *str, int n, int x, int y);
+ void transformed_draw(const char* s, int n, double x, double y); //precise text placing
+ void transformed_draw(const char* s, double x, double y);
+ int alpha_mask(const uchar * data, int w, int h, int D, int LD=0);
+ void draw_scaled_image(const uchar *data, double x, double y, double w, double h, int iw, int ih, int D=3, int LD=0);
+ void draw_scaled_image_mono(const uchar *data, double x, double y, double w, double h, int iw, int ih, int D=3, int LD=0);
+ void draw_scaled_image(Fl_Draw_Image_Cb call, void *data, double x, double y, double w, double h, int iw, int ih, int D);
+ void draw_scaled_image_mono(Fl_Draw_Image_Cb call, void *data, double x, double y, double w, double h, int iw, int ih, int D);
+
+ enum Page_Format page_format_;
+ char *ps_filename_;
+ // implementation of drawing methods
+ void color(Fl_Color c);
+ //void bg_color(Fl_Color bg);
+ void color(uchar r, uchar g, uchar b);
+ Fl_Color color(){return color_;};
+
+ void push_clip(int x, int y, int w, int h);
+ int clip_box(int x, int y, int w, int h, int &X, int &Y, int &W, int &H);
+ int not_clipped(int x, int y, int w, int h);
+ void push_no_clip();
+ void pop_clip();
+
+ void line_style(int style, int width=0, char* dashes=0);
+
+ void rect(int x, int y, int w, int h);
+ void rectf(int x, int y, int w, int h);
+
+ void xyline(int x, int y, int x1);
+ void xyline(int x, int y, int x1, int y2);
+ void xyline(int x, int y, int x1, int y2, int x3);
+
+ void yxline(int x, int y, int y1);
+ void yxline(int x, int y, int y1, int x2);
+ void yxline(int x, int y, int y1, int x2, int y3);
+
+ void line(int x1, int y1, int x2, int y2);
+ void line(int x1, int y1, int x2, int y2, int x3, int y3);
+
+ void loop(int x0, int y0, int x1, int y1, int x2, int y2);
+ void loop(int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3);
+ void polygon(int x0, int y0, int x1, int y1, int x2, int y2);
+ void polygon(int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3);
+ void point(int x, int y);
+
+ void begin_points();
+ void begin_line();
+ void begin_loop();
+ void begin_polygon();
+ void vertex(double x, double y);
+ void curve(double x, double y, double x1, double y1, double x2, double y2, double x3, double y3);
+ void circle(double x, double y, double r);
+ void arc(double x, double y, double r, double start, double a);
+ void arc(int x, int y, int w, int h, double a1, double a2);
+ void pie(int x, int y, int w, int h, double a1, double a2);
+ void end_points();
+ void end_line();
+ void end_loop();
+ void end_polygon();
+ void begin_complex_polygon(){begin_polygon();};
+ void gap(){gap_=1;};
+ void end_complex_polygon(){end_polygon();};
+ void transformed_vertex(double x, double y);
+
+ void font(int face, int size);
+ int font(){return font_;};
+ int size(){return size_;};
+ double width(unsigned c);
+ double width(const char* s, int n);
+ int descent();
+ int height();
+
+ void draw_image(const uchar* d, int x,int y,int w,int h, int delta=3, int ldelta=0){draw_scaled_image(d,x,y,w,h,w,h,delta,ldelta);};
+ void draw_image_mono(const uchar* d, int x,int y,int w,int h, int delta=1, int ld=0){draw_scaled_image_mono(d,x,y,w,h,w,h,delta,ld);};
+ void draw_image(Fl_Draw_Image_Cb call, void* data, int x,int y, int w, int h, int delta=3){draw_scaled_image(call,data, x, y, w, h, w, h, delta);};
+ void draw_image_mono(Fl_Draw_Image_Cb call, void* data, int x,int y, int w, int h, int delta=1){draw_scaled_image_mono(call, data, x, y, w, h, w, h, delta);};
+
+ void draw(Fl_Pixmap * pxm,int XP, int YP, int WP, int HP, int cx, int cy);
+ void draw(Fl_RGB_Image * rgb,int XP, int YP, int WP, int HP, int cx, int cy);
+ void draw(Fl_Bitmap * bitmap,int XP, int YP, int WP, int HP, int cx, int cy);
+
public:
- int x, y, w, h;
- Clip *prev;
- };
- Clip * clip_;
-
- int lang_level_;
- int font_;
- int size_;
- Fl_Color color_;
- int gap_;
- int pages_;
-
- double width_;
- double height_;
-
- int shape_;
- int linewidth_;// need for clipping, lang level 1-2
- int linestyle_;//
- int interpolate_; //interpolation of images
- unsigned char cr_,cg_,cb_;
- char linedash_[256];//should be enough
- void concat(); // transform ror scalable dradings...
- void reconcat(); //invert
- void recover(); //recovers the state after grestore (such as line styles...)
- void reset();
-
- uchar * mask;
- int mx; // width of mask;
- int my; // mask lines
- //Fl_Color bg_;
- int (*close_cmd_)(FILE *);
- int page_policy_;
- int nPages;
- int orientation_;
-
- float scale_x;
- float scale_y;
- float angle;
- int left_margin;
- int top_margin;
-
- FILE *output;
- double pw_, ph_;
- static const page_format page_formats[NO_PAGE_FORMATS];
-
- uchar bg_r, bg_g, bg_b;
- Fl_PS_Device(void);
- int start_postscript (int pagecount, enum Page_Format format, enum Page_Layout layout);
- /* int alpha_mask(const uchar * data, int w, int h, int D, int LD=0);
- */
- void draw(const char* s, int n, int x, int y) {transformed_draw(s,n,x,y); };
- void draw(int angle, const char *str, int n, int x, int y);
- void transformed_draw(const char* s, int n, double x, double y); //precise text placing
- void transformed_draw(const char* s, double x, double y);
- int alpha_mask(const uchar * data, int w, int h, int D, int LD=0);
- void draw_scaled_image(const uchar *data, double x, double y, double w, double h, int iw, int ih, int D=3, int LD=0);
- void draw_scaled_image_mono(const uchar *data, double x, double y, double w, double h, int iw, int ih, int D=3, int LD=0);
- void draw_scaled_image(Fl_Draw_Image_Cb call, void *data, double x, double y, double w, double h, int iw, int ih, int D);
- void draw_scaled_image_mono(Fl_Draw_Image_Cb call, void *data, double x, double y, double w, double h, int iw, int ih, int D);
-
- enum Page_Format page_format_;
- char *ps_filename_;
- // implementation of drawing methods
- void color(Fl_Color c);
- //void bg_color(Fl_Color bg);
- void color(uchar r, uchar g, uchar b);
- Fl_Color color(){return color_;};
-
- void push_clip(int x, int y, int w, int h);
- int clip_box(int x, int y, int w, int h, int &X, int &Y, int &W, int &H);
- int not_clipped(int x, int y, int w, int h);
- void push_no_clip();
- void pop_clip();
-
- void line_style(int style, int width=0, char* dashes=0);
-
- void rect(int x, int y, int w, int h);
- void rectf(int x, int y, int w, int h);
-
- void xyline(int x, int y, int x1);
- void xyline(int x, int y, int x1, int y2);
- void xyline(int x, int y, int x1, int y2, int x3);
-
- void yxline(int x, int y, int y1);
- void yxline(int x, int y, int y1, int x2);
- void yxline(int x, int y, int y1, int x2, int y3);
-
- void line(int x1, int y1, int x2, int y2);
- void line(int x1, int y1, int x2, int y2, int x3, int y3);
-
- void loop(int x0, int y0, int x1, int y1, int x2, int y2);
- void loop(int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3);
- void polygon(int x0, int y0, int x1, int y1, int x2, int y2);
- void polygon(int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3);
- void point(int x, int y);
-
- void begin_points();
- void begin_line();
- void begin_loop();
- void begin_polygon();
- void vertex(double x, double y);
- void curve(double x, double y, double x1, double y1, double x2, double y2, double x3, double y3);
- void circle(double x, double y, double r);
- void arc(double x, double y, double r, double start, double a);
- void arc(int x, int y, int w, int h, double a1, double a2);
- void pie(int x, int y, int w, int h, double a1, double a2);
- void end_points();
- void end_line();
- void end_loop();
- void end_polygon();
- void begin_complex_polygon(){begin_polygon();};
- void gap(){gap_=1;};
- void end_complex_polygon(){end_polygon();};
- void transformed_vertex(double x, double y);
-
- void font(int face, int size);
- int font(){return font_;};
- int size(){return size_;};
- double width(unsigned c);
- double width(const char* s, int n);
- int descent();
- int height();
-
- void draw_image(const uchar* d, int x,int y,int w,int h, int delta=3, int ldelta=0){draw_scaled_image(d,x,y,w,h,w,h,delta,ldelta);};
- void draw_image_mono(const uchar* d, int x,int y,int w,int h, int delta=1, int ld=0){draw_scaled_image_mono(d,x,y,w,h,w,h,delta,ld);};
- void draw_image(Fl_Draw_Image_Cb call, void* data, int x,int y, int w, int h, int delta=3){draw_scaled_image(call,data, x, y, w, h, w, h, delta);};
- void draw_image_mono(Fl_Draw_Image_Cb call, void* data, int x,int y, int w, int h, int delta=1){draw_scaled_image_mono(call, data, x, y, w, h, w, h, delta);};
-
- void draw(Fl_Pixmap * pxm,int XP, int YP, int WP, int HP, int cx, int cy);
- void draw(Fl_RGB_Image * rgb,int XP, int YP, int WP, int HP, int cx, int cy);
- void draw(Fl_Bitmap * bitmap,int XP, int YP, int WP, int HP, int cx, int cy);
+ void page_policy(int p);
+ int page_policy(){return page_policy_;};
+ void close_command( int (*cmd)(FILE *)){close_cmd_=cmd;};
+ FILE * file() {return output;};
+ //void orientation (int o);
+ //Fl_PSfile_Device(FILE *o, int lang_level, int pages = 0); // ps (also multi-page) constructor
+ //Fl_PSfile_Device(FILE *o, int lang_level, int x, int y, int w, int h); //eps constructor
+ void interpolate(int i){interpolate_=i;};
+ int interpolate(){return interpolate_;}
-public:
- void page_policy(int p);
- int page_policy(){return page_policy_;};
- void close_command( int (*cmd)(FILE *)){close_cmd_=cmd;};
- FILE * file() {return output;};
- //void orientation (int o);
- //Fl_PSfile_Device(FILE *o, int lang_level, int pages = 0); // ps (also multi-page) constructor
- //Fl_PSfile_Device(FILE *o, int lang_level, int x, int y, int w, int h); //eps constructor
- void interpolate(int i){interpolate_=i;};
- int interpolate(){return interpolate_;}
-
- void page(double pw, double ph, int media = 0);
- void page(int format);
-
- void place(double x, double y, double tx, double ty, double scale = 1);
+ void page(double pw, double ph, int media = 0);
+ void page(int format);
+
+ void place(double x, double y, double tx, double ty, double scale = 1);
+ int start_page (void);
+ int printable_rect(int *w, int *h);
+ void margins(int *left, int *top, int *right, int *bottom);
+ void origin(int x, int y);
+ void scale (float scale_x, float scale_y);
+ void rotate(float angle);
+ void translate(int x, int y);
+ void untranslate(void);
+ int end_page (void);
+ void end_job(void);
#endif // FL_DOXYGEN
-};
-
-/**
- \brief Sends graphics output to a local PostScript file.
- */
-class Fl_PSfile_Device : public Fl_PS_Device , public Fl_Abstract_Printer {
-public:
- static const char *device_type;
Fl_PSfile_Device(void);
int start_job(int pagecount, enum Page_Format format = A4, enum Page_Layout layout = PORTRAIT);
int start_job(FILE *ps_output, int pagecount, enum Page_Format format = A4, enum Page_Layout layout = PORTRAIT);
- int start_page (void);
- int printable_rect(int *w, int *h);
- void margins(int *left, int *top, int *right, int *bottom);
- void origin(int x, int y);
- void scale (float scale_x, float scale_y);
- void rotate(float angle);
- void translate(int x, int y);
- void untranslate(void);
- int end_page (void);
- void end_job(void);
virtual ~Fl_PSfile_Device();
/** [this text may be customized at run-time] */
diff --git a/FL/Fl_Pixmap.H b/FL/Fl_Pixmap.H
index 446af15f6..8cab445a5 100644
--- a/FL/Fl_Pixmap.H
+++ b/FL/Fl_Pixmap.H
@@ -45,7 +45,7 @@ struct Fl_Menu_Item;
(pixmap) images, including transparency.
*/
class FL_EXPORT Fl_Pixmap : public Fl_Image {
- friend class Fl_Graphics_Device;
+ friend class Fl_Device;
void copy_data();
void delete_data();
void set_data(const char * const *p);
@@ -67,6 +67,7 @@ class FL_EXPORT Fl_Pixmap : public Fl_Image {
unsigned id_; // for internal use
unsigned mask_; // for internal use (mask bitmap)
#endif // __APPLE__ || WIN32
+ void generic_device_draw(int XP, int YP, int WP, int HP, int cx, int cy);
public:
diff --git a/FL/Fl_Printer.H b/FL/Fl_Printer.H
index 409385dfb..8aba8dc81 100644
--- a/FL/Fl_Printer.H
+++ b/FL/Fl_Printer.H
@@ -72,7 +72,7 @@
<li>Mac OS X platform: all graphics requests print as on display.
</ul>
*/
-class Fl_Printer : public Fl_Graphics_Device , public Fl_Abstract_Printer {
+class Fl_Printer : public Fl_Abstract_Printer {
private:
#ifdef __APPLE__
float scale_x;
@@ -126,15 +126,14 @@ public:
class Fl_Printer : public Fl_PSfile_Device {
public:
- Fl_Printer(void) { gc = NULL; bg_r_ = bg_g_ = bg_b_ = 0; };
+
+ Fl_Printer(void) {};
~Fl_Printer(void) {};
int start_job(int pages, int *firstpage = NULL, int *lastpage = NULL);
#endif // Fl_Printer (platform-dependent)
// Fl_Printer:: common for all platforms
- Fl_Device *set_current(void);
- static const char *device_type;
public: // just to be sure ...