- if ( ::PrValidate( (THPrint) m_printData.m_macPrintSettings ) )
- {
- ::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 )
- {
- message.Printf( "Print Error %d", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
- dialog.ShowModal();
- UMAPrClose(NULL) ;
- m_ok = FALSE;
- return;
- }
- ::GetPort( &macPrintFormerPort ) ;
- m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ;
- err = PrError() ;
- if ( err )
- {
- message.Printf( "Print Error %d", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
- dialog.ShowModal();
- UMAPrClose(NULL) ;
- m_ok = FALSE;
- return;
- }
- // sets current port
- m_macPort = (GrafPtr ) m_macPrintSessionPort ;
+ if ( ::PrValidate( (THPrint) m_printData.m_macPrintSettings ) )
+ {
+ // the driver has changed in the mean time, should we pop up a page setup dialog ?
+ if ( !::PrStlDialog( (THPrint) m_printData.m_macPrintSettings ) )
+ {
+ UMAPrClose(NULL) ;
+ m_ok = FALSE;
+ return;
+ }
+ }
+ err = PrError() ;
+ if ( err != noErr )
+ {
+ message.Printf( wxT("Print Error %ld"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString , wxICON_HAND | wxOK) ;
+ dialog.ShowModal();
+ UMAPrClose(NULL) ;
+ m_ok = FALSE;
+ return;
+ }
+ ::GetPort( &macPrintFormerPort ) ;
+#endif
+ m_ok = TRUE ;
+ m_minY = m_minX = 0 ;
+#if TARGET_CARBON
+ PMRect rPage;
+
+ err = PMGetAdjustedPageRect((PMPageFormat)m_printData.m_macPageFormat, &rPage);
+ if ( err != noErr )
+ {
+ message.Printf( wxT("Print Error %ld"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
+ dialog.ShowModal();
+ #if TARGET_CARBON && PM_USE_SESSION_APIS
+ PMRelease(&m_macPrintSessionPort) ;
+ #else
+ UMAPrClose(NULL) ;
+ #endif
+ m_ok = FALSE;
+ return;
+ }
+ m_maxX = wxCoord(rPage.right - rPage.left) ;
+ m_maxY = wxCoord(rPage.bottom - rPage.top);
+#else
+ m_maxX = (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.right - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.left ;
+ m_maxY = (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.bottom - (**(THPrint)m_printData.m_macPrintSettings).prInfo.rPage.top ;
+#endif
+}
+
+wxPrinterDC::~wxPrinterDC(void)
+{
+ OSStatus err ;
+ wxString message ;
+#if !TARGET_CARBON
+ if ( m_ok )
+ {
+ ::UMAPrClose(NULL) ;
+ ::SetPort( LMGetWMgrPort() ) ;
+ }
+#else
+ if ( m_ok )
+ {
+ #if TARGET_CARBON && PM_USE_SESSION_APIS
+ PMRelease(&m_macPrintSessionPort) ;
+ #else
+ UMAPrClose(NULL) ;
+ #endif
+ }
+#endif
+}
+
+bool wxPrinterDC::StartDoc( const wxString& WXUNUSED(message) )
+{
+ OSStatus err = noErr ;
+ wxString message ;
+
+#if !TARGET_CARBON
+ m_macPrintSessionPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintSettings , NULL , NULL ) ;
+ err = PrError() ;
+ if ( err )
+ {
+ message.Printf( wxT("Print Error %d"), err ) ;
+ wxMessageDialog dialog( NULL , message , wxEmptyString, wxICON_HAND | wxOK) ;
+ dialog.ShowModal();
+ UMAPrClose(NULL) ;
+ m_ok = FALSE;
+ return false ;
+ }
+ // sets current port
+ m_macPort = (GrafPtr ) m_macPrintSessionPort ;