1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxPostScriptDC class 
   4 // Author:      Julian Smart and others 
   7 // Copyright:   (c) Julian Smart and Robert Roebling 
   8 // Licence:     wxWindows licence 
   9 ///////////////////////////////////////////////////////////////////////////// 
  14 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) 
  15 #pragma interface "dcpsg.h" 
  20 #if wxUSE_PRINTING_ARCHITECTURE 
  24 #include "wx/dialog.h" 
  25 #include "wx/module.h" 
  26 #include "wx/cmndata.h" 
  28 //----------------------------------------------------------------------------- 
  30 //----------------------------------------------------------------------------- 
  34 //----------------------------------------------------------------------------- 
  36 //----------------------------------------------------------------------------- 
  38 class WXDLLEXPORT wxPostScriptDC
: public wxDC
 
  43     // Recommended constructor 
  44     wxPostScriptDC(const wxPrintData
& printData
); 
  46     // Recommended destructor :-) 
  49 #if WXWIN_COMPATIBILITY_2_2 
  50     wxPostScriptDC( const wxString 
&output
, bool interactive 
= FALSE
, wxWindow 
*parent 
= NULL 
) 
  51         { Create( output
, interactive
, parent 
); } 
  52     bool Create ( const wxString 
&output
, bool interactive 
= FALSE
, wxWindow 
*parent 
= NULL 
); 
  55   virtual bool Ok() const; 
  57   virtual void BeginDrawing() {} 
  58   virtual void EndDrawing() {} 
  60   bool DoFloodFill(wxCoord x1
, wxCoord y1
, const wxColour 
&col
, int style
=wxFLOOD_SURFACE 
); 
  61   bool DoGetPixel(wxCoord x1
, wxCoord y1
, wxColour 
*col
) const; 
  63   void DoDrawLine(wxCoord x1
, wxCoord y1
, wxCoord x2
, wxCoord y2
); 
  64   void DoCrossHair(wxCoord x
, wxCoord y
) ; 
  65   void DoDrawArc(wxCoord x1
,wxCoord y1
,wxCoord x2
,wxCoord y2
,wxCoord xc
,wxCoord yc
); 
  66   void DoDrawEllipticArc(wxCoord x
,wxCoord y
,wxCoord w
,wxCoord h
,double sa
,double ea
); 
  67   void DoDrawPoint(wxCoord x
, wxCoord y
); 
  68   void DoDrawLines(int n
, wxPoint points
[], wxCoord xoffset 
= 0, wxCoord yoffset 
= 0); 
  69   void DoDrawPolygon(int n
, wxPoint points
[], wxCoord xoffset 
= 0, wxCoord yoffset 
= 0, int fillStyle
=wxODDEVEN_RULE
); 
  70   void DoDrawRectangle(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
); 
  71   void DoDrawRoundedRectangle(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
, double radius 
= 20); 
  72   void DoDrawEllipse(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
); 
  74   void DoDrawSpline(wxList 
*points
); 
  76   bool DoBlit(wxCoord xdest
, wxCoord ydest
, wxCoord width
, wxCoord height
, 
  77             wxDC 
*source
, wxCoord xsrc
, wxCoord ysrc
, int rop 
= wxCOPY
, bool useMask 
= FALSE
, 
  78             wxCoord xsrcMask 
= -1, wxCoord ysrcMask 
= -1); 
  79   bool CanDrawBitmap() const { return TRUE
; } 
  81   void DoDrawIcon( const wxIcon
& icon
, wxCoord x
, wxCoord y 
); 
  82   void DoDrawBitmap( const wxBitmap
& bitmap
, wxCoord x
, wxCoord y
, bool useMask
=FALSE 
); 
  84   void DoDrawText(const wxString
& text
, wxCoord x
, wxCoord y 
); 
  85   void DoDrawRotatedText(const wxString
& text
, wxCoord x
, wxCoord y
, double angle
); 
  88   void SetFont( const wxFont
& font 
); 
  89   void SetPen( const wxPen
& pen 
); 
  90   void SetBrush( const wxBrush
& brush 
); 
  91   void SetLogicalFunction( int function 
); 
  92   void SetBackground( const wxBrush
& brush 
); 
  94   void DoSetClippingRegion(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
); 
  95   void DestroyClippingRegion(); 
  97   void DoSetClippingRegionAsRegion( const wxRegion 
&WXUNUSED(clip
) ) { } 
  99   bool StartDoc(const wxString
& message
); 
 104   wxCoord 
GetCharHeight() const; 
 105   wxCoord 
GetCharWidth() const; 
 106   bool CanGetTextExtent() const { return TRUE
; } 
 107   void DoGetTextExtent(const wxString
& string
, wxCoord 
*x
, wxCoord 
*y
, 
 108                      wxCoord 
*descent 
= (wxCoord 
*) NULL
, 
 109                      wxCoord 
*externalLeading 
= (wxCoord 
*) NULL
, 
 110                      wxFont 
*theFont 
= (wxFont 
*) NULL 
) const; 
 112   void DoGetSize(int* width
, int* height
) const; 
 113   void DoGetSizeMM(int *width
, int *height
) const; 
 115   // Resolution in pixels per logical inch 
 116   wxSize 
GetPPI() const; 
 118   void SetAxisOrientation( bool xLeftRight
, bool yBottomUp 
); 
 119   void SetDeviceOrigin( wxCoord x
, wxCoord y 
); 
 121   void SetBackgroundMode(int WXUNUSED(mode
)) { } 
 122   void SetPalette(const wxPalette
& WXUNUSED(palette
)) { } 
 124   wxPrintData
& GetPrintData() { return m_printData
; } 
 125   void SetPrintData(const wxPrintData
& data
) { m_printData 
= data
; } 
 127   virtual int GetDepth() const { return 24; } 
 129   static void SetResolution(int ppi
); 
 130   static int GetResolution(); 
 133     static float ms_PSScaleFactor
; 
 137     PangoContext 
*m_context
; 
 138     PangoLayout 
*m_layout
; 
 139     PangoFontDescription 
*m_fontdesc
; 
 142     FILE*             m_pstream
;    // PostScript output stream 
 144     unsigned char     m_currentRed
; 
 145     unsigned char     m_currentGreen
; 
 146     unsigned char     m_currentBlue
; 
 149     double            m_underlinePosition
; 
 150     double            m_underlineThickness
; 
 151     wxPrintData       m_printData
; 
 154     DECLARE_DYNAMIC_CLASS(wxPostScriptDC
) 
 158 #if WXWIN_COMPATIBILITY_2_2 
 162     PS_PORTRAIT 
= wxPORTRAIT
, 
 163     PS_LANDSCAPE 
= wxLANDSCAPE
 
 169     PS_NONE 
= wxPRINT_MODE_NONE
, 
 170     PS_PREVIEW 
= wxPRINT_MODE_PREVIEW
, 
 171     PS_FILE 
= wxPRINT_MODE_FILE
, 
 172     PS_PRINTER 
= wxPRINT_MODE_PRINTER
 
 175 class wxPrintSetupData
: public wxPrintData
 
 178     wxPrintSetupData() {} 
 180     void SetPrinterOrientation( int orient 
)  
 181         { SetOrientation( orient 
); } 
 182     void SetPrinterMode( wxPrintMode mode 
)  
 183         { SetPrintMode( mode 
); } 
 184     void SetAFMPath( const wxString 
&path 
)  
 185         { SetFontMetricPath( path 
); } 
 187     void SetPaperName(const wxString
& paper
) { m_paperName 
= paper
; } 
 188     void SetPrinterFile(const wxString
& file
) { m_printerFile 
= file
; } 
 189     wxString 
GetPaperName() const { return m_paperName
; } 
 190     wxString 
GetPrinterFile() const { return m_printerFile
; }; 
 192     wxString        m_paperName
; 
 193     wxString        m_printerFile
; 
 196 WXDLLEXPORT_DATA(extern wxPrintSetupData
*) wxThePrintSetupData
; 
 197 WXDLLEXPORT 
extern void wxInitializePrintSetupData(bool init 
= TRUE
); 
 205     // wxUSE_PRINTING_ARCHITECTURE