1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxPostScriptDC class
4 // Author: Julian Smart and others
7 // Copyright: (c) Julian Smart, Robert Roebling and Markus Holzem
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
22 #include "wx/dialog.h"
23 #include "wx/module.h"
27 //-----------------------------------------------------------------------------
29 //-----------------------------------------------------------------------------
33 //-----------------------------------------------------------------------------
35 //-----------------------------------------------------------------------------
37 class WXDLLEXPORT wxPostScriptDC
: public wxDC
39 DECLARE_DYNAMIC_CLASS(wxPostScriptDC
)
44 wxPostScriptDC(const wxString
& output
, bool interactive
= TRUE
, wxWindow
*parent
= (wxWindow
*) NULL
);
48 bool Create(const wxString
& output
, bool interactive
= TRUE
, wxWindow
*parent
= (wxWindow
*) NULL
);
50 virtual bool Ok() const;
52 virtual bool PrinterDialog(wxWindow
*parent
= (wxWindow
*) NULL
);
54 virtual void BeginDrawing() {}
55 virtual void EndDrawing() {}
57 void FloodFill(long x1
, long y1
, const wxColour
&col
, int style
=wxFLOOD_SURFACE
) ;
58 bool GetPixel(long x1
, long y1
, wxColour
*col
) const;
60 void DrawLine(long x1
, long y1
, long x2
, long y2
);
61 void CrossHair(long x
, long y
) ;
62 void DrawArc(long x1
,long y1
,long x2
,long y2
,long xc
,long yc
);
63 void DrawEllipticArc(long x
,long y
,long w
,long h
,double sa
,double ea
);
64 void DrawPoint(long x
, long y
);
65 // Avoid compiler warning
66 void DrawPoint(wxPoint
& point
) { wxDC::DrawPoint(point
); }
67 void DrawLines(int n
, wxPoint points
[], long xoffset
= 0, long yoffset
= 0);
68 // Avoid compiler warning
69 void DrawLines(wxList
*lines
, long xoffset
= 0, long yoffset
= 0)
70 { wxDC::DrawLines(lines
, xoffset
, yoffset
); }
71 void DrawPolygon(int n
, wxPoint points
[], long xoffset
= 0, long yoffset
= 0, int fillStyle
=wxODDEVEN_RULE
);
72 // Avoid compiler warning
73 void DrawPolygon(wxList
*lines
, long xoffset
= 0, long yoffset
= 0, int fillStyle
=wxODDEVEN_RULE
)
74 { wxDC::DrawPolygon(lines
, xoffset
, yoffset
, fillStyle
); }
75 void DrawRectangle(long x
, long y
, long width
, long height
);
76 void DrawRoundedRectangle(long x
, long y
, long width
, long height
, double radius
= 20);
77 void DrawEllipse(long x
, long y
, long width
, long height
);
79 void DrawSpline(wxList
*points
);
81 bool Blit(long xdest
, long ydest
, long width
, long height
,
82 wxDC
*source
, long xsrc
, long ysrc
, int rop
= wxCOPY
, bool useMask
= FALSE
);
83 inline bool CanDrawBitmap(void) const { return TRUE
; }
85 void DrawIcon( const wxIcon
& icon
, long x
, long y
);
86 void DrawBitmap( const wxBitmap
& bitmap
, long x
, long y
, bool useMask
=FALSE
);
88 void DrawText(const wxString
& text
, long x
, long y
, bool use16
= FALSE
);
91 void SetFont( const wxFont
& font
);
92 void SetPen( const wxPen
& pen
);
93 void SetBrush( const wxBrush
& brush
);
94 void SetLogicalFunction( int function
);
95 void SetBackground( const wxBrush
& brush
);
97 void SetClippingRegion(long x
, long y
, long width
, long height
);
98 void SetClippingRegion( const wxRegion
®ion
);
99 void DestroyClippingRegion();
101 bool StartDoc(const wxString
& message
);
106 long GetCharHeight();
108 inline bool CanGetTextExtent(void) const { return FALSE
; }
109 void GetTextExtent(const wxString
& string
, long *x
, long *y
,
110 long *descent
= (long *) NULL
,
111 long *externalLeading
= (long *) NULL
,
112 wxFont
*theFont
= (wxFont
*) NULL
, bool use16
= FALSE
);
114 void GetSize(int* width
, int* height
) const;
115 void GetSizeMM(long *width
, long *height
) const;
117 void SetAxisOrientation( bool xLeftRight
, bool yBottomUp
);
118 void SetDeviceOrigin( long x
, long y
);
120 inline void SetBackgroundMode(int WXUNUSED(mode
)) {}
121 inline void SetPalette(const wxPalette
& WXUNUSED(palette
)) {}
123 inline ofstream
*GetStream(void) const { return m_pstream
; }
127 ofstream
* m_pstream
; // PostScript output stream
129 unsigned char m_currentRed
;
130 unsigned char m_currentGreen
;
131 unsigned char m_currentBlue
;
134 double m_underlinePosition
;
135 double m_underlineThickness
;
138 // TODO Needed? Should perhaps use wxGenericPrintDialog instead.
140 #define wxID_PRINTER_COMMAND 1
141 #define wxID_PRINTER_OPTIONS 2
142 #define wxID_PRINTER_ORIENTATION 3
143 #define wxID_PRINTER_MODES 4
144 #define wxID_PRINTER_X_SCALE 5
145 #define wxID_PRINTER_Y_SCALE 6
146 #define wxID_PRINTER_X_TRANS 7
147 #define wxID_PRINTER_Y_TRANS 8
149 class WXDLLEXPORT wxPostScriptPrintDialog
: public wxDialog
151 DECLARE_CLASS(wxPostScriptPrintDialog
)
153 wxPostScriptPrintDialog (wxWindow
*parent
, const wxString
& title
,
154 const wxPoint
& pos
= wxDefaultPosition
, const wxSize
& size
= wxDefaultSize
,
155 long style
= wxDEFAULT_DIALOG_STYLE
);
157 virtual int ShowModal(void) ;
161 // Print Orientation (Should also add Left, Right)
165 };// ps_orientation = PS_PORTRAIT;
172 };// ps_action = PS_PREVIEW;
174 // PostScript printer settings
175 WXDLLEXPORT
void wxSetPrinterCommand(const char *cmd
);
176 WXDLLEXPORT
void wxSetPrintPreviewCommand(const char *cmd
);
177 WXDLLEXPORT
void wxSetPrinterOptions(const char *flags
);
178 WXDLLEXPORT
void wxSetPrinterOrientation(int orientation
);
179 WXDLLEXPORT
void wxSetPrinterScaling(double x
, double y
);
180 WXDLLEXPORT
void wxSetPrinterTranslation(long x
, long y
);
181 WXDLLEXPORT
void wxSetPrinterMode(int mode
);
182 WXDLLEXPORT
void wxSetPrinterFile(const char *f
);
183 WXDLLEXPORT
void wxSetAFMPath(const char *f
);
185 // Get current values
186 WXDLLEXPORT
char* wxGetPrinterCommand();
187 WXDLLEXPORT
char* wxGetPrintPreviewCommand();
188 WXDLLEXPORT
char* wxGetPrinterOptions();
189 WXDLLEXPORT
int wxGetPrinterOrientation();
190 WXDLLEXPORT
void wxGetPrinterScaling(double* x
, double* y
);
191 WXDLLEXPORT
void wxGetPrinterTranslation(long *x
, long *y
);
192 WXDLLEXPORT
int wxGetPrinterMode();
193 WXDLLEXPORT
char* wxGetPrinterFile();
194 WXDLLEXPORT
char* wxGetAFMPath();
197 * PostScript print setup information
200 class WXDLLEXPORT wxPrintSetupData
: public wxObject
203 char *printerCommand
;
204 char *previewCommand
;
208 double printerScaleX
;
209 double printerScaleY
;
210 long printerTranslateX
;
211 long printerTranslateY
;
212 // 1 = Preview, 2 = print to file, 3 = send to printer
215 // A name in the paper database (see wx_print.h: the printing framework)
223 void SetPrinterCommand(const char *cmd
);
224 void SetPaperName(const char *paper
);
225 void SetPrintPreviewCommand(const char *cmd
);
226 void SetPrinterOptions(const char *flags
);
227 void SetPrinterFile(const char *f
);
228 void SetPrinterOrientation(int orient
);
229 void SetPrinterScaling(double x
, double y
);
230 void SetPrinterTranslation(long x
, long y
);
231 // 1 = Preview, 2 = print to file, 3 = send to printer
232 void SetPrinterMode(int mode
);
233 void SetAFMPath(const char *f
);
234 void SetColour(bool col
);
236 // Get current values
237 char *GetPrinterCommand();
238 char *GetPrintPreviewCommand();
239 char *GetPrinterOptions();
240 char *GetPrinterFile();
241 char *GetPaperName();
242 int GetPrinterOrientation();
243 void GetPrinterScaling(double* x
, double* y
);
244 void GetPrinterTranslation(long *x
, long *y
);
245 int GetPrinterMode();
249 void operator=(wxPrintSetupData
& data
);
252 DECLARE_DYNAMIC_CLASS(wxPrintSetupData
)
255 WXDLLEXPORT_DATA(extern wxPrintSetupData
*) wxThePrintSetupData
;
256 WXDLLEXPORT
extern void wxInitializePrintSetupData(bool init
= TRUE
);