]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/contrib/ogl/_oglshapes2.i
Patch# 893337, Fix for line control point handling in wxLineShape
[wxWidgets.git] / wxPython / contrib / ogl / _oglshapes2.i
index febeead238afa78ee589f5cb4850c3ba87cf1f10..99b00d4025a04f7b2a1b42984078ec7181c14ae3 100644 (file)
@@ -22,7 +22,7 @@
 
 class wxPyEllipseShape : public wxPyShape {
 public:
-    %addtofunc wxPyEllipseShape "self._setOORandCallbackInfo(PyEllipseShape)"
+    %pythonAppend wxPyEllipseShape "self._setOORandCallbackInfo(PyEllipseShape)"
     
     wxPyEllipseShape(double width = 0.0, double height = 0.0);
 
@@ -66,7 +66,7 @@ public:
 
 class wxPyCircleShape : public wxPyEllipseShape {
 public:
-    %addtofunc wxPyCircleShape "self._setOORandCallbackInfo(PyCircleShape)"
+    %pythonAppend wxPyCircleShape "self._setOORandCallbackInfo(PyCircleShape)"
     
     wxPyCircleShape(double width = 0.0);
 
@@ -141,7 +141,7 @@ public:
 
 class wxPyLineShape : public wxPyShape {
 public:
-    %addtofunc wxPyLineShape "self._setOORandCallbackInfo(PyLineShape)"
+    %pythonAppend wxPyLineShape "self._setOORandCallbackInfo(PyLineShape)"
     
     wxPyLineShape();
 
@@ -193,7 +193,27 @@ public:
     %extend {
         PyObject* GetLineControlPoints() {
             wxList* list = self->GetLineControlPoints();
-            return wxPy_ConvertShapeList(list);
+            return wxPy_ConvertRealPointList(list);
+        }
+
+        // part of Patch# 893337
+        void SetLineControlPoints(PyObject* list) {
+            wxList* real_point_list = wxPy_wxRealPoint_ListHelper(list);
+            self->MakeLineControlPoints((int)(real_point_list->GetCount()));
+            wxList* old_control_points = self->GetLineControlPoints();
+            wxNode* old_node = old_control_points->GetFirst();
+            wxNode* real_node = real_point_list->GetFirst();
+            while(old_node)
+            {
+                wxRealPoint* old_point = (wxRealPoint*)old_node->GetData();
+                wxRealPoint* new_point = (wxRealPoint*)real_node->GetData();
+                old_point->x = new_point->x;
+                old_point->y = new_point->y;
+                old_node = old_node->GetNext();
+                real_node = real_node->GetNext();
+            }
+            self->ClearPointList(*real_point_list);
+            delete real_point_list;
         }
     }
 
@@ -209,6 +229,13 @@ public:
     void Unlink();
 
 
+    void SetAlignmentOrientation(bool isEnd, bool isHoriz);
+    void SetAlignmentType(bool isEnd, int alignType);
+    bool GetAlignmentOrientation(bool isEnd);
+    int GetAlignmentType(bool isEnd);
+    int GetAlignmentStart() const;
+    int GetAlignmentEnd() const;
+
     void base_OnDraw(wxDC& dc);
     void base_OnDrawContents(wxDC& dc);
     void base_OnDrawBranches(wxDC& dc, bool erase = FALSE);
@@ -247,7 +274,7 @@ public:
 
 class wxPyPolygonShape : public wxPyShape {
 public:
-    %addtofunc wxPyPolygonShape "self._setOORandCallbackInfo(PyPolygonShape)"
+    %pythonAppend wxPyPolygonShape "self._setOORandCallbackInfo(PyPolygonShape)"
     
     wxPyPolygonShape();
 
@@ -275,12 +302,17 @@ public:
     %extend {
         PyObject* GetPoints() {
             wxList* list = self->GetPoints();
+            return wxPy_ConvertRealPointList(list);
+        }
+
+        PyObject* GetOriginalPoints() {
+            wxList* list = self->GetOriginalPoints();
             PyObject*   pyList;
             PyObject*   pyObj;
             wxObject*   wxObj;
             wxNode*     node = list->GetFirst();
 
-            wxPyBeginBlockThreads();
+            bool blocked = wxPyBeginBlockThreads();
             pyList = PyList_New(0);
             while (node) {
                 wxObj = node->GetData();
@@ -288,11 +320,17 @@ public:
                 PyList_Append(pyList, pyObj);
                 node = node->GetNext();
             }
-            wxPyEndBlockThreads();
+            wxPyEndBlockThreads(blocked);
             return pyList;
-        }
+        }        
     }
 
+    double GetOriginalWidth() const;
+    double GetOriginalHeight() const;
+
+    void SetOriginalWidth(double w);
+    void SetOriginalHeight(double h);
+
     void UpdateOriginalPoints();
 
     void base_OnDraw(wxDC& dc);
@@ -332,7 +370,7 @@ public:
 
 class wxPyTextShape : public wxPyRectangleShape {
 public:
-    %addtofunc wxPyTextShape "self._setOORandCallbackInfo(PyTextShape)"
+    %pythonAppend wxPyTextShape "self._setOORandCallbackInfo(PyTextShape)"
     
     wxPyTextShape(double width = 0.0, double height = 0.0);