1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/cmndata.h
3 // Purpose:     Common GDI data classes
4 // Author:      Julian Smart and others
5 // Modified by:
6 // Created:     01/02/97
7 // Copyright:   (c)
8 // Licence:     wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _WX_CMNDATA_H_BASE_
12 #define _WX_CMNDATA_H_BASE_
13 
14 #include "wx/defs.h"
15 
16 #if wxUSE_PRINTING_ARCHITECTURE
17 
18 #include "wx/gdicmn.h"
19 
20 #if wxUSE_STREAMS
21 #include "wx/stream.h"
22 #endif
23 
24 class WXDLLIMPEXP_FWD_CORE wxPrintNativeDataBase;
25 
26 /*
27  * wxPrintData
28  * Encapsulates printer information (not printer dialog information)
29  */
30 
31 enum wxPrintBin
32 {
33     wxPRINTBIN_DEFAULT,
34 
35     wxPRINTBIN_ONLYONE,
36     wxPRINTBIN_LOWER,
37     wxPRINTBIN_MIDDLE,
38     wxPRINTBIN_MANUAL,
39     wxPRINTBIN_ENVELOPE,
40     wxPRINTBIN_ENVMANUAL,
41     wxPRINTBIN_AUTO,
42     wxPRINTBIN_TRACTOR,
43     wxPRINTBIN_SMALLFMT,
44     wxPRINTBIN_LARGEFMT,
45     wxPRINTBIN_LARGECAPACITY,
46     wxPRINTBIN_CASSETTE,
47     wxPRINTBIN_FORMSOURCE,
48 
49     wxPRINTBIN_USER
50 };
51 
52 const int wxPRINTMEDIA_DEFAULT = 0;
53 
54 class WXDLLIMPEXP_CORE wxPrintData: public wxObject
55 {
56 public:
57     wxPrintData();
58     wxPrintData(const wxPrintData& printData);
59     virtual ~wxPrintData();
60 
GetNoCopies()61     int GetNoCopies() const { return m_printNoCopies; }
GetCollate()62     bool GetCollate() const { return m_printCollate; }
GetOrientation()63     wxPrintOrientation GetOrientation() const { return m_printOrientation; }
IsOrientationReversed()64     bool IsOrientationReversed() const { return m_printOrientationReversed; }
65 
66     // Is this data OK for showing the print dialog?
Ok()67     bool Ok() const { return IsOk(); }
68     bool IsOk() const ;
69 
GetPrinterName()70     const wxString& GetPrinterName() const { return m_printerName; }
GetColour()71     bool GetColour() const { return m_colour; }
GetDuplex()72     wxDuplexMode GetDuplex() const { return m_duplexMode; }
GetPaperId()73     wxPaperSize GetPaperId() const { return m_paperId; }
GetPaperSize()74     const wxSize& GetPaperSize() const { return m_paperSize; }
GetQuality()75     wxPrintQuality GetQuality() const { return m_printQuality; }
GetBin()76     wxPrintBin GetBin() const { return m_bin; }
GetPrintMode()77     wxPrintMode GetPrintMode() const { return m_printMode; }
GetMedia()78     int GetMedia() const { return m_media; }
79 
SetNoCopies(int v)80     void SetNoCopies(int v) { m_printNoCopies = v; }
SetCollate(bool flag)81     void SetCollate(bool flag) { m_printCollate = flag; }
82 
83     // Please use the overloaded method below
SetOrientation(int orient)84     wxDEPRECATED_INLINE(void SetOrientation(int orient),
85                         m_printOrientation = (wxPrintOrientation)orient; )
86     void SetOrientation(wxPrintOrientation orient) { m_printOrientation = orient; }
SetOrientationReversed(bool reversed)87     void SetOrientationReversed(bool reversed) { m_printOrientationReversed = reversed; }
88 
SetPrinterName(const wxString & name)89     void SetPrinterName(const wxString& name) { m_printerName = name; }
SetColour(bool colour)90     void SetColour(bool colour) { m_colour = colour; }
SetDuplex(wxDuplexMode duplex)91     void SetDuplex(wxDuplexMode duplex) { m_duplexMode = duplex; }
SetPaperId(wxPaperSize sizeId)92     void SetPaperId(wxPaperSize sizeId) { m_paperId = sizeId; }
SetPaperSize(const wxSize & sz)93     void SetPaperSize(const wxSize& sz) { m_paperSize = sz; }
SetQuality(wxPrintQuality quality)94     void SetQuality(wxPrintQuality quality) { m_printQuality = quality; }
SetBin(wxPrintBin bin)95     void SetBin(wxPrintBin bin) { m_bin = bin; }
SetMedia(int media)96     void SetMedia(int media) { m_media = media; }
SetPrintMode(wxPrintMode printMode)97     void SetPrintMode(wxPrintMode printMode) { m_printMode = printMode; }
98 
GetFilename()99     wxString GetFilename() const { return m_filename; }
SetFilename(const wxString & filename)100     void SetFilename( const wxString &filename ) { m_filename = filename; }
101 
102     wxPrintData& operator=(const wxPrintData& data);
103 
GetPrivData()104     char* GetPrivData() const { return m_privData; }
GetPrivDataLen()105     int GetPrivDataLen() const { return m_privDataLen; }
106     void SetPrivData( char *privData, int len );
107 
108 
109     // Convert between wxPrintData and native data
110     void ConvertToNative();
111     void ConvertFromNative();
112     // Holds the native print data
GetNativeData()113     wxPrintNativeDataBase *GetNativeData() const { return m_nativeData; }
114 
115 private:
116     wxPrintBin      m_bin;
117     int             m_media;
118     wxPrintMode     m_printMode;
119 
120     int             m_printNoCopies;
121     wxPrintOrientation m_printOrientation;
122     bool            m_printOrientationReversed;
123     bool            m_printCollate;
124 
125     wxString        m_printerName;
126     bool            m_colour;
127     wxDuplexMode    m_duplexMode;
128     wxPrintQuality  m_printQuality;
129     wxPaperSize     m_paperId;
130     wxSize          m_paperSize;
131 
132     wxString        m_filename;
133 
134     char* m_privData;
135     int   m_privDataLen;
136 
137     wxPrintNativeDataBase  *m_nativeData;
138 
139 private:
140     wxDECLARE_DYNAMIC_CLASS(wxPrintData);
141 };
142 
143 /*
144  * wxPrintDialogData
145  * Encapsulates information displayed and edited in the printer dialog box.
146  * Contains a wxPrintData object which is filled in according to the values retrieved
147  * from the dialog.
148  */
149 
150 class WXDLLIMPEXP_CORE wxPrintDialogData: public wxObject
151 {
152 public:
153     wxPrintDialogData();
154     wxPrintDialogData(const wxPrintDialogData& dialogData);
155     wxPrintDialogData(const wxPrintData& printData);
156     virtual ~wxPrintDialogData();
157 
GetFromPage()158     int GetFromPage() const { return m_printFromPage; }
GetToPage()159     int GetToPage() const { return m_printToPage; }
GetMinPage()160     int GetMinPage() const { return m_printMinPage; }
GetMaxPage()161     int GetMaxPage() const { return m_printMaxPage; }
GetNoCopies()162     int GetNoCopies() const { return m_printNoCopies; }
GetAllPages()163     bool GetAllPages() const { return m_printAllPages; }
GetSelection()164     bool GetSelection() const { return m_printSelection; }
GetCollate()165     bool GetCollate() const { return m_printCollate; }
GetPrintToFile()166     bool GetPrintToFile() const { return m_printToFile; }
167 
SetFromPage(int v)168     void SetFromPage(int v) { m_printFromPage = v; }
SetToPage(int v)169     void SetToPage(int v) { m_printToPage = v; }
SetMinPage(int v)170     void SetMinPage(int v) { m_printMinPage = v; }
SetMaxPage(int v)171     void SetMaxPage(int v) { m_printMaxPage = v; }
SetNoCopies(int v)172     void SetNoCopies(int v) { m_printNoCopies = v; }
SetAllPages(bool flag)173     void SetAllPages(bool flag) { m_printAllPages = flag; }
SetSelection(bool flag)174     void SetSelection(bool flag) { m_printSelection = flag; }
SetCollate(bool flag)175     void SetCollate(bool flag) { m_printCollate = flag; }
SetPrintToFile(bool flag)176     void SetPrintToFile(bool flag) { m_printToFile = flag; }
177 
EnablePrintToFile(bool flag)178     void EnablePrintToFile(bool flag) { m_printEnablePrintToFile = flag; }
EnableSelection(bool flag)179     void EnableSelection(bool flag) { m_printEnableSelection = flag; }
EnablePageNumbers(bool flag)180     void EnablePageNumbers(bool flag) { m_printEnablePageNumbers = flag; }
EnableHelp(bool flag)181     void EnableHelp(bool flag) { m_printEnableHelp = flag; }
182 
GetEnablePrintToFile()183     bool GetEnablePrintToFile() const { return m_printEnablePrintToFile; }
GetEnableSelection()184     bool GetEnableSelection() const { return m_printEnableSelection; }
GetEnablePageNumbers()185     bool GetEnablePageNumbers() const { return m_printEnablePageNumbers; }
GetEnableHelp()186     bool GetEnableHelp() const { return m_printEnableHelp; }
187 
188     // Is this data OK for showing the print dialog?
Ok()189     bool Ok() const { return IsOk(); }
IsOk()190     bool IsOk() const { return m_printData.IsOk() ; }
191 
GetPrintData()192     wxPrintData& GetPrintData() { return m_printData; }
SetPrintData(const wxPrintData & printData)193     void SetPrintData(const wxPrintData& printData) { m_printData = printData; }
194 
195     void operator=(const wxPrintDialogData& data);
196     void operator=(const wxPrintData& data); // Sets internal m_printData member
197 
198 private:
199     int             m_printFromPage;
200     int             m_printToPage;
201     int             m_printMinPage;
202     int             m_printMaxPage;
203     int             m_printNoCopies;
204     bool            m_printAllPages;
205     bool            m_printCollate;
206     bool            m_printToFile;
207     bool            m_printSelection;
208     bool            m_printEnableSelection;
209     bool            m_printEnablePageNumbers;
210     bool            m_printEnableHelp;
211     bool            m_printEnablePrintToFile;
212     wxPrintData     m_printData;
213 
214 private:
215     wxDECLARE_DYNAMIC_CLASS(wxPrintDialogData);
216 };
217 
218 /*
219 * This is the data used (and returned) by the wxPageSetupDialog.
220 */
221 
222 // Compatibility with old name
223 #define wxPageSetupData wxPageSetupDialogData
224 
225 class WXDLLIMPEXP_CORE wxPageSetupDialogData: public wxObject
226 {
227 public:
228     wxPageSetupDialogData();
229     wxPageSetupDialogData(const wxPageSetupDialogData& dialogData);
230     wxPageSetupDialogData(const wxPrintData& printData);
231     virtual ~wxPageSetupDialogData();
232 
GetPaperSize()233     wxSize GetPaperSize() const { return m_paperSize; }
GetPaperId()234     wxPaperSize GetPaperId() const { return m_printData.GetPaperId(); }
GetMinMarginTopLeft()235     wxPoint GetMinMarginTopLeft() const { return m_minMarginTopLeft; }
GetMinMarginBottomRight()236     wxPoint GetMinMarginBottomRight() const { return m_minMarginBottomRight; }
GetMarginTopLeft()237     wxPoint GetMarginTopLeft() const { return m_marginTopLeft; }
GetMarginBottomRight()238     wxPoint GetMarginBottomRight() const { return m_marginBottomRight; }
239 
GetDefaultMinMargins()240     bool GetDefaultMinMargins() const { return m_defaultMinMargins; }
GetEnableMargins()241     bool GetEnableMargins() const { return m_enableMargins; }
GetEnableOrientation()242     bool GetEnableOrientation() const { return m_enableOrientation; }
GetEnablePaper()243     bool GetEnablePaper() const { return m_enablePaper; }
GetEnablePrinter()244     bool GetEnablePrinter() const { return m_enablePrinter; }
GetDefaultInfo()245     bool GetDefaultInfo() const { return m_getDefaultInfo; }
GetEnableHelp()246     bool GetEnableHelp() const { return m_enableHelp; }
247 
248     // Is this data OK for showing the page setup dialog?
Ok()249     bool Ok() const { return IsOk(); }
IsOk()250     bool IsOk() const { return m_printData.IsOk() ; }
251 
252     // If a corresponding paper type is found in the paper database, will set the m_printData
253     // paper size id member as well.
254     void SetPaperSize(const wxSize& sz);
255 
SetPaperId(wxPaperSize id)256     void SetPaperId(wxPaperSize id) { m_printData.SetPaperId(id); }
257 
258     // Sets the wxPrintData id, plus the paper width/height if found in the paper database.
259     void SetPaperSize(wxPaperSize id);
260 
SetMinMarginTopLeft(const wxPoint & pt)261     void SetMinMarginTopLeft(const wxPoint& pt) { m_minMarginTopLeft = pt; }
SetMinMarginBottomRight(const wxPoint & pt)262     void SetMinMarginBottomRight(const wxPoint& pt) { m_minMarginBottomRight = pt; }
SetMarginTopLeft(const wxPoint & pt)263     void SetMarginTopLeft(const wxPoint& pt) { m_marginTopLeft = pt; }
SetMarginBottomRight(const wxPoint & pt)264     void SetMarginBottomRight(const wxPoint& pt) { m_marginBottomRight = pt; }
SetDefaultMinMargins(bool flag)265     void SetDefaultMinMargins(bool flag) { m_defaultMinMargins = flag; }
SetDefaultInfo(bool flag)266     void SetDefaultInfo(bool flag) { m_getDefaultInfo = flag; }
267 
EnableMargins(bool flag)268     void EnableMargins(bool flag) { m_enableMargins = flag; }
EnableOrientation(bool flag)269     void EnableOrientation(bool flag) { m_enableOrientation = flag; }
EnablePaper(bool flag)270     void EnablePaper(bool flag) { m_enablePaper = flag; }
EnablePrinter(bool flag)271     void EnablePrinter(bool flag) { m_enablePrinter = flag; }
EnableHelp(bool flag)272     void EnableHelp(bool flag) { m_enableHelp = flag; }
273 
274     // Use paper size defined in this object to set the wxPrintData
275     // paper id
276     void CalculateIdFromPaperSize();
277 
278     // Use paper id in wxPrintData to set this object's paper size
279     void CalculatePaperSizeFromId();
280 
281     wxPageSetupDialogData& operator=(const wxPageSetupDialogData& data);
282     wxPageSetupDialogData& operator=(const wxPrintData& data);
283 
GetPrintData()284     wxPrintData& GetPrintData() { return m_printData; }
GetPrintData()285     const wxPrintData& GetPrintData() const { return m_printData; }
286     void SetPrintData(const wxPrintData& printData);
287 
288 private:
289     wxSize          m_paperSize; // The dimensions selected by the user (on return, same as in wxPrintData?)
290     wxPoint         m_minMarginTopLeft;
291     wxPoint         m_minMarginBottomRight;
292     wxPoint         m_marginTopLeft;
293     wxPoint         m_marginBottomRight;
294     bool            m_defaultMinMargins;
295     bool            m_enableMargins;
296     bool            m_enableOrientation;
297     bool            m_enablePaper;
298     bool            m_enablePrinter;
299     bool            m_getDefaultInfo; // Equiv. to PSD_RETURNDEFAULT
300     bool            m_enableHelp;
301     wxPrintData     m_printData;
302 
303 private:
304     wxDECLARE_DYNAMIC_CLASS(wxPageSetupDialogData);
305 };
306 
307 #endif // wxUSE_PRINTING_ARCHITECTURE
308 
309 #endif
310 // _WX_CMNDATA_H_BASE_
311