]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/cmndata.cpp
Printing update for Pango (GTK2 and X11-Unicode).
[wxWidgets.git] / src / common / cmndata.cpp
index 562b1e0814a6b226d4f61c73a708dde3b4028d4e..14833261548c8a700b10765ae4978f9ab8a87d13 100644 (file)
         #include <commdlg.h>
     #endif // Win16
 
-    #ifdef __WXWINE__
-        #include <cderr.h>
-        #include <commdlg.h>
-    #endif
-
     #if defined(__WATCOMC__) || defined(__SC__) || defined(__SALFORDC__)
         #include <windowsx.h>
         #include <commdlg.h>
@@ -195,37 +190,38 @@ wxPrintData::wxPrintData()
 #if TARGET_CARBON
     m_macPageFormat = kPMNoPageFormat;
     m_macPrintSettings = kPMNoPrintSettings;
+    m_macPrintSession = kPMNoReference ;
 
   #if PM_USE_SESSION_APIS
-    PMPrintSession macPrintSession = kPMNoReference;
     OSStatus       err;
+    
+       err = PMCreateSession((PMPrintSession *)&m_macPrintSession) ;
 
-    err = ::UMAPrOpen(&macPrintSession) ;
     if ( err == noErr )
-    {
+    {  
         err = PMCreatePageFormat((PMPageFormat *)&m_macPageFormat);
-
+        
         //  Note that PMPageFormat is not session-specific, but calling
         //  PMSessionDefaultPageFormat assigns values specific to the printer
         //  associated with the current printing session.
         if ((err == noErr) && (m_macPageFormat != kPMNoPageFormat))
         {
-            err = PMSessionDefaultPageFormat((PMPrintSession)macPrintSession,
+            err = PMSessionDefaultPageFormat((PMPrintSession)m_macPrintSession,
                                              (PMPageFormat)m_macPageFormat);
         }
-
+        
         err = PMCreatePrintSettings((PMPrintSettings *)&m_macPrintSettings);
-
+        
         //  Note that PMPrintSettings is not session-specific, but calling
         //  PMSessionDefaultPrintSettings assigns values specific to the printer
         //  associated with the current printing session.
         if ((err == noErr) && (m_macPrintSettings != kPMNoPrintSettings))
         {
-            err = PMSessionDefaultPrintSettings((PMPrintSession)macPrintSession,
+            err = PMSessionDefaultPrintSettings((PMPrintSession)m_macPrintSession,
                                                 (PMPrintSettings)m_macPrintSettings);
         }
     }
-    ::UMAPrClose(&macPrintSession) ;
+
   #endif
 #else
     m_macPrintSettings = (THPrint) NewHandleClear( sizeof( TPrint ) );
@@ -292,6 +288,7 @@ wxPrintData::wxPrintData(const wxPrintData& printData)
 #if TARGET_CARBON
     m_macPageFormat    = kPMNoPageFormat;
     m_macPrintSettings = kPMNoPrintSettings;
+    m_macPrintSession = kPMNoReference ;
 #else
     m_macPrintSettings = NULL;
 #endif
@@ -329,7 +326,16 @@ wxPrintData::~wxPrintData()
   #endif
         m_macPrintSettings = kPMNoPrintSettings;
     }
-
+    
+    if ( m_macPrintSession != kPMNoReference )
+    {
+  #if PM_USE_SESSION_APIS
+        (void)PMRelease(m_macPrintSession);
+  #else
+        (void)PMDisposePrintSession(m_macPrintSession);
+  #endif
+        m_macPrintSession = kPMNoReference;
+    }
 #else
     wxASSERT( m_macPrintSettings );
     // we should perhaps delete
@@ -474,10 +480,7 @@ void wxPrintData::ConvertToNative()
 
         //// Orientation
 
-#ifndef __WXWINE__
         devMode->dmOrientation = m_printOrientation;
-#endif
-        devMode->dmFields = DM_ORIENTATION;
 
         //// Collation
 
@@ -509,7 +512,6 @@ void wxPrintData::ConvertToNative()
 
         devMode->dmFields |= DM_COLOR;
 
-#ifndef __WXWINE__
         //// Paper size
 
         if (m_paperId == wxPAPER_NONE)
@@ -533,7 +535,6 @@ void wxPrintData::ConvertToNative()
                 }
             }
         }
-#endif
 
         //// Duplex
 
@@ -602,12 +603,10 @@ void wxPrintData::ConvertFromNative()
     {
         LPDEVMODE devMode = (LPDEVMODE)GlobalLock(hDevMode);
 
-#ifndef __WXWINE__
         //// Orientation
 
         if (devMode->dmFields & DM_ORIENTATION)
             m_printOrientation = devMode->dmOrientation;
-#endif
 
         //// Collation
 
@@ -647,7 +646,6 @@ void wxPrintData::ConvertFromNative()
         else
             m_colour = TRUE;
 
-#ifndef __WXWINE__
         //// Paper size
 
         // We don't know size of user defined paper and some buggy drivers
@@ -701,7 +699,6 @@ void wxPrintData::ConvertFromNative()
             m_paperSize.y = 0;
             m_paperId = wxPAPER_NONE;
         }
-#endif
 
         //// Duplex
 
@@ -807,6 +804,26 @@ void wxPrintData::operator=(const wxPrintData& data)
 {
 #ifdef __WXMAC__
 #if TARGET_CARBON
+       if ( m_macPrintSettings != kPMNoPrintSettings )
+       {
+               PMRelease( m_macPrintSettings ) ;
+               m_macPrintSettings = kPMNoPrintSettings ;
+       }
+       if ( data.m_macPrintSettings != kPMNoPrintSettings )
+       {
+               m_macPrintSettings = data.m_macPrintSettings ;
+               PMRetain( m_macPrintSettings ) ;
+       }
+       if ( m_macPageFormat != kPMNoPageFormat )
+       {
+               PMRelease( m_macPageFormat ) ;
+               m_macPageFormat = kPMNoPageFormat ;
+       }
+       if ( data.m_macPageFormat != kPMNoPageFormat )
+       {
+               m_macPageFormat = data.m_macPageFormat ;
+               PMRetain( m_macPageFormat ) ;
+       }
 #else
     m_macPrintSettings = data.m_macPrintSettings;
     HandToHand( (Handle*) &m_macPrintSettings );
@@ -1445,6 +1462,20 @@ void wxPageSetupDialogData::ConvertFromNative()
     m_printData.ConvertFromNative ();
 
 #if TARGET_CARBON
+       PMRect rPaper;
+       
+       OSStatus err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper);
+    if ( err == noErr )
+    {
+           m_paperSize.x = (int)(((double) rPaper.right - rPaper.left ) * pt2mm);
+           m_paperSize.y = (int)(((double) rPaper.bottom - rPaper.top ) * pt2mm);
+
+           m_minMarginTopLeft.x = (int)(((double) - rPaper.left ) * pt2mm);
+           m_minMarginTopLeft.y = (int)(((double) - rPaper.top ) * pt2mm);
+
+//         m_minMarginBottomRight.x = ((double) rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.right ) * pt2mm;
+//         m_minMarginBottomRight.y = ((double)(**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.bottom ) * pt2mm;
+    }
 #else
     m_paperSize.x = ((double) (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ) * pt2mm;
     m_paperSize.y = ((double) (**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPaper.top ) * pt2mm;