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:
authorMaxime Curioni <maxime.curioni@gmail.com>2008-07-17 10:35:30 +0400
committerMaxime Curioni <maxime.curioni@gmail.com>2008-07-17 10:35:30 +0400
commite4748940c0a61171d5c4e45d8d5a9637d05ac429 (patch)
tree12485e1e989e7e1f766c370f92d379ef565599c5 /source/blender/freestyle/intern/python
parentcc1a6b398da9bd2cec78c4242c5b205f079aa4a6 (diff)
soc-2008-mxcurioni: SWIG removal - completed SVertex and CurvePoint classes migration. Stabilized a lot of the code for C++ -> Python conversion. Added the correct rich comparison operator and tested it. Corrected 'dupplicate' typo and changde to __copy__ for Python API.
From now on, when a set should be output (PySet_Type), it is given as a list (PyList_Type). The reason is that it doesn't really matter what we bring back to the Python interpreter. The set is guaranteed in memory on the C++ side. For the CurvePoint class, the userdata variable is not yet ported (and will probably available as a list or a dictionary). The CurvePoint implementation works except for the initialization from other CurvePoints: somehow, the inner variables don't seem to be correctly handled. I do not know if it is a bug in Freestyle or if the CurvePoint object's state is correct for my test case. CurvePoint needs more testing.
Diffstat (limited to 'source/blender/freestyle/intern/python')
-rw-r--r--source/blender/freestyle/intern/python/BinaryPredicate0D.cpp2
-rw-r--r--source/blender/freestyle/intern/python/BinaryPredicate1D.cpp2
-rw-r--r--source/blender/freestyle/intern/python/Convert.cpp67
-rw-r--r--source/blender/freestyle/intern/python/Convert.h4
-rw-r--r--source/blender/freestyle/intern/python/Id.cpp64
-rw-r--r--source/blender/freestyle/intern/python/Interface0D.cpp14
-rw-r--r--source/blender/freestyle/intern/python/Interface0D/CurvePoint.cpp232
-rw-r--r--source/blender/freestyle/intern/python/Interface0D/CurvePoint.h3
-rw-r--r--source/blender/freestyle/intern/python/Interface0D/SVertex.cpp483
-rw-r--r--source/blender/freestyle/intern/python/Interface1D.cpp2
-rw-r--r--source/blender/freestyle/intern/python/Interface1D/FEdge/FEdgeSharp.cpp2
11 files changed, 434 insertions, 441 deletions
diff --git a/source/blender/freestyle/intern/python/BinaryPredicate0D.cpp b/source/blender/freestyle/intern/python/BinaryPredicate0D.cpp
index d76c1ba78ba..67358c65bbf 100644
--- a/source/blender/freestyle/intern/python/BinaryPredicate0D.cpp
+++ b/source/blender/freestyle/intern/python/BinaryPredicate0D.cpp
@@ -153,7 +153,7 @@ PyObject * BinaryPredicate0D___call__( BPy_BinaryPredicate0D *self, PyObject *ar
BPy_Interface0D *obj1, *obj2;
bool b;
- if( !PyArg_ParseTuple(args,(char *)"OO:BinaryPredicate0D___call__", &obj1, obj2) ) {
+ if( !PyArg_ParseTuple(args,(char *)"OO", &obj1, &obj2) ) {
cout << "ERROR: BinaryPredicate0D___call__ " << endl;
return NULL;
}
diff --git a/source/blender/freestyle/intern/python/BinaryPredicate1D.cpp b/source/blender/freestyle/intern/python/BinaryPredicate1D.cpp
index 73d5a3a4232..bf2772ecdcc 100644
--- a/source/blender/freestyle/intern/python/BinaryPredicate1D.cpp
+++ b/source/blender/freestyle/intern/python/BinaryPredicate1D.cpp
@@ -151,7 +151,7 @@ PyObject *BinaryPredicate1D___call__( BPy_BinaryPredicate1D *self, PyObject *arg
BPy_Interface1D *obj1, *obj2;
bool b;
- if( !PyArg_ParseTuple(args,(char *)"OO:BinaryPredicate1D___call__", &obj1, &obj2) ) {
+ if( !PyArg_ParseTuple(args,(char *)"OO", &obj1, &obj2) ) {
cout << "ERROR: BinaryPredicate1D___call__ " << endl;
return NULL;
}
diff --git a/source/blender/freestyle/intern/python/Convert.cpp b/source/blender/freestyle/intern/python/Convert.cpp
index d87848cde8e..59b2406f480 100644
--- a/source/blender/freestyle/intern/python/Convert.cpp
+++ b/source/blender/freestyle/intern/python/Convert.cpp
@@ -7,21 +7,6 @@ extern "C" {
///////////////////////////////////////////////////////////////////////////////////////////
-static char M_Convert_doc[] = "The Blender.Freestyle.Convert utility submodule";
-/*----------------------Freestyle module method def----------------------------*/
-struct PyMethodDef M_Convert_methods[] = {
-// {"testOutput", ( PyCFunction ) Freestyle_testOutput, METH_NOARGS, "() - Return Curve Data name"},
- {NULL, NULL, 0, NULL}
-};
-
-
-//-------------------MODULE INITIALIZATION--------------------------------
-PyObject *Convert_Init( void )
-{
- return Py_InitModule3( "Blender.Freestyle.Convert", M_Convert_methods, M_Convert_doc );
-}
-
-//-------------------------------------------------------------------------
PyObject *PyBool_from_bool( bool b ){
// SWIG_From_bool
@@ -31,32 +16,64 @@ PyObject *PyBool_from_bool( bool b ){
PyObject *Vector_from_Vec2f( Vec2f vec ) {
float vec_data[2]; // because vec->_coord is protected
- vec_data[0] = vec.x(); vec_data[1] = vec.y();
- return newVectorObject( vec_data, 2, Py_NEW);
+
+ if( &vec != 0 ){
+ vec_data[0] = vec.x(); vec_data[1] = vec.y();
+ return newVectorObject( vec_data, 2, Py_NEW);
+ }
+
+ Py_RETURN_NONE;
}
PyObject *Vector_from_Vec3f( Vec3f vec ) {
float vec_data[3]; // because vec->_coord is protected
- vec_data[0] = vec.x(); vec_data[1] = vec.y(); vec_data[2] = vec.z();
- return newVectorObject( vec_data, 3, Py_NEW);
+
+ if( &vec != 0 ){
+ vec_data[0] = vec.x(); vec_data[1] = vec.y(); vec_data[2] = vec.z();
+ return newVectorObject( vec_data, 3, Py_NEW);
+ }
+
+ Py_RETURN_NONE;
}
PyObject *Vector_from_Vec3r( Vec3r vec ) {
float vec_data[3]; // because vec->_coord is protected
- vec_data[0] = vec.x(); vec_data[1] = vec.y(); vec_data[2] = vec.z();
- return newVectorObject( vec_data, 3, Py_NEW);
+
+ if( &vec != 0 ){
+ vec_data[0] = vec.x(); vec_data[1] = vec.y(); vec_data[2] = vec.z();
+ return newVectorObject( vec_data, 3, Py_NEW);
+ }
+
+ Py_RETURN_NONE;
}
PyObject *BPy_Id_from_Id( Id id ) {
BPy_Id *py_id;
- py_id = (BPy_Id *) Id_Type.tp_new( &Id_Type, 0, 0 );
- py_id->id->setFirst( id.getFirst() );
- py_id->id->setSecond( id.getSecond() );
+ if( &id != 0 ) {
+ py_id = (BPy_Id *) Id_Type.tp_new( &Id_Type, 0, 0 );
+ py_id->id = new Id( id.getFirst(), id.getSecond() );
+
+ return (PyObject *)py_id;
+ }
- return (PyObject *)py_id;
+ Py_RETURN_NONE;
}
+PyObject *BPy_SVertex_from_SVertex( SVertex sv ) {
+ BPy_SVertex *py_sv;
+
+ if( &sv != 0 ) {
+ py_sv = (BPy_SVertex *) SVertex_Type.tp_new( &SVertex_Type, 0, 0 );
+ py_sv->sv = new SVertex( sv );
+ py_sv->py_if0D.if0D = py_sv->sv;
+
+ return (PyObject *)py_sv;
+ }
+
+ Py_RETURN_NONE;
+}
+
///////////////////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
diff --git a/source/blender/freestyle/intern/python/Convert.h b/source/blender/freestyle/intern/python/Convert.h
index a2e7eeafd94..ba8e3ea02d2 100644
--- a/source/blender/freestyle/intern/python/Convert.h
+++ b/source/blender/freestyle/intern/python/Convert.h
@@ -5,6 +5,7 @@
using namespace Geometry;
#include "Id.h"
+#include "Interface0D/SVertex.h"
#ifdef __cplusplus
extern "C" {
@@ -16,8 +17,6 @@ extern "C" {
#include "api2_2x/vector.h"
#include "api2_2x/gen_utils.h"
-PyObject *Convert_Init( void );
-
PyObject *PyBool_from_bool( bool b );
PyObject *Vector_from_Vec2f( Vec2f v );
@@ -25,6 +24,7 @@ PyObject *Vector_from_Vec3f( Vec3f v );
PyObject *Vector_from_Vec3r( Vec3r v );
PyObject *BPy_Id_from_Id( Id id );
+PyObject *BPy_SVertex_from_SVertex( SVertex sv );
///////////////////////////////////////////////////////////////////////////////////////////
diff --git a/source/blender/freestyle/intern/python/Id.cpp b/source/blender/freestyle/intern/python/Id.cpp
index 3c769933dcc..4f2964d8060 100644
--- a/source/blender/freestyle/intern/python/Id.cpp
+++ b/source/blender/freestyle/intern/python/Id.cpp
@@ -12,14 +12,12 @@ extern "C" {
static int Id___init__(BPy_Id *self, PyObject *args, PyObject *kwds);
static void Id___dealloc__(BPy_Id *self);
static PyObject * Id___repr__(BPy_Id* self);
+static PyObject * Id_RichCompare(BPy_Id *o1, BPy_Id *o2, int opid);
static PyObject * Id_getFirst( BPy_Id *self );
static PyObject * Id_getSecond( BPy_Id *self);
static PyObject * Id_setFirst( BPy_Id *self , PyObject *args);
static PyObject * Id_setSecond( BPy_Id *self , PyObject *args);
-static PyObject * Id___eq__( BPy_Id *self , PyObject *args);
-static PyObject * Id___ne__( BPy_Id *self , PyObject *args);
-static PyObject * Id___lt__( BPy_Id *self , PyObject *args);
/*----------------------Id instance definitions ----------------------------*/
static PyMethodDef BPy_Id_methods[] = {
@@ -27,9 +25,6 @@ static PyMethodDef BPy_Id_methods[] = {
{"getSecond", ( PyCFunction ) Id_getSecond, METH_NOARGS, "Returns the second Id number" },
{"setFirst", ( PyCFunction ) Id_setFirst, METH_VARARGS, "Sets the first number constituing the Id" },
{"setSecond", ( PyCFunction ) Id_setSecond, METH_VARARGS, "Sets the second number constituing the Id" },
- {"__eq__", ( PyCFunction ) Id___eq__, METH_VARARGS, "Operator ==" },
- {"__ne__", ( PyCFunction ) Id___ne__, METH_VARARGS, "Operator !=" },
- {"__lt__", ( PyCFunction ) Id___lt__, METH_VARARGS, "Operator <" },
{NULL, NULL, 0, NULL}
};
@@ -80,7 +75,7 @@ PyTypeObject Id_Type = {
/*** Assigned meaning in release 2.1 ***/
/*** rich comparisons ***/
- NULL, /* richcmpfunc tp_richcompare; */
+ (richcmpfunc)Id_RichCompare, /* richcmpfunc tp_richcompare; */
/*** weak reference enabler ***/
0, /* long tp_weaklistoffset; */
@@ -170,7 +165,7 @@ PyObject *Id_getSecond( BPy_Id *self) {
PyObject *Id_setFirst( BPy_Id *self , PyObject *args) {
unsigned int i;
- if( !PyArg_ParseTuple(args, (char *)"i:Id_setFirst", i) ) {
+ if( !PyArg_ParseTuple(args, (char *)"i", &i) ) {
cout << "ERROR: Id_setFirst" << endl;
Py_RETURN_NONE;
}
@@ -184,7 +179,7 @@ PyObject *Id_setFirst( BPy_Id *self , PyObject *args) {
PyObject *Id_setSecond( BPy_Id *self , PyObject *args) {
unsigned int i;
- if( !PyArg_ParseTuple(args, (char *)"i:Id_setSecond", i) ) {
+ if( !PyArg_ParseTuple(args, (char *)"i", &i) ) {
cout << "ERROR: Id_setSecond" << endl;
Py_RETURN_NONE;
}
@@ -194,38 +189,29 @@ PyObject *Id_setSecond( BPy_Id *self , PyObject *args) {
Py_RETURN_NONE;
}
-PyObject *Id___eq__( BPy_Id *self , PyObject *args) {
- BPy_Id * other = 0 ;
-
- if( !PyArg_ParseTuple(args, (char *)"O:Id___eq__", &other) ) {
- cout << "ERROR: Id___eq__" << endl;
- Py_RETURN_NONE;
- }
-
- return PyBool_from_bool( self->id == other->id );
-}
-
-
-PyObject *Id___ne__(BPy_Id *self , PyObject *args) {
- BPy_Id * other = 0 ;
-
- if( !PyArg_ParseTuple(args, (char *)"O:Id___ne__", &other) ) {
- cout << "ERROR: Id___ne__" << endl;
- Py_RETURN_NONE;
- }
-
- return PyBool_from_bool( self->id != other->id );
-}
-
-PyObject *Id___lt__(BPy_Id *self , PyObject *args) {
- BPy_Id * other = 0 ;
-
- if( !PyArg_ParseTuple(args, (char *)"O:Id___lt__", &other) ) {
- cout << "ERROR: Id___lt__" << endl;
- Py_RETURN_NONE;
+PyObject * Id_RichCompare(BPy_Id *o1, BPy_Id *o2, int opid) {
+ switch(opid){
+ case Py_LT:
+ return PyBool_from_bool( o1->id->operator<(*(o2->id)) );
+ break;
+ case Py_LE:
+ return PyBool_from_bool( o1->id->operator<(*(o2->id)) || o1->id->operator<(*(o2->id)) );
+ break;
+ case Py_EQ:
+ return PyBool_from_bool( o1->id->operator==(*(o2->id)) );
+ break;
+ case Py_NE:
+ return PyBool_from_bool( o1->id->operator!=(*(o2->id)) );
+ break;
+ case Py_GT:
+ return PyBool_from_bool(!( o1->id->operator<(*(o2->id)) || o1->id->operator<(*(o2->id)) ));
+ break;
+ case Py_GE:
+ return PyBool_from_bool(!( o1->id->operator<(*(o2->id)) ));
+ break;
}
- return PyBool_from_bool( self->id <= other->id );
+ Py_RETURN_NONE;
}
diff --git a/source/blender/freestyle/intern/python/Interface0D.cpp b/source/blender/freestyle/intern/python/Interface0D.cpp
index 216dbaec1e9..27804b3d276 100644
--- a/source/blender/freestyle/intern/python/Interface0D.cpp
+++ b/source/blender/freestyle/intern/python/Interface0D.cpp
@@ -2,6 +2,7 @@
#include "Convert.h"
#include "Interface0D/CurvePoint.h"
+#include "Interface0D/SVertex.h"
#ifdef __cplusplus
extern "C" {
@@ -137,14 +138,19 @@ PyMODINIT_FUNC Interface0D_Init( PyObject *module )
if( PyType_Ready( &Interface0D_Type ) < 0 )
return;
-
- if( PyType_Ready( &CurvePoint_Type ) < 0 )
- return;
-
Py_INCREF( &Interface0D_Type );
PyModule_AddObject(module, "Interface0D", (PyObject *)&Interface0D_Type);
+
+ if( PyType_Ready( &CurvePoint_Type ) < 0 )
+ return;
Py_INCREF( &CurvePoint_Type );
PyModule_AddObject(module, "CurvePoint", (PyObject *)&CurvePoint_Type);
+
+ if( PyType_Ready( &SVertex_Type ) < 0 )
+ return;
+ Py_INCREF( &SVertex_Type );
+ PyModule_AddObject(module, "SVertex", (PyObject *)&SVertex_Type);
+
}
//------------------------INSTANCE METHODS ----------------------------------
diff --git a/source/blender/freestyle/intern/python/Interface0D/CurvePoint.cpp b/source/blender/freestyle/intern/python/Interface0D/CurvePoint.cpp
index e360062b9d6..5a81f07973d 100644
--- a/source/blender/freestyle/intern/python/Interface0D/CurvePoint.cpp
+++ b/source/blender/freestyle/intern/python/Interface0D/CurvePoint.cpp
@@ -11,9 +11,25 @@ extern "C" {
/*--------------- Python API function prototypes for CurvePoint instance -----------*/
static int CurvePoint___init__(BPy_CurvePoint *self, PyObject *args, PyObject *kwds);
+static PyObject * CurvePoint___copy__( BPy_CurvePoint *self );
+static PyObject * CurvePoint_A( BPy_CurvePoint *self );
+static PyObject * CurvePoint_B( BPy_CurvePoint *self );
+static PyObject * CurvePoint_t2d( BPy_CurvePoint *self );
+static PyObject *CurvePoint_SetA( BPy_CurvePoint *self , PyObject *args);
+static PyObject *CurvePoint_SetB( BPy_CurvePoint *self , PyObject *args);
+static PyObject *CurvePoint_SetT2d( BPy_CurvePoint *self , PyObject *args);
+static PyObject *CurvePoint_curvatureFredo( BPy_CurvePoint *self , PyObject *args);
/*----------------------CurvePoint instance definitions ----------------------------*/
static PyMethodDef BPy_CurvePoint_methods[] = {
+ {"__copy__", ( PyCFunction ) CurvePoint___copy__, METH_NOARGS, "( )Cloning method."},
+ {"A", ( PyCFunction ) CurvePoint_A, METH_NOARGS, "( )Returns the first SVertex upon which the CurvePoint is built."},
+ {"B", ( PyCFunction ) CurvePoint_B, METH_NOARGS, "( )Returns the second SVertex upon which the CurvePoint is built."},
+ {"t2d", ( PyCFunction ) CurvePoint_t2d, METH_NOARGS, "( )Returns the interpolation parameter."},
+ {"SetA", ( PyCFunction ) CurvePoint_SetA, METH_VARARGS, "(SVertex sv )Sets the first SVertex upon which to build the CurvePoint."},
+ {"SetB", ( PyCFunction ) CurvePoint_SetB, METH_VARARGS, "(SVertex sv )Sets the second SVertex upon which to build the CurvePoint."},
+ {"SetT2d", ( PyCFunction ) CurvePoint_SetT2d, METH_VARARGS, "( )Sets the 2D interpolation parameter to use."},
+ {"curvatureFredo", ( PyCFunction ) CurvePoint_curvatureFredo, METH_NOARGS, "( )angle in radians."},
{NULL, NULL, 0, NULL}
};
@@ -110,129 +126,113 @@ PyTypeObject CurvePoint_Type = {
int CurvePoint___init__(BPy_CurvePoint *self, PyObject *args, PyObject *kwds)
{
- self->py_if0D.if0D = new CurvePoint();
+ PyObject *obj1 = 0, *obj2 = 0 , *obj3 = 0;
+
+ if (! PyArg_ParseTuple(args, "|OOO", &obj1, &obj2, &obj3) )
+ return -1;
+
+ if( !obj1 && !obj2 && !obj3 ){
+ self->cp = new CurvePoint();
+ } else if( PyFloat_Check(obj3) ) {
+ if( BPy_SVertex_Check(obj1) && BPy_SVertex_Check(obj2) ) {
+ self->cp = new CurvePoint( ((BPy_SVertex *) obj1)->sv,
+ ((BPy_SVertex *) obj2)->sv,
+ PyFloat_AsDouble( obj3 ) );
+ } else if( BPy_CurvePoint_Check(obj1) && BPy_CurvePoint_Check(obj2) ) {
+ self->cp = new CurvePoint( ((BPy_CurvePoint *) obj1)->cp,
+ ((BPy_CurvePoint *) obj2)->cp,
+ PyFloat_AsDouble( obj3 ) );
+ } else {
+ return -1;
+ }
+ } else {
+ return -1;
+ }
+
+ self->py_if0D.if0D = self->cp;
+
return 0;
}
+PyObject * CurvePoint___copy__( BPy_CurvePoint *self ) {
+ BPy_CurvePoint *py_cp;
+
+ py_cp = (BPy_CurvePoint *) CurvePoint_Type.tp_new( &CurvePoint_Type, 0, 0 );
+
+ py_cp->cp = new CurvePoint( *(self->cp) );
+ py_cp->py_if0D.if0D = py_cp->cp;
-///////////////////////////////////////////////////////////////////////////////////////////
+ return (PyObject *) py_cp;
+}
-#ifdef __cplusplus
+PyObject * CurvePoint_A( BPy_CurvePoint *self ) {
+ if( self->cp->A() )
+ return BPy_SVertex_from_SVertex( *(self->cp->A()) );
+
+ Py_RETURN_NONE;
+}
+
+PyObject * CurvePoint_B( BPy_CurvePoint *self ) {
+ if( self->cp->B() )
+ return BPy_SVertex_from_SVertex( *(self->cp->B()) );
+
+ Py_RETURN_NONE;
+}
+
+PyObject * CurvePoint_t2d( BPy_CurvePoint *self ) {
+ return PyFloat_FromDouble( self->cp->t2d() );
+}
+
+PyObject *CurvePoint_SetA( BPy_CurvePoint *self , PyObject *args) {
+ PyObject *py_sv;
+
+ if(!( PyArg_ParseTuple(args, "O", &py_sv) && BPy_SVertex_Check(py_sv) )) {
+ cout << "ERROR: CurvePoint_SetA" << endl;
+ Py_RETURN_NONE;
+ }
+
+ self->cp->SetA( ((BPy_SVertex *) py_sv)->sv );
+
+ Py_RETURN_NONE;
}
-#endif
+PyObject *CurvePoint_SetB( BPy_CurvePoint *self , PyObject *args) {
+ PyObject *py_sv;
-
-//
-// PyObject *_wrap_new_CurvePoint__SWIG_0(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *_wrap_new_CurvePoint__SWIG_1(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *_wrap_new_CurvePoint__SWIG_2(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *_wrap_new_CurvePoint__SWIG_3(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *_wrap_new_CurvePoint(PyObject *self, PyObject *args) {
-// }
-//
-//
-// PyObject *_wrap_delete_CurvePoint(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint___eq__(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_A(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_B(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_t2d(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_SetA(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_SetB(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_SetT2d(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_fedge(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_point2d(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_point3d(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_normal(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_shape(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_occluders_begin(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_occluders_end(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_occluders_empty(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_occluders_size(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_occludee(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_occluded_shape(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_occludee_empty(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_z_discontinuity(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_curvatureFredo(PyObject *self , PyObject *args) {
-// }
-//
-//
-// PyObject *CurvePoint_directionFredo(PyObject *self , PyObject *args) {
-// }
+ if(!( PyArg_ParseTuple(args, "O", &py_sv) && BPy_SVertex_Check(py_sv) )) {
+ cout << "ERROR: CurvePoint_SetB" << endl;
+ Py_RETURN_NONE;
+ }
+ self->cp->SetB( ((BPy_SVertex *) py_sv)->sv );
+ Py_RETURN_NONE;
+}
+
+PyObject *CurvePoint_SetT2d( BPy_CurvePoint *self , PyObject *args) {
+ float t;
+
+ if( !PyArg_ParseTuple(args, "f", &t) ) {
+ cout << "ERROR: CurvePoint_SetT2d" << endl;
+ Py_RETURN_NONE;
+ }
+
+ self->cp->SetT2d( t );
+
+ Py_RETURN_NONE;
+}
+
+PyObject *CurvePoint_curvatureFredo( BPy_CurvePoint *self , PyObject *args) {
+ return PyFloat_FromDouble( self->cp->curvatureFredo() );
+}
+
+///bool operator== (const CurvePoint &b)
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/source/blender/freestyle/intern/python/Interface0D/CurvePoint.h b/source/blender/freestyle/intern/python/Interface0D/CurvePoint.h
index 096de2efed3..ac30f74c4dd 100644
--- a/source/blender/freestyle/intern/python/Interface0D/CurvePoint.h
+++ b/source/blender/freestyle/intern/python/Interface0D/CurvePoint.h
@@ -2,7 +2,7 @@
#define FREESTYLE_PYTHON_CURVEPOINT_H
#include "../Interface0D.h"
-
+#include "../../stroke/Curve.h"
#ifdef __cplusplus
extern "C" {
@@ -20,6 +20,7 @@ extern PyTypeObject CurvePoint_Type;
/*---------------------------Python BPy_CurvePoint structure definition----------*/
typedef struct {
BPy_Interface0D py_if0D;
+ CurvePoint *cp;
} BPy_CurvePoint;
///////////////////////////////////////////////////////////////////////////////////////////
diff --git a/source/blender/freestyle/intern/python/Interface0D/SVertex.cpp b/source/blender/freestyle/intern/python/Interface0D/SVertex.cpp
index 41d01d4b649..fd5b372a1d9 100644
--- a/source/blender/freestyle/intern/python/Interface0D/SVertex.cpp
+++ b/source/blender/freestyle/intern/python/Interface0D/SVertex.cpp
@@ -1,268 +1,251 @@
- PyObject *_wrap_SVertex_getExactTypeName(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getX(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getY(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getZ(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getPoint3D(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getProjectedX(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getProjectedY(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getProjectedZ(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getPoint2D(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getFEdge(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getId(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getNature(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_castToSVertex(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_castToViewVertex(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_castToNonTVertex(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_castToTVertex(PyObject *self , PyObject *args) {
-}
+#include "SVertex.h"
+
+#include "../Convert.h"
+#include "../Id.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+///////////////////////////////////////////////////////////////////////////////////////////
+
+/*--------------- Python API function prototypes for SVertex instance -----------*/
+static int SVertex___init__(BPy_SVertex *self, PyObject *args, PyObject *kwds);
+static PyObject * SVertex___copy__( BPy_SVertex *self );
+static PyObject * SVertex_normals( BPy_SVertex *self );
+static PyObject * SVertex_normalsSize( BPy_SVertex *self );
+static PyObject * SVertex_SetPoint3D( BPy_SVertex *self , PyObject *args);
+static PyObject * SVertex_SetPoint2D( BPy_SVertex *self , PyObject *args);
+static PyObject * SVertex_AddNormal( BPy_SVertex *self , PyObject *args);
+static PyObject * SVertex_SetId( BPy_SVertex *self , PyObject *args);
+/*----------------------SVertex instance definitions ----------------------------*/
+static PyMethodDef BPy_SVertex_methods[] = {
+ {"__copy__", ( PyCFunction ) SVertex___copy__, METH_NOARGS, "( )Cloning method."},
+ {"normals", ( PyCFunction ) SVertex_normals, METH_NOARGS, "Returns the normals for this Vertex as a list. In a smooth surface, a vertex has exactly one normal. In a sharp surface, a vertex can have any number of normals."},
+ {"normalsSize", ( PyCFunction ) SVertex_normalsSize, METH_NOARGS, "Returns the number of different normals for this vertex." },
+ {"SetPoint3D", ( PyCFunction ) SVertex_SetPoint3D, METH_VARARGS, "Sets the 3D coordinates of the SVertex." },
+ {"SetPoint2D", ( PyCFunction ) SVertex_SetPoint2D, METH_VARARGS, "Sets the 3D projected coordinates of the SVertex." },
+ {"AddNormal", ( PyCFunction ) SVertex_AddNormal, METH_VARARGS, "Adds a normal to the Svertex's set of normals. If the same normal is already in the set, nothing changes." },
+ {"SetId", ( PyCFunction ) SVertex_SetId, METH_VARARGS, "Sets the Id." },
+ {NULL, NULL, 0, NULL}
+};
+
+/*-----------------------BPy_SVertex type definition ------------------------------*/
+
+PyTypeObject SVertex_Type = {
+ PyObject_HEAD_INIT( NULL )
+ 0, /* ob_size */
+ "SVertex", /* tp_name */
+ sizeof( BPy_SVertex ), /* tp_basicsize */
+ 0, /* tp_itemsize */
+
+ /* methods */
+ NULL, /* tp_dealloc */
+ NULL, /* printfunc tp_print; */
+ NULL, /* getattrfunc tp_getattr; */
+ NULL, /* setattrfunc tp_setattr; */
+ NULL, /* tp_compare */
+ NULL, /* tp_repr */
+
+ /* Method suites for standard classes */
+
+ NULL, /* PyNumberMethods *tp_as_number; */
+ NULL, /* PySequenceMethods *tp_as_sequence; */
+ NULL, /* PyMappingMethods *tp_as_mapping; */
+
+ /* More standard operations (here for binary compatibility) */
+
+ NULL, /* hashfunc tp_hash; */
+ NULL, /* ternaryfunc tp_call; */
+ NULL, /* reprfunc tp_str; */
+ NULL, /* getattrofunc tp_getattro; */
+ NULL, /* setattrofunc tp_setattro; */
+
+ /* Functions to access object as input/output buffer */
+ NULL, /* PyBufferProcs *tp_as_buffer; */
+
+ /*** Flags to define presence of optional/expanded features ***/
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* long tp_flags; */
+
+ NULL, /* char *tp_doc; Documentation string */
+ /*** Assigned meaning in release 2.0 ***/
+ /* call function for all accessible objects */
+ NULL, /* traverseproc tp_traverse; */
+
+ /* delete references to contained objects */
+ NULL, /* inquiry tp_clear; */
+
+ /*** Assigned meaning in release 2.1 ***/
+ /*** rich comparisons ***/
+ NULL, /* richcmpfunc tp_richcompare; */
+
+ /*** weak reference enabler ***/
+ 0, /* long tp_weaklistoffset; */
+
+ /*** Added in release 2.2 ***/
+ /* Iterators */
+ NULL, /* getiterfunc tp_iter; */
+ NULL, /* iternextfunc tp_iternext; */
+
+ /*** Attribute descriptor and subclassing stuff ***/
+ BPy_SVertex_methods, /* struct PyMethodDef *tp_methods; */
+ NULL, /* struct PyMemberDef *tp_members; */
+ NULL, /* struct PyGetSetDef *tp_getset; */
+ &Interface0D_Type, /* struct _typeobject *tp_base; */
+ NULL, /* PyObject *tp_dict; */
+ NULL, /* descrgetfunc tp_descr_get; */
+ NULL, /* descrsetfunc tp_descr_set; */
+ 0, /* long tp_dictoffset; */
+ (initproc)SVertex___init__, /* initproc tp_init; */
+ NULL, /* allocfunc tp_alloc; */
+ NULL, /* newfunc tp_new; */
+
+ /* Low-level free-memory routine */
+ NULL, /* freefunc tp_free; */
+
+ /* For PyObject_IS_GC */
+ NULL, /* inquiry tp_is_gc; */
+ NULL, /* PyObject *tp_bases; */
+
+ /* method resolution order */
+ NULL, /* PyObject *tp_mro; */
+ NULL, /* PyObject *tp_cache; */
+ NULL, /* PyObject *tp_subclasses; */
+ NULL, /* PyObject *tp_weaklist; */
+ NULL
+};
+
+//-------------------MODULE INITIALIZATION--------------------------------
+
+
+//------------------------INSTANCE METHODS ----------------------------------
+
+int SVertex___init__(BPy_SVertex *self, PyObject *args, PyObject *kwds)
+{
+ PyObject *py_point = 0;
+ BPy_Id *py_id = 0;
+
+ if (! PyArg_ParseTuple(args, "|OO", &py_point, &py_id) )
+ return -1;
+
+ if( py_point && py_id && PyList_Check(py_point) && PyList_Size(py_point) == 3 ) {
+ Vec3r v( PyFloat_AsDouble( PyList_GetItem(py_point, 0) ),
+ PyFloat_AsDouble( PyList_GetItem(py_point, 1) ),
+ PyFloat_AsDouble( PyList_GetItem(py_point, 2) ) );
+
+ self->sv = new SVertex( v, *(py_id->id) );
+ } else {
+ self->sv = new SVertex();
+ }
+
+ self->py_if0D.if0D = self->sv;
+
+ return 0;
+}
+
+PyObject * SVertex___copy__( BPy_SVertex *self ) {
+ BPy_SVertex *py_svertex;
+
+ py_svertex = (BPy_SVertex *) SVertex_Type.tp_new( &SVertex_Type, 0, 0 );
+
+ py_svertex->sv = self->sv->duplicate();
+ py_svertex->py_if0D.if0D = py_svertex->sv;
+
+ return (PyObject *) py_svertex;
+}
+
+
+PyObject * SVertex_normals( BPy_SVertex *self ) {
+ PyObject *py_normals;
+ set< Vec3r > normals;
+
+ py_normals = PyList_New(NULL);
+ normals = self->sv->normals();
+
+ for( set< Vec3r >::iterator set_iterator = normals.begin(); set_iterator != normals.end(); set_iterator++ ) {
+ PyList_Append( py_normals, Vector_from_Vec3r(*set_iterator) );
+ }
+
+ return py_normals;
+}
+
+PyObject * SVertex_normalsSize( BPy_SVertex *self ) {
+ return PyInt_FromLong( self->sv->normalsSize() );
+}
+
+PyObject *SVertex_SetPoint3D( BPy_SVertex *self , PyObject *args) {
+ PyObject *py_point;
+
+ if(!( PyArg_ParseTuple(args, "O", &py_point)
+ && PyList_Check(py_point) && PyList_Size(py_point) == 3 )) {
+ cout << "ERROR: SVertex_SetPoint3D" << endl;
+ Py_RETURN_NONE;
+ }
+
+ Vec3r v( PyFloat_AsDouble( PyList_GetItem(py_point, 0) ),
+ PyFloat_AsDouble( PyList_GetItem(py_point, 1) ),
+ PyFloat_AsDouble( PyList_GetItem(py_point, 2) ) );
+ self->sv->SetPoint3D( v );
+
+ Py_RETURN_NONE;
+}
+
+PyObject *SVertex_SetPoint2D( BPy_SVertex *self , PyObject *args) {
+ PyObject *py_point;
+
+ if(!( PyArg_ParseTuple(args, "O", &py_point)
+ && PyList_Check(py_point) && PyList_Size(py_point) == 3 )) {
+ cout << "ERROR: SVertex_SetPoint2D" << endl;
+ Py_RETURN_NONE;
+ }
+ Vec3r v( PyFloat_AsDouble( PyList_GetItem(py_point, 0) ),
+ PyFloat_AsDouble( PyList_GetItem(py_point, 1) ),
+ PyFloat_AsDouble( PyList_GetItem(py_point, 2) ) );
+ self->sv->SetPoint2D( v );
- PyObject *_wrap_SVertex_userdata_set(PyObject *self , PyObject *args) {
+ Py_RETURN_NONE;
}
+PyObject *SVertex_AddNormal( BPy_SVertex *self , PyObject *args) {
+ PyObject *py_normal;
- PyObject *_wrap_SVertex_userdata_get(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_new_SVertex__SWIG_0(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_new_SVertex__SWIG_1(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_new_SVertex__SWIG_2(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_new_SVertex(PyObject *self, PyObject *args) {
-}
-
-
- PyObject *_wrap_delete_SVertex(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_dupplicate(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex___eq__(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_point3D(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_point2D(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_normals(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_normalsSize(PyObject *self , PyObject *args) {
-}
+ if(!( PyArg_ParseTuple(args, "O", &py_normal)
+ && PyList_Check(py_normal) && PyList_Size(py_normal) == 3 )) {
+ cout << "ERROR: SVertex_AddNormal" << endl;
+ Py_RETURN_NONE;
+ }
+
+ cout << "yoyo" << endl;
+ Vec3r n( PyFloat_AsDouble( PyList_GetItem(py_normal, 0) ),
+ PyFloat_AsDouble( PyList_GetItem(py_normal, 1) ),
+ PyFloat_AsDouble( PyList_GetItem(py_normal, 2) ) );
+ self->sv->AddNormal( n );
- PyObject *_wrap_SVertex_fedges(PyObject *self , PyObject *args) {
+ Py_RETURN_NONE;
}
+PyObject *SVertex_SetId( BPy_SVertex *self , PyObject *args) {
+ BPy_Id *py_id;
- PyObject *_wrap_SVertex_fedges_begin(PyObject *self , PyObject *args) {
-}
+ if( !PyArg_ParseTuple(args, "O", &py_id) ) {
+ cout << "ERROR: SVertex_SetId" << endl;
+ Py_RETURN_NONE;
+ }
+ self->sv->SetId( *(py_id->id) );
- PyObject *_wrap_SVertex_fedges_end(PyObject *self , PyObject *args) {
+ Py_RETURN_NONE;
}
+// virtual bool operator== (const SVertex &iBrother)
+// ViewVertex * viewvertex ()
+// void AddFEdge (FEdge *iFEdge)
- PyObject *_wrap_SVertex_shape__SWIG_0(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_z(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_viewvertex(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_SetPoint3D(PyObject *self , PyObject *args) {
-}
-
+///////////////////////////////////////////////////////////////////////////////////////////
- PyObject *_wrap_SVertex_SetPoint2D(PyObject *self , PyObject *args) {
+#ifdef __cplusplus
}
-
-
- PyObject *_wrap_SVertex_AddNormal(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_setCurvatureInfo(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_getCurvatureInfo(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_setCurvatureFredo(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_setDirectionFredo(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_curvatureFredo(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_directionFredo(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_SetId(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_SetFEdges(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_SetShape(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_SetViewVertex(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_AddFEdge(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_Replace(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_fedge(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_point2d(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_point3d(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_normal(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_shape_id(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_shape__SWIG_1(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_shape(PyObject *self, PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_shape_importance(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_qi(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_occluders_begin(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_occluders_end(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_occluders_empty(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_occluders_size(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_occludee(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_occluded_shape(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_occludee_empty(PyObject *self , PyObject *args) {
-}
-
-
- PyObject *_wrap_SVertex_z_discontinuity(PyObject *self , PyObject *args) {
-}
-
+#endif
diff --git a/source/blender/freestyle/intern/python/Interface1D.cpp b/source/blender/freestyle/intern/python/Interface1D.cpp
index 27bb71b2f50..27c5f4d08ff 100644
--- a/source/blender/freestyle/intern/python/Interface1D.cpp
+++ b/source/blender/freestyle/intern/python/Interface1D.cpp
@@ -183,7 +183,7 @@ PyObject *Interface1D_getTimeStamp( BPy_Interface1D *self ) {
PyObject *Interface1D_setTimeStamp( BPy_Interface1D *self, PyObject *args) {
int timestamp = 0 ;
- if( !PyArg_ParseTuple(args, (char *)"i:Interface1D_setTimeStamp", &timestamp) ) {
+ if( !PyArg_ParseTuple(args, (char *)"i", &timestamp) ) {
cout << "ERROR: Interface1D_setTimeStamp" << endl;
Py_RETURN_NONE;
}
diff --git a/source/blender/freestyle/intern/python/Interface1D/FEdge/FEdgeSharp.cpp b/source/blender/freestyle/intern/python/Interface1D/FEdge/FEdgeSharp.cpp
index d6bd8c6f085..da409ffe209 100644
--- a/source/blender/freestyle/intern/python/Interface1D/FEdge/FEdgeSharp.cpp
+++ b/source/blender/freestyle/intern/python/Interface1D/FEdge/FEdgeSharp.cpp
@@ -1,4 +1,4 @@
- PyObject *_wrap_FEdgeSharp_dupplicate(PyObject *self , PyObject *args) {
+ PyObject *_wrap_FEdgeSharp_duplicate(PyObject *self , PyObject *args) {
}