X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1afc06c2d8c945535175bf32e427aac0bbb704de..e91a9dfcc3589df1d3577bb8d4695f269405a52b:/utils/wxPython/modules/ogl/oglhelpers.cpp diff --git a/utils/wxPython/modules/ogl/oglhelpers.cpp b/utils/wxPython/modules/ogl/oglhelpers.cpp new file mode 100644 index 0000000000..6b6e7b17b9 --- /dev/null +++ b/utils/wxPython/modules/ogl/oglhelpers.cpp @@ -0,0 +1,135 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: oglhelpers.cpp +// Purpose: Some Helper functions to help in data conversions in OGL +// +// Author: Robin Dunn +// +// Created: 3-Sept-1999 +// RCS-ID: $Id$ +// Copyright: (c) 1998 by Total Control Software +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#include +#include "helpers.h" + +//--------------------------------------------------------------------------- +// This one will work for any class for the VERY generic cases, but beyond that +// the helper needs to know more about the type. + +wxList* wxPy_wxListHelper(PyObject* pyList, char* className) { + bool doSave = wxPyRestoreThread(); + if (!PyList_Check(pyList)) { + PyErr_SetString(PyExc_TypeError, "Expected a list object."); + wxPySaveThread(doSave); + return NULL; + } + int count = PyList_Size(pyList); + wxList* list = new wxList; + if (! list) { + PyErr_SetString(PyExc_MemoryError, "Unable to allocate wxList object"); + wxPySaveThread(doSave); + return NULL; + } + for (int x=0; xAppend(wxo); + } + wxPySaveThread(doSave); + return list; +} + +//--------------------------------------------------------------------------- + +wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList) { + bool doSave = wxPyRestoreThread(); + if (!PyList_Check(pyList)) { + PyErr_SetString(PyExc_TypeError, "Expected a list object."); + wxPySaveThread(doSave); + return NULL; + } + int count = PyList_Size(pyList); + wxList* list = new wxList; + if (! list) { + PyErr_SetString(PyExc_MemoryError, "Unable to allocate wxList object"); + wxPySaveThread(doSave); + return NULL; + } + for (int x=0; xAppend((wxObject*) new wxRealPoint(val1, val2)); + + } else { + wxRealPoint* wxo = NULL; + if (SWIG_GetPtrObj(pyo, (void **)&wxo, "_wxRealPoint_p")) { + PyErr_SetString(PyExc_TypeError, "Type error, expected list of wxRealPoint objects or 2-tuples"); + wxPySaveThread(doSave); + return NULL; + } + list->Append((wxObject*) new wxRealPoint(*wxo)); + } + } + wxPySaveThread(doSave); + return list; +} + + +//--------------------------------------------------------------------------- +// Convert a wxList to a Python List + +#include + +PyObject* wxPy_ConvertList(wxList* list, char* className) { + PyObject* pyList; + PyObject* pyObj; + wxObject* wxObj; + wxNode* node = list->First(); + + bool doSave = wxPyRestoreThread(); + pyList = PyList_New(0); + while (node) { + wxObj = node->Data(); +// printf("%s class at %x : %x\n", wxObj->GetClassInfo()->GetClassName(), (void*)wxObj, (void*)((wxShape*)wxObj)->GetParent()); + pyObj = wxPyConstructObject(wxObj, className); + PyList_Append(pyList, pyObj); + node = node->Next(); + } +// for (int x=0; x