Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-08-03 02:39:21 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-08-03 02:39:21 +0400
commite2eb4d567c27b0ea58dd6c1687dcd9538b64202e (patch)
treebfacd3a92bf1754cca773d115d291d3aa29599c8 /source/blender/freestyle/intern/python/Interface0D
parent74027eafcbdb4de4fea48d0fbc765553f9294078 (diff)
Fixed the handling of constructor arguments in the following Python
types: Interface0D, SVertex, ViewVertex, StrokeVertex, NonTVertex, and TVertex.
Diffstat (limited to 'source/blender/freestyle/intern/python/Interface0D')
-rw-r--r--source/blender/freestyle/intern/python/Interface0D/BPy_SVertex.cpp11
-rw-r--r--source/blender/freestyle/intern/python/Interface0D/BPy_ViewVertex.cpp8
-rw-r--r--source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp30
-rw-r--r--source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.cpp4
-rw-r--r--source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.cpp2
5 files changed, 37 insertions, 18 deletions
diff --git a/source/blender/freestyle/intern/python/Interface0D/BPy_SVertex.cpp b/source/blender/freestyle/intern/python/Interface0D/BPy_SVertex.cpp
index b3005570843..b8fdfb5cc38 100644
--- a/source/blender/freestyle/intern/python/Interface0D/BPy_SVertex.cpp
+++ b/source/blender/freestyle/intern/python/Interface0D/BPy_SVertex.cpp
@@ -135,7 +135,13 @@ int SVertex___init__(BPy_SVertex *self, PyObject *args, PyObject *kwds)
if (! PyArg_ParseTuple(args, "|OO!", &py_point, &Id_Type, &py_id) )
return -1;
- if( py_point && py_id ) {
+ if( !py_point ) {
+ self->sv = new SVertex();
+
+ } else if( !py_id && BPy_SVertex_Check(py_point) ) {
+ self->sv = new SVertex( *(((BPy_SVertex *)py_point)->sv) );
+
+ } else if( py_point && py_id ) {
Vec3r *v = Vec3r_ptr_from_PyObject(py_point);
if( !v ) {
PyErr_SetString(PyExc_TypeError, "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");
@@ -143,8 +149,7 @@ int SVertex___init__(BPy_SVertex *self, PyObject *args, PyObject *kwds)
}
self->sv = new SVertex( *v, *(py_id->id) );
delete v;
- } else if( !py_point && !py_id ) {
- self->sv = new SVertex();
+
} else {
PyErr_SetString(PyExc_TypeError, "invalid argument(s)");
return -1;
diff --git a/source/blender/freestyle/intern/python/Interface0D/BPy_ViewVertex.cpp b/source/blender/freestyle/intern/python/Interface0D/BPy_ViewVertex.cpp
index edccf65f53a..bd2892fa91a 100644
--- a/source/blender/freestyle/intern/python/Interface0D/BPy_ViewVertex.cpp
+++ b/source/blender/freestyle/intern/python/Interface0D/BPy_ViewVertex.cpp
@@ -11,7 +11,7 @@ extern "C" {
///////////////////////////////////////////////////////////////////////////////////////////
/*--------------- Python API function prototypes for ViewVertex instance -----------*/
-static int ViewVertex___init__(BPy_ViewVertex *self);
+static int ViewVertex___init__( BPy_ViewVertex *self, PyObject *args, PyObject *kwds );
static PyObject * ViewVertex_setNature( BPy_ViewVertex *self, PyObject *args );
static PyObject * ViewVertex_edgesBegin( BPy_ViewVertex *self );
static PyObject * ViewVertex_edgesEnd( BPy_ViewVertex *self );
@@ -116,10 +116,12 @@ PyTypeObject ViewVertex_Type = {
//------------------------INSTANCE METHODS ----------------------------------
-int ViewVertex___init__(BPy_ViewVertex *self )
+int ViewVertex___init__( BPy_ViewVertex *self, PyObject *args, PyObject *kwds )
{
+ if( !PyArg_ParseTuple(args, "") )
+ return -1;
self->vv = 0; // ViewVertex is abstract
- self->py_if0D.if0D = new Interface0D();
+ self->py_if0D.if0D = self->vv;
self->py_if0D.borrowed = 0;
return 0;
}
diff --git a/source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp b/source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp
index b3e709540b3..ed0c6385183 100644
--- a/source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp
+++ b/source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp
@@ -141,24 +141,34 @@ int StrokeVertex___init__(BPy_StrokeVertex *self, PyObject *args, PyObject *kwds
PyObject *obj1 = 0, *obj2 = 0 , *obj3 = 0;
- if (! PyArg_ParseTuple(args, "|OOO", &obj1, &obj2, &obj3) )
+ if (! PyArg_ParseTuple(args, "|OOO!", &obj1, &obj2, &PyFloat_Type, &obj3) )
return -1;
- if( !obj1 && !obj2 && !obj3 ){
+ if( !obj1 ){
self->sv = new StrokeVertex();
- } else if( BPy_CurvePoint_Check(obj1) && ((BPy_CurvePoint *) obj1)->cp ) {
+ } else if( !obj2 && BPy_StrokeVertex_Check(obj1) && ((BPy_StrokeVertex *) obj1)->sv ) {
+ self->sv = new StrokeVertex( *(((BPy_StrokeVertex *) obj1)->sv) );
+
+ } else if( !obj2 && BPy_CurvePoint_Check(obj1) && ((BPy_CurvePoint *) obj1)->cp ) {
self->sv = new StrokeVertex( ((BPy_CurvePoint *) obj1)->cp );
- } else if( BPy_SVertex_Check(obj1) && ((BPy_SVertex *) obj1)->sv ) {
+ } else if( !obj2 && BPy_SVertex_Check(obj1) && ((BPy_SVertex *) obj1)->sv ) {
self->sv = new StrokeVertex( ((BPy_SVertex *) obj1)->sv );
- } else if( BPy_StrokeVertex_Check(obj1) && BPy_StrokeVertex_Check(obj2)
- && ((BPy_StrokeVertex *) obj1)->sv && ((BPy_StrokeVertex *) obj2)->sv) {
-
- self->sv = new StrokeVertex( ((BPy_StrokeVertex *) obj1)->sv,
- ((BPy_StrokeVertex *) obj2)->sv,
- PyFloat_AsDouble( obj3 ) );
+ } else if( obj3 && BPy_StrokeVertex_Check(obj1) && BPy_StrokeVertex_Check(obj2) ) {
+ StrokeVertex *sv1 = ((BPy_StrokeVertex *) obj1)->sv;
+ StrokeVertex *sv2 = ((BPy_StrokeVertex *) obj2)->sv;
+ if( !sv1 || ( sv1->A() == 0 && sv1->B() == 0 ) ) {
+ PyErr_SetString(PyExc_TypeError, "argument 1 is an invalid StrokeVertex object");
+ return -1;
+ }
+ if( !sv2 || ( sv2->A() == 0 && sv2->B() == 0 ) ) {
+ PyErr_SetString(PyExc_TypeError, "argument 2 is an invalid StrokeVertex object");
+ return -1;
+ }
+ self->sv = new StrokeVertex( sv1, sv2, PyFloat_AsDouble( obj3 ) );
+
} else {
PyErr_SetString(PyExc_TypeError, "invalid argument(s)");
return -1;
diff --git a/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.cpp b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.cpp
index 33087c53264..da055195177 100644
--- a/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.cpp
+++ b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.cpp
@@ -117,13 +117,13 @@ int NonTVertex___init__(BPy_NonTVertex *self, PyObject *args, PyObject *kwds)
PyObject *obj = 0;
- if (! PyArg_ParseTuple(args, "|O", &obj) )
+ if (! PyArg_ParseTuple(args, "|O!", &SVertex_Type, &obj) )
return -1;
if( !obj ){
self->ntv = new NonTVertex();
- } else if( BPy_SVertex_Check(obj) && ((BPy_SVertex *) obj)->sv ) {
+ } else if( ((BPy_SVertex *) obj)->sv ) {
self->ntv = new NonTVertex( ((BPy_SVertex *) obj)->sv );
} else {
diff --git a/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.cpp b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.cpp
index 8eae4600b75..1679593cdbe 100644
--- a/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.cpp
+++ b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.cpp
@@ -127,6 +127,8 @@ PyTypeObject TVertex_Type = {
int TVertex___init__(BPy_TVertex *self, PyObject *args, PyObject *kwds)
{
+ if( !PyArg_ParseTuple(args, "") )
+ return -1;
self->tv = new TVertex();
self->py_vv.vv = self->tv;
self->py_vv.py_if0D.if0D = self->tv;