X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2997ca30d66c2dc778ed9a84c8c94fea6ec1c958..2b1d737b3e9413217302cde932cbc3af91d79024:/src/common/cmndata.cpp diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index a03afbf303..9c34396f4f 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -63,11 +63,12 @@ #endif #endif // MSW -#ifdef __WXMAC__ + #if wxUSE_PRINTING_ARCHITECTURE + +#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) @@ -184,6 +185,9 @@ wxPrintData::wxPrintData() m_paperId = wxPAPER_A4; m_paperSize = wxSize(210, 297); + m_privData = NULL; + m_privDataLen = 0; + m_nativeData = wxPrintFactory::GetFactory()->CreatePrintNativeData(); } @@ -194,11 +198,29 @@ wxPrintData::wxPrintData(const wxPrintData& printData) (*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) delete m_nativeData; + + if (m_privData) + delete [] m_privData; #ifdef __WXMAC__ delete m_nativePrintData ; @@ -249,6 +271,18 @@ void wxPrintData::operator=(const wxPrintData& data) m_nativeData = data.GetNativeData(); m_nativeData->m_ref++; + 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 ); + } + #ifdef __WXMAC__ m_nativePrintData->CopyFrom( data.m_nativePrintData ) ; #endif @@ -534,14 +568,14 @@ void wxPrintDialogData::operator=(const wxPrintData& data) wxPageSetupDialogData::wxPageSetupDialogData() { - m_paperSize = wxSize(); + m_paperSize = wxSize(0,0); CalculatePaperSizeFromId(); m_minMarginTopLeft = m_minMarginBottomRight = m_marginTopLeft = - m_marginBottomRight = wxPoint(); + m_marginBottomRight = wxPoint(0,0); // Flags m_defaultMinMargins = false; @@ -561,11 +595,11 @@ wxPageSetupDialogData::wxPageSetupDialogData(const wxPageSetupDialogData& dialog wxPageSetupDialogData::wxPageSetupDialogData(const wxPrintData& printData) { - m_paperSize = wxSize(); + m_paperSize = wxSize(0,0); m_minMarginTopLeft = m_minMarginBottomRight = m_marginTopLeft = - m_marginBottomRight = wxPoint(); + m_marginBottomRight = wxPoint(0,0); // Flags m_defaultMinMargins = false;