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:
@@ -330,14 +330,16 @@ void wxPostScriptPrintPreview::DetermineScaling()
|
|||||||
|
|
||||||
if (paper)
|
if (paper)
|
||||||
{
|
{
|
||||||
wxSize ScreenPixels = wxGetDisplaySize();
|
|
||||||
wxSize ScreenMM = wxGetDisplaySizeMM();
|
|
||||||
|
|
||||||
int resolution = 600; // TODO, this is correct, but get this from wxPSDC somehow
|
int resolution = 600; // TODO, this is correct, but get this from wxPSDC somehow
|
||||||
|
|
||||||
m_previewPrintout->SetPPIScreen( (int) ((ScreenPixels.GetWidth() * 25.4) / ScreenMM.GetWidth()),
|
const wxSize screenPPI = wxGetDisplayPPI();
|
||||||
(int) ((ScreenPixels.GetHeight() * 25.4) / ScreenMM.GetHeight()) );
|
int logPPIScreenX = screenPPI.GetWidth();
|
||||||
m_previewPrintout->SetPPIPrinter( resolution, resolution );
|
int logPPIScreenY = screenPPI.GetHeight();
|
||||||
|
int logPPIPrinterX = resolution;
|
||||||
|
int logPPIPrinterY = resolution;
|
||||||
|
|
||||||
|
m_previewPrintout->SetPPIScreen( logPPIScreenX, logPPIScreenY );
|
||||||
|
m_previewPrintout->SetPPIPrinter( logPPIPrinterX, logPPIPrinterY );
|
||||||
|
|
||||||
wxSize sizeDevUnits(paper->GetSizeDeviceUnits());
|
wxSize sizeDevUnits(paper->GetSizeDeviceUnits());
|
||||||
sizeDevUnits.x = (wxCoord)((float)sizeDevUnits.x * resolution / 72.0);
|
sizeDevUnits.x = (wxCoord)((float)sizeDevUnits.x * resolution / 72.0);
|
||||||
@@ -362,8 +364,8 @@ void wxPostScriptPrintPreview::DetermineScaling()
|
|||||||
m_previewPrintout->SetPaperRectPixels(wxRect(0, 0, m_pageWidth, m_pageHeight));
|
m_previewPrintout->SetPaperRectPixels(wxRect(0, 0, m_pageWidth, m_pageHeight));
|
||||||
|
|
||||||
// At 100%, the page should look about page-size on the screen.
|
// At 100%, the page should look about page-size on the screen.
|
||||||
m_previewScaleX = (float)0.8 * 72.0 / (float)resolution;
|
m_previewScaleX = float(logPPIScreenX) / logPPIPrinterX;
|
||||||
m_previewScaleY = m_previewScaleX;
|
m_previewScaleY = float(logPPIScreenY) / logPPIPrinterY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2308,8 +2308,14 @@ void wxGtkPrintPreview::DetermineScaling()
|
|||||||
|
|
||||||
if (paper)
|
if (paper)
|
||||||
{
|
{
|
||||||
m_previewPrintout->SetPPIScreen(wxGetDisplayPPI());
|
const wxSize screenPPI = wxGetDisplayPPI();
|
||||||
m_previewPrintout->SetPPIPrinter( m_resolution, m_resolution );
|
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)
|
// Get width and height in points (1/72th of an inch)
|
||||||
wxSize sizeDevUnits(paper->GetSizeDeviceUnits());
|
wxSize sizeDevUnits(paper->GetSizeDeviceUnits());
|
||||||
@@ -2336,8 +2342,8 @@ void wxGtkPrintPreview::DetermineScaling()
|
|||||||
m_previewPrintout->SetPaperRectPixels(wxRect(0, 0, m_pageWidth, m_pageHeight));
|
m_previewPrintout->SetPaperRectPixels(wxRect(0, 0, m_pageWidth, m_pageHeight));
|
||||||
|
|
||||||
// At 100%, the page should look about page-size on the screen.
|
// At 100%, the page should look about page-size on the screen.
|
||||||
m_previewScaleX = 0.8 * 72.0 / (double)m_resolution;
|
m_previewScaleX = float(logPPIScreenX) / logPPIPrinterX;
|
||||||
m_previewScaleY = m_previewScaleX;
|
m_previewScaleY = float(logPPIScreenY) / logPPIPrinterY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user