splitting methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -131,7 +131,7 @@ void wxOSXPrintData::UpdateToPMState()
|
||||
{
|
||||
}
|
||||
|
||||
bool wxOSXPrintData::TransferFrom( const wxPrintData &data )
|
||||
void wxOSXPrintData::TransferPrinterNameFrom( const wxPrintData &data )
|
||||
{
|
||||
CFArrayRef printerList;
|
||||
CFIndex index, count;
|
||||
@@ -158,7 +158,10 @@ bool wxOSXPrintData::TransferFrom( const wxPrintData &data )
|
||||
PMSessionSetCurrentPMPrinter(m_macPrintSession, printer);
|
||||
CFRelease(printerList);
|
||||
}
|
||||
}
|
||||
|
||||
void wxOSXPrintData::TransferPaperInfoFrom( const wxPrintData &data )
|
||||
{
|
||||
PMPrinter printer;
|
||||
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
|
||||
|
||||
@@ -276,6 +279,12 @@ bool wxOSXPrintData::TransferFrom( const wxPrintData &data )
|
||||
else
|
||||
PMSetOrientation( m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ?
|
||||
kPMLandscape : kPMPortrait , false ) ;
|
||||
}
|
||||
|
||||
void wxOSXPrintData::TransferResolutionFrom( const wxPrintData &data )
|
||||
{
|
||||
PMPrinter printer;
|
||||
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
|
||||
|
||||
UInt32 resCount;
|
||||
PMResolution *resolutions = GetSupportedResolutions(printer, &resCount);
|
||||
@@ -299,6 +308,14 @@ bool wxOSXPrintData::TransferFrom( const wxPrintData &data )
|
||||
|
||||
free(resolutions);
|
||||
}
|
||||
}
|
||||
|
||||
bool wxOSXPrintData::TransferFrom( const wxPrintData &data )
|
||||
{
|
||||
TransferPrinterNameFrom(data);
|
||||
TransferPaperInfoFrom(data);
|
||||
TransferResolutionFrom(data);
|
||||
|
||||
// after setting the new resolution the format has to be updated, otherwise the page rect remains
|
||||
// at the 'old' scaling
|
||||
|
||||
@@ -306,6 +323,7 @@ bool wxOSXPrintData::TransferFrom( const wxPrintData &data )
|
||||
m_macPageFormat, kPMDontWantBoolean);
|
||||
PMSessionValidatePrintSettings(m_macPrintSession,
|
||||
m_macPrintSettings, kPMDontWantBoolean);
|
||||
|
||||
#if wxOSX_USE_COCOA
|
||||
UpdateFromPMState();
|
||||
#endif
|
||||
@@ -313,12 +331,26 @@ bool wxOSXPrintData::TransferFrom( const wxPrintData &data )
|
||||
return true ;
|
||||
}
|
||||
|
||||
bool wxOSXPrintData::TransferTo( wxPrintData &data )
|
||||
void wxOSXPrintData::TransferPrinterNameTo( wxPrintData &data )
|
||||
{
|
||||
CFStringRef name;
|
||||
PMPrinter printer ;
|
||||
PMSessionGetCurrentPrinter( m_macPrintSession, &printer );
|
||||
if (PMPrinterIsDefault(printer))
|
||||
data.SetPrinterName(wxEmptyString);
|
||||
else
|
||||
{
|
||||
name = PMPrinterGetName(printer);
|
||||
CFRetain(name);
|
||||
data.SetPrinterName(wxCFStringRef(name).AsString());
|
||||
}
|
||||
}
|
||||
|
||||
void wxOSXPrintData::TransferPaperInfoTo( wxPrintData &data )
|
||||
{
|
||||
PMPrinter printer ;
|
||||
PMSessionGetCurrentPrinter( m_macPrintSession, &printer );
|
||||
OSStatus err = noErr ;
|
||||
#if wxOSX_USE_COCOA
|
||||
UpdateToPMState();
|
||||
#endif
|
||||
UInt32 copies ;
|
||||
err = PMGetCopies( m_macPrintSettings , &copies ) ;
|
||||
if ( err == noErr )
|
||||
@@ -344,17 +376,6 @@ bool wxOSXPrintData::TransferTo( wxPrintData &data )
|
||||
if (PMGetCollate(m_macPrintSettings, &collate) == noErr)
|
||||
data.SetCollate(collate);
|
||||
|
||||
CFStringRef name;
|
||||
PMPrinter printer ;
|
||||
PMSessionGetCurrentPrinter( m_macPrintSession, &printer );
|
||||
if (PMPrinterIsDefault(printer))
|
||||
data.SetPrinterName(wxEmptyString);
|
||||
else
|
||||
{
|
||||
name = PMPrinterGetName(printer);
|
||||
CFRetain(name);
|
||||
data.SetPrinterName(wxCFStringRef(name).AsString());
|
||||
}
|
||||
|
||||
PMDuplexMode mode = 0 ;
|
||||
PMGetDuplex( m_macPrintSettings, &mode ) ;
|
||||
@@ -372,6 +393,25 @@ bool wxOSXPrintData::TransferTo( wxPrintData &data )
|
||||
break ;
|
||||
}
|
||||
|
||||
double height, width;
|
||||
PMPaperGetHeight(m_macPaper, &height);
|
||||
PMPaperGetWidth(m_macPaper, &width);
|
||||
|
||||
wxSize sz((int)(width * pt2mm + 0.5 ) ,
|
||||
(int)(height * pt2mm + 0.5 ));
|
||||
data.SetPaperSize(sz);
|
||||
wxPaperSize id = wxThePrintPaperDatabase->GetSize(wxSize(sz.x* 10, sz.y * 10));
|
||||
if (id != wxPAPER_NONE)
|
||||
{
|
||||
data.SetPaperId(id);
|
||||
}
|
||||
}
|
||||
|
||||
void wxOSXPrintData::TransferResolutionTo( wxPrintData &data )
|
||||
{
|
||||
PMPrinter printer ;
|
||||
PMSessionGetCurrentPrinter( m_macPrintSession, &printer );
|
||||
|
||||
/* assume high quality, will change below if we are able to */
|
||||
data.SetQuality(wxPRINT_QUALITY_HIGH);
|
||||
|
||||
@@ -406,19 +446,17 @@ bool wxOSXPrintData::TransferTo( wxPrintData &data )
|
||||
}
|
||||
free(resolutions);
|
||||
}
|
||||
|
||||
double height, width;
|
||||
PMPaperGetHeight(m_macPaper, &height);
|
||||
PMPaperGetWidth(m_macPaper, &width);
|
||||
|
||||
wxSize sz((int)(width * pt2mm + 0.5 ) ,
|
||||
(int)(height * pt2mm + 0.5 ));
|
||||
data.SetPaperSize(sz);
|
||||
wxPaperSize id = wxThePrintPaperDatabase->GetSize(wxSize(sz.x* 10, sz.y * 10));
|
||||
if (id != wxPAPER_NONE)
|
||||
{
|
||||
data.SetPaperId(id);
|
||||
}
|
||||
|
||||
bool wxOSXPrintData::TransferTo( wxPrintData &data )
|
||||
{
|
||||
#if wxOSX_USE_COCOA
|
||||
UpdateToPMState();
|
||||
#endif
|
||||
|
||||
TransferPrinterNameTo(data);
|
||||
TransferPaperInfoTo(data);
|
||||
TransferResolutionTo(data);
|
||||
return true ;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user