print session additions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18058 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -195,37 +195,38 @@ wxPrintData::wxPrintData()
|
||||
#if TARGET_CARBON
|
||||
m_macPageFormat = kPMNoPageFormat;
|
||||
m_macPrintSettings = kPMNoPrintSettings;
|
||||
m_macPrintSession = kPMNoReference ;
|
||||
|
||||
#if PM_USE_SESSION_APIS
|
||||
PMPrintSession macPrintSession = kPMNoReference;
|
||||
OSStatus err;
|
||||
|
||||
err = PMCreateSession((PMPrintSession *)&m_macPrintSession) ;
|
||||
|
||||
err = ::UMAPrOpen(&macPrintSession) ;
|
||||
if ( err == noErr )
|
||||
{
|
||||
{
|
||||
err = PMCreatePageFormat((PMPageFormat *)&m_macPageFormat);
|
||||
|
||||
|
||||
// Note that PMPageFormat is not session-specific, but calling
|
||||
// PMSessionDefaultPageFormat assigns values specific to the printer
|
||||
// associated with the current printing session.
|
||||
if ((err == noErr) && (m_macPageFormat != kPMNoPageFormat))
|
||||
{
|
||||
err = PMSessionDefaultPageFormat((PMPrintSession)macPrintSession,
|
||||
err = PMSessionDefaultPageFormat((PMPrintSession)m_macPrintSession,
|
||||
(PMPageFormat)m_macPageFormat);
|
||||
}
|
||||
|
||||
|
||||
err = PMCreatePrintSettings((PMPrintSettings *)&m_macPrintSettings);
|
||||
|
||||
|
||||
// Note that PMPrintSettings is not session-specific, but calling
|
||||
// PMSessionDefaultPrintSettings assigns values specific to the printer
|
||||
// associated with the current printing session.
|
||||
if ((err == noErr) && (m_macPrintSettings != kPMNoPrintSettings))
|
||||
{
|
||||
err = PMSessionDefaultPrintSettings((PMPrintSession)macPrintSession,
|
||||
err = PMSessionDefaultPrintSettings((PMPrintSession)m_macPrintSession,
|
||||
(PMPrintSettings)m_macPrintSettings);
|
||||
}
|
||||
}
|
||||
::UMAPrClose(&macPrintSession) ;
|
||||
|
||||
#endif
|
||||
#else
|
||||
m_macPrintSettings = (THPrint) NewHandleClear( sizeof( TPrint ) );
|
||||
@@ -292,6 +293,7 @@ wxPrintData::wxPrintData(const wxPrintData& printData)
|
||||
#if TARGET_CARBON
|
||||
m_macPageFormat = kPMNoPageFormat;
|
||||
m_macPrintSettings = kPMNoPrintSettings;
|
||||
m_macPrintSession = kPMNoReference ;
|
||||
#else
|
||||
m_macPrintSettings = NULL;
|
||||
#endif
|
||||
@@ -329,7 +331,16 @@ wxPrintData::~wxPrintData()
|
||||
#endif
|
||||
m_macPrintSettings = kPMNoPrintSettings;
|
||||
}
|
||||
|
||||
|
||||
if ( m_macPrintSession != kPMNoReference )
|
||||
{
|
||||
#if PM_USE_SESSION_APIS
|
||||
(void)PMRelease(m_macPrintSession);
|
||||
#else
|
||||
(void)PMDisposePrintSession(m_macPrintSession);
|
||||
#endif
|
||||
m_macPrintSession = kPMNoReference;
|
||||
}
|
||||
#else
|
||||
wxASSERT( m_macPrintSettings );
|
||||
// we should perhaps delete
|
||||
@@ -807,6 +818,26 @@ void wxPrintData::operator=(const wxPrintData& data)
|
||||
{
|
||||
#ifdef __WXMAC__
|
||||
#if TARGET_CARBON
|
||||
if ( m_macPrintSettings != kPMNoPrintSettings )
|
||||
{
|
||||
PMRelease( m_macPrintSettings ) ;
|
||||
m_macPrintSettings = kPMNoPrintSettings ;
|
||||
}
|
||||
if ( data.m_macPrintSettings != kPMNoPrintSettings )
|
||||
{
|
||||
m_macPrintSettings = data.m_macPrintSettings ;
|
||||
PMRetain( m_macPrintSettings ) ;
|
||||
}
|
||||
if ( m_macPageFormat != kPMNoPageFormat )
|
||||
{
|
||||
PMRelease( m_macPageFormat ) ;
|
||||
m_macPageFormat = kPMNoPageFormat ;
|
||||
}
|
||||
if ( data.m_macPageFormat != kPMNoPageFormat )
|
||||
{
|
||||
m_macPageFormat = data.m_macPageFormat ;
|
||||
PMRetain( m_macPageFormat ) ;
|
||||
}
|
||||
#else
|
||||
m_macPrintSettings = data.m_macPrintSettings;
|
||||
HandToHand( (Handle*) &m_macPrintSettings );
|
||||
@@ -1445,6 +1476,20 @@ void wxPageSetupDialogData::ConvertFromNative()
|
||||
m_printData.ConvertFromNative ();
|
||||
|
||||
#if TARGET_CARBON
|
||||
PMRect rPaper;
|
||||
|
||||
OSStatus err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper);
|
||||
if ( err == noErr )
|
||||
{
|
||||
m_paperSize.x = ((double) rPaper.right - rPaper.left ) * pt2mm;
|
||||
m_paperSize.y = ((double) rPaper.bottom - rPaper.top ) * pt2mm;
|
||||
|
||||
m_minMarginTopLeft.x = ((double) - rPaper.left ) * pt2mm;
|
||||
m_minMarginTopLeft.y = ((double) - rPaper.top ) * pt2mm;
|
||||
|
||||
// m_minMarginBottomRight.x = ((double) rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.right ) * pt2mm;
|
||||
// m_minMarginBottomRight.y = ((double)(**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.bottom ) * pt2mm;
|
||||
}
|
||||
#else
|
||||
m_paperSize.x = ((double) (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ) * pt2mm;
|
||||
m_paperSize.y = ((double) (**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPaper.top ) * pt2mm;
|
||||
|
Reference in New Issue
Block a user