aboutsummaryrefslogtreecommitdiffstats
path: root/common/fltk/FL/Fl_Paged_Device.H
diff options
context:
space:
mode:
Diffstat (limited to 'common/fltk/FL/Fl_Paged_Device.H')
-rw-r--r--common/fltk/FL/Fl_Paged_Device.H153
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 $"
+//
+