]> git.saurik.com Git - wxWidgets.git/blame - wxPython/contrib/ogl/oglhelpers.h
Don't accidentally instal the MSVCRT.dll from XP as it wont' work on
[wxWidgets.git] / wxPython / contrib / ogl / oglhelpers.h
CommitLineData
e91a9dfc
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: oglhelpers.h
3// Purpose: Some Helper functions to help in data conversions in OGL
4//
5// Author: Robin Dunn
6//
7// Created: 9-Sept-1999
8// RCS-ID: $Id$
9// Copyright: (c) 1998 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
13#ifndef __wxp_ogl_helpers__
14#define __wxp_ogl_helpers__
15
16
4c9993c3
RD
17#include <wx/ogl/ogl.h>
18#include <wx/ogl/basicp.h>
19#include <wx/ogl/constrnt.h>
20#include <wx/ogl/bmpshape.h>
21#include <wx/ogl/drawn.h>
22
e91a9dfc
RD
23
24//---------------------------------------------------------------------------
25// Define a macro that will be used in the class definintions below
26
27#define WXSHAPE_DEC_CALLBACKS() \
28 DEC_PYCALLBACK__ (OnDelete); \
29 DEC_PYCALLBACK__DC (OnDraw); \
30 DEC_PYCALLBACK__DC (OnDrawContents); \
31 DEC_PYCALLBACK__DCBOOL (OnDrawBranches); \
32 DEC_PYCALLBACK__DC (OnMoveLinks); \
33 DEC_PYCALLBACK__DC (OnErase); \
34 DEC_PYCALLBACK__DC (OnEraseContents); \
35 DEC_PYCALLBACK__DC (OnHighlight); \
36 DEC_PYCALLBACK__2DBL2INT (OnLeftClick); \
37 DEC_PYCALLBACK__2DBL2INT (OnLeftDoubleClick); \
38 DEC_PYCALLBACK__2DBL2INT (OnRightClick); \
39 DEC_PYCALLBACK__2DBL (OnSize); \
40 DEC_PYCALLBACK_BOOL_DC4DBLBOOL (OnMovePre); \
41 DEC_PYCALLBACK__DC4DBLBOOL (OnMovePost); \
42 DEC_PYCALLBACK__BOOL2DBL2INT (OnDragLeft); \
43 DEC_PYCALLBACK__2DBL2INT (OnBeginDragLeft); \
44 DEC_PYCALLBACK__2DBL2INT (OnEndDragLeft); \
45 DEC_PYCALLBACK__BOOL2DBL2INT (OnDragRight); \
46 DEC_PYCALLBACK__2DBL2INT (OnBeginDragRight); \
47 DEC_PYCALLBACK__2DBL2INT (OnEndDragRight); \
48 DEC_PYCALLBACK__DC4DBL (OnDrawOutline); \
49 DEC_PYCALLBACK__DC (OnDrawControlPoints); \
50 DEC_PYCALLBACK__DC (OnEraseControlPoints); \
51 DEC_PYCALLBACK__DCBOOL (OnMoveLink); \
52 DEC_PYCALLBACK__WXCPBOOL2DBL2INT(OnSizingDragLeft); \
53 DEC_PYCALLBACK__WXCP2DBL2INT (OnSizingBeginDragLeft);\
54 DEC_PYCALLBACK__WXCP2DBL2INT (OnSizingEndDragLeft); \
55 DEC_PYCALLBACK__2DBL (OnBeginSize); \
56 DEC_PYCALLBACK__2DBL (OnEndSize); \
1fded56b 57 PYPRIVATE
e91a9dfc
RD
58
59
60#define WXSHAPE_IMP_CALLBACKS(CLASS, PARENT) \
61 IMP_PYCALLBACK__ (CLASS, PARENT, OnDelete); \
62 IMP_PYCALLBACK__DC (CLASS, PARENT, OnDraw); \
63 IMP_PYCALLBACK__DC (CLASS, PARENT, OnDrawContents); \
64 IMP_PYCALLBACK__DCBOOL (CLASS, PARENT, OnDrawBranches); \
65 IMP_PYCALLBACK__DC (CLASS, PARENT, OnMoveLinks); \
66 IMP_PYCALLBACK__DC (CLASS, PARENT, OnErase); \
67 IMP_PYCALLBACK__DC (CLASS, PARENT, OnEraseContents); \
68 IMP_PYCALLBACK__DC (CLASS, PARENT, OnHighlight); \
69 IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnLeftClick); \
70 IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnLeftDoubleClick); \
71 IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnRightClick); \
72 IMP_PYCALLBACK__2DBL (CLASS, PARENT, OnSize); \
73 IMP_PYCALLBACK_BOOL_DC4DBLBOOL (CLASS, PARENT, OnMovePre); \
74 IMP_PYCALLBACK__DC4DBLBOOL (CLASS, PARENT, OnMovePost); \
75 IMP_PYCALLBACK__BOOL2DBL2INT (CLASS, PARENT, OnDragLeft); \
76 IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnBeginDragLeft); \
77 IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnEndDragLeft); \
78 IMP_PYCALLBACK__BOOL2DBL2INT (CLASS, PARENT, OnDragRight); \
79 IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnBeginDragRight); \
80 IMP_PYCALLBACK__2DBL2INT (CLASS, PARENT, OnEndDragRight); \
81 IMP_PYCALLBACK__DC4DBL (CLASS, PARENT, OnDrawOutline); \
82 IMP_PYCALLBACK__DC (CLASS, PARENT, OnDrawControlPoints); \
83 IMP_PYCALLBACK__DC (CLASS, PARENT, OnEraseControlPoints); \
84 IMP_PYCALLBACK__DCBOOL (CLASS, PARENT, OnMoveLink); \
85 IMP_PYCALLBACK__WXCPBOOL2DBL2INT(CLASS, PARENT, OnSizingDragLeft); \
86 IMP_PYCALLBACK__WXCP2DBL2INT (CLASS, PARENT, OnSizingBeginDragLeft);\
87 IMP_PYCALLBACK__WXCP2DBL2INT (CLASS, PARENT, OnSizingEndDragLeft); \
88 IMP_PYCALLBACK__2DBL (CLASS, PARENT, OnBeginSize); \
1fded56b 89 IMP_PYCALLBACK__2DBL (CLASS, PARENT, OnEndSize)
e91a9dfc
RD
90
91
92 // This one may be difficult...
93 //PYCALLBACK__??????? (PARENT, OnChangeAttachment);
94
95
96
97//---------------------------------------------------------------------------
2f4e9287 98// These are prototypes of some helper functions found in ogl.i
e91a9dfc 99
d14a1e28 100wxList* wxPy_wxListHelper(PyObject* pyList, const wxChar* className);
e91a9dfc 101wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList);
2f4e9287 102PyObject* wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler* source);
d14a1e28 103PyObject* wxPy_ConvertShapeList(wxListBase* list);
e91a9dfc 104
e91a9dfc
RD
105
106
107//---------------------------------------------------------------------------
108// Classes that derive from the shapes and such, but which know how to turn
109// virtual callbacks into Python callbacks.
110
111class wxPyShapeCanvas : public wxShapeCanvas {
9416aa89 112 DECLARE_DYNAMIC_CLASS(wxPyShapeCanvas);
e91a9dfc
RD
113public:
114 wxPyShapeCanvas(wxWindow* parent = NULL, wxWindowID id = -1,
b68dc582
RD
115 const wxPoint& pos = wxDefaultPosition,
116 const wxSize& size = wxDefaultSize,
4fcf77bc
RD
117 long style = wxBORDER,
118 const wxString& name = wxT("shapeCanvas"))
119 : wxShapeCanvas(parent, id, pos, size, style, name) {}
e91a9dfc
RD
120
121 DEC_PYCALLBACK__2DBLINT(OnBeginDragLeft);
122 DEC_PYCALLBACK__2DBLINT(OnBeginDragRight);
123 DEC_PYCALLBACK__2DBLINT(OnEndDragLeft);
124 DEC_PYCALLBACK__2DBLINT(OnEndDragRight);
125 DEC_PYCALLBACK__BOOL2DBLINT(OnDragLeft);
126 DEC_PYCALLBACK__BOOL2DBLINT(OnDragRight);
127 DEC_PYCALLBACK__2DBLINT(OnLeftClick);
128 DEC_PYCALLBACK__2DBLINT(OnRightClick);
129
130 PYPRIVATE;
131};
132
133
134
135class wxPyShapeEvtHandler : public wxShapeEvtHandler {
9416aa89 136 DECLARE_DYNAMIC_CLASS(wxPyShapeEvtHandler);
e91a9dfc
RD
137public:
138 wxPyShapeEvtHandler(wxShapeEvtHandler *prev = NULL, wxShape *shape = NULL)
139 : wxShapeEvtHandler(prev, shape) {}
140
141 WXSHAPE_DEC_CALLBACKS();
142};
143
144
145class wxPyShape : public wxShape {
9416aa89 146 DECLARE_ABSTRACT_CLASS(wxPyShape);
e91a9dfc
RD
147public:
148 wxPyShape(wxPyShapeCanvas *can = NULL)
149 : wxShape(can) {}
150
d14a1e28
RD
151 virtual void GetBoundingBoxMin(double *width, double *height)
152 {
153 if (width) *width = 0.0;
154 if (height) *height = 0.0;
155 }
156
e91a9dfc
RD
157 WXSHAPE_DEC_CALLBACKS();
158
159};
160
161
162class wxPyRectangleShape : public wxRectangleShape {
9416aa89 163 DECLARE_DYNAMIC_CLASS(wxPyRectangleShape);
e91a9dfc
RD
164public:
165 wxPyRectangleShape(double width = 0.0, double height = 0.0)
166 : wxRectangleShape(width, height) {}
167
168 WXSHAPE_DEC_CALLBACKS();
169};
170
2348eaee 171class wxPyControlPoint : public wxControlPoint {
9416aa89 172 DECLARE_DYNAMIC_CLASS(wxPyControlPoint);
2348eaee
RD
173public:
174 wxPyControlPoint(wxPyShapeCanvas *the_canvas = NULL,
175 wxPyShape *object = NULL,
176 double size = 0.0, double the_xoffset = 0.0,
177 double the_yoffset = 0.0, int the_type = 0)
178 : wxControlPoint(the_canvas, object, size,
179 the_xoffset, the_yoffset, the_type) {}
180
181 WXSHAPE_DEC_CALLBACKS();
182};
183
e91a9dfc
RD
184
185
186class wxPyBitmapShape : public wxBitmapShape {
9416aa89 187 DECLARE_DYNAMIC_CLASS(wxPyBitmapShape);
e91a9dfc
RD
188public:
189 wxPyBitmapShape() : wxBitmapShape() {}
190
191 WXSHAPE_DEC_CALLBACKS();
192};
193
194
195
196class wxPyDrawnShape : public wxDrawnShape {
9416aa89 197 DECLARE_DYNAMIC_CLASS(wxPyDrawnShape);
e91a9dfc
RD
198public:
199 wxPyDrawnShape() : wxDrawnShape() {}
200
201 WXSHAPE_DEC_CALLBACKS();
202};
203
204
205class wxPyCompositeShape : public wxCompositeShape {
9416aa89 206 DECLARE_DYNAMIC_CLASS(wxPyCompositeShape);
e91a9dfc
RD
207public:
208 wxPyCompositeShape() : wxCompositeShape() {}
209
210 WXSHAPE_DEC_CALLBACKS();
211};
212
213
214class wxPyDividedShape : public wxDividedShape {
9416aa89 215 DECLARE_DYNAMIC_CLASS(wxPyDividedShape);
e91a9dfc
RD
216public:
217 wxPyDividedShape(double width = 0.0, double height = 0.0)
218 : wxDividedShape(width, height) {}
219
220 WXSHAPE_DEC_CALLBACKS();
221};
222
223
224class wxPyDivisionShape : public wxDivisionShape {
9416aa89 225 DECLARE_DYNAMIC_CLASS(wxPyDivisionShape);
e91a9dfc
RD
226public:
227 wxPyDivisionShape() : wxDivisionShape() {}
228
229 WXSHAPE_DEC_CALLBACKS();
230};
231
232
233class wxPyEllipseShape : public wxEllipseShape {
9416aa89 234 DECLARE_DYNAMIC_CLASS(wxPyEllipseShape);
e91a9dfc
RD
235public:
236 wxPyEllipseShape(double width = 0.0, double height = 0.0)
237 : wxEllipseShape(width, height) {}
238
239 WXSHAPE_DEC_CALLBACKS();
240};
241
242
243class wxPyCircleShape : public wxCircleShape {
9416aa89 244 DECLARE_DYNAMIC_CLASS(wxPyCircleShape);
e91a9dfc
RD
245public:
246 wxPyCircleShape(double width = 0.0)
247 : wxCircleShape(width) {}
248
249 WXSHAPE_DEC_CALLBACKS();
250};
251
252
253class wxPyLineShape : public wxLineShape {
9416aa89 254 DECLARE_DYNAMIC_CLASS(wxPyLineShape);
e91a9dfc
RD
255public:
256 wxPyLineShape() : wxLineShape() {}
257
258 WXSHAPE_DEC_CALLBACKS();
259};
260
261
262class wxPyPolygonShape : public wxPolygonShape {
9416aa89 263 DECLARE_DYNAMIC_CLASS(wxPyPolygonShape);
e91a9dfc
RD
264public:
265 wxPyPolygonShape() : wxPolygonShape() {}
266
267 WXSHAPE_DEC_CALLBACKS();
268};
269
270
271class wxPyTextShape : public wxTextShape {
9416aa89 272 DECLARE_DYNAMIC_CLASS(wxPyTextShape);
e91a9dfc
RD
273public:
274 wxPyTextShape(double width = 0.0, double height = 0.0)
275 : wxTextShape(width, height) {}
276
277 WXSHAPE_DEC_CALLBACKS();
278};
279
280
281
282//---------------------------------------------------------------------------
283//---------------------------------------------------------------------------
284#endif
285
9416aa89 286