]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/dcprint.cpp
fix for bug reported by Robert and Julian, probably causes other problems
[wxWidgets.git] / src / mac / dcprint.cpp
index 4a7c007ecaeef68bb76d937bfc435f33f4184119..1f36616c8f394c3fabf9e8e56269c00b85d2e8bb 100644 (file)
 #include "wx/msgdlg.h"
 #include <math.h>
 #include "wx/mac/uma.h"
 #include "wx/msgdlg.h"
 #include <math.h>
 #include "wx/mac/uma.h"
+#ifndef __DARWIN__
+#include "Printing.h"
+#endif
+
+#if defined(TARGET_CARBON) && !defined(__DARWIN__)
+#  if PM_USE_SESSION_APIS
+#    include <PMCore.h>
+#  endif
+#  include <PMApplication.h>
+#endif
 
 #if !USE_SHARED_LIBRARY
 IMPLEMENT_CLASS(wxPrinterDC, wxDC)
 
 #if !USE_SHARED_LIBRARY
 IMPLEMENT_CLASS(wxPrinterDC, wxDC)
@@ -43,77 +53,77 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
        m_printData.ConvertToNative() ;
 
 #if TARGET_CARBON && PM_USE_SESSION_APIS
        m_printData.ConvertToNative() ;
 
 #if TARGET_CARBON && PM_USE_SESSION_APIS
-       err = UMAPrOpen((PMPrintSession *)&m_macPrintSession) ;
-       if ( err != noErr || m_macPrintSession == kPMNoData )
+       err = UMAPrOpen(&m_macPrintSessionPort) ;
+       if ( err != noErr || m_macPrintSessionPort == kPMNoData )
 #else
 #else
-       err = UMAPrOpen() ;
+       err = UMAPrOpen(NULL) ;
        if ( err != noErr )
 #endif
        {
        if ( err != noErr )
 #endif
        {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
 #if TARGET_CARBON && PM_USE_SESSION_APIS
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
 #if TARGET_CARBON && PM_USE_SESSION_APIS
-               UMAPrClose((PMPrintSession *)&m_macPrintSession) ;
+               UMAPrClose(&m_macPrintSessionPort) ;
 #else
 #else
-               UMAPrClose() ;
+               UMAPrClose(NULL) ;
 #endif
                m_ok = FALSE;
                return;
        }
        
 #if !TARGET_CARBON
 #endif
                m_ok = FALSE;
                return;
        }
        
 #if !TARGET_CARBON
-       if ( ::PrValidate( (THPrint) m_printData.m_macPrintInfo ) )
+       if ( ::PrValidate( (THPrint) m_printData.m_macPrintSettings ) )
        {
        {
-               ::PrStlDialog( (THPrint) m_printData.m_macPrintInfo ) ;
+               ::PrStlDialog( (THPrint) m_printData.m_macPrintSettings ) ;
                // the driver has changed in the mean time, should we pop up a page setup dialog ?
        }
        err = PrError() ;
        if ( err != noErr )
        {
                // the driver has changed in the mean time, should we pop up a page setup dialog ?
        }
        err = PrError() ;
        if ( err != noErr )
        {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
-               UMAPrClose() ;
+               UMAPrClose(NULL) ;
                m_ok = FALSE;
                return;
        }
        ::GetPort( &macPrintFormerPort ) ;
                m_ok = FALSE;
                return;
        }
        ::GetPort( &macPrintFormerPort ) ;
-       m_macPrintPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintInfo , NULL , NULL ) ;
+       m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ;
        err = PrError() ;
        if ( err )
        {
        err = PrError() ;
        if ( err )
        {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
-               UMAPrClose() ;
+               UMAPrClose(NULL) ;
                m_ok = FALSE;
                return;
        }
        // sets current port
                m_ok = FALSE;
                return;
        }
        // sets current port
-       m_macPort = (GrafPtr ) m_macPrintPort ;
+       m_macPort = (GrafPtr ) m_macPrintSessionPort ;
 #else
   #if PM_USE_SESSION_APIS
 #else
   #if PM_USE_SESSION_APIS
-    err = PMSessionBeginDocument((PMPrintSession)m_macPrintSession,
+    err = PMSessionBeginDocument((PMPrintSession)m_macPrintSessionPort,
               (PMPrintSettings)m_printData.m_macPrintSettings, 
              (PMPageFormat)m_printData.m_macPageFormat);
     if ( err != noErr )
   #else
               (PMPrintSettings)m_printData.m_macPrintSettings, 
              (PMPageFormat)m_printData.m_macPageFormat);
     if ( err != noErr )
   #else
-       m_macPrintPort = kPMNoReference ;
+       m_macPrintSessionPort = kPMNoReference ;
     err = PMBeginDocument(
              m_printData.m_macPrintSettings, 
              m_printData.m_macPageFormat, 
     err = PMBeginDocument(
              m_printData.m_macPrintSettings, 
              m_printData.m_macPageFormat, 
-             &m_macPrintPort);
-    if ( err != noErr || m_macPrintPort == kPMNoReference )
+             &m_macPrintSessionPort);
+    if ( err != noErr || m_macPrintSessionPort == kPMNoReference )
   #endif
     {
   #endif
     {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
   #if TARGET_CARBON && PM_USE_SESSION_APIS
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
   #if TARGET_CARBON && PM_USE_SESSION_APIS
-               UMAPrClose((PMPrintSession *)&m_macPrintSession) ;
+               UMAPrClose(&m_macPrintSessionPort) ;
   #else
   #else
-               UMAPrClose() ;
+               UMAPrClose(NULL) ;
   #endif
                m_ok = FALSE;
                return;
   #endif
                m_ok = FALSE;
                return;
@@ -129,13 +139,13 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
        err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper);
     if ( err != noErr )
     {
        err = PMGetAdjustedPaperRect((PMPageFormat)m_printData.m_macPageFormat, &rPaper);
     if ( err != noErr )
     {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
   #if TARGET_CARBON && PM_USE_SESSION_APIS
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
   #if TARGET_CARBON && PM_USE_SESSION_APIS
-               UMAPrClose((PMPrintSession *)&m_macPrintSession) ;
+               UMAPrClose(&m_macPrintSessionPort) ;
   #else
   #else
-               UMAPrClose() ;
+               UMAPrClose(NULL) ;
   #endif
                m_ok = FALSE;
                return;
   #endif
                m_ok = FALSE;
                return;
@@ -143,8 +153,8 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
        m_maxX = rPaper.right - rPaper.left ;
        m_maxY = rPaper.bottom - rPaper.top ;
 #else
        m_maxX = rPaper.right - rPaper.left ;
        m_maxY = rPaper.bottom - rPaper.top ;
 #else
-       m_maxX = (**(THPrint)m_printData.m_macPrintInfo).rPaper.right - (**(THPrint)m_printData.m_macPrintInfo).rPaper.left ;
-       m_maxY = (**(THPrint)m_printData.m_macPrintInfo).rPaper.bottom - (**(THPrint)m_printData.m_macPrintInfo).rPaper.top ;
+       m_maxX = (**(THPrint)m_printData.m_macPrintSettings).rPaper.right - (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ;
+       m_maxY = (**(THPrint)m_printData.m_macPrintSettings).rPaper.bottom - (**(THPrint)m_printData.m_macPrintSettings).rPaper.top ;
 #endif
 }
 
 #endif
 }
 
@@ -155,24 +165,24 @@ wxPrinterDC::~wxPrinterDC(void)
 #if !TARGET_CARBON
        if ( m_ok )
        {
 #if !TARGET_CARBON
        if ( m_ok )
        {
-               ::PrCloseDoc( (TPPrPort) m_macPrintPort  ) ;
+               ::PrCloseDoc( (TPPrPort) m_macPrintSessionPort  ) ;
                err = PrError() ;
                
                if ( err == noErr )
                {
                err = PrError() ;
                
                if ( err == noErr )
                {
-                       if ( (**(THPrint)m_printData.m_macPrintInfo).prJob.bJDocLoop == bSpoolLoop )
+                       if ( (**(THPrint)m_printData.m_macPrintSettings).prJob.bJDocLoop == bSpoolLoop )
                        {
                                TPrStatus status ;
                        {
                                TPrStatus status ;
-                               ::PrPicFile( (THPrint) m_printData.m_macPrintInfo , NULL , NULL , NULL , &status ) ;
+                               ::PrPicFile( (THPrint) m_printData.m_macPrintSettings , NULL , NULL , NULL , &status ) ;
                        }
                }
                else
                {
                        }
                }
                else
                {
-                       message.Printf( "Print Error %d", err ) ;
+                       message.Printf( "Print Error %ld", err ) ;
                        wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                    dialog.ShowModal();
                }
                        wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                    dialog.ShowModal();
                }
-               ::UMAPrClose() ;
+               ::UMAPrClose(NULL) ;
 //       ::SetPort( macPrintFormerPort ) ;
                ::SetPort( LMGetWMgrPort() ) ;
        }
 //       ::SetPort( macPrintFormerPort ) ;
                ::SetPort( LMGetWMgrPort() ) ;
        }
@@ -180,20 +190,20 @@ wxPrinterDC::~wxPrinterDC(void)
        if ( m_ok ) 
        {
   #if PM_USE_SESSION_APIS
        if ( m_ok ) 
        {
   #if PM_USE_SESSION_APIS
-           err = PMSessionEndDocument((PMPrintSession)m_macPrintSession);
+           err = PMSessionEndDocument((PMPrintSession)m_macPrintSessionPort);
   #else
   #else
-           err = PMEndDocument(m_macPrintPort);
+           err = PMEndDocument(m_macPrintSessionPort);
   #endif
        if ( err != noErr )
        {
   #endif
        if ( err != noErr )
        {
-                       message.Printf( "Print Error %d", err ) ;
+                       message.Printf( "Print Error %ld", err ) ;
                        wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                    dialog.ShowModal();
        }
   #if TARGET_CARBON && PM_USE_SESSION_APIS
                        wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                    dialog.ShowModal();
        }
   #if TARGET_CARBON && PM_USE_SESSION_APIS
-           UMAPrClose((PMPrintSession *)&m_macPrintSession) ;
+           UMAPrClose(&m_macPrintSessionPort) ;
   #else
   #else
-           UMAPrClose() ;
+           UMAPrClose(NULL) ;
   #endif
        }
 #endif
   #endif
        }
 #endif
@@ -233,45 +243,45 @@ void wxPrinterDC::StartPage(void)
        wxString message ;
 
 #if !TARGET_CARBON
        wxString message ;
 
 #if !TARGET_CARBON
-       PrOpenPage( (TPPrPort) m_macPrintPort , NULL ) ;
-       m_macLocalOrigin.x =  (**(THPrint)m_printData.m_macPrintInfo).rPaper.left ;
-       m_macLocalOrigin.y =  (**(THPrint)m_printData.m_macPrintInfo).rPaper.top ;
+       PrOpenPage( (TPPrPort) m_macPrintSessionPort , NULL ) ;
+       m_macLocalOrigin.x =  (**(THPrint)m_printData.m_macPrintSettings).rPaper.left ;
+       m_macLocalOrigin.y =  (**(THPrint)m_printData.m_macPrintSettings).rPaper.top ;
        
        Rect clip = { -32000 , -32000 , 32000 , 32000 } ;
        ::ClipRect( &clip ) ;
        err = PrError() ;
        if ( err != noErr )
        {
        
        Rect clip = { -32000 , -32000 , 32000 , 32000 } ;
        ::ClipRect( &clip ) ;
        err = PrError() ;
        if ( err != noErr )
        {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
-               ::PrClosePage( (TPPrPort) m_macPrintPort ) ;
-               ::PrCloseDoc( (TPPrPort) m_macPrintPort ) ;
-               ::UMAPrClose() ;
+               ::PrClosePage( (TPPrPort) m_macPrintSessionPort ) ;
+               ::PrCloseDoc( (TPPrPort) m_macPrintSessionPort ) ;
+               ::UMAPrClose(NULL) ;
                ::SetPort( macPrintFormerPort ) ;
                m_ok = FALSE ;
        }
 #else
   #if PM_USE_SESSION_APIS
                ::SetPort( macPrintFormerPort ) ;
                m_ok = FALSE ;
        }
 #else
   #if PM_USE_SESSION_APIS
-       err = PMSessionBeginPage((PMPrintSession)m_macPrintSession,
+       err = PMSessionBeginPage((PMPrintSession)m_macPrintSessionPort,
                                 (PMPageFormat)m_printData.m_macPageFormat,
                                 nil);
   #else
                                 (PMPageFormat)m_printData.m_macPageFormat,
                                 nil);
   #else
-       err = PMBeginPage(m_macPrintPort, nil);
+       err = PMBeginPage(m_macPrintSessionPort, nil);
   #endif
        if ( err != noErr )
        {
   #endif
        if ( err != noErr )
        {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
   #if PM_USE_SESSION_APIS
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
   #if PM_USE_SESSION_APIS
-               PMSessionEndPage((PMPrintSession)m_macPrintSession);
-               PMSessionEndDocument((PMPrintSession)m_macPrintSession);
-               UMAPrClose((PMPrintSession *)&m_macPrintSession) ;
+               PMSessionEndPage((PMPrintSession)m_macPrintSessionPort);
+               PMSessionEndDocument((PMPrintSession)m_macPrintSessionPort);
+               UMAPrClose(&m_macPrintSessionPort) ;
   #else
   #else
-               PMEndPage(m_macPrintPort);
-               PMEndDocument(m_macPrintPort);
-               UMAPrClose() ;
+               PMEndPage(m_macPrintSessionPort);
+               PMEndDocument(m_macPrintSessionPort);
+               UMAPrClose(NULL) ;
   #endif
                ::SetPort( macPrintFormerPort ) ;
                m_ok = FALSE ;
   #endif
                ::SetPort( macPrintFormerPort ) ;
                m_ok = FALSE ;
@@ -292,31 +302,31 @@ void wxPrinterDC::EndPage(void)
        err = PrError() ;
        if ( err != noErr )
        {
        err = PrError() ;
        if ( err != noErr )
        {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
-               ::PrCloseDoc( (TPPrPort) m_macPrintPort  ) ;
-               ::UMAPrClose() ;
+               ::PrCloseDoc( (TPPrPort) m_macPrintSessionPort  ) ;
+               ::UMAPrClose(NULL) ;
                ::SetPort( macPrintFormerPort ) ;
                m_ok = FALSE ;
        }
 #else
   #if PM_USE_SESSION_APIS
                ::SetPort( macPrintFormerPort ) ;
                m_ok = FALSE ;
        }
 #else
   #if PM_USE_SESSION_APIS
-       err = PMSessionEndPage((PMPrintSession)m_macPrintSession);
+       err = PMSessionEndPage((PMPrintSession)m_macPrintSessionPort);
   #else
   #else
-       err = PMEndPage(m_macPrintPort);
+       err = PMEndPage(m_macPrintSessionPort);
   #endif
        if ( err != noErr )
        {
   #endif
        if ( err != noErr )
        {
-               message.Printf( "Print Error %d", err ) ;
+               message.Printf( "Print Error %ld", err ) ;
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
   #if PM_USE_SESSION_APIS
                wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
                dialog.ShowModal();
   #if PM_USE_SESSION_APIS
-               PMSessionEndDocument((PMPrintSession)m_macPrintSession);
-               UMAPrClose((PMPrintSession *)&m_macPrintSession) ;
+               PMSessionEndDocument((PMPrintSession)m_macPrintSessionPort);
+               UMAPrClose(&m_macPrintSessionPort) ;
   #else
   #else
-               PMEndDocument(m_macPrintPort);
-               UMAPrClose() ;
+               PMEndDocument(m_macPrintSessionPort);
+               UMAPrClose(NULL) ;
   #endif
                ::SetPort( macPrintFormerPort ) ;
                m_ok = FALSE ;
   #endif
                ::SetPort( macPrintFormerPort ) ;
                m_ok = FALSE ;