1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: drawnp.h 3 // Purpose: Private header for wxDrawnShape 4 // Author: Julian Smart 5 // Modified by: 6 // Created: 12/07/98 7 // RCS-ID: $Id: drawnp.h 35650 2005-09-23 12:56:45Z MR $ 8 // Copyright: (c) Julian Smart 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _OGL_DRAWNP_H_ 13 #define _OGL_DRAWNP_H_ 14 15 16 /* 17 * Drawing operations 18 * 19 */ 20 21 #define DRAWOP_SET_PEN 1 22 #define DRAWOP_SET_BRUSH 2 23 #define DRAWOP_SET_FONT 3 24 #define DRAWOP_SET_TEXT_COLOUR 4 25 #define DRAWOP_SET_BK_COLOUR 5 26 #define DRAWOP_SET_BK_MODE 6 27 #define DRAWOP_SET_CLIPPING_RECT 7 28 #define DRAWOP_DESTROY_CLIPPING_RECT 8 29 30 /* 31 #define DRAWOP_CREATE_PEN 10 32 #define DRAWOP_CREATE_BRUSH 11 33 #define DRAWOP_CREATE_FONT 12 34 */ 35 36 #define DRAWOP_DRAW_LINE 20 37 #define DRAWOP_DRAW_POLYLINE 21 38 #define DRAWOP_DRAW_POLYGON 22 39 #define DRAWOP_DRAW_RECT 23 40 #define DRAWOP_DRAW_ROUNDED_RECT 24 41 #define DRAWOP_DRAW_ELLIPSE 25 42 #define DRAWOP_DRAW_POINT 26 43 #define DRAWOP_DRAW_ARC 27 44 #define DRAWOP_DRAW_TEXT 28 45 #define DRAWOP_DRAW_SPLINE 29 46 #define DRAWOP_DRAW_ELLIPTIC_ARC 30 47 48 /* 49 * Base, virtual class 50 * 51 */ 52 53 class WXDLLIMPEXP_OGL wxDrawOp: public wxObject 54 { 55 public: wxDrawOp(int theOp)56 inline wxDrawOp(int theOp) { m_op = theOp; } ~wxDrawOp()57 inline ~wxDrawOp() {} Scale(double WXUNUSED (xScale),double WXUNUSED (yScale))58 inline virtual void Scale(double WXUNUSED(xScale), double WXUNUSED(yScale)) {}; Translate(double WXUNUSED (x),double WXUNUSED (y))59 inline virtual void Translate(double WXUNUSED(x), double WXUNUSED(y)) {}; Rotate(double WXUNUSED (x),double WXUNUSED (y),double WXUNUSED (theta),double WXUNUSED (sinTheta),double WXUNUSED (cosTheta))60 inline virtual void Rotate(double WXUNUSED(x), double WXUNUSED(y), double WXUNUSED(theta), double WXUNUSED(sinTheta), double WXUNUSED(cosTheta)) {}; 61 virtual void Do(wxDC& dc, double xoffset, double yoffset) = 0; 62 virtual wxDrawOp *Copy(wxPseudoMetaFile *newImage) = 0; 63 #if wxUSE_PROLOGIO 64 virtual wxExpr *WriteExpr(wxPseudoMetaFile *image) = 0; 65 virtual void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) = 0; 66 #endif GetOp()67 inline int GetOp() const { return m_op; } 68 69 // Draw an outline using the current operation. By default, return false (not drawn) OnDrawOutline(wxDC & WXUNUSED (dc),double WXUNUSED (x),double WXUNUSED (y),double WXUNUSED (w),double WXUNUSED (h),double WXUNUSED (oldW),double WXUNUSED (oldH))70 virtual bool OnDrawOutline(wxDC& WXUNUSED(dc), double WXUNUSED(x), double WXUNUSED(y), double WXUNUSED(w), double WXUNUSED(h), 71 double WXUNUSED(oldW), double WXUNUSED(oldH)) { return false; } 72 73 // Get the perimeter point using this data GetPerimeterPoint(double WXUNUSED (x1),double WXUNUSED (y1),double WXUNUSED (x2),double WXUNUSED (y2),double * WXUNUSED (x3),double * WXUNUSED (y3),double WXUNUSED (xOffset),double WXUNUSED (yOffset),int WXUNUSED (attachmentMode))74 virtual bool GetPerimeterPoint(double WXUNUSED(x1), double WXUNUSED(y1), 75 double WXUNUSED(x2), double WXUNUSED(y2), 76 double *WXUNUSED(x3), double *WXUNUSED(y3), 77 double WXUNUSED(xOffset), double WXUNUSED(yOffset), 78 int WXUNUSED(attachmentMode)) 79 { return false; } 80 81 protected: 82 int m_op; 83 84 }; 85 86 /* 87 * Set font, brush, text colour 88 * 89 */ 90 91 class WXDLLIMPEXP_OGL wxOpSetGDI: public wxDrawOp 92 { 93 public: 94 wxOpSetGDI(int theOp, wxPseudoMetaFile *theImage, int theGdiIndex, int theMode = 0); 95 void Do(wxDC& dc, double xoffset, double yoffset); 96 wxDrawOp *Copy(wxPseudoMetaFile *newImage); 97 #if wxUSE_PROLOGIO 98 wxExpr *WriteExpr(wxPseudoMetaFile *image); 99 void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); 100 #endif 101 102 public: 103 int m_mode; 104 int m_gdiIndex; 105 wxPseudoMetaFile* m_image; 106 unsigned char m_r; 107 unsigned char m_g; 108 unsigned char m_b; 109 }; 110 111 /* 112 * Set/destroy clipping 113 * 114 */ 115 116 class WXDLLIMPEXP_OGL wxOpSetClipping: public wxDrawOp 117 { 118 public: 119 wxOpSetClipping(int theOp, double theX1, double theY1, double theX2, double theY2); 120 void Do(wxDC& dc, double xoffset, double yoffset); 121 void Scale(double xScale, double yScale); 122 void Translate(double x, double y); 123 wxDrawOp *Copy(wxPseudoMetaFile *newImage); 124 #if wxUSE_PROLOGIO 125 wxExpr *WriteExpr(wxPseudoMetaFile *image); 126 void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); 127 #endif 128 129 public: 130 double m_x1; 131 double m_y1; 132 double m_x2; 133 double m_y2; 134 }; 135 136 /* 137 * Draw line, rectangle, rounded rectangle, ellipse, point, arc, text 138 * 139 */ 140 141 class WXDLLIMPEXP_OGL wxOpDraw: public wxDrawOp 142 { 143 public: 144 wxOpDraw(int theOp, double theX1, double theY1, double theX2, double theY2, 145 double radius = 0.0, const wxString& s = wxEmptyString); 146 ~wxOpDraw(); 147 void Do(wxDC& dc, double xoffset, double yoffset); 148 void Scale(double scaleX, double scaleY); 149 void Translate(double x, double y); 150 void Rotate(double x, double y, double theta, double sinTheta, double cosTheta); 151 wxDrawOp *Copy(wxPseudoMetaFile *newImage); 152 #if wxUSE_PROLOGIO 153 wxExpr *WriteExpr(wxPseudoMetaFile *image); 154 void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); 155 #endif 156 157 public: 158 double m_x1; 159 double m_y1; 160 double m_x2; 161 double m_y2; 162 double m_x3; 163 double m_y3; 164 double m_radius; 165 wxString m_textString; 166 167 }; 168 169 /* 170 * Draw polyline, spline, polygon 171 * 172 */ 173 174 class WXDLLIMPEXP_OGL wxOpPolyDraw: public wxDrawOp 175 { 176 public: 177 wxOpPolyDraw(int theOp, int n, wxRealPoint *thePoints); 178 ~wxOpPolyDraw(); 179 void Do(wxDC& dc, double xoffset, double yoffset); 180 void Scale(double scaleX, double scaleY); 181 void Translate(double x, double y); 182 void Rotate(double x, double y, double theta, double sinTheta, double cosTheta); 183 wxDrawOp *Copy(wxPseudoMetaFile *newImage); 184 #if wxUSE_PROLOGIO 185 wxExpr *WriteExpr(wxPseudoMetaFile *image); 186 void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); 187 #endif 188 189 // Draw an outline using the current operation. 190 virtual bool OnDrawOutline(wxDC& dc, double x, double y, double w, double h, 191 double oldW, double oldH); 192 193 // Get the perimeter point using this data 194 bool GetPerimeterPoint(double x1, double y1, 195 double x2, double y2, 196 double *x3, double *y3, 197 double xOffset, double yOffset, 198 int attachmentMode); 199 200 public: 201 wxRealPoint* m_points; 202 int m_noPoints; 203 204 }; 205 206 #endif 207 // _OGL_DRAWNP_H_ 208 209 210