1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/generic/dcps.h 3 // Purpose: wxPostScriptDC class 4 // Author: Julian Smart and others 5 // Modified by: 6 // RCS-ID: $Id: dcpsg.h 41751 2006-10-08 21:56:55Z VZ $ 7 // Copyright: (c) Julian Smart and Robert Roebling 8 // Licence: wxWindows licence 9 ///////////////////////////////////////////////////////////////////////////// 10 11 #ifndef _WX_DCPSG_H_ 12 #define _WX_DCPSG_H_ 13 14 #include "wx/defs.h" 15 16 #if wxUSE_PRINTING_ARCHITECTURE 17 18 #if wxUSE_POSTSCRIPT 19 20 #include "wx/dc.h" 21 #include "wx/dialog.h" 22 #include "wx/module.h" 23 #include "wx/cmndata.h" 24 25 extern WXDLLIMPEXP_DATA_CORE(int) wxPageNumber; 26 27 //----------------------------------------------------------------------------- 28 // classes 29 //----------------------------------------------------------------------------- 30 31 class wxPostScriptDC; 32 33 //----------------------------------------------------------------------------- 34 // wxPostScriptDC 35 //----------------------------------------------------------------------------- 36 37 class WXDLLEXPORT wxPostScriptDC: public wxDC 38 { 39 public: 40 wxPostScriptDC(); 41 42 // Recommended constructor 43 wxPostScriptDC(const wxPrintData& printData); 44 45 // Recommended destructor :-) 46 virtual ~wxPostScriptDC(); 47 Ok()48 virtual bool Ok() const { return IsOk(); } 49 virtual bool IsOk() const; 50 CanDrawBitmap()51 bool CanDrawBitmap() const { return true; } 52 53 void Clear(); 54 void SetFont( const wxFont& font ); 55 void SetPen( const wxPen& pen ); 56 void SetBrush( const wxBrush& brush ); 57 void SetLogicalFunction( int function ); 58 void SetBackground( const wxBrush& brush ); 59 60 void DestroyClippingRegion(); 61 62 bool StartDoc(const wxString& message); 63 void EndDoc(); 64 void StartPage(); 65 void EndPage(); 66 67 wxCoord GetCharHeight() const; 68 wxCoord GetCharWidth() const; CanGetTextExtent()69 bool CanGetTextExtent() const { return true; } 70 71 // Resolution in pixels per logical inch 72 wxSize GetPPI() const; 73 74 void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); 75 void SetDeviceOrigin( wxCoord x, wxCoord y ); 76 SetBackgroundMode(int WXUNUSED (mode))77 void SetBackgroundMode(int WXUNUSED(mode)) { } SetPalette(const wxPalette & WXUNUSED (palette))78 void SetPalette(const wxPalette& WXUNUSED(palette)) { } 79 GetPrintData()80 wxPrintData& GetPrintData() { return m_printData; } SetPrintData(const wxPrintData & data)81 void SetPrintData(const wxPrintData& data) { m_printData = data; } 82 GetDepth()83 virtual int GetDepth() const { return 24; } 84 85 static void SetResolution(int ppi); 86 static int GetResolution(); 87 88 void PsPrintf( const wxChar* fmt, ... ); 89 void PsPrint( const char* psdata ); 90 void PsPrint( int ch ); 91 92 #if wxUSE_UNICODE PsPrint(const wxChar * psdata)93 void PsPrint( const wxChar* psdata ) { PsPrint( wxConvUTF8.cWX2MB( psdata ) ); } 94 #endif 95 96 private: 97 static float ms_PSScaleFactor; 98 99 protected: 100 bool DoFloodFill(wxCoord x1, wxCoord y1, const wxColour &col, int style = wxFLOOD_SURFACE); 101 bool DoGetPixel(wxCoord x1, wxCoord y1, wxColour *col) const; 102 void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2); 103 void DoCrossHair(wxCoord x, wxCoord y) ; 104 void DoDrawArc(wxCoord x1,wxCoord y1,wxCoord x2,wxCoord y2,wxCoord xc,wxCoord yc); 105 void DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,double sa,double ea); 106 void DoDrawPoint(wxCoord x, wxCoord y); 107 void DoDrawLines(int n, wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0); 108 void DoDrawPolygon(int n, wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, int fillStyle = wxODDEVEN_RULE); 109 void DoDrawPolyPolygon(int n, int count[], wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, int fillStyle = wxODDEVEN_RULE); 110 void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height); 111 void DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius = 20); 112 void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height); 113 #if wxUSE_SPLINES 114 void DoDrawSpline(wxList *points); 115 #endif // wxUSE_SPLINES 116 bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, 117 wxDC *source, wxCoord xsrc, wxCoord ysrc, int rop = wxCOPY, bool useMask = false, 118 wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord); 119 void DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y); 120 void DoDrawBitmap(const wxBitmap& bitmap, wxCoord x, wxCoord y, bool useMask = false); 121 void DoDrawText(const wxString& text, wxCoord x, wxCoord y); 122 void DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle); 123 void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height); DoSetClippingRegionAsRegion(const wxRegion & WXUNUSED (clip))124 void DoSetClippingRegionAsRegion( const wxRegion &WXUNUSED(clip)) { } 125 void DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y, 126 wxCoord *descent = NULL, 127 wxCoord *externalLeading = NULL, 128 wxFont *theFont = NULL) const; 129 void DoGetSize(int* width, int* height) const; 130 void DoGetSizeMM(int *width, int *height) const; 131 132 FILE* m_pstream; // PostScript output stream 133 wxString m_title; 134 unsigned char m_currentRed; 135 unsigned char m_currentGreen; 136 unsigned char m_currentBlue; 137 int m_pageNumber; 138 bool m_clipping; 139 double m_underlinePosition; 140 double m_underlineThickness; 141 wxPrintData m_printData; 142 143 private: 144 DECLARE_DYNAMIC_CLASS(wxPostScriptDC) 145 }; 146 147 #endif 148 // wxUSE_POSTSCRIPT 149 150 #endif 151 // wxUSE_PRINTING_ARCHITECTURE 152 153 #endif 154 // _WX_DCPSG_H_ 155