/[pcsx2_0.9.7]/trunk/3rdparty/wxWidgets/src/common/cmndata.cpp
ViewVC logotype

Annotation of /trunk/3rdparty/wxWidgets/src/common/cmndata.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (hide annotations) (download)
Tue Sep 7 03:24:11 2010 UTC (10 years, 4 months ago) by william
File size: 18126 byte(s)
committing r3113 initial commit again...
1 william 31 /////////////////////////////////////////////////////////////////////////////
2     // Name: src/common/cmndata.cpp
3     // Purpose: Common GDI data
4     // Author: Julian Smart
5     // Modified by:
6     // Created: 01/02/97
7     // RCS-ID: $Id: cmndata.cpp 43762 2006-12-03 15:26:01Z SC $
8     // Copyright: (c) Julian Smart
9     // Licence: wxWindows licence
10     /////////////////////////////////////////////////////////////////////////////
11    
12     // ============================================================================
13     // declarations
14     // ============================================================================
15    
16     // ----------------------------------------------------------------------------
17     // headers
18     // ----------------------------------------------------------------------------
19    
20     // For compilers that support precompilation, includes "wx.h".
21     #include "wx/wxprec.h"
22    
23     #ifdef __BORLANDC__
24     #pragma hdrstop
25     #endif
26    
27     #include "wx/cmndata.h"
28    
29     #ifndef WX_PRECOMP
30     #if defined(__WXMSW__)
31     #include "wx/msw/wrapcdlg.h"
32     #endif // MSW
33     #include <stdio.h>
34     #include "wx/string.h"
35     #include "wx/utils.h"
36     #include "wx/app.h"
37     #include "wx/log.h"
38     #include "wx/gdicmn.h"
39     #endif
40    
41     #include "wx/prntbase.h"
42     #include "wx/printdlg.h"
43    
44     #if wxUSE_FONTDLG
45     #include "wx/fontdlg.h"
46     #endif // wxUSE_FONTDLG
47    
48     #if wxUSE_PRINTING_ARCHITECTURE
49    
50     #include "wx/paper.h"
51    
52     #if defined(__WXMAC__)
53     #include "wx/mac/private/print.h"
54     #endif
55    
56     IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject)
57     IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject)
58     IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject)
59    
60     #endif // wxUSE_PRINTING_ARCHITECTURE
61    
62     IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject)
63     IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject)
64    
65     // ============================================================================
66     // implementation
67     // ============================================================================
68    
69     // ----------------------------------------------------------------------------
70     // wxColourData
71     // ----------------------------------------------------------------------------
72    
73     wxColourData::wxColourData()
74     {
75     m_chooseFull = false;
76     m_dataColour.Set(0,0,0);
77     // m_custColours are wxNullColours initially
78     }
79    
80     wxColourData::wxColourData(const wxColourData& data)
81     : wxObject()
82     {
83     (*this) = data;
84     }
85    
86     wxColourData::~wxColourData()
87     {
88     }
89    
90     void wxColourData::SetCustomColour(int i, const wxColour& colour)
91     {
92     wxCHECK_RET( (i >= 0 && i < 16), _T("custom colour index out of range") );
93    
94     m_custColours[i] = colour;
95     }
96    
97     wxColour wxColourData::GetCustomColour(int i)
98     {
99     wxCHECK_MSG( (i >= 0 && i < 16), wxColour(0,0,0),
100     _T("custom colour index out of range") );
101    
102     return m_custColours[i];
103     }
104    
105     void wxColourData::operator=(const wxColourData& data)
106     {
107     int i;
108     for (i = 0; i < 16; i++)
109     m_custColours[i] = data.m_custColours[i];
110    
111     m_dataColour = (wxColour&)data.m_dataColour;
112     m_chooseFull = data.m_chooseFull;
113     }
114    
115     // ----------------------------------------------------------------------------
116     // Font data
117     // ----------------------------------------------------------------------------
118    
119     wxFontData::wxFontData()
120     {
121     // Intialize colour to black.
122     m_fontColour = wxNullColour;
123    
124     m_showHelp = false;
125     m_allowSymbols = true;
126     m_enableEffects = true;
127     m_minSize = 0;
128     m_maxSize = 0;
129    
130     m_encoding = wxFONTENCODING_SYSTEM;
131     }
132    
133     wxFontData::~wxFontData()
134     {
135     }
136    
137     #if wxUSE_FONTDLG
138    
139     wxFontDialogBase::~wxFontDialogBase()
140     {
141     }
142    
143     #endif // wxUSE_FONTDLG
144    
145     #if wxUSE_PRINTING_ARCHITECTURE
146     // ----------------------------------------------------------------------------
147     // Print data
148     // ----------------------------------------------------------------------------
149    
150     wxPrintData::wxPrintData()
151     {
152     m_bin = wxPRINTBIN_DEFAULT;
153     m_media = wxPRINTMEDIA_DEFAULT;
154     m_printMode = wxPRINT_MODE_PRINTER;
155     m_printOrientation = wxPORTRAIT;
156     m_printOrientationReversed = false;
157     m_printNoCopies = 1;
158     m_printCollate = false;
159    
160     // New, 24/3/99
161     m_printerName = wxEmptyString;
162     m_colour = true;
163     m_duplexMode = wxDUPLEX_SIMPLEX;
164     m_printQuality = wxPRINT_QUALITY_HIGH;
165    
166     // we intentionally don't initialize paper id and size at all, like this
167     // the default system settings will be used for them
168     m_paperId = wxPAPER_NONE;
169     m_paperSize = wxDefaultSize;
170    
171     m_privData = NULL;
172     m_privDataLen = 0;
173    
174     m_nativeData = wxPrintFactory::GetFactory()->CreatePrintNativeData();
175     }
176    
177     wxPrintData::wxPrintData(const wxPrintData& printData)
178     : wxObject()
179     {
180     m_nativeData = NULL;
181     m_privData = NULL;
182     (*this) = printData;
183     }
184    
185     void wxPrintData::SetPrivData( char *privData, int len )
186     {
187     if (m_privData)
188     {
189     delete [] m_privData;
190     m_privData = NULL;
191     }
192     m_privDataLen = len;
193     if (m_privDataLen > 0)
194     {
195     m_privData = new char[m_privDataLen];
196     memcpy( m_privData, privData, m_privDataLen );
197     }
198     }
199    
200     wxPrintData::~wxPrintData()
201     {
202     m_nativeData->m_ref--;
203     if (m_nativeData->m_ref == 0)
204     delete m_nativeData;
205    
206     if (m_privData)
207     delete [] m_privData;
208     }
209    
210     void wxPrintData::ConvertToNative()
211     {
212     m_nativeData->TransferFrom( *this ) ;
213     }
214    
215     void wxPrintData::ConvertFromNative()
216     {
217     m_nativeData->TransferTo( *this ) ;
218     }
219    
220     void wxPrintData::operator=(const wxPrintData& data)
221     {
222     m_printNoCopies = data.m_printNoCopies;
223     m_printCollate = data.m_printCollate;
224     m_printOrientation = data.m_printOrientation;
225     m_printOrientationReversed = data.m_printOrientationReversed;
226     m_printerName = data.m_printerName;
227     m_colour = data.m_colour;
228     m_duplexMode = data.m_duplexMode;
229     m_printQuality = data.m_printQuality;
230     m_paperId = data.m_paperId;
231     m_paperSize = data.m_paperSize;
232     m_bin = data.m_bin;
233     m_media = data.m_media;
234     m_printMode = data.m_printMode;
235     m_filename = data.m_filename;
236    
237     // UnRef old m_nativeData
238     if (m_nativeData)
239     {
240     m_nativeData->m_ref--;
241     if (m_nativeData->m_ref == 0)
242     delete m_nativeData;
243     }
244     // Set Ref new one
245     m_nativeData = data.GetNativeData();
246     m_nativeData->m_ref++;
247    
248     if (m_privData)
249     {
250     delete [] m_privData;
251     m_privData = NULL;
252     }
253     m_privDataLen = data.GetPrivDataLen();
254     if (m_privDataLen > 0)
255     {
256     m_privData = new char[m_privDataLen];
257     memcpy( m_privData, data.GetPrivData(), m_privDataLen );
258     }
259     }
260    
261     // Is this data OK for showing the print dialog?
262     bool wxPrintData::IsOk() const
263     {
264     m_nativeData->TransferFrom( *this );
265    
266     return m_nativeData->Ok();
267     }
268    
269     // What should happen here? wxPostScriptPrintNativeData is not
270     // defined unless all this is true on MSW.
271     #if WXWIN_COMPATIBILITY_2_4 && wxUSE_PRINTING_ARCHITECTURE && (!defined(__WXMSW__) || wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW)
272    
273     #include "wx/generic/prntdlgg.h"
274    
275     #if wxUSE_POSTSCRIPT
276     #define WXUNUSED_WITHOUT_PS(name) name
277     #else
278     #define WXUNUSED_WITHOUT_PS(name) WXUNUSED(name)
279     #endif
280    
281     wxString wxPrintData::GetPrinterCommand() const
282     {
283     #if wxUSE_POSTSCRIPT
284     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
285     return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterCommand();
286     #endif
287     return wxEmptyString;
288     }
289    
290     wxString wxPrintData::GetPrinterOptions() const
291     {
292     #if wxUSE_POSTSCRIPT
293     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
294     return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterOptions();
295     #endif
296     return wxEmptyString;
297     }
298    
299     wxString wxPrintData::GetPreviewCommand() const
300     {
301     #if wxUSE_POSTSCRIPT
302     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
303     return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPreviewCommand();
304     #endif
305     return wxEmptyString;
306     }
307    
308     wxString wxPrintData::GetFontMetricPath() const
309     {
310     #if wxUSE_POSTSCRIPT
311     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
312     return ((wxPostScriptPrintNativeData*)m_nativeData)->GetFontMetricPath();
313     #endif
314     return wxEmptyString;
315     }
316    
317     double wxPrintData::GetPrinterScaleX() const
318     {
319     #if wxUSE_POSTSCRIPT
320     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
321     return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterScaleX();
322     #endif
323     return 1.0;
324     }
325    
326     double wxPrintData::GetPrinterScaleY() const
327     {
328     #if wxUSE_POSTSCRIPT
329     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
330     return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterScaleY();
331     #endif
332     return 1.0;
333     }
334    
335     long wxPrintData::GetPrinterTranslateX() const
336     {
337     #if wxUSE_POSTSCRIPT
338     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
339     return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterTranslateX();
340     #endif
341     return 0;
342     }
343    
344     long wxPrintData::GetPrinterTranslateY() const
345     {
346     #if wxUSE_POSTSCRIPT
347     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
348     return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterTranslateY();
349     #endif
350     return 0;
351     }
352    
353     void wxPrintData::SetPrinterCommand(const wxString& WXUNUSED_WITHOUT_PS(command))
354     {
355     #if wxUSE_POSTSCRIPT
356     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
357     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterCommand( command );
358     #endif
359     }
360    
361     void wxPrintData::SetPrinterOptions(const wxString& WXUNUSED_WITHOUT_PS(options))
362     {
363     #if wxUSE_POSTSCRIPT
364     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
365     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterOptions( options );
366     #endif
367     }
368    
369     void wxPrintData::SetPreviewCommand(const wxString& WXUNUSED_WITHOUT_PS(command))
370     {
371     #if wxUSE_POSTSCRIPT
372     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
373     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPreviewCommand( command );
374     #endif
375     }
376    
377     void wxPrintData::SetFontMetricPath(const wxString& WXUNUSED_WITHOUT_PS(path))
378     {
379     #if wxUSE_POSTSCRIPT
380     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
381     ((wxPostScriptPrintNativeData*)m_nativeData)->SetFontMetricPath( path );
382     #endif
383     }
384    
385     void wxPrintData::SetPrinterScaleX(double WXUNUSED_WITHOUT_PS(x))
386     {
387     #if wxUSE_POSTSCRIPT
388     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
389     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterScaleX( x );
390     #endif
391     }
392    
393     void wxPrintData::SetPrinterScaleY(double WXUNUSED_WITHOUT_PS(y))
394     {
395     #if wxUSE_POSTSCRIPT
396     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
397     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterScaleY( y );
398     #endif
399     }
400    
401     void wxPrintData::SetPrinterScaling(double WXUNUSED_WITHOUT_PS(x), double WXUNUSED_WITHOUT_PS(y))
402     {
403     #if wxUSE_POSTSCRIPT
404     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
405     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterScaling( x, y );
406     #endif
407     }
408    
409     void wxPrintData::SetPrinterTranslateX(long WXUNUSED_WITHOUT_PS(x))
410     {
411     #if wxUSE_POSTSCRIPT
412     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
413     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterTranslateX( x );
414     #endif
415     }
416    
417     void wxPrintData::SetPrinterTranslateY(long WXUNUSED_WITHOUT_PS(y))
418     {
419     #if wxUSE_POSTSCRIPT
420     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
421     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterTranslateY( y );
422     #endif
423     }
424    
425     void wxPrintData::SetPrinterTranslation(long WXUNUSED_WITHOUT_PS(x), long WXUNUSED_WITHOUT_PS(y))
426     {
427     #if wxUSE_POSTSCRIPT
428     if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData))
429     ((wxPostScriptPrintNativeData*)m_nativeData)->SetPrinterTranslation( x, y );
430     #endif
431     }
432     #endif
433    
434     // ----------------------------------------------------------------------------
435     // Print dialog data
436     // ----------------------------------------------------------------------------
437    
438     wxPrintDialogData::wxPrintDialogData()
439     {
440     m_printFromPage = 0;
441     m_printToPage = 0;
442     m_printMinPage = 0;
443     m_printMaxPage = 0;
444     m_printNoCopies = 1;
445     m_printAllPages = false;
446     m_printCollate = false;
447     m_printToFile = false;
448     m_printSelection = false;
449     m_printEnableSelection = false;
450     m_printEnablePageNumbers = true;
451    
452     wxPrintFactory* factory = wxPrintFactory::GetFactory();
453     m_printEnablePrintToFile = ! factory->HasOwnPrintToFile();
454    
455     m_printEnableHelp = false;
456     #if WXWIN_COMPATIBILITY_2_4
457     m_printSetupDialog = false;
458     #endif
459     }
460    
461     wxPrintDialogData::wxPrintDialogData(const wxPrintDialogData& dialogData)
462     : wxObject()
463     {
464     (*this) = dialogData;
465     }
466    
467     wxPrintDialogData::wxPrintDialogData(const wxPrintData& printData)
468     {
469     m_printFromPage = 1;
470     m_printToPage = 0;
471     m_printMinPage = 1;
472     m_printMaxPage = 9999;
473     m_printNoCopies = 1;
474     m_printAllPages = false;
475     m_printCollate = false;
476     m_printToFile = false;
477     m_printSelection = false;
478     m_printEnableSelection = false;
479     m_printEnablePageNumbers = true;
480     m_printEnablePrintToFile = true;
481     m_printEnableHelp = false;
482     #if WXWIN_COMPATIBILITY_2_4
483     m_printSetupDialog = false;
484     #endif
485     m_printData = printData;
486     }
487    
488     wxPrintDialogData::~wxPrintDialogData()
489     {
490     }
491    
492     void wxPrintDialogData::operator=(const wxPrintDialogData& data)
493     {
494     m_printFromPage = data.m_printFromPage;
495     m_printToPage = data.m_printToPage;
496     m_printMinPage = data.m_printMinPage;
497     m_printMaxPage = data.m_printMaxPage;
498     m_printNoCopies = data.m_printNoCopies;
499     m_printAllPages = data.m_printAllPages;
500     m_printCollate = data.m_printCollate;
501     m_printToFile = data.m_printToFile;
502     m_printSelection = data.m_printSelection;
503     m_printEnableSelection = data.m_printEnableSelection;
504     m_printEnablePageNumbers = data.m_printEnablePageNumbers;
505     m_printEnableHelp = data.m_printEnableHelp;
506     m_printEnablePrintToFile = data.m_printEnablePrintToFile;
507     #if WXWIN_COMPATIBILITY_2_4
508     m_printSetupDialog = data.m_printSetupDialog;
509     #endif
510     m_printData = data.m_printData;
511     }
512    
513     void wxPrintDialogData::operator=(const wxPrintData& data)
514     {
515     m_printData = data;
516     }
517    
518     // ----------------------------------------------------------------------------
519     // wxPageSetupDialogData
520     // ----------------------------------------------------------------------------
521    
522     wxPageSetupDialogData::wxPageSetupDialogData()
523     {
524     m_paperSize = wxSize(0,0);
525    
526     CalculatePaperSizeFromId();
527    
528     m_minMarginTopLeft =
529     m_minMarginBottomRight =
530     m_marginTopLeft =
531     m_marginBottomRight = wxPoint(0,0);
532    
533     // Flags
534     m_defaultMinMargins = false;
535     m_enableMargins = true;
536     m_enableOrientation = true;
537     m_enablePaper = true;
538     m_enablePrinter = true;
539     m_enableHelp = false;
540     m_getDefaultInfo = false;
541     }
542    
543     wxPageSetupDialogData::wxPageSetupDialogData(const wxPageSetupDialogData& dialogData)
544     : wxObject()
545     {
546     (*this) = dialogData;
547     }
548    
549     wxPageSetupDialogData::wxPageSetupDialogData(const wxPrintData& printData)
550     {
551     m_paperSize = wxSize(0,0);
552     m_minMarginTopLeft =
553     m_minMarginBottomRight =
554     m_marginTopLeft =
555     m_marginBottomRight = wxPoint(0,0);
556    
557     // Flags
558     m_defaultMinMargins = false;
559     m_enableMargins = true;
560     m_enableOrientation = true;
561     m_enablePaper = true;
562     m_enablePrinter = true;
563     m_enableHelp = false;
564     m_getDefaultInfo = false;
565    
566     m_printData = printData;
567    
568     // The wxPrintData paper size overrides these values, unless the size cannot
569     // be found.
570     CalculatePaperSizeFromId();
571     }
572    
573     wxPageSetupDialogData::~wxPageSetupDialogData()
574     {
575     }
576    
577     wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPageSetupDialogData& data)
578     {
579     m_paperSize = data.m_paperSize;
580     m_minMarginTopLeft = data.m_minMarginTopLeft;
581     m_minMarginBottomRight = data.m_minMarginBottomRight;
582     m_marginTopLeft = data.m_marginTopLeft;
583     m_marginBottomRight = data.m_marginBottomRight;
584     m_defaultMinMargins = data.m_defaultMinMargins;
585     m_enableMargins = data.m_enableMargins;
586     m_enableOrientation = data.m_enableOrientation;
587     m_enablePaper = data.m_enablePaper;
588     m_enablePrinter = data.m_enablePrinter;
589     m_getDefaultInfo = data.m_getDefaultInfo;
590     m_enableHelp = data.m_enableHelp;
591    
592     m_printData = data.m_printData;
593    
594     return *this;
595     }
596    
597     wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPrintData& data)
598     {
599     m_printData = data;
600     CalculatePaperSizeFromId();
601    
602     return *this;
603     }
604    
605     // If a corresponding paper type is found in the paper database, will set the m_printData
606     // paper size id member as well.
607     void wxPageSetupDialogData::SetPaperSize(const wxSize& sz)
608     {
609     m_paperSize = sz;
610    
611     CalculateIdFromPaperSize();
612     }
613    
614     // Sets the wxPrintData id, plus the paper width/height if found in the paper database.
615     void wxPageSetupDialogData::SetPaperSize(wxPaperSize id)
616     {
617     m_printData.SetPaperId(id);
618    
619     CalculatePaperSizeFromId();
620     }
621    
622     void wxPageSetupDialogData::SetPrintData(const wxPrintData& printData)
623     {
624     m_printData = printData;
625     CalculatePaperSizeFromId();
626     }
627    
628     // Use paper size defined in this object to set the wxPrintData
629     // paper id
630     void wxPageSetupDialogData::CalculateIdFromPaperSize()
631     {
632     wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL),
633     wxT("wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects.") );
634    
635     wxSize sz = GetPaperSize();
636    
637     wxPaperSize id = wxThePrintPaperDatabase->GetSize(wxSize(sz.x* 10, sz.y * 10));
638     if (id != wxPAPER_NONE)
639     {
640     m_printData.SetPaperId(id);
641     }
642     }
643    
644     // Use paper id in wxPrintData to set this object's paper size
645     void wxPageSetupDialogData::CalculatePaperSizeFromId()
646     {
647     wxASSERT_MSG( (wxThePrintPaperDatabase != (wxPrintPaperDatabase*) NULL),
648     wxT("wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects.") );
649    
650     wxSize sz = wxThePrintPaperDatabase->GetSize(m_printData.GetPaperId());
651    
652     // sz is in 10ths of a mm, while paper size is in mm
653     m_paperSize.x = sz.x / 10;
654     m_paperSize.y = sz.y / 10;
655     }
656    
657     #endif // wxUSE_PRINTING_ARCHITECTURE

  ViewVC Help
Powered by ViewVC 1.1.22