]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/modules/ogl/oglbasic.i
wxPython module for OGL added.
[wxWidgets.git] / utils / wxPython / modules / ogl / oglbasic.i
diff --git a/utils/wxPython/modules/ogl/oglbasic.i b/utils/wxPython/modules/ogl/oglbasic.i
new file mode 100644 (file)
index 0000000..ffa9360
--- /dev/null
@@ -0,0 +1,380 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        oglbasic.i
+// Purpose:     SWIG definitions for the wxWindows Object Graphics Library
+//
+// Author:      Robin Dunn
+//
+// Created:     3-Sept-1999
+// RCS-ID:      $Id$
+// Copyright:   (c) 1998 by Total Control Software
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+
+%module oglbasic
+
+%{
+#include "helpers.h"
+#include "oglhelpers.h"
+%}
+
+//---------------------------------------------------------------------------
+
+%include typemaps.i
+%include my_typemaps.i
+
+%extern wx.i
+%import windows.i
+%extern _defs.i
+%extern misc.i
+%extern gdi.i
+
+%include _ogldefs.i
+
+//%extern oglcanvas.i
+
+
+%pragma(python) code = "import wx"
+%pragma(python) code = "from oglcanvas import wxPyShapeCanvasPtr"
+
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+
+
+class wxShapeRegion {
+public:
+    wxShapeRegion();
+    //~wxShapeRegion();
+
+    void SetText(const wxString& s);
+    void SetFont(wxFont *f);
+    void SetMinSize(double w, double h);
+    void SetSize(double w, double h);
+    void SetPosition(double x, double y);
+    void SetProportions(double x, double y);
+    void SetFormatMode(int mode);
+    void SetName(const wxString& s);
+    void SetColour(const wxString& col);
+
+    wxString GetText();
+    wxFont *GetFont();
+    void GetMinSize(double *x, double *y);
+    void GetProportion(double *x, double *y);
+    void GetSize(double *x, double *y);
+    void GetPosition(double *xp, double *yp);
+    int GetFormatMode();
+    wxString GetName();
+    wxString GetColour();
+    wxColour *GetActualColourObject();
+    wxList& GetFormattedText();
+    wxString GetPenColour();
+    int GetPenStyle();
+    void SetPenStyle(int style);
+    void SetPenColour(const wxString& col);
+    wxPen *GetActualPen();
+    double GetWidth();
+    double GetHeight();
+
+    void ClearText();
+};
+
+
+//---------------------------------------------------------------------------
+
+%{
+    WXSHAPE_IMP_CALLBACKS(wxPyShapeEvtHandler,wxShapeEvtHandler);
+%}
+
+
+class wxPyShapeEvtHandler {
+public:
+    wxPyShapeEvtHandler(wxPyShapeEvtHandler *prev = NULL,
+                        wxPyShape *shape = NULL);
+
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+
+    %addmethods {
+        void Destroy() { delete self; }
+    }
+
+    void SetShape(wxPyShape *sh);
+    wxPyShape *GetShape();
+    void SetPreviousHandler(wxPyShapeEvtHandler* handler);
+    wxPyShapeEvtHandler* GetPreviousHandler();
+    wxPyShapeEvtHandler* CreateNewCopy();
+
+    void base_OnDelete();
+    void base_OnDraw(wxDC& dc);
+    void base_OnDrawContents(wxDC& dc);
+    void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
+    void base_OnMoveLinks(wxDC& dc);
+    void base_OnErase(wxDC& dc);
+    void base_OnEraseContents(wxDC& dc);
+    void base_OnHighlight(wxDC& dc);
+    void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
+    void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
+    void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
+    void base_OnSize(double x, double y);
+    bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
+    void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
+    void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
+    void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
+    void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
+    void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
+    void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
+    void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
+    void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
+    void base_OnDrawControlPoints(wxDC& dc);
+    void base_OnEraseControlPoints(wxDC& dc);
+    void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
+    void base_OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
+    void base_OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
+    void base_OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
+    void base_OnBeginSize(double w, double h);
+    void base_OnEndSize(double w, double h);
+//    void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
+};
+
+//---------------------------------------------------------------------------
+%{
+    WXSHAPE_IMP_CALLBACKS(wxPyShape, wxShape);
+%}
+
+
+class wxPyShape : public wxPyShapeEvtHandler {
+public:
+    // wxPyShape(wxPyShapeCanvas *can = NULL);     abstract base class...
+
+    void _setSelf(PyObject* self);
+    %pragma(python) addtomethod = "__init__:self._setSelf(self)"
+
+    %addmethods {
+        void Destroy() { delete self; }
+    }
+
+    void GetBoundingBoxMax(double *OUTPUT, double *OUTPUT);
+    void GetBoundingBoxMin(double *OUTPUT, double *OUTPUT);
+    bool GetPerimeterPoint(double x1, double y1,
+                           double x2, double y2,
+                           double *OUTPUT, double *OUTPUT);
+    wxPyShapeCanvas *GetCanvas();
+    void SetCanvas(wxPyShapeCanvas *the_canvas);
+    void AddToCanvas(wxPyShapeCanvas *the_canvas, wxPyShape *addAfter = NULL);
+    void InsertInCanvas(wxPyShapeCanvas *the_canvas);
+    void RemoveFromCanvas(wxPyShapeCanvas *the_canvas);
+    double GetX();
+    double GetY();
+    void SetX(double x);
+    void SetY(double y);
+    wxPyShape *GetParent();
+    void SetParent(wxPyShape *p);
+    wxPyShape *GetTopAncestor();
+
+
+    // wxList& GetChildren();
+    %addmethods {
+        PyObject* GetChildren() {
+            wxList& list = self->GetChildren();
+            return wxPy_ConvertList(&list, "wxPyShape");
+        }
+    }
+
+
+    void Unlink();
+    void SetDrawHandles(bool drawH);
+    bool GetDrawHandles();
+    void MakeControlPoints();
+    void DeleteControlPoints(wxDC *dc = NULL);
+    void ResetControlPoints();
+    wxPyShapeEvtHandler *GetEventHandler();
+    void SetEventHandler(wxPyShapeEvtHandler *handler);
+    void MakeMandatoryControlPoints();
+    void ResetMandatoryControlPoints();
+    bool Recompute();
+    void CalculateSize();
+    void Select(bool select = TRUE, wxDC* dc = NULL);
+    void SetHighlight(bool hi = TRUE, bool recurse = FALSE);
+    bool IsHighlighted() ;
+    bool Selected();
+    bool AncestorSelected();
+    void SetSensitivityFilter(int sens = OP_ALL, bool recursive = FALSE);
+    int GetSensitivityFilter();
+    void SetDraggable(bool drag, bool recursive = FALSE);
+    void SetFixedSize(bool x, bool y);
+    void GetFixedSize(bool *OUTPUT, bool *OUTPUT) ;
+    bool GetFixedWidth();
+    bool GetFixedHeight();
+    void SetSpaceAttachments(bool sp);
+    bool GetSpaceAttachments() ;
+    void SetShadowMode(int mode, bool redraw = FALSE);
+    int GetShadowMode();
+    bool HitTest(double x, double y, int *OUTPUT, double *OUTPUT);
+    void SetCentreResize(bool cr);
+    bool GetCentreResize();
+    void SetMaintainAspectRatio(bool ar);
+    bool GetMaintainAspectRatio();
+
+
+    // wxList& GetLines();
+    %addmethods {
+        PyObject* GetLines() {
+            wxList& list = self->GetLines();
+            return wxPy_ConvertList(&list, "wxPyLineShape");
+        }
+    }
+
+    void SetDisableLabel(bool flag);
+    bool GetDisableLabel();
+    void SetAttachmentMode(int mode);
+    int GetAttachmentMode();
+    void SetId(long i);
+    long GetId();
+    void SetPen(wxPen *pen);
+    void SetBrush(wxBrush *brush);
+    void SetClientData(wxObject *client_data);
+    wxObject *GetClientData() ;
+    void Show(bool show);
+    bool IsShown();
+    void Move(wxDC& dc, double x1, double y1, bool display = TRUE);
+    void Erase(wxDC& dc);
+    void EraseContents(wxDC& dc);
+    void Draw(wxDC& dc);
+    void Flash();
+    void MoveLinks(wxDC& dc);
+    void DrawContents(wxDC& dc);
+    void SetSize(double x, double y, bool recursive = TRUE);
+    void SetAttachmentSize(double x, double y);
+    void Attach(wxPyShapeCanvas *can);
+    void Detach();
+    bool Constrain();
+    void AddLine(wxPyLineShape *line, wxPyShape *other,
+                 int attachFrom = 0, int attachTo = 0,
+                 int positionFrom = -1, int positionTo = -1);
+    int GetLinePosition(wxPyLineShape* line);
+    void AddText(const wxString& string);
+    wxPen *GetPen();
+    wxBrush *GetBrush();
+    void SetDefaultRegionSize();
+    void FormatText(wxDC& dc, const wxString& s, int regionId = 0);
+    void SetFormatMode(int mode, int regionId = 0);
+    int GetFormatMode(int regionId = 0);
+    void SetFont(wxFont *font, int regionId = 0);
+    wxFont *GetFont(int regionId = 0);
+    void SetTextColour(const wxString& colour, int regionId = 0);
+    wxString GetTextColour(int regionId = 0);
+    int GetNumberOfTextRegions();
+    void SetRegionName(const wxString& name, int regionId = 0);
+    wxString GetRegionName(int regionId);
+    int GetRegionId(const wxString& name);
+    void NameRegions(const wxString& parentName = "");
+
+    // wxList& GetRegions();
+    %addmethods {
+        PyObject* GetRegions() {
+            wxList& list = self->GetRegions();
+            return wxPy_ConvertList(&list, "wxShapeRegion");
+        }
+    }
+
+    void AddRegion(wxShapeRegion *region);
+    void ClearRegions();
+    void AssignNewIds();
+    wxPyShape *FindRegion(const wxString& regionName, int *regionId);
+    void FindRegionNames(wxStringList& list);
+    void ClearText(int regionId = 0);
+    void RemoveLine(wxPyLineShape *line);
+
+#ifdef PROLOGIO
+    void WriteAttributes(wxExpr *clause);
+    void ReadAttributes(wxExpr *clause);
+    void ReadConstraints(wxExpr *clause, wxExprDatabase *database);
+    void WriteRegions(wxExpr *clause);
+    void ReadRegions(wxExpr *clause);
+#endif
+
+    bool GetAttachmentPosition(int attachment, double *x, double *y,
+                               int nth = 0, int no_arcs = 1, wxPyLineShape *line = NULL);
+    int GetNumberOfAttachments();
+    bool AttachmentIsValid(int attachment);
+    bool GetAttachmentPositionEdge(int attachment, double *x, double *y,
+                                   int nth = 0, int no_arcs = 1, wxPyLineShape *line = NULL);
+    wxRealPoint CalcSimpleAttachment(const wxRealPoint& pt1, const wxRealPoint& pt2,
+                                     int nth, int noArcs, wxPyLineShape* line);
+    bool AttachmentSortTest(int attachmentPoint, const wxRealPoint& pt1, const wxRealPoint& pt2);
+    void EraseLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE);
+    void DrawLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE);
+    bool MoveLineToNewAttachment(wxDC& dc, wxPyLineShape *to_move,
+                                 double x, double y);
+
+    //void ApplyAttachmentOrdering(wxList& linesToSort);
+    %addmethods {
+        void ApplyAttachmentOrdering(PyObject* linesToSort) {
+            wxList* list = wxPy_wxListHelper(linesToSort, "wxPyLineShape");
+            self->ApplyAttachmentOrdering(*list);
+            delete list;
+        }
+    }
+
+    wxRealPoint GetBranchingAttachmentRoot(int attachment);
+    bool GetBranchingAttachmentInfo(int attachment, wxRealPoint& root, wxRealPoint& neck,
+                                    wxRealPoint& shoulder1, wxRealPoint& shoulder2);
+    bool GetBranchingAttachmentPoint(int attachment, int n, wxRealPoint& attachmentPoint,
+                                     wxRealPoint& stemPoint);
+    int GetAttachmentLineCount(int attachment);
+    void SetBranchNeckLength(int len);
+    int GetBranchNeckLength();
+    void SetBranchStemLength(int len);
+    int GetBranchStemLength();
+    void SetBranchSpacing(int len);
+    int GetBranchSpacing();
+    void SetBranchStyle(long style);
+    long GetBranchStyle();
+    int PhysicalToLogicalAttachment(int physicalAttachment);
+    int LogicalToPhysicalAttachment(int logicalAttachment);
+    bool Draggable();
+    bool HasDescendant(wxPyShape *image);
+    wxPyShape *CreateNewCopy(bool resetMapping = TRUE, bool recompute = TRUE);
+    void Copy(wxPyShape& copy);
+    void CopyWithHandler(wxPyShape& copy);
+    void Rotate(double x, double y, double theta);
+    double GetRotation();
+    void ClearAttachments();
+    void Recentre(wxDC& dc);
+    void ClearPointList(wxList& list);
+
+    void base_OnDelete();
+    void base_OnDraw(wxDC& dc);
+    void base_OnDrawContents(wxDC& dc);
+    void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
+    void base_OnMoveLinks(wxDC& dc);
+    void base_OnErase(wxDC& dc);
+    void base_OnEraseContents(wxDC& dc);
+    void base_OnHighlight(wxDC& dc);
+    void base_OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
+    void base_OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
+    void base_OnRightClick(double x, double y, int keys = 0, int attachment = 0);
+    void base_OnSize(double x, double y);
+    bool base_OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
+    void base_OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE);
+    void base_OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
+    void base_OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
+    void base_OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
+    void base_OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0);
+    void base_OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);
+    void base_OnEndDragRight(double x, double y, int keys=0, int attachment = 0);
+    void base_OnDrawOutline(wxDC& dc, double x, double y, double w, double h);
+    void base_OnDrawControlPoints(wxDC& dc);
+    void base_OnEraseControlPoints(wxDC& dc);
+    void base_OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE);
+    void base_OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0);
+    void base_OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
+    void base_OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0);
+    void base_OnBeginSize(double w, double h);
+    void base_OnEndSize(double w, double h);
+//    void base_OnChangeAttachment(int attachment, wxPyLineShape* line, wxList& ordering);
+};
+
+//---------------------------------------------------------------------------
+