]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/modules/ogl/oglhelpers.h
wxPython module for OGL added.
[wxWidgets.git] / utils / wxPython / modules / ogl / oglhelpers.h
diff --git a/utils/wxPython/modules/ogl/oglhelpers.h b/utils/wxPython/modules/ogl/oglhelpers.h
new file mode 100644 (file)
index 0000000..1c2804d
--- /dev/null
@@ -0,0 +1,251 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        oglhelpers.h
+// Purpose:     Some Helper functions to help in data conversions in OGL
+//
+// Author:      Robin Dunn
+//
+// Created:     9-Sept-1999
+// RCS-ID:      $Id$
+// Copyright:   (c) 1998 by Total Control Software
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef __wxp_ogl_helpers__
+#define __wxp_ogl_helpers__
+
+
+#include <ogl.h>
+#include <basicp.h>
+#include <constrnt.h>
+#include <bmpshape.h>
+#include <drawn.h>
+
+//---------------------------------------------------------------------------
+// Define a macro that will be used in the class definintions below
+
+#define WXSHAPE_DEC_CALLBACKS()       \
+    DEC_PYCALLBACK__                (OnDelete);             \
+    DEC_PYCALLBACK__DC              (OnDraw);               \
+    DEC_PYCALLBACK__DC              (OnDrawContents);       \
+    DEC_PYCALLBACK__DCBOOL          (OnDrawBranches);       \
+    DEC_PYCALLBACK__DC              (OnMoveLinks);          \
+    DEC_PYCALLBACK__DC              (OnErase);              \
+    DEC_PYCALLBACK__DC              (OnEraseContents);      \
+    DEC_PYCALLBACK__DC              (OnHighlight);          \
+    DEC_PYCALLBACK__2DBL2INT        (OnLeftClick);          \
+    DEC_PYCALLBACK__2DBL2INT        (OnLeftDoubleClick);    \
+    DEC_PYCALLBACK__2DBL2INT        (OnRightClick);         \
+    DEC_PYCALLBACK__2DBL            (OnSize);               \
+    DEC_PYCALLBACK_BOOL_DC4DBLBOOL  (OnMovePre);            \
+    DEC_PYCALLBACK__DC4DBLBOOL      (OnMovePost);           \
+    DEC_PYCALLBACK__BOOL2DBL2INT    (OnDragLeft);           \
+    DEC_PYCALLBACK__2DBL2INT        (OnBeginDragLeft);      \
+    DEC_PYCALLBACK__2DBL2INT        (OnEndDragLeft);        \
+    DEC_PYCALLBACK__BOOL2DBL2INT    (OnDragRight);          \
+    DEC_PYCALLBACK__2DBL2INT        (OnBeginDragRight);     \
+    DEC_PYCALLBACK__2DBL2INT        (OnEndDragRight);       \
+    DEC_PYCALLBACK__DC4DBL          (OnDrawOutline);        \
+    DEC_PYCALLBACK__DC              (OnDrawControlPoints);  \
+    DEC_PYCALLBACK__DC              (OnEraseControlPoints); \
+    DEC_PYCALLBACK__DCBOOL          (OnMoveLink);           \
+    DEC_PYCALLBACK__WXCPBOOL2DBL2INT(OnSizingDragLeft);     \
+    DEC_PYCALLBACK__WXCP2DBL2INT    (OnSizingBeginDragLeft);\
+    DEC_PYCALLBACK__WXCP2DBL2INT    (OnSizingEndDragLeft);  \
+    DEC_PYCALLBACK__2DBL            (OnBeginSize);          \
+    DEC_PYCALLBACK__2DBL            (OnEndSize);            \
+                                                            \
+    PYPRIVATE;
+
+
+#define WXSHAPE_IMP_CALLBACKS(CLASS, PARENT)       \
+    IMP_PYCALLBACK__                (CLASS, PARENT,  OnDelete);             \
+    IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnDraw);               \
+    IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnDrawContents);       \
+    IMP_PYCALLBACK__DCBOOL          (CLASS, PARENT,  OnDrawBranches);       \
+    IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnMoveLinks);          \
+    IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnErase);              \
+    IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnEraseContents);      \
+    IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnHighlight);          \
+    IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnLeftClick);          \
+    IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnLeftDoubleClick);    \
+    IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnRightClick);         \
+    IMP_PYCALLBACK__2DBL            (CLASS, PARENT,  OnSize);               \
+    IMP_PYCALLBACK_BOOL_DC4DBLBOOL  (CLASS, PARENT,  OnMovePre);            \
+    IMP_PYCALLBACK__DC4DBLBOOL      (CLASS, PARENT,  OnMovePost);           \
+    IMP_PYCALLBACK__BOOL2DBL2INT    (CLASS, PARENT,  OnDragLeft);           \
+    IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnBeginDragLeft);      \
+    IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnEndDragLeft);        \
+    IMP_PYCALLBACK__BOOL2DBL2INT    (CLASS, PARENT,  OnDragRight);          \
+    IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnBeginDragRight);     \
+    IMP_PYCALLBACK__2DBL2INT        (CLASS, PARENT,  OnEndDragRight);       \
+    IMP_PYCALLBACK__DC4DBL          (CLASS, PARENT,  OnDrawOutline);        \
+    IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnDrawControlPoints);  \
+    IMP_PYCALLBACK__DC              (CLASS, PARENT,  OnEraseControlPoints); \
+    IMP_PYCALLBACK__DCBOOL          (CLASS, PARENT,  OnMoveLink);           \
+    IMP_PYCALLBACK__WXCPBOOL2DBL2INT(CLASS, PARENT,  OnSizingDragLeft);     \
+    IMP_PYCALLBACK__WXCP2DBL2INT    (CLASS, PARENT,  OnSizingBeginDragLeft);\
+    IMP_PYCALLBACK__WXCP2DBL2INT    (CLASS, PARENT,  OnSizingEndDragLeft);  \
+    IMP_PYCALLBACK__2DBL            (CLASS, PARENT,  OnBeginSize);          \
+    IMP_PYCALLBACK__2DBL            (CLASS, PARENT,  OnEndSize);            \
+
+
+    //  This one may be difficult...
+    //PYCALLBACK__???????       (PARENT,  OnChangeAttachment);
+
+
+
+//---------------------------------------------------------------------------
+// These are prototypes of some helper functions found in oglhelpers.cpp
+
+wxList* wxPy_wxListHelper(PyObject* pyList, char* className);
+wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList);
+
+PyObject* wxPy_ConvertList(wxList* list, char* className);
+
+
+
+//---------------------------------------------------------------------------
+// Classes that derive from the shapes and such, but which know how to turn
+// virtual callbacks into Python callbacks.
+
+class wxPyShapeCanvas : public wxShapeCanvas {
+public:
+    wxPyShapeCanvas(wxWindow* parent = NULL, wxWindowID id = -1,
+                    const wxPoint& pos = wxPyDefaultPosition,
+                    const wxSize& size = wxPyDefaultSize,
+                    long style = wxBORDER)
+        : wxShapeCanvas(parent, id, pos, size, style) {}
+
+    DEC_PYCALLBACK__2DBLINT(OnBeginDragLeft);
+    DEC_PYCALLBACK__2DBLINT(OnBeginDragRight);
+    DEC_PYCALLBACK__2DBLINT(OnEndDragLeft);
+    DEC_PYCALLBACK__2DBLINT(OnEndDragRight);
+    DEC_PYCALLBACK__BOOL2DBLINT(OnDragLeft);
+    DEC_PYCALLBACK__BOOL2DBLINT(OnDragRight);
+    DEC_PYCALLBACK__2DBLINT(OnLeftClick);
+    DEC_PYCALLBACK__2DBLINT(OnRightClick);
+
+    PYPRIVATE;
+};
+
+
+
+class wxPyShapeEvtHandler : public wxShapeEvtHandler {
+public:
+    wxPyShapeEvtHandler(wxShapeEvtHandler *prev = NULL, wxShape *shape = NULL)
+        : wxShapeEvtHandler(prev, shape) {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyShape : public wxShape {
+public:
+    wxPyShape(wxPyShapeCanvas *can = NULL)
+        : wxShape(can) {}
+
+    WXSHAPE_DEC_CALLBACKS();
+
+};
+
+
+class wxPyRectangleShape : public wxRectangleShape {
+public:
+    wxPyRectangleShape(double width = 0.0, double height = 0.0)
+        : wxRectangleShape(width, height) {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+
+class wxPyBitmapShape : public wxBitmapShape {
+public:
+    wxPyBitmapShape() : wxBitmapShape() {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+
+class wxPyDrawnShape : public wxDrawnShape {
+public:
+    wxPyDrawnShape() : wxDrawnShape() {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyCompositeShape : public wxCompositeShape {
+public:
+    wxPyCompositeShape() : wxCompositeShape() {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyDividedShape : public wxDividedShape {
+public:
+    wxPyDividedShape(double width = 0.0, double height = 0.0)
+        : wxDividedShape(width, height) {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyDivisionShape : public wxDivisionShape {
+public:
+    wxPyDivisionShape() : wxDivisionShape() {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyEllipseShape : public wxEllipseShape {
+public:
+    wxPyEllipseShape(double width = 0.0, double height = 0.0)
+        : wxEllipseShape(width, height) {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyCircleShape : public wxCircleShape {
+public:
+    wxPyCircleShape(double width = 0.0)
+        : wxCircleShape(width) {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyLineShape : public wxLineShape {
+public:
+    wxPyLineShape() : wxLineShape() {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyPolygonShape : public wxPolygonShape {
+public:
+    wxPyPolygonShape() : wxPolygonShape() {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+class wxPyTextShape : public wxTextShape {
+public:
+    wxPyTextShape(double width = 0.0, double height = 0.0)
+        : wxTextShape(width, height) {}
+
+    WXSHAPE_DEC_CALLBACKS();
+};
+
+
+
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+#endif
+