- if ( !m_ok )
- return ;
-
- m_logicalFunction = wxCOPY;
-// m_textAlignment = wxALIGN_TOP_LEFT;
- m_backgroundMode = wxTRANSPARENT;
-
- m_textForegroundColour = *wxBLACK;
- m_textBackgroundColour = *wxWHITE;
- m_pen = *wxBLACK_PEN;
- m_font = *wxNORMAL_FONT;
- m_brush = *wxTRANSPARENT_BRUSH;
- m_backgroundBrush = *wxWHITE_BRUSH;
-
- m_macFontInstalled = false ;
- m_macBrushInstalled = false ;
- m_macPenInstalled = false ;
-
-
- OSStatus err ;
- wxString message ;
-
-#if !TARGET_CARBON
- PrOpenPage( m_macPrintPort , NULL ) ;
- m_macLocalOrigin.h = (**m_printData.m_macPrintInfo).rPaper.left ;
- m_macLocalOrigin.v = (**m_printData.m_macPrintInfo).rPaper.top ;
-
- SetOrigin( - m_macLocalOrigin.h , - m_macLocalOrigin.v ) ;
- Rect clip = { -32000 , -32000 , 32000 , 32000 } ;
- ::ClipRect( &clip ) ;
- err = PrError() ;
- if ( err != noErr )
- {
- message.Printf( "Print Error %d", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
- dialog.ShowModal();
- ::PrClosePage( m_macPrintPort ) ;
- ::PrCloseDoc( m_macPrintPort ) ;
- ::UMAPrClose() ;
- ::SetPort( macPrintFormerPort ) ;
- m_ok = FALSE ;
- }
-#else
- #if PM_USE_SESSION_APIS
- err = PMSessionBeginPage(m_macPrintSession,
- m_printData.m_macPageFormat,
- nil);
- #else
- err = PMBeginPage(m_macPrintPort, nil);
- #endif
- if ( err != noErr )
- {
- message.Printf( "Print Error %d", err ) ;
- wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
- dialog.ShowModal();
- #if PM_USE_SESSION_APIS
- PMSessionEndPage(m_macPrintSession);
- PMSessionEndDocument(m_macPrintSession);
- UMAPrClose(&m_macPrintSession) ;
- #else
- PMEndPage(m_macPrintPort);
- PMEndDocument(m_macPrintPort);
- UMAPrClose() ;
- #endif
- ::SetPort( macPrintFormerPort ) ;
- m_ok = FALSE ;
- }
-#endif
+ wxCoord w, h;
+ GetSize(&w, &h);
+ wxRect pageRect(0, 0, w, h);
+ wxMacCarbonPrintData *native = (wxMacCarbonPrintData*) m_printData.GetNativeData() ;
+ OSStatus err = noErr ;
+ PMRect rPaper;
+ err = PMGetAdjustedPaperRect(native->m_macPageFormat, &rPaper);
+ if ( err != noErr )
+ return pageRect;
+ return wxRect(wxCoord(rPaper.left), wxCoord(rPaper.top),
+ wxCoord(rPaper.right - rPaper.left), wxCoord(rPaper.bottom - rPaper.top));