X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f415cab9ef1433413a1a68a982ee9b17c5a8deda..e319bb30f7e88242f56144fcc279b57047566a6b:/src/common/prntbase.cpp diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index 3b7a963959..43d3a361d2 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -27,6 +27,7 @@ #include "wx/utils.h" #include "wx/dc.h" #include "wx/app.h" + #include "wx/math.h" #include "wx/msgdlg.h" #include "wx/layout.h" #include "wx/choice.h" @@ -617,10 +618,10 @@ void wxPrintout::FitThisSizeToPageMargins(const wxSize& imageSize, const wxPageS GetPageSizeMM(&mw, &mh); float mmToDeviceX = float(pw) / mw; float mmToDeviceY = float(ph) / mh; - wxRect pageMarginsRect(paperRect.x + wxCoord(mmToDeviceX * topLeft.x), - paperRect.y + wxCoord(mmToDeviceY * topLeft.y), - paperRect.width - wxCoord(mmToDeviceX * (topLeft.x + bottomRight.x)), - paperRect.height - wxCoord(mmToDeviceY * (topLeft.y + bottomRight.y))); + wxRect pageMarginsRect(paperRect.x + wxRound(mmToDeviceX * topLeft.x), + paperRect.y + wxRound(mmToDeviceY * topLeft.y), + paperRect.width - wxRound(mmToDeviceX * (topLeft.x + bottomRight.x)), + paperRect.height - wxRound(mmToDeviceY * (topLeft.y + bottomRight.y))); wxCoord w, h; m_printoutDC->GetSize(&w, &h); float scaleX = (float(pageMarginsRect.width) * w) / (float(pw) * imageSize.x); @@ -708,10 +709,10 @@ wxRect wxPrintout::GetLogicalPaperRect() const // This DC doesn't match the printed page, so we have to scale. float scaleX = float(w) / pw; float scaleY = float(h) / ph; - return wxRect(m_printoutDC->DeviceToLogicalX(wxCoord(paperRect.x * scaleX)), - m_printoutDC->DeviceToLogicalY(wxCoord(paperRect.y * scaleY)), - m_printoutDC->DeviceToLogicalXRel(wxCoord(paperRect.width * scaleX)), - m_printoutDC->DeviceToLogicalYRel(wxCoord(paperRect.height * scaleY))); + return wxRect(m_printoutDC->DeviceToLogicalX(wxRound(paperRect.x * scaleX)), + m_printoutDC->DeviceToLogicalY(wxRound(paperRect.y * scaleY)), + m_printoutDC->DeviceToLogicalXRel(wxRound(paperRect.width * scaleX)), + m_printoutDC->DeviceToLogicalYRel(wxRound(paperRect.height * scaleY))); } wxRect wxPrintout::GetLogicalPageRect() const @@ -740,10 +741,10 @@ wxRect wxPrintout::GetLogicalPageMarginsRect(const wxPageSetupDialogData& pageSe GetPageSizeMM(&mw, &mh); float mmToDeviceX = float(pw) / mw; float mmToDeviceY = float(ph) / mh; - wxRect pageMarginsRect(paperRect.x + wxCoord(mmToDeviceX * topLeft.x), - paperRect.y + wxCoord(mmToDeviceY * topLeft.y), - paperRect.width - wxCoord(mmToDeviceX * (topLeft.x + bottomRight.x)), - paperRect.height - wxCoord(mmToDeviceY * (topLeft.y + bottomRight.y))); + wxRect pageMarginsRect(paperRect.x + wxRound(mmToDeviceX * topLeft.x), + paperRect.y + wxRound(mmToDeviceY * topLeft.y), + paperRect.width - wxRound(mmToDeviceX * (topLeft.x + bottomRight.x)), + paperRect.height - wxRound(mmToDeviceY * (topLeft.y + bottomRight.y))); wxCoord w, h; m_printoutDC->GetSize(&w, &h); if (w == pw && h == ph) { @@ -756,10 +757,10 @@ wxRect wxPrintout::GetLogicalPageMarginsRect(const wxPageSetupDialogData& pageSe // This DC doesn't match the printed page, so we have to scale. float scaleX = float(w) / pw; float scaleY = float(h) / ph; - return wxRect(m_printoutDC->DeviceToLogicalX(wxCoord(pageMarginsRect.x * scaleX)), - m_printoutDC->DeviceToLogicalY(wxCoord(pageMarginsRect.y * scaleY)), - m_printoutDC->DeviceToLogicalXRel(wxCoord(pageMarginsRect.width * scaleX)), - m_printoutDC->DeviceToLogicalYRel(wxCoord(pageMarginsRect.height * scaleY))); + return wxRect(m_printoutDC->DeviceToLogicalX(wxRound(pageMarginsRect.x * scaleX)), + m_printoutDC->DeviceToLogicalY(wxRound(pageMarginsRect.y * scaleY)), + m_printoutDC->DeviceToLogicalXRel(wxRound(pageMarginsRect.width * scaleX)), + m_printoutDC->DeviceToLogicalYRel(wxRound(pageMarginsRect.height * scaleY))); } void wxPrintout::SetLogicalOrigin(wxCoord x, wxCoord y) @@ -807,6 +808,8 @@ wxScrolledWindow(parent, wxID_ANY, pos, size, style | wxFULL_REPAINT_ON_RESIZE, // The app workspace colour is always white, but we should have // a contrast with the page. wxSystemColour colourIndex = wxSYS_COLOUR_3DDKSHADOW; +#elif defined(__WXGTK__) + wxSystemColour colourIndex = wxSYS_COLOUR_BTNFACE; #else wxSystemColour colourIndex = wxSYS_COLOUR_APPWORKSPACE; #endif @@ -844,6 +847,8 @@ void wxPreviewCanvas::OnSysColourChanged(wxSysColourChangedEvent& event) // The app workspace colour is always white, but we should have // a contrast with the page. wxSystemColour colourIndex = wxSYS_COLOUR_3DDKSHADOW; +#elif defined(__WXGTK__) + wxSystemColour colourIndex = wxSYS_COLOUR_BTNFACE; #else wxSystemColour colourIndex = wxSYS_COLOUR_APPWORKSPACE; #endif