paper size, duplex support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43763 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -33,6 +33,7 @@
|
|||||||
#include "wx/mac/private/print.h"
|
#include "wx/mac/private/print.h"
|
||||||
|
|
||||||
#include "wx/printdlg.h"
|
#include "wx/printdlg.h"
|
||||||
|
#include "wx/paper.h"
|
||||||
#include "wx/mac/printdlg.h"
|
#include "wx/mac/printdlg.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -153,7 +154,26 @@ bool wxMacCarbonPrintData::TransferFrom( const wxPrintData &data )
|
|||||||
PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMBlackAndWhite ) ;
|
PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMBlackAndWhite ) ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// PMDuplexMode not yet accessible via API
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
|
||||||
|
if ( PMSetDuplex!=NULL )
|
||||||
|
{
|
||||||
|
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 ) ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// PMQualityMode not yet accessible via API
|
// PMQualityMode not yet accessible via API
|
||||||
// todo paperSize
|
// todo paperSize
|
||||||
|
|
||||||
@@ -220,16 +240,43 @@ bool wxMacCarbonPrintData::TransferTo( wxPrintData &data )
|
|||||||
if ( err == noErr )
|
if ( err == noErr )
|
||||||
data.SetColour( !(color == kPMBlackAndWhite) ) ;
|
data.SetColour( !(color == kPMBlackAndWhite) ) ;
|
||||||
#endif
|
#endif
|
||||||
// PMDuplexMode not yet accessible via API
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
|
||||||
|
if ( PMGetDuplex!=NULL )
|
||||||
|
{
|
||||||
|
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 ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// PMQualityMode not yet accessible via API
|
// PMQualityMode not yet accessible via API
|
||||||
// todo paperSize
|
|
||||||
|
PMPaper paper ;
|
||||||
|
PMGetPageFormatPaper( m_macPageFormat, &paper );
|
||||||
|
|
||||||
PMRect rPaper;
|
PMRect rPaper;
|
||||||
err = PMGetUnadjustedPaperRect( m_macPageFormat, &rPaper);
|
err = PMGetUnadjustedPaperRect( m_macPageFormat, &rPaper);
|
||||||
if ( err == noErr )
|
if ( err == noErr )
|
||||||
{
|
{
|
||||||
data.SetPaperSize( wxSize (
|
wxSize sz((int)(( rPaper.right - rPaper.left ) * pt2mm + 0.5 ) ,
|
||||||
(int)(( rPaper.right - rPaper.left ) * pt2mm + 0.5 ) ,
|
(int)(( rPaper.bottom - rPaper.top ) * 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 ;
|
return true ;
|
||||||
}
|
}
|
||||||
@@ -247,6 +294,10 @@ void wxMacCarbonPrintData::TransferTo( wxPageSetupData* data )
|
|||||||
OSStatus err = PMGetUnadjustedPaperRect(m_macPageFormat, &rPaper);
|
OSStatus err = PMGetUnadjustedPaperRect(m_macPageFormat, &rPaper);
|
||||||
if ( err == noErr )
|
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 ;
|
PMRect rPage ;
|
||||||
err = PMGetUnadjustedPageRect(m_macPageFormat , &rPage ) ;
|
err = PMGetUnadjustedPageRect(m_macPageFormat , &rPage ) ;
|
||||||
if ( err == noErr )
|
if ( err == noErr )
|
||||||
|
Reference in New Issue
Block a user