diff options
Diffstat (limited to 'common/fltk/FL/Fl_Paged_Device.H')
-rw-r--r-- | common/fltk/FL/Fl_Paged_Device.H | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/common/fltk/FL/Fl_Paged_Device.H b/common/fltk/FL/Fl_Paged_Device.H new file mode 100644 index 00000000..f65da3a9 --- /dev/null +++ b/common/fltk/FL/Fl_Paged_Device.H @@ -0,0 +1,153 @@ +// +// "$Id: Fl_Paged_Device.H 8699 2011-05-20 16:39:06Z manolo $" +// +// Printing support for the Fast Light Tool Kit (FLTK). +// +// Copyright 2010 by Bill Spitzak and others. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems on the following page: +// +// http://www.fltk.org/str.php +// + +/** \file Fl_Paged_Device.H + \brief declaration of class Fl_Paged_Device. + */ + +#ifndef Fl_Paged_Device_H +#define Fl_Paged_Device_H + +#include <FL/Fl_Device.H> +#include <FL/Fl_Window.H> + +/** \brief Number of elements in enum Page_Format */ +#define NO_PAGE_FORMATS 30 /* MSVC6 compilation fix */ + +/** + \brief Represents page-structured drawing surfaces. + * + This class has no public constructor: don't instantiate it; use Fl_Printer + or Fl_PostScript_File_Device instead. + */ +class FL_EXPORT Fl_Paged_Device : public Fl_Surface_Device { +public: + /** + \brief Possible page formats. + + All paper formats with pre-defined width and height. + */ + enum Page_Format { + A0 = 0, /**< A0 format */ + A1, + A2, + A3, + A4, /**< A4 format */ + A5, + A6, + A7, + A8, + A9, + B0, + B1, + B2, + B3, + B4, + B5, + B6, + B7, + B8, + B9, + B10, + C5E, + DLE, + EXECUTIVE, + FOLIO, + LEDGER, + LEGAL, + LETTER, /**< Letter format */ + TABLOID, + ENVELOPE, + MEDIA = 0x1000 + }; + /** + \brief Possible page layouts. + */ + enum Page_Layout { + PORTRAIT = 0, /**< Portrait orientation */ + LANDSCAPE = 0x100, /**< Landscape orientation */ + REVERSED = 0x200, /**< Reversed orientation */ + ORIENTATION = 0x300 /**< orientation */ + }; + + /** \brief width, height and name of a page format + */ + typedef struct { + /** \brief width in points */ + int width; + /** \brief height in points */ + int height; + /** \brief format name */ + const char *name; + } page_format; + /** \brief width, height and name of all elements of the enum \ref Page_Format. + */ + static const page_format page_formats[NO_PAGE_FORMATS]; +private: + void traverse(Fl_Widget *widget); // finds subwindows of widget and prints them +protected: + /** \brief horizontal offset to the origin of graphics coordinates */ + int x_offset; + /** \brief vertical offset to the origin of graphics coordinates */ + int y_offset; + /** \brief The constructor */ + Fl_Paged_Device() : Fl_Surface_Device(NULL) {}; + /** \brief The destructor */ + virtual ~Fl_Paged_Device() {}; +public: + static const char *class_id; + const char *class_name() {return class_id;}; + 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); + virtual void margins(int *left, int *top, int *right, int *bottom); + virtual void origin(int x, int y); + virtual void origin(int *x, int *y); + virtual void scale(float scale_x, float scale_y = 0.); + virtual void rotate(float angle); + virtual void translate(int x, int y); + virtual void untranslate(void); + virtual void print_widget(Fl_Widget* widget, int delta_x = 0, int delta_y = 0); + /** Prints a window with its title bar and frame if any. + + \p x_offset and \p y_offset are optional coordinates of where to position the window top left. + Equivalent to print_widget() if \p win is a subwindow or has no border. + Use Fl_Window::decorated_w() and Fl_Window::decorated_h() to get the size of the + printed window. + */ + void print_window(Fl_Window *win, int x_offset = 0, int y_offset = 0); + virtual void print_window_part(Fl_Window *win, int x, int y, int w, int h, int delta_x = 0, int delta_y = 0); + virtual int end_page (void); + virtual void end_job (void); +}; + +#endif // Fl_Paged_Device_H + +// +// End of "$Id: Fl_Paged_Device.H 8699 2011-05-20 16:39:06Z manolo $" +// + |