]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/contrib/ogl/oglhelpers.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Some Helper functions to help in data conversions in OGL
7 // Created: 9-Sept-1999
9 // Copyright: (c) 1998 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
13 #ifndef __wxp_ogl_helpers__
14 #define __wxp_ogl_helpers__
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>
24 //---------------------------------------------------------------------------
25 // Define a macro that will be used in the class definintions below
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); \
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); \
89 IMP_PYCALLBACK__2DBL (CLASS, PARENT, OnEndSize)
92 // This one may be difficult...
93 //PYCALLBACK__??????? (PARENT, OnChangeAttachment);
97 //---------------------------------------------------------------------------
98 // These are prototypes of some helper functions found in ogl.i
100 wxList
* wxPy_wxListHelper(PyObject
* pyList
, const wxChar
* className
);
101 wxList
* wxPy_wxRealPoint_ListHelper(PyObject
* pyList
);
102 PyObject
* wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler
* source
);
103 PyObject
* wxPy_ConvertShapeList(wxListBase
* list
);
104 PyObject
* wxPy_ConvertRealPointList(wxListBase
* list
);
107 //---------------------------------------------------------------------------
108 // Classes that derive from the shapes and such, but which know how to turn
109 // virtual callbacks into Python callbacks.
111 class wxPyShapeCanvas
: public wxShapeCanvas
{
112 DECLARE_DYNAMIC_CLASS(wxPyShapeCanvas
);
114 wxPyShapeCanvas(wxWindow
* parent
= NULL
, wxWindowID id
= -1,
115 const wxPoint
& pos
= wxDefaultPosition
,
116 const wxSize
& size
= wxDefaultSize
,
117 long style
= wxBORDER
,
118 const wxString
& name
= wxT("shapeCanvas"))
119 : wxShapeCanvas(parent
, id
, pos
, size
, style
, name
) {}
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
);
135 class wxPyShapeEvtHandler
: public wxShapeEvtHandler
{
136 DECLARE_DYNAMIC_CLASS(wxPyShapeEvtHandler
);
138 wxPyShapeEvtHandler(wxShapeEvtHandler
*prev
= NULL
, wxShape
*shape
= NULL
)
139 : wxShapeEvtHandler(prev
, shape
) {}
141 WXSHAPE_DEC_CALLBACKS();
145 class wxPyShape
: public wxShape
{
146 DECLARE_ABSTRACT_CLASS(wxPyShape
);
148 wxPyShape(wxPyShapeCanvas
*can
= NULL
)
151 virtual void GetBoundingBoxMin(double *width
, double *height
)
153 if (width
) *width
= 0.0;
154 if (height
) *height
= 0.0;
157 WXSHAPE_DEC_CALLBACKS();
162 class wxPyRectangleShape
: public wxRectangleShape
{
163 DECLARE_DYNAMIC_CLASS(wxPyRectangleShape
);
165 wxPyRectangleShape(double width
= 0.0, double height
= 0.0)
166 : wxRectangleShape(width
, height
) {}
168 WXSHAPE_DEC_CALLBACKS();
171 class wxPyControlPoint
: public wxControlPoint
{
172 DECLARE_DYNAMIC_CLASS(wxPyControlPoint
);
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
) {}
181 WXSHAPE_DEC_CALLBACKS();
186 class wxPyBitmapShape
: public wxBitmapShape
{
187 DECLARE_DYNAMIC_CLASS(wxPyBitmapShape
);
189 wxPyBitmapShape() : wxBitmapShape() {}
191 WXSHAPE_DEC_CALLBACKS();
196 class wxPyDrawnShape
: public wxDrawnShape
{
197 DECLARE_DYNAMIC_CLASS(wxPyDrawnShape
);
199 wxPyDrawnShape() : wxDrawnShape() {}
201 WXSHAPE_DEC_CALLBACKS();
205 class wxPyCompositeShape
: public wxCompositeShape
{
206 DECLARE_DYNAMIC_CLASS(wxPyCompositeShape
);
208 wxPyCompositeShape() : wxCompositeShape() {}
210 WXSHAPE_DEC_CALLBACKS();
214 class wxPyDividedShape
: public wxDividedShape
{
215 DECLARE_DYNAMIC_CLASS(wxPyDividedShape
);
217 wxPyDividedShape(double width
= 0.0, double height
= 0.0)
218 : wxDividedShape(width
, height
) {}
220 WXSHAPE_DEC_CALLBACKS();
224 class wxPyDivisionShape
: public wxDivisionShape
{
225 DECLARE_DYNAMIC_CLASS(wxPyDivisionShape
);
227 wxPyDivisionShape() : wxDivisionShape() {}
229 WXSHAPE_DEC_CALLBACKS();
233 class wxPyEllipseShape
: public wxEllipseShape
{
234 DECLARE_DYNAMIC_CLASS(wxPyEllipseShape
);
236 wxPyEllipseShape(double width
= 0.0, double height
= 0.0)
237 : wxEllipseShape(width
, height
) {}
239 WXSHAPE_DEC_CALLBACKS();
243 class wxPyCircleShape
: public wxCircleShape
{
244 DECLARE_DYNAMIC_CLASS(wxPyCircleShape
);
246 wxPyCircleShape(double width
= 0.0)
247 : wxCircleShape(width
) {}
249 WXSHAPE_DEC_CALLBACKS();
253 class wxPyLineShape
: public wxLineShape
{
254 DECLARE_DYNAMIC_CLASS(wxPyLineShape
);
256 wxPyLineShape() : wxLineShape() {}
258 WXSHAPE_DEC_CALLBACKS();
262 class wxPyPolygonShape
: public wxPolygonShape
{
263 DECLARE_DYNAMIC_CLASS(wxPyPolygonShape
);
265 wxPyPolygonShape() : wxPolygonShape() {}
267 WXSHAPE_DEC_CALLBACKS();
271 class wxPyTextShape
: public wxTextShape
{
272 DECLARE_DYNAMIC_CLASS(wxPyTextShape
);
274 wxPyTextShape(double width
= 0.0, double height
= 0.0)
275 : wxTextShape(width
, height
) {}
277 WXSHAPE_DEC_CALLBACKS();
282 //---------------------------------------------------------------------------
283 //---------------------------------------------------------------------------