]> git.saurik.com Git - wxWidgets.git/commitdiff
Patch# 893337, Fix for line control point handling in wxLineShape
authorRobin Dunn <robin@alldunn.com>
Fri, 7 May 2004 19:52:02 +0000 (19:52 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 7 May 2004 19:52:02 +0000 (19:52 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/contrib/ogl/_oglshapes2.i
wxPython/contrib/ogl/ogl.i
wxPython/contrib/ogl/oglhelpers.h

index cdbb5de50795453b4df42dbff2bc5e0799d95e37..99b00d4025a04f7b2a1b42984078ec7181c14ae3 100644 (file)
@@ -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;
         }
     }
 
@@ -282,21 +302,7 @@ public:
     %extend {
         PyObject* GetPoints() {
             wxList* list = self->GetPoints();
-            PyObject*   pyList;
-            PyObject*   pyObj;
-            wxObject*   wxObj;
-            wxNode*     node = list->GetFirst();
-
-            bool blocked = wxPyBeginBlockThreads();
-            pyList = PyList_New(0);
-            while (node) {
-                wxObj = node->GetData();
-                pyObj = wxPyConstructObject(wxObj, wxT("wxRealPoint"), 0);
-                PyList_Append(pyList, pyObj);
-                node = node->GetNext();
-            }
-            wxPyEndBlockThreads(blocked);
-            return pyList;
+            return wxPy_ConvertRealPointList(list);
         }
 
         PyObject* GetOriginalPoints() {
index 01bdc1d12f79ac398310a574cfa1accf169c9521..f821f35b9c9548ab241f5a4ee929219b14aed357 100644 (file)
@@ -256,6 +256,26 @@ PyObject*  wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler* source) {
 
 //---------------------------------------------------------------------------
 
+PyObject* wxPy_ConvertRealPointList(wxListBase* list) {
+      PyObject*   pyList;
+      PyObject*   pyObj;
+      wxObject*   wxObj;
+      wxNode*     node = list->GetFirst();
+
+      bool blocked = wxPyBeginBlockThreads();
+      pyList = PyList_New(0);
+      while (node) {
+          wxObj = node->GetData();
+          pyObj = wxPyConstructObject(wxObj, wxT("wxRealPoint"), 0);
+          PyList_Append(pyList, pyObj);
+          node = node->GetNext();
+      }
+      wxPyEndBlockThreads(blocked);
+      return pyList;
+}
+
+//---------------------------------------------------------------------------
+
 PyObject* wxPy_ConvertShapeList(wxListBase* listbase) {
     wxList*     list = (wxList*)listbase;
     PyObject*   pyList;
index 5abeb662b0a2612887fab0e4096449e163c1706f..a4c12d68ff86b0d6a83e369f49d9df0dec752f7b 100644 (file)
@@ -101,7 +101,7 @@ wxList* wxPy_wxListHelper(PyObject* pyList, const wxChar* className);
 wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList);
 PyObject* wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler* source);
 PyObject* wxPy_ConvertShapeList(wxListBase* list);
-
+PyObject* wxPy_ConvertRealPointList(wxListBase* list);
 
 
 //---------------------------------------------------------------------------