extending printing code (backport of 2.5 is not possible)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@20698 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -196,38 +196,7 @@ wxPrintData::wxPrintData()
|
|||||||
m_macPageFormat = kPMNoPageFormat;
|
m_macPageFormat = kPMNoPageFormat;
|
||||||
m_macPrintSettings = kPMNoPrintSettings;
|
m_macPrintSettings = kPMNoPrintSettings;
|
||||||
m_macPrintSession = kPMNoReference ;
|
m_macPrintSession = kPMNoReference ;
|
||||||
|
ValidateOrCreate() ;
|
||||||
#if PM_USE_SESSION_APIS
|
|
||||||
OSStatus err;
|
|
||||||
|
|
||||||
err = PMCreateSession((PMPrintSession *)&m_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)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)m_macPrintSession,
|
|
||||||
(PMPrintSettings)m_macPrintSettings);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
m_macPrintSettings = (THPrint) NewHandleClear( sizeof( TPrint ) );
|
m_macPrintSettings = (THPrint) NewHandleClear( sizeof( TPrint ) );
|
||||||
(**(THPrint)m_macPrintSettings).iPrVersion = 0; // something invalid
|
(**(THPrint)m_macPrintSettings).iPrVersion = 0; // something invalid
|
||||||
@@ -797,9 +766,32 @@ void wxPrintData::ConvertFromNative()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
|
|
||||||
void wxPrintData::ConvertToNative()
|
void wxPrintData::ConvertToNative()
|
||||||
{
|
{
|
||||||
|
ValidateOrCreate() ;
|
||||||
#if TARGET_CARBON
|
#if TARGET_CARBON
|
||||||
|
PMSetCopies( (PMPrintSettings) m_macPrintSettings , m_printNoCopies , false ) ;
|
||||||
|
PMSetOrientation( (PMPageFormat) m_macPageFormat , ( m_printOrientation == wxLANDSCAPE ) ?
|
||||||
|
kPMLandscape : kPMPortrait , false ) ;
|
||||||
|
// collate cannot be set
|
||||||
|
#if 0 // not yet tested
|
||||||
|
if ( m_printerName.Length() > 0 )
|
||||||
|
PMSessionSetCurrentPrinter( (PMPrintSession) m_macPrintSession , wxMacCFStringHolder( m_printerName ) ) ;
|
||||||
|
#endif
|
||||||
|
PMColorMode color ;
|
||||||
|
PMGetColorMode( (PMPrintSettings) m_macPrintSettings, &color ) ;
|
||||||
|
if (m_colour)
|
||||||
|
{
|
||||||
|
if ( color == kPMBlackAndWhite )
|
||||||
|
PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMColor ) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMBlackAndWhite ) ;
|
||||||
|
|
||||||
|
// PMDuplexMode not yet accessible via API
|
||||||
|
// PMQualityMode not yet accessible via API
|
||||||
|
// todo paperSize
|
||||||
#else
|
#else
|
||||||
(**(THPrint)m_macPrintSettings).prJob.iCopies = m_printNoCopies;
|
(**(THPrint)m_macPrintSettings).prJob.iCopies = m_printNoCopies;
|
||||||
#endif
|
#endif
|
||||||
@@ -808,36 +800,148 @@ void wxPrintData::ConvertToNative()
|
|||||||
void wxPrintData::ConvertFromNative()
|
void wxPrintData::ConvertFromNative()
|
||||||
{
|
{
|
||||||
#if TARGET_CARBON
|
#if TARGET_CARBON
|
||||||
|
OSStatus err = noErr ;
|
||||||
|
|
||||||
|
UInt32 copies ;
|
||||||
|
err = PMGetCopies( (PMPrintSettings) m_macPrintSettings , &copies ) ;
|
||||||
|
if ( err == noErr )
|
||||||
|
m_printNoCopies = copies ;
|
||||||
|
|
||||||
|
PMOrientation orientation ;
|
||||||
|
err = PMGetOrientation( (PMPageFormat) m_macPageFormat , &orientation ) ;
|
||||||
|
if ( err == noErr )
|
||||||
|
{
|
||||||
|
if ( orientation == kPMPortrait || orientation == kPMReversePortrait )
|
||||||
|
m_printOrientation = wxPORTRAIT ;
|
||||||
|
else
|
||||||
|
m_printOrientation = wxLANDSCAPE ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// collate cannot be set
|
||||||
|
#if 0
|
||||||
|
{
|
||||||
|
wxMacCFStringHolder name ;
|
||||||
|
PMPrinter printer ;
|
||||||
|
PMSessionGetCurrentPrinter( (PMPrintSession) m_macPrintSession ,
|
||||||
|
&printer ) ;
|
||||||
|
m_printerName = name.AsString() ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PMColorMode color ;
|
||||||
|
err = PMGetColorMode( (PMPrintSettings) m_macPrintSettings, &color ) ;
|
||||||
|
if ( err == noErr )
|
||||||
|
m_colour = !(color == kPMBlackAndWhite) ;
|
||||||
|
|
||||||
|
// PMDuplexMode not yet accessible via API
|
||||||
|
// PMQualityMode not yet accessible via API
|
||||||
|
// todo paperSize
|
||||||
|
PMRect rPaper;
|
||||||
|
err = PMGetUnadjustedPaperRect((PMPageFormat) m_macPageFormat, &rPaper);
|
||||||
|
if ( err == noErr )
|
||||||
|
{
|
||||||
|
m_paperSize.x = (int)(( rPaper.right - rPaper.left ) * pt2mm + 0.5 );
|
||||||
|
m_paperSize.y = (int)(( rPaper.bottom - rPaper.top ) * pt2mm + 0.5 );
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
m_printNoCopies = (**(THPrint)m_macPrintSettings).prJob.iCopies;
|
m_printNoCopies = (**(THPrint)m_macPrintSettings).prJob.iCopies;
|
||||||
|
|
||||||
|
// paper size
|
||||||
|
m_paperSize.x = ((double) (**(THPrint)m_macPrintSettings).rPaper.right - (**(THPrint)m_macPrintSettings).rPaper.left ) * pt2mm;
|
||||||
|
m_paperSize.y = ((double) (**(THPrint)m_macPrintSettings).rPaper.bottom - (**(THPrint)m_macPrintSettings).rPaper.top ) * pt2mm;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxPrintData::ValidateOrCreate()
|
||||||
|
{
|
||||||
|
#if TARGET_CARBON
|
||||||
|
OSStatus err = noErr ;
|
||||||
|
if ( m_macPrintSession == kPMNoReference )
|
||||||
|
{
|
||||||
|
err = PMCreateSession( (PMPrintSession *) &m_macPrintSession ) ;
|
||||||
|
}
|
||||||
|
// Set up a valid PageFormat object.
|
||||||
|
if ( m_macPageFormat == kPMNoPageFormat)
|
||||||
|
{
|
||||||
|
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) m_macPrintSession,
|
||||||
|
(PMPageFormat) m_macPageFormat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
err = PMSessionValidatePageFormat((PMPrintSession) m_macPrintSession,
|
||||||
|
(PMPageFormat) m_macPageFormat,
|
||||||
|
kPMDontWantBoolean);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up a valid PrintSettings object.
|
||||||
|
if ( m_macPrintSettings == kPMNoPrintSettings)
|
||||||
|
{
|
||||||
|
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) m_macPrintSession,
|
||||||
|
(PMPrintSettings) m_macPrintSettings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
err = PMSessionValidatePrintSettings((PMPrintSession) m_macPrintSession,
|
||||||
|
(PMPrintSettings) m_macPrintSettings,
|
||||||
|
kPMDontWantBoolean);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void wxPrintData::operator=(const wxPrintData& data)
|
void wxPrintData::operator=(const wxPrintData& data)
|
||||||
{
|
{
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
#if TARGET_CARBON
|
#if TARGET_CARBON
|
||||||
|
if ( data.m_macPrintSession != kPMNoPrintSettings )
|
||||||
|
PMRetain( data.m_macPrintSession ) ;
|
||||||
|
if ( m_macPrintSession != kPMNoPrintSettings )
|
||||||
|
{
|
||||||
|
PMRelease( m_macPrintSession ) ;
|
||||||
|
m_macPrintSession = kPMNoPrintSettings ;
|
||||||
|
}
|
||||||
|
if ( data.m_macPrintSession != kPMNoPrintSettings )
|
||||||
|
m_macPrintSession = data.m_macPrintSession ;
|
||||||
|
|
||||||
|
if ( data.m_macPrintSettings != kPMNoPrintSettings )
|
||||||
|
PMRetain( data.m_macPrintSettings ) ;
|
||||||
if ( m_macPrintSettings != kPMNoPrintSettings )
|
if ( m_macPrintSettings != kPMNoPrintSettings )
|
||||||
{
|
{
|
||||||
PMRelease( m_macPrintSettings ) ;
|
PMRelease( m_macPrintSettings ) ;
|
||||||
m_macPrintSettings = kPMNoPrintSettings ;
|
m_macPrintSettings = kPMNoPrintSettings ;
|
||||||
}
|
}
|
||||||
if ( data.m_macPrintSettings != kPMNoPrintSettings )
|
if ( data.m_macPrintSettings != kPMNoPrintSettings )
|
||||||
{
|
|
||||||
m_macPrintSettings = data.m_macPrintSettings ;
|
m_macPrintSettings = data.m_macPrintSettings ;
|
||||||
PMRetain( m_macPrintSettings ) ;
|
|
||||||
}
|
if ( data.m_macPageFormat != kPMNoPageFormat )
|
||||||
|
PMRetain( data.m_macPageFormat ) ;
|
||||||
if ( m_macPageFormat != kPMNoPageFormat )
|
if ( m_macPageFormat != kPMNoPageFormat )
|
||||||
{
|
{
|
||||||
PMRelease( m_macPageFormat ) ;
|
PMRelease( m_macPageFormat ) ;
|
||||||
m_macPageFormat = kPMNoPageFormat ;
|
m_macPageFormat = kPMNoPageFormat ;
|
||||||
}
|
}
|
||||||
if ( data.m_macPageFormat != kPMNoPageFormat )
|
if ( data.m_macPageFormat != kPMNoPageFormat )
|
||||||
{
|
|
||||||
m_macPageFormat = data.m_macPageFormat ;
|
m_macPageFormat = data.m_macPageFormat ;
|
||||||
PMRetain( m_macPageFormat ) ;
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
m_macPrintSettings = data.m_macPrintSettings;
|
m_macPrintSettings = data.m_macPrintSettings;
|
||||||
HandToHand( (Handle*) &m_macPrintSettings );
|
HandToHand( (Handle*) &m_macPrintSettings );
|
||||||
@@ -1123,25 +1227,43 @@ void wxPrintDialogData::SetOwnerWindow(wxWindow* win)
|
|||||||
#endif // MSW
|
#endif // MSW
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
|
|
||||||
void wxPrintDialogData::ConvertToNative()
|
void wxPrintDialogData::ConvertToNative()
|
||||||
{
|
{
|
||||||
|
m_printData.ConvertToNative();
|
||||||
#if TARGET_CARBON
|
#if TARGET_CARBON
|
||||||
|
PMSetPageRange( (PMPrintSettings) m_printData.m_macPrintSettings , m_printMinPage , m_printMaxPage ) ;
|
||||||
|
PMSetCopies( (PMPrintSettings) m_printData.m_macPrintSettings , m_printNoCopies , false ) ;
|
||||||
|
PMSetFirstPage( (PMPrintSettings) m_printData.m_macPrintSettings , m_printFromPage , false ) ;
|
||||||
|
PMSetLastPage( (PMPrintSettings) m_printData.m_macPrintSettings , m_printToPage , false ) ;
|
||||||
#else
|
#else
|
||||||
(**(THPrint)m_printData.m_macPrintSettings).prJob.iFstPage = m_printFromPage;
|
(**(THPrint)m_printData.m_macPrintSettings).prJob.iFstPage = m_printFromPage;
|
||||||
(**(THPrint)m_printData.m_macPrintSettings).prJob.iLstPage = m_printToPage;
|
(**(THPrint)m_printData.m_macPrintSettings).prJob.iLstPage = m_printToPage;
|
||||||
m_printData.ConvertToNative();
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxPrintDialogData::ConvertFromNative()
|
void wxPrintDialogData::ConvertFromNative()
|
||||||
{
|
{
|
||||||
#if TARGET_CARBON
|
|
||||||
#else
|
|
||||||
m_printData.ConvertFromNative();
|
m_printData.ConvertFromNative();
|
||||||
|
#if TARGET_CARBON
|
||||||
|
UInt32 minPage , maxPage ;
|
||||||
|
PMGetPageRange( (PMPrintSettings) m_printData.m_macPrintSettings , &minPage , &maxPage ) ;
|
||||||
|
m_printMinPage = minPage ;
|
||||||
|
m_printMaxPage = maxPage ;
|
||||||
|
UInt32 copies ;
|
||||||
|
PMGetCopies( (PMPrintSettings) m_printData.m_macPrintSettings , &copies ) ;
|
||||||
|
m_printNoCopies = copies ;
|
||||||
|
UInt32 from , to ;
|
||||||
|
PMGetFirstPage((PMPrintSettings) m_printData.m_macPrintSettings , &from ) ;
|
||||||
|
PMGetLastPage((PMPrintSettings) m_printData.m_macPrintSettings , &to ) ;
|
||||||
|
m_printFromPage = from ;
|
||||||
|
m_printToPage = to ;
|
||||||
|
#else
|
||||||
m_printFromPage = (**(THPrint)m_printData.m_macPrintSettings).prJob.iFstPage;
|
m_printFromPage = (**(THPrint)m_printData.m_macPrintSettings).prJob.iFstPage;
|
||||||
m_printToPage = (**(THPrint)m_printData.m_macPrintSettings).prJob.iLstPage;
|
m_printToPage = (**(THPrint)m_printData.m_macPrintSettings).prJob.iLstPage;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -1474,29 +1596,26 @@ void wxPageSetupDialogData::ConvertToNative()
|
|||||||
void wxPageSetupDialogData::ConvertFromNative()
|
void wxPageSetupDialogData::ConvertFromNative()
|
||||||
{
|
{
|
||||||
m_printData.ConvertFromNative ();
|
m_printData.ConvertFromNative ();
|
||||||
|
m_paperSize = m_printData.GetPaperSize() ;
|
||||||
|
CalculateIdFromPaperSize();
|
||||||
#if TARGET_CARBON
|
#if TARGET_CARBON
|
||||||
PMRect rPaper;
|
PMRect rPaper;
|
||||||
|
OSStatus err = PMGetUnadjustedPaperRect((PMPageFormat) m_printData.m_macPageFormat, &rPaper);
|
||||||
OSStatus err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper);
|
|
||||||
if ( err == noErr )
|
if ( err == noErr )
|
||||||
{
|
{
|
||||||
m_paperSize.x = int(( rPaper.right - rPaper.left ) * pt2mm);
|
PMRect rPage ;
|
||||||
m_paperSize.y = int(( rPaper.bottom - rPaper.top ) * pt2mm);
|
err = PMGetUnadjustedPageRect((PMPageFormat) m_printData.m_macPageFormat , &rPage ) ;
|
||||||
|
if ( err == noErr )
|
||||||
m_minMarginTopLeft.x = int( ( - rPaper.left ) * pt2mm );
|
{
|
||||||
m_minMarginTopLeft.y = int( ( - rPaper.top ) * pt2mm );
|
m_minMarginTopLeft.x = (int)(((double) rPage.left - rPaper.left ) * pt2mm);
|
||||||
|
m_minMarginTopLeft.y = (int)(((double) rPage.top - rPaper.top ) * pt2mm);
|
||||||
// m_minMarginBottomRight.x = ((double) rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.right ) * pt2mm;
|
m_minMarginBottomRight.x = ((double) rPaper.right - rPage.right ) * pt2mm;
|
||||||
// m_minMarginBottomRight.y = ((double)(**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.bottom ) * pt2mm;
|
m_minMarginBottomRight.y = ((double) rPaper.bottom - rPage.bottom ) * pt2mm;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
m_paperSize.x = ((double) (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ) * pt2mm;
|
m_minMarginTopLeft.x = ((double) (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.left -(**(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;
|
m_minMarginTopLeft.y = ((double) (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.top -(**(THPrint)m_printData.m_macPrintSettings).rPaper.top ) * pt2mm;
|
||||||
|
|
||||||
m_minMarginTopLeft.x = ((double) -(**(THPrint)m_printData.m_macPrintSettings).rPaper.left ) * pt2mm;
|
|
||||||
m_minMarginTopLeft.y = ((double) -(**(THPrint)m_printData.m_macPrintSettings).rPaper.top ) * pt2mm;
|
|
||||||
|
|
||||||
m_minMarginBottomRight.x = ((double) (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.right ) * pt2mm;
|
m_minMarginBottomRight.x = ((double) (**(THPrint)m_printData.m_macPrintSettings).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;
|
m_minMarginBottomRight.y = ((double)(**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.bottom ) * pt2mm;
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user