Compute print preview scale using real DPI values in wxGTK.

Replace hardcoded 72 DPI which was "compensated" for with a 0.8 fudge factor
with the values using the real screen DPI in wxGTK and PostScript print
preview classes.

Closes #12777.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66427 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-12-22 13:57:03 +00:00
parent ba67d647e8
commit ac78a90a1a
2 changed files with 20 additions and 12 deletions

View File

@@ -2308,8 +2308,14 @@ void wxGtkPrintPreview::DetermineScaling()
if (paper)
{
m_previewPrintout->SetPPIScreen(wxGetDisplayPPI());
m_previewPrintout->SetPPIPrinter( m_resolution, m_resolution );
const wxSize screenPPI = wxGetDisplayPPI();
int logPPIScreenX = screenPPI.GetWidth();
int logPPIScreenY = screenPPI.GetHeight();
int logPPIPrinterX = m_resolution;
int logPPIPrinterY = m_resolution;
m_previewPrintout->SetPPIScreen( logPPIScreenX, logPPIScreenY );
m_previewPrintout->SetPPIPrinter( logPPIPrinterX, logPPIPrinterY );
// Get width and height in points (1/72th of an inch)
wxSize sizeDevUnits(paper->GetSizeDeviceUnits());
@@ -2336,8 +2342,8 @@ void wxGtkPrintPreview::DetermineScaling()
m_previewPrintout->SetPaperRectPixels(wxRect(0, 0, m_pageWidth, m_pageHeight));
// At 100%, the page should look about page-size on the screen.
m_previewScaleX = 0.8 * 72.0 / (double)m_resolution;
m_previewScaleY = m_previewScaleX;
m_previewScaleX = float(logPPIScreenX) / logPPIPrinterX;
m_previewScaleY = float(logPPIScreenY) / logPPIPrinterY;
}
}