fixing PPI bugs in printer dcs and print preview
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -156,6 +156,11 @@ bool wxMacCarbonPrintData::TransferFrom( const wxPrintData &data )
|
|||||||
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
|
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
|
||||||
PMPrinterGetPrinterResolution(printer, tag, &res);
|
PMPrinterGetPrinterResolution(printer, tag, &res);
|
||||||
PMSetResolution((PMPageFormat) m_macPageFormat, &res);
|
PMSetResolution((PMPageFormat) m_macPageFormat, &res);
|
||||||
|
// after setting the new resolution the format has to be updated, otherwise the page rect remains
|
||||||
|
// at the 'old' scaling
|
||||||
|
PMSessionValidatePageFormat((PMPrintSession) m_macPrintSession,
|
||||||
|
(PMPageFormat) m_macPageFormat,
|
||||||
|
kPMDontWantBoolean) ;
|
||||||
|
|
||||||
return true ;
|
return true ;
|
||||||
}
|
}
|
||||||
@@ -527,38 +532,39 @@ void wxMacPrintPreview::DetermineScaling(void)
|
|||||||
int screenWidth , screenHeight ;
|
int screenWidth , screenHeight ;
|
||||||
wxDisplaySize( &screenWidth , &screenHeight ) ;
|
wxDisplaySize( &screenWidth , &screenHeight ) ;
|
||||||
|
|
||||||
m_previewPrintout->SetPPIScreen( 72 , 72 ) ;
|
wxSize ppiScreen( 72 , 72 ) ;
|
||||||
m_previewPrintout->SetPPIPrinter( 72 , 72 ) ;
|
wxSize ppiPrinter( 72 , 72 ) ;
|
||||||
m_previewPrintout->SetPageSizeMM( (int) (8.0 * 25.6), (int) (11.0 * 25.6) );
|
|
||||||
m_previewPrintout->SetPageSizePixels( 8 * 72 , 11 * 72 ) ;
|
m_previewPrintout->SetPPIScreen( ppiScreen.x , ppiScreen.y ) ;
|
||||||
m_pageWidth = 8 * 72 ;
|
|
||||||
m_pageHeight = 11 * 72 ;
|
int x , y ;
|
||||||
m_previewScale = 1 ;
|
wxCoord ww, hh;
|
||||||
|
|
||||||
// Get a device context for the currently selected printer
|
// Get a device context for the currently selected printer
|
||||||
wxPrinterDC printerDC(m_printDialogData.GetPrintData());
|
wxPrinterDC printerDC(m_printDialogData.GetPrintData());
|
||||||
if (printerDC.Ok())
|
if (printerDC.Ok())
|
||||||
{
|
{
|
||||||
int x , y ;
|
|
||||||
wxCoord ww, hh;
|
|
||||||
printerDC.GetSizeMM(&ww, &hh);
|
printerDC.GetSizeMM(&ww, &hh);
|
||||||
printerDC.GetSize( &x , &y ) ;
|
printerDC.GetSize( &x , &y ) ;
|
||||||
m_previewPrintout->SetPageSizeMM((int)ww, (int)hh);
|
ppiPrinter = printerDC.GetPPI() ;
|
||||||
m_previewPrintout->SetPageSizePixels( x , y) ;
|
|
||||||
m_pageWidth = x ;
|
|
||||||
m_pageHeight = y ;
|
|
||||||
m_isOk = true ;
|
m_isOk = true ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// use some defaults
|
||||||
|
x = 8 * 72 ;
|
||||||
|
y = 11 * 72 ;
|
||||||
|
ww = x * 25.4 / ppiPrinter.x ;
|
||||||
|
hh = y * 25.4 / ppiPrinter.y ;
|
||||||
m_isOk = false ;
|
m_isOk = false ;
|
||||||
}
|
}
|
||||||
|
m_previewPrintout->SetPageSizeMM((int)ww, (int)hh);
|
||||||
|
m_previewPrintout->SetPageSizePixels( x , y) ;
|
||||||
|
m_pageWidth = x ;
|
||||||
|
m_pageHeight = y ;
|
||||||
|
m_previewPrintout->SetPPIPrinter( ppiPrinter.x , ppiPrinter.y ) ;
|
||||||
|
|
||||||
// At 100%, the page should look about page-size on the screen.
|
m_previewScale = (float)((float)ppiScreen.x/(float)ppiPrinter.y);
|
||||||
// m_previewScale = (float)((float)screenWidth/(float)printerWidth);
|
|
||||||
// m_previewScale = m_previewScale * (float)((float)screenXRes/(float)printerXRes);
|
|
||||||
|
|
||||||
m_previewScale = 1 ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user