FLTK 1.3.0
Fl_Printer.H
Go to the documentation of this file.
1 //
2 // "$Id: Fl_Printer.H 8699 2011-05-20 16:39:06Z manolo $"
3 //
4 // Printing support for the Fast Light Tool Kit (FLTK).
5 //
6 // Copyright 2010 by Bill Spitzak and others.
7 //
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU Library General Public
10 // License as published by the Free Software Foundation; either
11 // version 2 of the License, or (at your option) any later version.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Library General Public License for more details.
17 //
18 // You should have received a copy of the GNU Library General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
21 // USA.
22 //
23 // Please report all bugs and problems on the following page:
24 //
25 // http://www.fltk.org/str.php
26 //
31 #ifndef Fl_Printer_H
32 #define Fl_Printer_H
33 
34 #include <FL/x.H>
35 #include <FL/Fl_Paged_Device.H>
36 #include <FL/fl_draw.H>
37 #include <FL/Fl_Pixmap.H>
38 #include <FL/Fl_RGB_Image.H>
39 #include <FL/Fl_Bitmap.H>
40 #include <stdio.h>
41 #if !(defined(__APPLE__) || defined(WIN32))
42 #include <FL/Fl_PostScript.H>
43 #elif defined(WIN32)
44 #include <commdlg.h>
45 #endif
46 
47 #if defined(__APPLE__) || defined(WIN32) || defined(FL_DOXYGEN)
48 
56  friend class Fl_Printer;
57 private:
59  void *gc;
60  void set_current(void);
61 #ifdef __APPLE__
62  float scale_x;
63  float scale_y;
64  float angle; // rotation angle in radians
65  Fl_PMPrintSession printSession;
66  Fl_PMPageFormat pageFormat;
67  Fl_PMPrintSettings printSettings;
68 #elif defined(WIN32)
69  int abortPrint;
70  PRINTDLG pd;
71  HDC hPr;
72  int prerr;
73  int left_margin;
74  int top_margin;
75  void absolute_printable_rect(int *x, int *y, int *w, int *h);
76 #endif
77 protected:
79  Fl_System_Printer(void);
80 public:
81  static const char *class_id;
82  const char *class_name() {return class_id;};
83  int start_job(int pagecount, int *frompage = NULL, int *topage = NULL);
84  int start_page (void);
85  int printable_rect(int *w, int *h);
86  void margins(int *left, int *top, int *right, int *bottom);
87  void origin(int *x, int *y);
88  void origin(int x, int y);
89  void scale (float scale_x, float scale_y = 0.);
90  void rotate(float angle);
91  void translate(int x, int y);
92  void untranslate(void);
93  int end_page (void);
94  void end_job (void);
96  ~Fl_System_Printer(void);
97 }; // class Fl_System_Printer
98 
99 #endif
100 
101 #if !(defined(__APPLE__) || defined(WIN32) )
102 
110  friend class Fl_Printer;
111 protected:
114 public:
115  static const char *class_id;
116  const char *class_name() {return class_id;};
117  int start_job(int pages, int *firstpage = NULL, int *lastpage = NULL);
118 };
119 
120 #endif
121 
154 class FL_EXPORT Fl_Printer : public Fl_Paged_Device {
155 public:
156  static const char *class_id;
157  const char *class_name() {return class_id;};
159  Fl_Printer(void);
160  int start_job(int pagecount, int *frompage = NULL, int *topage = NULL);
161  int start_page(void);
162  int printable_rect(int *w, int *h);
163  void margins(int *left, int *top, int *right, int *bottom);
164  void origin(int *x, int *y);
165  void origin(int x, int y);
166  void scale(float scale_x, float scale_y = 0.);
167  void rotate(float angle);
168  void translate(int x, int y);
169  void untranslate(void);
170  int end_page (void);
171  void end_job (void);
172  void print_widget(Fl_Widget* widget, int delta_x=0, int delta_y=0);
173  void print_window_part(Fl_Window *win, int x, int y, int w, int h, int delta_x=0, int delta_y=0);
174  void set_current(void);
175  Fl_Graphics_Driver* driver(void);
177  ~Fl_Printer(void);
178 
182  static const char *dialog_title;
183  static const char *dialog_printer;
184  static const char *dialog_range;
185  static const char *dialog_copies;
186  static const char *dialog_all;
187  static const char *dialog_pages;
188  static const char *dialog_from;
189  static const char *dialog_to;
190  static const char *dialog_properties;
191  static const char *dialog_copyNo;
192  static const char *dialog_print_button;
193  static const char *dialog_cancel_button;
194  static const char *dialog_print_to_file;
195  static const char *property_title;
196  static const char *property_pagesize;
197  static const char *property_mode;
198  static const char *property_use;
199  static const char *property_save;
200  static const char *property_cancel;
202 private:
203 #if defined(WIN32) || defined(__APPLE__)
204  Fl_System_Printer *printer;
205 #else
206  Fl_PostScript_Printer *printer;
207 #endif
208 };
209 
210 #endif // Fl_Printer_H
211 
212 //
213 // End of "$Id: Fl_Printer.H 8699 2011-05-20 16:39:06Z manolo $"
214 //
static const char * dialog_range
[this text may be customized at run-time]
Definition: Fl_Printer.H:184
Fl_Widget is the base class for all widgets in FLTK.
Definition: Fl_Widget.H:109
virtual int start_job(int pagecount, int *frompage=NULL, int *topage=NULL)
Starts a print job.
Definition: Fl_Paged_Device.cxx:159
void end_job(void)
To be called at the end of a print job.
static const char * dialog_from
[this text may be customized at run-time]
Definition: Fl_Printer.H:188
Represents page-structured drawing surfaces.
Definition: Fl_Paged_Device.H:47
This widget produces an actual window.
Definition: Fl_Window.H:58
void untranslate(void)
Undoes the effect of a previous translate() call.
static const char * property_use
[this text may be customized at run-time]
Definition: Fl_Printer.H:198
virtual void margins(int *left, int *top, int *right, int *bottom)
Computes the dimensions of margins that lie between the printable page area and the full page...
Definition: Fl_Paged_Device.cxx:191
static const char * dialog_pages
[this text may be customized at run-time]
Definition: Fl_Printer.H:187
static const char * dialog_properties
[this text may be customized at run-time]
Definition: Fl_Printer.H:190
Fl_PostScript_Printer(void)
The constructor.
Definition: Fl_Printer.H:113
int start_job(int pagecount, int *frompage=NULL, int *topage=NULL)
Starts a print job.
~Fl_System_Printer(void)
The destructor.
virtual void set_current(void)
Use this drawing surface for future graphics requests.
Definition: Fl_Device.cxx:48
int start_page(void)
Starts a new printed page.
virtual void scale(float scale_x, float scale_y=0.)
Changes the scaling of page coordinates.
Definition: Fl_Paged_Device.cxx:217
OS-independent print support.
Definition: Fl_Printer.H:154
int printable_rect(int *w, int *h)
Computes the width and height of the printable area of the page.
int start_job(int pages, int *firstpage=NULL, int *lastpage=NULL)
Starts a print job.
static const char * dialog_all
[this text may be customized at run-time]
Definition: Fl_Printer.H:186
Fl_System_Printer(void)
The constructor.
virtual void end_job(void)
To be called at the end of a print job.
Definition: Fl_Paged_Device.cxx:238
virtual void untranslate(void)
Undoes the effect of a previous translate() call.
Definition: Fl_Paged_Device.cxx:252
static const char * dialog_print_button
[this text may be customized at run-time]
Definition: Fl_Printer.H:192
virtual void origin(int x, int y)
Sets the position in page coordinates of the origin of graphics functions.
Definition: Fl_Paged_Device.cxx:204
static const char * property_pagesize
[this text may be customized at run-time]
Definition: Fl_Printer.H:196
void translate(int x, int y)
Translates the current graphics origin accounting for the current rotation.
virtual void print_window_part(Fl_Window *win, int x, int y, int w, int h, int delta_x=0, int delta_y=0)
Prints a rectangular part of an on-screen window.
Definition: Fl_Paged_Device.cxx:130
static const char * property_save
[this text may be customized at run-time]
Definition: Fl_Printer.H:199
void margins(int *left, int *top, int *right, int *bottom)
Computes the dimensions of margins that lie between the printable page area and the full page...
static const char * property_mode
[this text may be customized at run-time]
Definition: Fl_Printer.H:197
virtual void rotate(float angle)
Rotates the graphics operations relatively to paper.
Definition: Fl_Paged_Device.cxx:226
void set_current(void)
Use this drawing surface for future graphics requests.
Definition: Fl_Printer.cxx:183
declaration of class Fl_Paged_Device.
void origin(int *x, int *y)
Computes the page coordinates of the current origin of graphics functions.
void scale(float scale_x, float scale_y=0.)
Changes the scaling of page coordinates.
int end_page(void)
To be called at the end of each page.
static const char * dialog_cancel_button
[this text may be customized at run-time]
Definition: Fl_Printer.H:193
const char * class_name()
Returns the name of the class of this object.
Definition: Fl_Printer.H:82
utility header to pull drawing functions together
static const char * dialog_title
[this text may be customized at run-time]
Definition: Fl_Printer.H:182
void rotate(float angle)
Rotates the graphics operations relatively to paper.
A virtual class subclassed for each graphics driver FLTK uses.
Definition: Fl_Device.H:108
const char * class_name()
Returns the name of the class of this object.
Definition: Fl_Printer.H:116
static const char * dialog_to
[this text may be customized at run-time]
Definition: Fl_Printer.H:189
virtual void print_widget(Fl_Widget *widget, int delta_x=0, int delta_y=0)
Draws the widget on the printed page.
Definition: Fl_Paged_Device.cxx:49
Print support under MSWindows and Mac OS.
Definition: Fl_Printer.H:55
const char * class_name()
Returns the name of the class of this object.
Definition: Fl_Printer.H:157
static const char * property_title
[this text may be customized at run-time]
Definition: Fl_Printer.H:195
virtual void translate(int x, int y)
Translates the current graphics origin accounting for the current rotation.
Definition: Fl_Paged_Device.cxx:247
To send graphical output to a PostScript file.
Definition: Fl_PostScript.H:216
Print support under Unix/Linux.
Definition: Fl_Printer.H:109
declaration of classes Fl_PostScript_Graphics_Driver, Fl_PostScript_File_Device.
static const char * dialog_printer
[this text may be customized at run-time]
Definition: Fl_Printer.H:183
virtual int start_page(void)
Starts a new printed page.
Definition: Fl_Paged_Device.cxx:168
virtual int end_page(void)
To be called at the end of each page.
Definition: Fl_Paged_Device.cxx:233
static const char * property_cancel
[this text may be customized at run-time]
Definition: Fl_Printer.H:200
virtual int printable_rect(int *w, int *h)
Computes the width and height of the printable area of the page.
Definition: Fl_Paged_Device.cxx:178
static const char * dialog_copies
[this text may be customized at run-time]
Definition: Fl_Printer.H:185
static const char * dialog_copyNo
[this text may be customized at run-time]
Definition: Fl_Printer.H:191
static const char * dialog_print_to_file
[this text may be customized at run-time]
Definition: Fl_Printer.H:194
Fl_Graphics_Driver * driver()
Returns the graphics driver of this drawing surface.
Definition: Fl_Device.H:511