X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0ab2de15cbb2bf653f3279d7f8635ee503488396..a4609ab847819b47c996674420871f4514d50625:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index 1f839fb728..11f936d581 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: cmndata.cpp +// Name: src/common/cmndata.cpp // Purpose: Common GDI data // Author: Julian Smart // Modified by: @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "cmndata.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -28,16 +24,20 @@ #pragma hdrstop #endif +#include "wx/cmndata.h" + #ifndef WX_PRECOMP + #if defined(__WXMSW__) + #include "wx/msw/wrapcdlg.h" + #endif // MSW #include #include "wx/string.h" #include "wx/utils.h" #include "wx/app.h" + #include "wx/log.h" + #include "wx/gdicmn.h" #endif -#include "wx/gdicmn.h" -#include "wx/cmndata.h" -#include "wx/log.h" #include "wx/prntbase.h" #include "wx/printdlg.h" @@ -46,39 +46,21 @@ #endif // wxUSE_FONTDLG #if wxUSE_PRINTING_ARCHITECTURE - #include "wx/paper.h" -#endif // wxUSE_PRINTING_ARCHITECTURE - -#if defined(__WXMSW__) && !defined(__PALMOS__) - #include - #include "wx/msw/private.h" - #ifndef __SMARTPHONE__ /* of WinCE */ - #include - #endif +#include "wx/paper.h" - #if defined(__WATCOMC__) || defined(__SYMANTEC__) || defined(__SALFORDC__) - #include - #include - #endif -#endif // MSW - -#ifdef __WXMAC__ +#if defined(__WXMAC__) #include "wx/mac/private/print.h" #endif - #if wxUSE_PRINTING_ARCHITECTURE - IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) - IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) - IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject) - #endif // wxUSE_PRINTING_ARCHITECTURE +IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) +IMPLEMENT_DYNAMIC_CLASS(wxPrintDialogData, wxObject) +IMPLEMENT_DYNAMIC_CLASS(wxPageSetupDialogData, wxObject) - IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) - IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) +#endif // wxUSE_PRINTING_ARCHITECTURE -#ifndef DMPAPER_USER - #define DMPAPER_USER 256 -#endif +IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) +IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) // ============================================================================ // implementation @@ -167,22 +149,26 @@ wxFontDialogBase::~wxFontDialogBase() wxPrintData::wxPrintData() { -#ifdef __WXMAC__ - m_nativePrintData = wxNativePrintData::Create() ; -#endif m_bin = wxPRINTBIN_DEFAULT; + m_media = wxPRINTMEDIA_DEFAULT; m_printMode = wxPRINT_MODE_PRINTER; m_printOrientation = wxPORTRAIT; m_printNoCopies = 1; m_printCollate = false; // New, 24/3/99 - m_printerName = wxT(""); + m_printerName = wxEmptyString; m_colour = true; m_duplexMode = wxDUPLEX_SIMPLEX; m_printQuality = wxPRINT_QUALITY_HIGH; - m_paperId = wxPAPER_A4; - m_paperSize = wxSize(210, 297); + + // we intentionally don't initialize paper id and size at all, like this + // the default system settings will be used for them + m_paperId = wxPAPER_NONE; + m_paperSize = wxDefaultSize; + + m_privData = NULL; + m_privDataLen = 0; m_nativeData = wxPrintFactory::GetFactory()->CreatePrintNativeData(); } @@ -190,36 +176,44 @@ wxPrintData::wxPrintData() wxPrintData::wxPrintData(const wxPrintData& printData) : wxObject() { + m_nativeData = NULL; + m_privData = NULL; (*this) = printData; } +void wxPrintData::SetPrivData( char *privData, int len ) +{ + if (m_privData) + { + delete [] m_privData; + m_privData = NULL; + } + m_privDataLen = len; + if (m_privDataLen > 0) + { + m_privData = new char[m_privDataLen]; + memcpy( m_privData, privData, m_privDataLen ); + } +} + wxPrintData::~wxPrintData() { m_nativeData->m_ref--; - if (m_nativeData->m_ref == 0) + if (m_nativeData->m_ref == 0) delete m_nativeData; - -#ifdef __WXMAC__ - delete m_nativePrintData ; -#endif + + if (m_privData) + delete [] m_privData; } void wxPrintData::ConvertToNative() { -#ifdef __WXMAC__ - m_nativePrintData->TransferFrom( this ) ; -#else m_nativeData->TransferFrom( *this ) ; -#endif } void wxPrintData::ConvertFromNative() { -#ifdef __WXMAC__ - m_nativePrintData->TransferTo( this ) ; -#else m_nativeData->TransferTo( *this ) ; -#endif } void wxPrintData::operator=(const wxPrintData& data) @@ -234,41 +228,61 @@ void wxPrintData::operator=(const wxPrintData& data) m_paperId = data.m_paperId; m_paperSize = data.m_paperSize; m_bin = data.m_bin; + m_media = data.m_media; m_printMode = data.m_printMode; - m_filename = data.m_filename; + m_filename = data.m_filename; - // UnRef old m_nativeData - m_nativeData->m_ref--; - if (m_nativeData->m_ref == 0) - delete m_nativeData; + // UnRef old m_nativeData + if (m_nativeData) + { + m_nativeData->m_ref--; + if (m_nativeData->m_ref == 0) + delete m_nativeData; + } // Set Ref new one m_nativeData = data.GetNativeData(); m_nativeData->m_ref++; - -#ifdef __WXMAC__ - m_nativePrintData->CopyFrom( data.m_nativePrintData ) ; -#endif + + if (m_privData) + { + delete [] m_privData; + m_privData = NULL; + } + m_privDataLen = data.GetPrivDataLen(); + if (m_privDataLen > 0) + { + m_privData = new char[m_privDataLen]; + memcpy( m_privData, data.GetPrivData(), m_privDataLen ); + } } // Is this data OK for showing the print dialog? -bool wxPrintData::Ok() const +bool wxPrintData::IsOk() const { m_nativeData->TransferFrom( *this ); return m_nativeData->Ok(); } -#if WXWIN_COMPATIBILITY_2_4 +// What should happen here? wxPostScriptPrintNativeData is not +// defined unless all this is true on MSW. +#if WXWIN_COMPATIBILITY_2_4 && wxUSE_PRINTING_ARCHITECTURE && (!defined(__WXMSW__) || wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW) #include "wx/generic/prntdlgg.h" +#if wxUSE_POSTSCRIPT + #define WXUNUSED_WITHOUT_PS(name) name +#else + #define WXUNUSED_WITHOUT_PS(name) WXUNUSED(name) +#endif + wxString wxPrintData::GetPrinterCommand() const { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterCommand(); #endif - return wxT(""); + return wxEmptyString; } wxString wxPrintData::GetPrinterOptions() const @@ -277,7 +291,7 @@ wxString wxPrintData::GetPrinterOptions() const if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPrinterOptions(); #endif - return wxT(""); + return wxEmptyString; } wxString wxPrintData::GetPreviewCommand() const @@ -286,7 +300,7 @@ wxString wxPrintData::GetPreviewCommand() const if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) return ((wxPostScriptPrintNativeData*)m_nativeData)->GetPreviewCommand(); #endif - return wxT(""); + return wxEmptyString; } wxString wxPrintData::GetFontMetricPath() const @@ -295,7 +309,7 @@ wxString wxPrintData::GetFontMetricPath() const if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) return ((wxPostScriptPrintNativeData*)m_nativeData)->GetFontMetricPath(); #endif - return wxT(""); + return wxEmptyString; } double wxPrintData::GetPrinterScaleX() const @@ -334,7 +348,7 @@ long wxPrintData::GetPrinterTranslateY() const return 0; } -void wxPrintData::SetPrinterCommand(const wxString& command) +void wxPrintData::SetPrinterCommand(const wxString& WXUNUSED_WITHOUT_PS(command)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -342,7 +356,7 @@ void wxPrintData::SetPrinterCommand(const wxString& command) #endif } -void wxPrintData::SetPrinterOptions(const wxString& options) +void wxPrintData::SetPrinterOptions(const wxString& WXUNUSED_WITHOUT_PS(options)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -350,7 +364,7 @@ void wxPrintData::SetPrinterOptions(const wxString& options) #endif } -void wxPrintData::SetPreviewCommand(const wxString& command) +void wxPrintData::SetPreviewCommand(const wxString& WXUNUSED_WITHOUT_PS(command)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -358,7 +372,7 @@ void wxPrintData::SetPreviewCommand(const wxString& command) #endif } -void wxPrintData::SetFontMetricPath(const wxString& path) +void wxPrintData::SetFontMetricPath(const wxString& WXUNUSED_WITHOUT_PS(path)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -366,7 +380,7 @@ void wxPrintData::SetFontMetricPath(const wxString& path) #endif } -void wxPrintData::SetPrinterScaleX(double x) +void wxPrintData::SetPrinterScaleX(double WXUNUSED_WITHOUT_PS(x)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -374,7 +388,7 @@ void wxPrintData::SetPrinterScaleX(double x) #endif } -void wxPrintData::SetPrinterScaleY(double y) +void wxPrintData::SetPrinterScaleY(double WXUNUSED_WITHOUT_PS(y)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -382,7 +396,7 @@ void wxPrintData::SetPrinterScaleY(double y) #endif } -void wxPrintData::SetPrinterScaling(double x, double y) +void wxPrintData::SetPrinterScaling(double WXUNUSED_WITHOUT_PS(x), double WXUNUSED_WITHOUT_PS(y)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -390,7 +404,7 @@ void wxPrintData::SetPrinterScaling(double x, double y) #endif } -void wxPrintData::SetPrinterTranslateX(long x) +void wxPrintData::SetPrinterTranslateX(long WXUNUSED_WITHOUT_PS(x)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -398,7 +412,7 @@ void wxPrintData::SetPrinterTranslateX(long x) #endif } -void wxPrintData::SetPrinterTranslateY(long y) +void wxPrintData::SetPrinterTranslateY(long WXUNUSED_WITHOUT_PS(y)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -406,7 +420,7 @@ void wxPrintData::SetPrinterTranslateY(long y) #endif } -void wxPrintData::SetPrinterTranslation(long x, long y) +void wxPrintData::SetPrinterTranslation(long WXUNUSED_WITHOUT_PS(x), long WXUNUSED_WITHOUT_PS(y)) { #if wxUSE_POSTSCRIPT if (m_nativeData && wxIsKindOf(m_nativeData,wxPostScriptPrintNativeData)) @@ -432,10 +446,10 @@ wxPrintDialogData::wxPrintDialogData() m_printSelection = false; m_printEnableSelection = false; m_printEnablePageNumbers = true; - + wxPrintFactory* factory = wxPrintFactory::GetFactory(); m_printEnablePrintToFile = ! factory->HasOwnPrintToFile(); - + m_printEnableHelp = false; #if WXWIN_COMPATIBILITY_2_4 m_printSetupDialog = false; @@ -473,23 +487,6 @@ wxPrintDialogData::~wxPrintDialogData() { } -#ifdef __WXMAC__ - -void wxPrintDialogData::ConvertToNative() -{ - m_printData.ConvertToNative(); - m_printData.m_nativePrintData->TransferFrom( this ) ; -} - -void wxPrintDialogData::ConvertFromNative() -{ - m_printData.ConvertFromNative(); - m_printData.m_nativePrintData->TransferTo( this ) ; -} - -#endif - - void wxPrintDialogData::operator=(const wxPrintDialogData& data) { m_printFromPage = data.m_printFromPage; @@ -522,14 +519,14 @@ void wxPrintDialogData::operator=(const wxPrintData& data) wxPageSetupDialogData::wxPageSetupDialogData() { - m_paperSize = wxSize(0, 0); + m_paperSize = wxSize(0,0); CalculatePaperSizeFromId(); - m_minMarginTopLeft = wxPoint(0, 0); - m_minMarginBottomRight = wxPoint(0, 0); - m_marginTopLeft = wxPoint(0, 0); - m_marginBottomRight = wxPoint(0, 0); + m_minMarginTopLeft = + m_minMarginBottomRight = + m_marginTopLeft = + m_marginBottomRight = wxPoint(0,0); // Flags m_defaultMinMargins = false; @@ -549,11 +546,11 @@ wxPageSetupDialogData::wxPageSetupDialogData(const wxPageSetupDialogData& dialog wxPageSetupDialogData::wxPageSetupDialogData(const wxPrintData& printData) { - m_paperSize = wxSize(0, 0); - m_minMarginTopLeft = wxPoint(0, 0); - m_minMarginBottomRight = wxPoint(0, 0); - m_marginTopLeft = wxPoint(0, 0); - m_marginBottomRight = wxPoint(0, 0); + m_paperSize = wxSize(0,0); + m_minMarginTopLeft = + m_minMarginBottomRight = + m_marginTopLeft = + m_marginBottomRight = wxPoint(0,0); // Flags m_defaultMinMargins = false; @@ -587,7 +584,7 @@ wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPageSetupDialogD m_enableOrientation = data.m_enableOrientation; m_enablePaper = data.m_enablePaper; m_enablePrinter = data.m_enablePrinter; - m_getDefaultInfo = data.m_getDefaultInfo;; + m_getDefaultInfo = data.m_getDefaultInfo; m_enableHelp = data.m_enableHelp; m_printData = data.m_printData; @@ -598,40 +595,11 @@ wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPageSetupDialogD wxPageSetupDialogData& wxPageSetupDialogData::operator=(const wxPrintData& data) { m_printData = data; + CalculatePaperSizeFromId(); return *this; } -#ifdef __WXMAC__ -void wxPageSetupDialogData::ConvertToNative() -{ - m_printData.ConvertToNative(); - m_printData.m_nativePrintData->TransferFrom( this ) ; -} - -void wxPageSetupDialogData::ConvertFromNative() -{ - m_printData.ConvertFromNative (); - m_paperSize = m_printData.GetPaperSize() ; - CalculateIdFromPaperSize(); - m_printData.m_nativePrintData->TransferTo( this ) ; - // adjust minimal values - - if ( m_marginTopLeft.x < m_minMarginTopLeft.x ) - m_marginTopLeft.x = m_minMarginTopLeft.x; - - if ( m_marginBottomRight.x < m_minMarginBottomRight.x ) - m_marginBottomRight.x = m_minMarginBottomRight.x; - - if ( m_marginTopLeft.y < m_minMarginTopLeft.y ) - m_marginTopLeft.y = m_minMarginTopLeft.y; - - if ( m_marginBottomRight.y < m_minMarginBottomRight.y ) - m_marginBottomRight.y = m_minMarginBottomRight.y; -} -#endif - - // If a corresponding paper type is found in the paper database, will set the m_printData // paper size id member as well. void wxPageSetupDialogData::SetPaperSize(const wxSize& sz) @@ -649,6 +617,12 @@ void wxPageSetupDialogData::SetPaperSize(wxPaperSize id) CalculatePaperSizeFromId(); } +void wxPageSetupDialogData::SetPrintData(const wxPrintData& printData) +{ + m_printData = printData; + CalculatePaperSizeFromId(); +} + // Use paper size defined in this object to set the wxPrintData // paper id void wxPageSetupDialogData::CalculateIdFromPaperSize()