FLTK 1.3.0
Fl_Printer.H
Go to the documentation of this file.
00001 //
00002 // "$Id$"
00003 //
00004 // Printing support for the Fast Light Tool Kit (FLTK).
00005 //
00006 // Copyright 2010-2011 by Bill Spitzak and others.
00007 //
00008 // This library is free software. Distribution and use rights are outlined in
00009 // the file "COPYING" which should have been included with this file.  If this
00010 // file is missing or damaged, see the license at:
00011 //
00012 //     http://www.fltk.org/COPYING.php
00013 //
00014 // Please report all bugs and problems on the following page:
00015 //
00016 //     http://www.fltk.org/str.php
00017 //
00018 
00023 #ifndef Fl_Printer_H
00024 #define Fl_Printer_H
00025 
00026 #include <FL/x.H>
00027 #include <FL/Fl_Paged_Device.H>
00028 #include <FL/fl_draw.H>
00029 #include <FL/Fl_Pixmap.H>
00030 #include <FL/Fl_RGB_Image.H>
00031 #include <FL/Fl_Bitmap.H>
00032 #include <stdio.h>
00033 #if !(defined(__APPLE__) || defined(WIN32))
00034 #include <FL/Fl_PostScript.H>
00035 #elif defined(WIN32)
00036 #include <commdlg.h>
00037 #endif
00038 
00039 #if defined(__APPLE__) || defined(WIN32) || defined(FL_DOXYGEN)
00040 
00047 class Fl_System_Printer : public Fl_Paged_Device {
00048   friend class Fl_Printer;
00049 private:
00051   void *gc; 
00052   void set_current(void);
00053 #ifdef __APPLE__
00054   float scale_x;
00055   float scale_y;
00056   float angle; // rotation angle in radians
00057   PMPrintSession  printSession;
00058   PMPageFormat    pageFormat;
00059   PMPrintSettings printSettings;
00060 #elif defined(WIN32)
00061   int   abortPrint;
00062   PRINTDLG      pd;
00063   HDC           hPr;
00064   int           prerr;
00065   int left_margin;
00066   int top_margin;
00067   void absolute_printable_rect(int *x, int *y, int *w, int *h);
00068 #endif
00069 protected:
00071   Fl_System_Printer(void);
00072 public:
00073   static const char *class_id;
00074   const char *class_name() {return class_id;};
00075   int start_job(int pagecount, int *frompage = NULL, int *topage = NULL);
00076   int start_page (void);
00077   int printable_rect(int *w, int *h);
00078   void margins(int *left, int *top, int *right, int *bottom);
00079   void origin(int *x, int *y);
00080   void origin(int x, int y);
00081   void scale (float scale_x, float scale_y = 0.);
00082   void rotate(float angle);
00083   void translate(int x, int y);
00084   void untranslate(void);
00085   int end_page (void);
00086   void end_job (void);
00088   ~Fl_System_Printer(void);
00089 }; // class Fl_System_Printer
00090 
00091 #endif
00092   
00093 #if !(defined(__APPLE__) || defined(WIN32) )
00094 
00101 class Fl_PostScript_Printer : public Fl_PostScript_File_Device {
00102   friend class Fl_Printer;
00103 protected:
00105   Fl_PostScript_Printer(void) {};
00106 public:
00107   static const char *class_id;
00108   const char *class_name() {return class_id;};
00109   int start_job(int pages, int *firstpage = NULL, int *lastpage = NULL);
00110 };
00111 
00112 #endif
00113 
00146 class FL_EXPORT Fl_Printer : public Fl_Paged_Device {
00147 public:
00148   static const char *class_id;
00149   const char *class_name() {return class_id;};
00151   Fl_Printer(void);
00152   int start_job(int pagecount, int *frompage = NULL, int *topage = NULL);
00153   int start_page(void);
00154   int printable_rect(int *w, int *h);
00155   void margins(int *left, int *top, int *right, int *bottom);
00156   void origin(int *x, int *y);
00157   void origin(int x, int y);
00158   void scale(float scale_x, float scale_y = 0.);
00159   void rotate(float angle);
00160   void translate(int x, int y);
00161   void untranslate(void);
00162   int end_page (void);
00163   void end_job (void);
00164   void print_widget(Fl_Widget* widget, int delta_x=0, int delta_y=0);
00165   void print_window_part(Fl_Window *win, int x, int y, int w, int h, int delta_x=0, int delta_y=0);
00166   void set_current(void);
00167   Fl_Graphics_Driver* driver(void);
00169   ~Fl_Printer(void);
00170  
00174   static const char *dialog_title; 
00175   static const char *dialog_printer; 
00176   static const char *dialog_range; 
00177   static const char *dialog_copies; 
00178   static const char *dialog_all; 
00179   static const char *dialog_pages;
00180   static const char *dialog_from;
00181   static const char *dialog_to;
00182   static const char *dialog_properties;
00183   static const char *dialog_copyNo;
00184   static const char *dialog_print_button;
00185   static const char *dialog_cancel_button;
00186   static const char *dialog_print_to_file;
00187   static const char *property_title;
00188   static const char *property_pagesize;
00189   static const char *property_mode;
00190   static const char *property_use;
00191   static const char *property_save;
00192   static const char *property_cancel;
00194 private:
00195 #if defined(WIN32) || defined(__APPLE__)
00196   Fl_System_Printer *printer;
00197 #else
00198   Fl_PostScript_Printer *printer;
00199 #endif
00200 };
00201 
00202 #endif // Fl_Printer_H
00203 
00204 //
00205 // End of "$Id$"
00206 //