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:
Stefan Csomor
2006-06-30 08:45:03 +00:00
parent db49000e6c
commit aee237983f

View File

@@ -156,6 +156,11 @@ bool wxMacCarbonPrintData::TransferFrom( const wxPrintData &data )
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
PMPrinterGetPrinterResolution(printer, tag, &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 ;
}
@@ -527,38 +532,39 @@ void wxMacPrintPreview::DetermineScaling(void)
int screenWidth , screenHeight ;
wxDisplaySize( &screenWidth , &screenHeight ) ;
m_previewPrintout->SetPPIScreen( 72 , 72 ) ;
m_previewPrintout->SetPPIPrinter( 72 , 72 ) ;
m_previewPrintout->SetPageSizeMM( (int) (8.0 * 25.6), (int) (11.0 * 25.6) );
m_previewPrintout->SetPageSizePixels( 8 * 72 , 11 * 72 ) ;
m_pageWidth = 8 * 72 ;
m_pageHeight = 11 * 72 ;
m_previewScale = 1 ;
wxSize ppiScreen( 72 , 72 ) ;
wxSize ppiPrinter( 72 , 72 ) ;
m_previewPrintout->SetPPIScreen( ppiScreen.x , ppiScreen.y ) ;
int x , y ;
wxCoord ww, hh;
// Get a device context for the currently selected printer
wxPrinterDC printerDC(m_printDialogData.GetPrintData());
if (printerDC.Ok())
{
int x , y ;
wxCoord ww, hh;
printerDC.GetSizeMM(&ww, &hh);
printerDC.GetSize( &x , &y ) ;
m_previewPrintout->SetPageSizeMM((int)ww, (int)hh);
m_previewPrintout->SetPageSizePixels( x , y) ;
m_pageWidth = x ;
m_pageHeight = y ;
ppiPrinter = printerDC.GetPPI() ;
m_isOk = true ;
}
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_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)screenWidth/(float)printerWidth);
// m_previewScale = m_previewScale * (float)((float)screenXRes/(float)printerXRes);
m_previewScale = 1 ;
m_previewScale = (float)((float)ppiScreen.x/(float)ppiPrinter.y);
}
#endif