]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/dcprint.cpp
Performance optimization
[wxWidgets.git] / src / mac / carbon / dcprint.cpp
index 00d49e53eb5b3fc48a6151311e8d0c486474b224..aacf643f193c514851d62fd7ce12f5e2dea9791d 100644 (file)
@@ -84,13 +84,30 @@ wxMacCarbonPrinterDC::wxMacCarbonPrinterDC( wxPrintData* data )
     m_maxY = wxCoord(rPage.bottom - rPage.top);
 
     PMResolution res;
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
-    PMPrinter printer;
-    PMSessionGetCurrentPrinter(native->m_macPrintSession, &printer);
-    PMPrinterGetOutputResolution( printer, native->m_macPrintSettings, &res) ;
-#else
-    m_err = PMGetResolution((PMPageFormat) (native->m_macPageFormat), &res);
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 
+    if ( PMPrinterGetOutputResolution != NULL )
+    {
+        PMPrinter printer;
+        m_err = PMSessionGetCurrentPrinter(native->m_macPrintSession, &printer);
+        if ( m_err == noErr )
+        {
+            m_err = PMPrinterGetOutputResolution( printer, native->m_macPrintSettings, &res) ;
+            if ( m_err == -9589 /* kPMKeyNotFound */ )
+            {
+                m_err = noErr ;
+                res.hRes = res.vRes = 300;
+            }
+        }
+    }
+    else
 #endif
+    {
+#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 
+        m_err = PMGetResolution((PMPageFormat) (native->m_macPageFormat), &res);
+#endif
+    }
+    
     m_ppi = wxSize(int(res.hRes), int(res.vRes));
 }
 
@@ -132,7 +149,14 @@ bool wxMacCarbonPrinterDC::StartDoc(  wxPrinterDC* dc , const wxString& WXUNUSED
         PMPrinter printer;
         m_err = PMSessionGetCurrentPrinter(native->m_macPrintSession, &printer);
         if ( m_err == noErr )
+        {
             m_err = PMPrinterGetOutputResolution( printer, native->m_macPrintSettings, &res) ;
+            if ( m_err == -9589 /* kPMKeyNotFound */ )
+            {
+                m_err = noErr ;
+                res.hRes = res.vRes = 300;
+            }
+        }
     }
     else
 #endif
@@ -277,7 +301,7 @@ wxPrinterDCImpl::~wxPrinterDCImpl()
 
 bool wxPrinterDCImpl::StartDoc( const wxString& message )
 {
-    wxASSERT_MSG( Ok() , wxT("Called wxPrinterDC::StartDoc from an invalid object") ) ;
+    wxASSERT_MSG( IsOk() , wxT("Called wxPrinterDC::StartDoc from an invalid object") ) ;
 
     if ( !m_ok )
         return false ;