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