1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxPostScriptDC class 
   4 // Author:      Julian Smart and others 
   7 // Copyright:   (c) Julian Smart, Robert Roebling and Markus Holzem 
   8 // Licence:     wxWindows licence 
   9 ///////////////////////////////////////////////////////////////////////////// 
  14 #if defined(__GNUG__) && !defined(__APPLE__) 
  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
); 
  48 #if WXWIN_COMPATIBILITY_2_2 
  49   wxPostScriptDC( const wxString 
&output
, bool interactive 
= FALSE
, wxWindow 
*parent 
= NULL 
) 
  50       { Create( output
, interactive
, parent 
); } 
  51   bool Create ( const wxString 
&output
, bool interactive 
= FALSE
, wxWindow 
*parent 
= NULL 
); 
  54   virtual bool Ok() const; 
  56   virtual void BeginDrawing() {} 
  57   virtual void EndDrawing() {} 
  59   bool DoFloodFill(wxCoord x1
, wxCoord y1
, const wxColour 
&col
, int style
=wxFLOOD_SURFACE 
); 
  60   bool DoGetPixel(wxCoord x1
, wxCoord y1
, wxColour 
*col
) const; 
  62   void DoDrawLine(wxCoord x1
, wxCoord y1
, wxCoord x2
, wxCoord y2
); 
  63   void DoCrossHair(wxCoord x
, wxCoord y
) ; 
  64   void DoDrawArc(wxCoord x1
,wxCoord y1
,wxCoord x2
,wxCoord y2
,wxCoord xc
,wxCoord yc
); 
  65   void DoDrawEllipticArc(wxCoord x
,wxCoord y
,wxCoord w
,wxCoord h
,double sa
,double ea
); 
  66   void DoDrawPoint(wxCoord x
, wxCoord y
); 
  67   void DoDrawLines(int n
, wxPoint points
[], wxCoord xoffset 
= 0, wxCoord yoffset 
= 0); 
  68   void DoDrawPolygon(int n
, wxPoint points
[], wxCoord xoffset 
= 0, wxCoord yoffset 
= 0, int fillStyle
=wxODDEVEN_RULE
); 
  69   void DoDrawRectangle(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
); 
  70   void DoDrawRoundedRectangle(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
, double radius 
= 20); 
  71   void DoDrawEllipse(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
); 
  73   void DoDrawSpline(wxList 
*points
); 
  75   bool DoBlit(wxCoord xdest
, wxCoord ydest
, wxCoord width
, wxCoord height
, 
  76             wxDC 
*source
, wxCoord xsrc
, wxCoord ysrc
, int rop 
= wxCOPY
, bool useMask 
= FALSE
, 
  77             wxCoord xsrcMask 
= -1, wxCoord ysrcMask 
= -1); 
  78   bool CanDrawBitmap() const { return TRUE
; } 
  80   void DoDrawIcon( const wxIcon
& icon
, wxCoord x
, wxCoord y 
); 
  81   void DoDrawBitmap( const wxBitmap
& bitmap
, wxCoord x
, wxCoord y
, bool useMask
=FALSE 
); 
  83   void DoDrawText(const wxString
& text
, wxCoord x
, wxCoord y 
); 
  84   void DoDrawRotatedText(const wxString
& text
, wxCoord x
, wxCoord y
, double angle
); 
  87   void SetFont( const wxFont
& font 
); 
  88   void SetPen( const wxPen
& pen 
); 
  89   void SetBrush( const wxBrush
& brush 
); 
  90   void SetLogicalFunction( int function 
); 
  91   void SetBackground( const wxBrush
& brush 
); 
  93   void DoSetClippingRegion(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
); 
  94   void DestroyClippingRegion(); 
  96   void DoSetClippingRegionAsRegion( const wxRegion 
&WXUNUSED(clip
) ) { } 
  98   bool StartDoc(const wxString
& message
); 
 103   wxCoord 
GetCharHeight() const; 
 104   wxCoord 
GetCharWidth() const; 
 105   bool CanGetTextExtent() const { return TRUE
; } 
 106   void DoGetTextExtent(const wxString
& string
, wxCoord 
*x
, wxCoord 
*y
, 
 107                      wxCoord 
*descent 
= (wxCoord 
*) NULL
, 
 108                      wxCoord 
*externalLeading 
= (wxCoord 
*) NULL
, 
 109                      wxFont 
*theFont 
= (wxFont 
*) NULL 
) const; 
 111   void DoGetSize(int* width
, int* height
) const; 
 112   void DoGetSizeMM(int *width
, int *height
) const; 
 114   // Resolution in pixels per logical inch 
 115   wxSize 
GetPPI() const; 
 117   void SetAxisOrientation( bool xLeftRight
, bool yBottomUp 
); 
 118   void SetDeviceOrigin( wxCoord x
, wxCoord y 
); 
 120   void SetBackgroundMode(int WXUNUSED(mode
)) { } 
 121   void SetPalette(const wxPalette
& WXUNUSED(palette
)) { } 
 123   wxPrintData
& GetPrintData() { return m_printData
; } 
 124   void SetPrintData(const wxPrintData
& data
) { m_printData 
= data
; } 
 126   virtual int GetDepth() const { return 24; } 
 128   static void SetResolution(int ppi
); 
 129   static int GetResolution(); 
 132     static float ms_PSScaleFactor
; 
 135     FILE*             m_pstream
;    // PostScript output stream 
 137     unsigned char     m_currentRed
; 
 138     unsigned char     m_currentGreen
; 
 139     unsigned char     m_currentBlue
; 
 142     double            m_underlinePosition
; 
 143     double            m_underlineThickness
; 
 144     wxPrintData       m_printData
; 
 147     DECLARE_DYNAMIC_CLASS(wxPostScriptDC
) 
 151 #if WXWIN_COMPATIBILITY_2_2 
 155     PS_PORTRAIT 
= wxPORTRAIT
, 
 156     PS_LANDSCAPE 
= wxLANDSCAPE
 
 162     PS_NONE 
= wxPRINT_MODE_NONE
, 
 163     PS_PREVIEW 
= wxPRINT_MODE_PREVIEW
, 
 164     PS_FILE 
= wxPRINT_MODE_FILE
, 
 165     PS_PRINTER 
= wxPRINT_MODE_PRINTER
 
 168 class wxPrintSetupData
: public wxPrintData
 
 171     wxPrintSetupData() {} 
 173     void SetPrinterOrientation( int orient 
)  
 174         { SetOrientation( orient 
); } 
 175     void SetPrinterMode( wxPrintMode mode 
)  
 176         { SetPrintMode( mode 
); } 
 177     void SetAFMPath( const wxString 
&path 
)  
 178         { SetFontMetricPath( path 
); } 
 180     void SetPaperName(const wxString
& paper
) { m_paperName 
= paper
; } 
 181     void SetPrinterFile(const wxString
& file
) { m_printerFile 
= file
; } 
 182     wxString 
GetPaperName() const { return m_paperName
; } 
 183     wxString 
GetPrinterFile() const { return m_printerFile
; }; 
 185     wxString        m_paperName
; 
 186     wxString        m_printerFile
; 
 189 WXDLLEXPORT_DATA(extern wxPrintSetupData
*) wxThePrintSetupData
; 
 190 WXDLLEXPORT 
extern void wxInitializePrintSetupData(bool init 
= TRUE
); 
 198     // wxUSE_PRINTING_ARCHITECTURE