X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f415cab9ef1433413a1a68a982ee9b17c5a8deda..60b0c3b4c64a768bedb48b00477b7f6290d9fe23:/src/mac/carbon/printmac.cpp diff --git a/src/mac/carbon/printmac.cpp b/src/mac/carbon/printmac.cpp index 6df266562e..7d35f7a8e5 100644 --- a/src/mac/carbon/printmac.cpp +++ b/src/mac/carbon/printmac.cpp @@ -33,6 +33,7 @@ #include "wx/mac/private/print.h" #include "wx/printdlg.h" +#include "wx/paper.h" #include "wx/mac/printdlg.h" #include @@ -130,8 +131,12 @@ bool wxMacCarbonPrintData::TransferFrom( const wxPrintData &data ) { ValidateOrCreate() ; PMSetCopies( (PMPrintSettings) m_macPrintSettings , data.GetNoCopies() , false ) ; - PMSetOrientation( (PMPageFormat) m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ? - kPMLandscape : kPMPortrait , false ) ; + if ( data.IsOrientationReversed() ) + PMSetOrientation( (PMPageFormat) m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ? + kPMReverseLandscape : kPMReversePortrait , false ) ; + else + PMSetOrientation( (PMPageFormat) m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ? + kPMLandscape : kPMPortrait , false ) ; // collate cannot be set #if 0 // not yet tested if ( !m_printerName.empty() ) @@ -149,7 +154,22 @@ bool wxMacCarbonPrintData::TransferFrom( const wxPrintData &data ) PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMBlackAndWhite ) ; #endif - // PMDuplexMode not yet accessible via API + PMDuplexMode mode = 0 ; + switch( data.GetDuplex() ) + { + case wxDUPLEX_HORIZONTAL : + mode = kPMDuplexNoTumble ; + break ; + case wxDUPLEX_VERTICAL : + mode = kPMDuplexTumble ; + break ; + case wxDUPLEX_SIMPLEX : + default : + mode = kPMDuplexNone ; + break ; + } + PMSetDuplex( (PMPrintSettings) m_macPrintSettings, mode ) ; + // PMQualityMode not yet accessible via API // todo paperSize @@ -188,9 +208,15 @@ bool wxMacCarbonPrintData::TransferTo( wxPrintData &data ) if ( err == noErr ) { if ( orientation == kPMPortrait || orientation == kPMReversePortrait ) + { data.SetOrientation( wxPORTRAIT ); + data.SetOrientationReversed( orientation == kPMReversePortrait ); + } else + { data.SetOrientation( wxLANDSCAPE ); + data.SetOrientationReversed( orientation == kPMReverseLandscape ); + } } // collate cannot be set @@ -210,21 +236,43 @@ bool wxMacCarbonPrintData::TransferTo( wxPrintData &data ) if ( err == noErr ) data.SetColour( !(color == kPMBlackAndWhite) ) ; #endif - // PMDuplexMode not yet accessible via API + PMDuplexMode mode = 0 ; + PMGetDuplex( (PMPrintSettings) m_macPrintSettings, &mode ) ; + switch( mode ) + { + case kPMDuplexNoTumble : + data.SetDuplex(wxDUPLEX_HORIZONTAL); + break ; + case kPMDuplexTumble : + data.SetDuplex(wxDUPLEX_VERTICAL); + break ; + case kPMDuplexNone : + default : + data.SetDuplex(wxDUPLEX_SIMPLEX); + break ; + } // PMQualityMode not yet accessible via API - // todo paperSize + + PMPaper paper ; + PMGetPageFormatPaper( m_macPageFormat, &paper ); + PMRect rPaper; err = PMGetUnadjustedPaperRect( m_macPageFormat, &rPaper); if ( err == noErr ) { - data.SetPaperSize( wxSize ( - (int)(( rPaper.right - rPaper.left ) * pt2mm + 0.5 ) , - (int)(( rPaper.bottom - rPaper.top ) * pt2mm + 0.5 ) ) ); + wxSize sz((int)(( rPaper.right - rPaper.left ) * pt2mm + 0.5 ) , + (int)(( rPaper.bottom - rPaper.top ) * pt2mm + 0.5 )); + data.SetPaperSize(sz); + wxPaperSize id = wxThePrintPaperDatabase->GetSize(wxSize(sz.x* 10, sz.y * 10)); + if (id != wxPAPER_NONE) + { + data.SetPaperId(id); + } } return true ; } -void wxMacCarbonPrintData::TransferFrom( wxPageSetupData *data ) +void wxMacCarbonPrintData::TransferFrom( wxPageSetupData *WXUNUSED(data) ) { // should we setup the page rect here ? // since MacOS sometimes has two same paper rects with different @@ -237,6 +285,10 @@ void wxMacCarbonPrintData::TransferTo( wxPageSetupData* data ) OSStatus err = PMGetUnadjustedPaperRect(m_macPageFormat, &rPaper); if ( err == noErr ) { + wxSize sz((int)(( rPaper.right - rPaper.left ) * pt2mm + 0.5 ) , + (int)(( rPaper.bottom - rPaper.top ) * pt2mm + 0.5 )); + data->SetPaperSize(sz); + PMRect rPage ; err = PMGetUnadjustedPageRect(m_macPageFormat , &rPage ) ; if ( err == noErr ) @@ -448,19 +500,7 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt) } else { -#if TARGET_CARBON - if ( UMAGetSystemVersion() >= 0x1000 ) -#endif - { -#if !wxMAC_USE_CORE_GRAPHICS - GrafPtr thePort ; - GetPort( &thePort ) ; -#endif - wxSafeYield(win,true); -#if !wxMAC_USE_CORE_GRAPHICS - SetPort( thePort ) ; -#endif - } + wxSafeYield(win,true); dc->StartPage(); keepGoing = printout->OnPrintPage(pn); dc->EndPage(); @@ -501,7 +541,7 @@ wxDC* wxMacPrinter::PrintDialog(wxWindow *parent) return dc; } -bool wxMacPrinter::Setup(wxWindow *parent) +bool wxMacPrinter::Setup(wxWindow *WXUNUSED(parent)) { #if 0 wxPrintDialog dialog(parent, & m_printDialogData);