diff --git a/include/wx/msw/dcprint.h b/include/wx/msw/dcprint.h index adbfb0c632..0b9a9af7fa 100644 --- a/include/wx/msw/dcprint.h +++ b/include/wx/msw/dcprint.h @@ -36,6 +36,13 @@ public: virtual wxRect GetPaperRect() const wxOVERRIDE; + virtual wxSize FromDIP(const wxSize& sz) const wxOVERRIDE + { + return sz; + } + + void SetFont(const wxFont& font) wxOVERRIDE; + protected: virtual void DoDrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask = false) wxOVERRIDE; diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index 96f4ef857c..3089d00202 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -45,6 +45,7 @@ #include "wx/print.h" #include "wx/dcprint.h" #include "wx/artprov.h" +#include "wx/display.h" #include #include @@ -638,7 +639,7 @@ bool wxPrintout::SetUp(wxDC& dc) { wxCHECK_MSG( dc.IsOk(), false, "should have a valid DC to set up" ); - SetPPIScreen(wxGetDisplayPPI()); + SetPPIScreen(wxDisplay::GetStdPPI()); // We need to know printer PPI. In most ports, this can be retrieved from // the printer DC, but in others it is computed (probably for legacy @@ -1613,7 +1614,7 @@ void wxPreviewControlBar::CreateButtons() }; int n = WXSIZEOF(choices); - m_zoomControl = new wxChoice( this, wxID_PREVIEW_ZOOM, wxDefaultPosition, wxSize(70,wxDefaultCoord), n, choices, 0 ); + m_zoomControl = new wxChoice( this, wxID_PREVIEW_ZOOM, wxDefaultPosition, wxSize(FromDIP(70),wxDefaultCoord), n, choices, 0 ); sizer.Add(m_zoomControl); SetZoomControl(m_printPreview->GetZoom()); diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp index 1a8af53d0d..294e7ebe84 100644 --- a/src/msw/dcprint.cpp +++ b/src/msw/dcprint.cpp @@ -41,6 +41,7 @@ #endif #include "wx/printdlg.h" +#include "wx/display.h" #include "wx/msw/printdlg.h" // mingw32 defines GDI_ERROR incorrectly @@ -230,6 +231,13 @@ wxRect wxPrinterDCImpl::GetPaperRect() const return wxRect(x, y, w, h); } +void wxPrinterDCImpl::SetFont(const wxFont& font) +{ + wxFont scaledFont = font; + if ( scaledFont.IsOk() ) + scaledFont.WXAdjustToPPI(wxDisplay::GetStdPPI()); + wxMSWDCImpl::SetFont(scaledFont); +} #if !wxUSE_PS_PRINTING diff --git a/src/msw/enhmeta.cpp b/src/msw/enhmeta.cpp index aed7dbaad5..62e9105e35 100644 --- a/src/msw/enhmeta.cpp +++ b/src/msw/enhmeta.cpp @@ -33,6 +33,7 @@ #include "wx/metafile.h" #include "wx/clipbrd.h" +#include "wx/display.h" #include "wx/msw/private.h" @@ -223,6 +224,19 @@ public: const wxString& description ); virtual ~wxEnhMetaFileDCImpl(); + wxSize FromDIP(const wxSize& sz) const wxOVERRIDE + { + return sz; + } + + void SetFont(const wxFont& font) wxOVERRIDE + { + wxFont scaledFont = font; + if (scaledFont.IsOk()) + scaledFont.WXAdjustToPPI(wxDisplay::GetStdPPI()); + wxMSWDCImpl::SetFont(scaledFont); + } + // obtain a pointer to the new metafile (caller should delete it) wxEnhMetaFile *Close(); diff --git a/src/msw/graphics.cpp b/src/msw/graphics.cpp index c03fca4a1a..0d67bcf7a6 100644 --- a/src/msw/graphics.cpp +++ b/src/msw/graphics.cpp @@ -2544,12 +2544,10 @@ wxGDIPlusPrintingContext::wxGDIPlusPrintingContext( wxGraphicsRenderer* renderer void wxGDIPlusPrintingContext::GetDPI(wxDouble* dpiX, wxDouble* dpiY) const { - // override to use same scaling as wxWindowsPrintPreview::DetermineScaling - const wxSize dpi = wxGetDPIofHDC(ScreenHDC()); if ( dpiX ) - *dpiX = dpi.x; + *dpiX = 96.0; if ( dpiY ) - *dpiY = dpi.y; + *dpiY = 96.0; } //----------------------------------------------------------------------------- diff --git a/src/msw/printwin.cpp b/src/msw/printwin.cpp index 051b1f93a1..cf644d3a8f 100644 --- a/src/msw/printwin.cpp +++ b/src/msw/printwin.cpp @@ -46,6 +46,7 @@ #include "wx/msw/private.h" #include "wx/msw/dcprint.h" #include "wx/msw/enhmeta.h" +#include "wx/display.h" #include @@ -310,7 +311,7 @@ bool wxWindowsPrintPreview::Print(bool interactive) void wxWindowsPrintPreview::DetermineScaling() { - const wxSize logPPIScreen = wxGetDPIofHDC(ScreenHDC()); + const wxSize logPPIScreen = wxDisplay::GetStdPPI(); m_previewPrintout->SetPPIScreen(logPPIScreen); // Get a device context for the currently selected printer diff --git a/src/osx/core/printmac.cpp b/src/osx/core/printmac.cpp index 235bea2b57..c69ad4d0cc 100644 --- a/src/osx/core/printmac.cpp +++ b/src/osx/core/printmac.cpp @@ -30,6 +30,7 @@ #include "wx/printdlg.h" #include "wx/paper.h" +#include "wx/display.h" #include "wx/osx/printdlg.h" #include @@ -746,10 +747,7 @@ bool wxMacPrintPreview::Print(bool interactive) void wxMacPrintPreview::DetermineScaling() { - int screenWidth , screenHeight ; - wxDisplaySize( &screenWidth , &screenHeight ) ; - - wxSize ppiScreen = wxGetDisplayPPI(); + wxSize ppiScreen = wxDisplay::GetStdPPI(); wxSize ppiPrinter( 72 , 72 ) ; m_previewPrintout->SetPPIScreen( ppiScreen.x , ppiScreen.y ) ;