diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-02-04 04:23:37 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-02-04 04:23:37 +0400 |
commit | 3c064f4553e4be988fe4fcec450b59b935fa3c80 (patch) | |
tree | 1c3d16fa18865bac305ea1bb0b365308bba26b2d /source/blender/freestyle/intern/python/BPy_Convert.cpp | |
parent | 7f8a17118bef19016e916c5c9775871ccb9e22db (diff) |
* Added a generic helper function for parsing PyObject arguments as N-dimensional float array.
* Local helpers were replaced with the generic one. This also fixed a memory leak in the setter
function StrokeVertex_point_set.
* Made minor code style changes.
Diffstat (limited to 'source/blender/freestyle/intern/python/BPy_Convert.cpp')
-rw-r--r-- | source/blender/freestyle/intern/python/BPy_Convert.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/source/blender/freestyle/intern/python/BPy_Convert.cpp b/source/blender/freestyle/intern/python/BPy_Convert.cpp index 04e778a0f80..59cee23409f 100644 --- a/source/blender/freestyle/intern/python/BPy_Convert.cpp +++ b/source/blender/freestyle/intern/python/BPy_Convert.cpp @@ -601,6 +601,25 @@ Vec3r * Vec3r_ptr_from_PyTuple( PyObject* obj ) { return new Vec3r(x,y,z); } +// helper for argument parsing + +int float_array_from_PyObject(PyObject *obj, float *v, int n) +{ + if (VectorObject_Check(obj) && ((VectorObject *)obj)->size == n) { + for (int i = 0; i < n; i++) + v[i] = ((VectorObject *)obj)->vec[i]; + } else if (PyList_Check(obj) && PyList_Size(obj) == n) { + for (int i = 0; i < n; i++) + v[i] = PyFloat_AsDouble(PyList_GetItem(obj, i)); + } else if (PyTuple_Check(obj) && PyTuple_Size(obj) == n) { + for (int i = 0; i < n; i++) + v[i] = PyFloat_AsDouble(PyTuple_GetItem(obj, i)); + } else { + return 0; + } + return 1; +} + /////////////////////////////////////////////////////////////////////////////////////////// |