]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dcprint.cpp
do use the font in DoGetTextExtent()
[wxWidgets.git] / src / msw / dcprint.cpp
index 8f77fa7fe8c227ccd9a870659aa59a7d7be8e4e2..4b514b9e321e8556fbaeabc701ee4b3f370ca52e 100644 (file)
@@ -56,7 +56,7 @@
     #define GDI_ERROR ((int)-1)
 #endif
 
-#if defined(__WXUNIVERSAL__) || wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW
+#if defined(__WXUNIVERSAL__) && wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW
     #define wxUSE_PS_PRINTING 1
 #else
     #define wxUSE_PS_PRINTING 0
@@ -193,15 +193,13 @@ bool wxPrinterDC::StartDoc(const wxString& message)
     if (!m_hDC)
         return false;
 
-    int ret = ::StartDoc(GetHdc(), &docinfo);
-
-    if (ret <= 0)
+    if ( ::StartDoc(GetHdc(), &docinfo) <= 0 )
     {
-        DWORD lastError = GetLastError();
-        wxLogDebug(wxT("wxDC::StartDoc failed with error: %ld\n"), lastError);
+        wxLogLastError(wxT("StartDoc"));
+        return false;
     }
 
-    return (ret > 0);
+    return true;
 }
 
 void wxPrinterDC::EndDoc()
@@ -221,6 +219,19 @@ void wxPrinterDC::EndPage()
         ::EndPage((HDC) m_hDC);
 }
 
+
+wxRect wxPrinterDC::GetPaperRect()
+
+{
+    if (!Ok()) return wxRect(0, 0, 0, 0);
+    int w = ::GetDeviceCaps((HDC) m_hDC, PHYSICALWIDTH);
+    int h = ::GetDeviceCaps((HDC) m_hDC, PHYSICALHEIGHT);
+    int x = -::GetDeviceCaps((HDC) m_hDC, PHYSICALOFFSETX);
+    int y = -::GetDeviceCaps((HDC) m_hDC, PHYSICALOFFSETY);
+    return wxRect(x, y, w, h);
+}
+
+
 #if !wxUSE_PS_PRINTING
 
 // Returns default device and port names
@@ -386,7 +397,8 @@ void wxPrinterDC::DoDrawBitmap(const wxBitmap& bmp,
     {
         // no support for StretchDIBits() or an error occurred if we got here
         wxMemoryDC memDC;
-        memDC.SelectObject(bmp);
+
+        memDC.SelectObjectAsSource(bmp);
 
         Blit(x, y, width, height, &memDC, 0, 0, wxCOPY, useMask);