]>
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);            \ 
  61 #define WXSHAPE_IMP_CALLBACKS(CLASS, PARENT)       \ 
  62     IMP_PYCALLBACK__                (CLASS, PARENT,  OnDelete);             \ 
  63     IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnDraw);               \ 
  64     IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnDrawContents);       \ 
  65     IMP_PYCALLBACK__DCBOOL          (CLASS, PARENT,  OnDrawBranches);       \ 
  66     IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnMoveLinks);          \ 
  67     IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnErase);              \ 
  68     IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnEraseContents);      \ 
  69     IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnHighlight);          \ 
  70     IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnLeftClick);          \ 
  71     IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnLeftDoubleClick);    \ 
  72     IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnRightClick);         \ 
  73     IMP_PYCALLBACK__2DBL            (CLASS, PARENT,  OnSize);               \ 
  74     IMP_PYCALLBACK_BOOL_DC4DBLBOOL  (CLASS, PARENT,  OnMovePre);            \ 
  75     IMP_PYCALLBACK__DC4DBLBOOL      (CLASS, PARENT,  OnMovePost);           \ 
  76     IMP_PYCALLBACK__BOOL2DBL2INT    (CLASS, PARENT,  OnDragLeft);           \ 
  77     IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnBeginDragLeft);      \ 
  78     IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnEndDragLeft);        \ 
  79     IMP_PYCALLBACK__BOOL2DBL2INT    (CLASS, PARENT,  OnDragRight);          \ 
  80     IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnBeginDragRight);     \ 
  81     IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnEndDragRight);       \ 
  82     IMP_PYCALLBACK__DC4DBL          (CLASS, PARENT,  OnDrawOutline);        \ 
  83     IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnDrawControlPoints);  \ 
  84     IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnEraseControlPoints); \ 
  85     IMP_PYCALLBACK__DCBOOL          (CLASS, PARENT,  OnMoveLink);           \ 
  86     IMP_PYCALLBACK__WXCPBOOL2DBL2INT(CLASS, PARENT,  OnSizingDragLeft);     \ 
  87     IMP_PYCALLBACK__WXCP2DBL2INT    (CLASS, PARENT,  OnSizingBeginDragLeft);\ 
  88     IMP_PYCALLBACK__WXCP2DBL2INT    (CLASS, PARENT,  OnSizingEndDragLeft);  \ 
  89     IMP_PYCALLBACK__2DBL            (CLASS, PARENT,  OnBeginSize);          \ 
  90     IMP_PYCALLBACK__2DBL            (CLASS, PARENT,  OnEndSize);            \ 
  93     //  This one may be difficult... 
  94     //PYCALLBACK__???????       (PARENT,  OnChangeAttachment); 
  98 //--------------------------------------------------------------------------- 
  99 // These are prototypes of some helper functions found in oglhelpers.cpp 
 101 wxList
* wxPy_wxListHelper(PyObject
* pyList
, char* className
); 
 102 wxList
* wxPy_wxRealPoint_ListHelper(PyObject
* pyList
); 
 106 //--------------------------------------------------------------------------- 
 107 // Classes that derive from the shapes and such, but which know how to turn 
 108 // virtual callbacks into Python callbacks. 
 110 class wxPyShapeCanvas 
: public wxShapeCanvas 
{ 
 112     wxPyShapeCanvas(wxWindow
* parent 
= NULL
, wxWindowID id 
= -1, 
 113                     const wxPoint
& pos 
= wxDefaultPosition
, 
 114                     const wxSize
& size 
= wxDefaultSize
, 
 115                     long style 
= wxBORDER
) 
 116         : wxShapeCanvas(parent
, id
, pos
, size
, style
) {} 
 118     DEC_PYCALLBACK__2DBLINT(OnBeginDragLeft
); 
 119     DEC_PYCALLBACK__2DBLINT(OnBeginDragRight
); 
 120     DEC_PYCALLBACK__2DBLINT(OnEndDragLeft
); 
 121     DEC_PYCALLBACK__2DBLINT(OnEndDragRight
); 
 122     DEC_PYCALLBACK__BOOL2DBLINT(OnDragLeft
); 
 123     DEC_PYCALLBACK__BOOL2DBLINT(OnDragRight
); 
 124     DEC_PYCALLBACK__2DBLINT(OnLeftClick
); 
 125     DEC_PYCALLBACK__2DBLINT(OnRightClick
); 
 132 class wxPyShapeEvtHandler 
: public wxShapeEvtHandler 
{ 
 134     wxPyShapeEvtHandler(wxShapeEvtHandler 
*prev 
= NULL
, wxShape 
*shape 
= NULL
) 
 135         : wxShapeEvtHandler(prev
, shape
) {} 
 137     WXSHAPE_DEC_CALLBACKS(); 
 141 class wxPyShape 
: public wxShape 
{ 
 143     wxPyShape(wxPyShapeCanvas 
*can 
= NULL
) 
 146     WXSHAPE_DEC_CALLBACKS(); 
 151 class wxPyRectangleShape 
: public wxRectangleShape 
{ 
 153     wxPyRectangleShape(double width 
= 0.0, double height 
= 0.0) 
 154         : wxRectangleShape(width
, height
) {} 
 156     WXSHAPE_DEC_CALLBACKS(); 
 159 class wxPyControlPoint 
: public wxControlPoint 
{ 
 161     wxPyControlPoint(wxPyShapeCanvas 
*the_canvas 
= NULL
, 
 162                      wxPyShape 
*object 
= NULL
, 
 163                      double size 
= 0.0, double the_xoffset 
= 0.0, 
 164                      double the_yoffset 
= 0.0, int the_type 
= 0) 
 165         : wxControlPoint(the_canvas
, object
, size
, 
 166                          the_xoffset
, the_yoffset
, the_type
) {} 
 168     WXSHAPE_DEC_CALLBACKS(); 
 173 class wxPyBitmapShape 
: public wxBitmapShape 
{ 
 175     wxPyBitmapShape() : wxBitmapShape() {} 
 177     WXSHAPE_DEC_CALLBACKS(); 
 182 class wxPyDrawnShape 
: public wxDrawnShape 
{ 
 184     wxPyDrawnShape() : wxDrawnShape() {} 
 186     WXSHAPE_DEC_CALLBACKS(); 
 190 class wxPyCompositeShape 
: public wxCompositeShape 
{ 
 192     wxPyCompositeShape() : wxCompositeShape() {} 
 194     WXSHAPE_DEC_CALLBACKS(); 
 198 class wxPyDividedShape 
: public wxDividedShape 
{ 
 200     wxPyDividedShape(double width 
= 0.0, double height 
= 0.0) 
 201         : wxDividedShape(width
, height
) {} 
 203     WXSHAPE_DEC_CALLBACKS(); 
 207 class wxPyDivisionShape 
: public wxDivisionShape 
{ 
 209     wxPyDivisionShape() : wxDivisionShape() {} 
 211     WXSHAPE_DEC_CALLBACKS(); 
 215 class wxPyEllipseShape 
: public wxEllipseShape 
{ 
 217     wxPyEllipseShape(double width 
= 0.0, double height 
= 0.0) 
 218         : wxEllipseShape(width
, height
) {} 
 220     WXSHAPE_DEC_CALLBACKS(); 
 224 class wxPyCircleShape 
: public wxCircleShape 
{ 
 226     wxPyCircleShape(double width 
= 0.0) 
 227         : wxCircleShape(width
) {} 
 229     WXSHAPE_DEC_CALLBACKS(); 
 233 class wxPyLineShape 
: public wxLineShape 
{ 
 235     wxPyLineShape() : wxLineShape() {} 
 237     WXSHAPE_DEC_CALLBACKS(); 
 241 class wxPyPolygonShape 
: public wxPolygonShape 
{ 
 243     wxPyPolygonShape() : wxPolygonShape() {} 
 245     WXSHAPE_DEC_CALLBACKS(); 
 249 class wxPyTextShape 
: public wxTextShape 
{ 
 251     wxPyTextShape(double width 
= 0.0, double height 
= 0.0) 
 252         : wxTextShape(width
, height
) {} 
 254     WXSHAPE_DEC_CALLBACKS(); 
 259 //--------------------------------------------------------------------------- 
 260 //---------------------------------------------------------------------------