From 51f9082c964fda6ba90aa5b503a06f22c5a9ee60 Mon Sep 17 00:00:00 2001 From: Maxime Curioni Date: Fri, 25 Jul 2008 21:56:06 +0000 Subject: soc-2008-mxcurioni: added (but did not test) NonTVertex and TVertex classes. All Interface0D structures have been implemented --- .../freestyle/intern/python/BPy_Interface0D.cpp | 12 + .../Interface0D/ViewVertex/BPy_NonTVertex.cpp | 242 +++++++++------ .../python/Interface0D/ViewVertex/BPy_NonTVertex.h | 31 ++ .../python/Interface0D/ViewVertex/BPy_TVertex.cpp | 333 ++++++++++++--------- .../python/Interface0D/ViewVertex/BPy_TVertex.h | 31 ++ source/blender/freestyle/intern/view_map/ViewMap.h | 4 +- .../freestyle/intern/view_map/ViewMapIO.cpp | 2 +- 7 files changed, 427 insertions(+), 228 deletions(-) create mode 100644 source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.h create mode 100644 source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.h (limited to 'source/blender/freestyle/intern') diff --git a/source/blender/freestyle/intern/python/BPy_Interface0D.cpp b/source/blender/freestyle/intern/python/BPy_Interface0D.cpp index defe76464eb..506fc3b4e9d 100644 --- a/source/blender/freestyle/intern/python/BPy_Interface0D.cpp +++ b/source/blender/freestyle/intern/python/BPy_Interface0D.cpp @@ -5,6 +5,8 @@ #include "Interface0D/CurvePoint/BPy_StrokeVertex.h" #include "Interface0D/BPy_SVertex.h" #include "Interface0D/BPy_ViewVertex.h" +#include "Interface0D/ViewVertex/BPy_NonTVertex.h" +#include "Interface0D/ViewVertex/BPy_TVertex.h" #include "Interface1D/BPy_FEdge.h" #include "BPy_Nature.h" @@ -164,6 +166,16 @@ PyMODINIT_FUNC Interface0D_Init( PyObject *module ) return; Py_INCREF( &StrokeVertex_Type ); PyModule_AddObject(module, "StrokeVertex", (PyObject *)&StrokeVertex_Type); + + if( PyType_Ready( &NonTVertex_Type ) < 0 ) + return; + Py_INCREF( &NonTVertex_Type ); + PyModule_AddObject(module, "NonTVertex", (PyObject *)&NonTVertex_Type); + + if( PyType_Ready( &TVertex_Type ) < 0 ) + return; + Py_INCREF( &TVertex_Type ); + PyModule_AddObject(module, "TVertex", (PyObject *)&TVertex_Type); } //------------------------INSTANCE METHODS ---------------------------------- 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 772a385139e..206674a20a5 100644 --- a/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.cpp +++ b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.cpp @@ -1,132 +1,192 @@ - PyObject *_wrap_NonTVertex_getExactTypeName(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getX(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getY(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getZ(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getPoint3D(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getProjectedX(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getProjectedY(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getProjectedZ(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getPoint2D(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_getId(PyObject *self , PyObject *args) { -} - +#include "BPy_NonTVertex.h" + +#include "../../BPy_Convert.h" +#include "../BPy_SVertex.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/////////////////////////////////////////////////////////////////////////////////////////// + +/*--------------- Python API function prototypes for NonTVertex___init__ instance -----------*/ +static int NonTVertex___init__(BPy_NonTVertex *self, PyObject *args, PyObject *kwds); + +static PyObject * NonTVertex_castToSVertex( BPy_NonTVertex *self ); +static PyObject * NonTVertex_castToViewVertex( BPy_NonTVertex *self ); +static PyObject * NonTVertex_castToNonTVertex( BPy_NonTVertex *self ); +static PyObject * NonTVertex_svertex( BPy_NonTVertex *self ); +static PyObject * NonTVertex_setSVertex( BPy_NonTVertex *self, PyObject *args); + +/*----------------------NonTVertex instance definitions ----------------------------*/ +static PyMethodDef BPy_NonTVertex_methods[] = { +// {"__copy__", ( PyCFunction ) NonTVertex___copy__, METH_NOARGS, "( )Cloning method."}, + {"castToSVertex", ( PyCFunction ) NonTVertex_castToSVertex, METH_NOARGS, "( )Cast the Interface0D in SVertex if it can be. "}, + {"castToViewVertex", ( PyCFunction ) NonTVertex_castToViewVertex, METH_NOARGS, "( )Cast the Interface0D in ViewVertex if it can be. "}, + {"castToNonTVertex", ( PyCFunction ) NonTVertex_castToNonTVertex, METH_NOARGS, "( )Cast the Interface0D in NonTVertex if it can be. "}, + {"svertex", ( PyCFunction ) NonTVertex_svertex, METH_NOARGS, "( )Returns the SVertex on top of which this NonTVertex is built. "}, + {"setSVertex", ( PyCFunction ) NonTVertex_setSVertex, METH_VARARGS, "(SVertex sv )Sets the SVertex on top of which this NonTVertex is built. "}, + {NULL, NULL, 0, NULL} +}; + +/*-----------------------BPy_NonTVertex type definition ------------------------------*/ + +PyTypeObject NonTVertex_Type = { + PyObject_HEAD_INIT( NULL ) + 0, /* ob_size */ + "NonTVertex", /* tp_name */ + sizeof( BPy_NonTVertex ), /* 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; */ - PyObject *_wrap_NonTVertex_castToSVertex(PyObject *self , PyObject *args) { -} + /* 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; */ - PyObject *_wrap_NonTVertex_castToViewVertex(PyObject *self , PyObject *args) { -} + 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; */ - PyObject *_wrap_NonTVertex_castToNonTVertex(PyObject *self , PyObject *args) { -} + /*** Assigned meaning in release 2.1 ***/ + /*** rich comparisons ***/ + NULL, /* richcmpfunc tp_richcompare; */ + /*** weak reference enabler ***/ + 0, /* long tp_weaklistoffset; */ - PyObject *_wrap_new_NonTVertex__SWIG_0(PyObject *self , PyObject *args) { -} + /*** Added in release 2.2 ***/ + /* Iterators */ + NULL, /* getiterfunc tp_iter; */ + NULL, /* iternextfunc tp_iternext; */ + /*** Attribute descriptor and subclassing stuff ***/ + BPy_NonTVertex_methods, /* struct PyMethodDef *tp_methods; */ + NULL, /* struct PyMemberDef *tp_members; */ + NULL, /* struct PyGetSetDef *tp_getset; */ + &ViewVertex_Type, /* struct _typeobject *tp_base; */ + NULL, /* PyObject *tp_dict; */ + NULL, /* descrgetfunc tp_descr_get; */ + NULL, /* descrsetfunc tp_descr_set; */ + 0, /* long tp_dictoffset; */ + (initproc)NonTVertex___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 +}; - PyObject *_wrap_new_NonTVertex__SWIG_1(PyObject *self , PyObject *args) { -} - PyObject *_wrap_new_NonTVertex(PyObject *self, PyObject *args) { -} +//------------------------INSTANCE METHODS ---------------------------------- +int NonTVertex___init__(BPy_NonTVertex *self, PyObject *args, PyObject *kwds) +{ - PyObject *_wrap_delete_NonTVertex(PyObject *self , PyObject *args) { -} + PyObject *obj = 0; + if (! PyArg_ParseTuple(args, "|O", &obj) ) + return -1; - PyObject *_wrap_NonTVertex_svertex(PyObject *self , PyObject *args) { -} + if( !obj ){ + self->ntv = new NonTVertex(); + } else if( BPy_SVertex_Check(obj) && ((BPy_SVertex *) obj)->sv ) { + self->ntv = new NonTVertex( ((BPy_SVertex *) obj)->sv ); - PyObject *_wrap_NonTVertex_viewedges(PyObject *self , PyObject *args) { -} + } else { + return -1; + } + self->py_vv.vv = self->ntv; + self->py_vv.py_if0D.if0D = self->ntv; - PyObject *_wrap_NonTVertex_SetSVertex(PyObject *self , PyObject *args) { + return 0; } +PyObject * NonTVertex_castToSVertex( BPy_NonTVertex *self ) { + PyObject *py_sv = SVertex_Type.tp_new( &SVertex_Type, 0, 0 ); + ((BPy_SVertex *) py_sv)->sv = self->ntv->castToSVertex(); - PyObject *_wrap_NonTVertex_SetViewEdges(PyObject *self , PyObject *args) { + return py_sv; } +PyObject * NonTVertex_castToViewVertex( BPy_NonTVertex *self ) { + PyObject *py_vv = ViewVertex_Type.tp_new( &ViewVertex_Type, 0, 0 ); + ((BPy_ViewVertex *) py_vv)->vv = self->ntv->castToViewVertex(); - PyObject *_wrap_NonTVertex_AddIncomingViewEdge(PyObject *self , PyObject *args) { + return py_vv; } +PyObject * NonTVertex_castToNonTVertex( BPy_NonTVertex *self ) { + PyObject *py_ntv = NonTVertex_Type.tp_new( &NonTVertex_Type, 0, 0 ); + ((BPy_NonTVertex *) py_ntv)->ntv = self->ntv->castToNonTVertex(); - PyObject *_wrap_NonTVertex_AddOutgoingViewEdge(PyObject *self , PyObject *args) { + return py_ntv; } +PyObject * NonTVertex_svertex( BPy_NonTVertex *self ) { + if( self->ntv->svertex() ){ + return BPy_SVertex_from_SVertex(*( self->ntv->svertex() )); + } - PyObject *_wrap_NonTVertex_AddViewEdge__SWIG_0(PyObject *self , PyObject *args) { + Py_RETURN_NONE; } +PyObject * NonTVertex_setSVertex( BPy_NonTVertex *self, PyObject *args) { + PyObject *py_sv; - PyObject *_wrap_NonTVertex_AddViewEdge__SWIG_1(PyObject *self , PyObject *args) { -} + if(!( PyArg_ParseTuple(args, "O", &py_sv) && BPy_SVertex_Check(py_sv) )) { + cout << "ERROR: NonTVertex_setSVertex" << endl; + Py_RETURN_NONE; + } + self->ntv->setSVertex( ((BPy_SVertex *) py_sv)->sv ); - PyObject *_wrap_NonTVertex_AddViewEdge(PyObject *self, PyObject *args) { + Py_RETURN_NONE; } - PyObject *_wrap_NonTVertex_Replace(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_edges_end__SWIG_0(PyObject *self , PyObject *args) { -} - +/////////////////////////////////////////////////////////////////////////////////////////// - PyObject *_wrap_NonTVertex_edges_end__SWIG_1(PyObject *self , PyObject *args) { +#ifdef __cplusplus } - - - PyObject *_wrap_NonTVertex_edges_end(PyObject *self, PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_edgesBegin(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_edgesEnd(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_NonTVertex_edgesIterator(PyObject *self , PyObject *args) { -} - - +#endif diff --git a/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.h b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.h new file mode 100644 index 00000000000..13b520d81db --- /dev/null +++ b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.h @@ -0,0 +1,31 @@ +#ifndef FREESTYLE_PYTHON_NONTVERTEX_H +#define FREESTYLE_PYTHON_NONTVERTEX_H + +#include "../BPy_ViewVertex.h" +#include "../../../view_map/ViewMap.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/////////////////////////////////////////////////////////////////////////////////////////// + +#include + +extern PyTypeObject NonTVertex_Type; + +#define BPy_NonTVertex_Check(v) (( (PyObject *) v)->ob_type == &NonTVertex_Type) + +/*---------------------------Python BPy_NonTVertex structure definition----------*/ +typedef struct { + BPy_ViewVertex py_vv; + NonTVertex *ntv; +} BPy_NonTVertex; + +/////////////////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +} +#endif + +#endif /* FREESTYLE_PYTHON_NONTVERTEX_H */ 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 715170c1422..ab8bb72604c 100644 --- a/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.cpp +++ b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.cpp @@ -1,184 +1,249 @@ - PyObject *_wrap_TVertex_getExactTypeName(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getX(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getY(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getZ(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getPoint3D(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getProjectedX(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getProjectedY(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getProjectedZ(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getPoint2D(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_getId(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_castToViewVertex(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_castToTVertex(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_new_TVertex__SWIG_0(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_new_TVertex__SWIG_1(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_new_TVertex(PyObject *self, PyObject *args) { -} - +#include "BPy_TVertex.h" + +#include "../../BPy_Convert.h" +#include "../BPy_SVertex.h" +#include "../../BPy_Id.h" +#include "../../Interface1D/BPy_FEdge.h" +#include "../../Interface1D/BPy_ViewEdge.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/////////////////////////////////////////////////////////////////////////////////////////// + +/*--------------- Python API function prototypes for TVertex___init__ instance -----------*/ +static int TVertex___init__(BPy_TVertex *self, PyObject *args, PyObject *kwds); + +static PyObject * TVertex_castToViewVertex( BPy_TVertex *self ); +static PyObject * TVertex_castToTVertex( BPy_TVertex *self ); +static PyObject * TVertex_frontSVertex( BPy_TVertex *self ); +static PyObject * TVertex_backSVertex( BPy_TVertex *self ); +static PyObject * TVertex_setFrontSVertex( BPy_TVertex *self, PyObject *args); +static PyObject * TVertex_setBackSVertex( BPy_TVertex *self, PyObject *args); +static PyObject * TVertex_setId( BPy_TVertex *self, PyObject *args); +static PyObject * TVertex_getSVertex( BPy_TVertex *self, PyObject *args); +static PyObject * TVertex_mate( BPy_TVertex *self, PyObject *args); + +/*----------------------TVertex instance definitions ----------------------------*/ +static PyMethodDef BPy_TVertex_methods[] = { +// {"__copy__", ( PyCFunction ) TVertex___copy__, METH_NOARGS, "( )Cloning method."}, + {"castToViewVertex", ( PyCFunction ) TVertex_castToViewVertex, METH_NOARGS, "( )Cast the Interface0D in ViewVertex if it can be. "}, + {"castToTVertex", ( PyCFunction ) TVertex_castToTVertex, METH_NOARGS, "( )Cast the Interface0D in TVertex if it can be. "}, + {"frontSVertex", ( PyCFunction ) TVertex_frontSVertex, METH_NOARGS, "( )Returns the SVertex that is closer to the viewpoint. "}, + {"backSVertex", ( PyCFunction ) TVertex_backSVertex, METH_NOARGS, "( )Returns the SVertex that is further away from the viewpoint. "}, + {"setFrontSVertex", ( PyCFunction ) TVertex_setFrontSVertex, METH_VARARGS, "(SVertex sv )Sets the SVertex that is closer to the viewpoint. "}, + {"setBackSVertex", ( PyCFunction ) TVertex_setBackSVertex, METH_VARARGS, "(SVertex sv )Sets the SVertex that is further away from the viewpoint. "}, + {"setId", ( PyCFunction ) TVertex_setId, METH_VARARGS, "(Id id )Sets the Id."}, + {"getSVertex", ( PyCFunction ) TVertex_getSVertex, METH_VARARGS, "(FEdge fe )Returns the SVertex (among the 2) belonging to the FEdge iFEdge "}, + {"mate", ( PyCFunction ) TVertex_mate, METH_VARARGS, "(ViewEdge ve )Returns the mate edge of iEdgeA. For example, if iEdgeA is frontEdgeA, then frontEdgeB is returned. If iEdgeA is frontEdgeB then frontEdgeA is returned. Same for back edges"}, + {NULL, NULL, 0, NULL} +}; + +/*-----------------------BPy_TVertex type definition ------------------------------*/ + +PyTypeObject TVertex_Type = { + PyObject_HEAD_INIT( NULL ) + 0, /* ob_size */ + "TVertex", /* tp_name */ + sizeof( BPy_TVertex ), /* 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; */ - PyObject *_wrap_TVertex_frontSVertex(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_backSVertex(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_frontEdgeA(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_frontEdgeB(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_backEdgeA(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_backEdgeB(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_SetFrontVertex(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_SetBackSVertex(PyObject *self , PyObject *args) { -} + /*** 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; */ - PyObject *_wrap_TVertex_SetFrontEdgeA__SWIG_0(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_SetFrontEdgeA__SWIG_1(PyObject *self , PyObject *args) { -} - - - PyObject *_wrap_TVertex_SetFrontEdgeA(PyObject *self, PyObject *args) { -} - - - PyObject *_wrap_TVertex_SetFrontEdgeB__SWIG_0(PyObject *self , PyObject *args) { -} - + /*** Attribute descriptor and subclassing stuff ***/ + BPy_TVertex_methods, /* struct PyMethodDef *tp_methods; */ + NULL, /* struct PyMemberDef *tp_members; */ + NULL, /* struct PyGetSetDef *tp_getset; */ + &ViewVertex_Type, /* struct _typeobject *tp_base; */ + NULL, /* PyObject *tp_dict; */ + NULL, /* descrgetfunc tp_descr_get; */ + NULL, /* descrsetfunc tp_descr_set; */ + 0, /* long tp_dictoffset; */ + (initproc)TVertex___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 +}; - PyObject *_wrap_TVertex_SetFrontEdgeB__SWIG_1(PyObject *self , PyObject *args) { -} - PyObject *_wrap_TVertex_SetFrontEdgeB(PyObject *self, PyObject *args) { -} +//------------------------INSTANCE METHODS ---------------------------------- +int TVertex___init__(BPy_TVertex *self, PyObject *args, PyObject *kwds) +{ + self->tv = new TVertex(); + self->py_vv.vv = self->tv; + self->py_vv.py_if0D.if0D = self->tv; - PyObject *_wrap_TVertex_SetBackEdgeA__SWIG_0(PyObject *self , PyObject *args) { + return 0; } - PyObject *_wrap_TVertex_SetBackEdgeA__SWIG_1(PyObject *self , PyObject *args) { -} - +PyObject * TVertex_castToViewVertex( BPy_TVertex *self ) { + PyObject *py_vv = ViewVertex_Type.tp_new( &ViewVertex_Type, 0, 0 ); + ((BPy_ViewVertex *) py_vv)->vv = self->tv->castToViewVertex(); - PyObject *_wrap_TVertex_SetBackEdgeA(PyObject *self, PyObject *args) { + return py_vv; } +PyObject * TVertex_castToTVertex( BPy_TVertex *self ) { + PyObject *py_tv = TVertex_Type.tp_new( &TVertex_Type, 0, 0 ); + ((BPy_TVertex *) py_tv)->tv = self->tv->castToTVertex(); - PyObject *_wrap_TVertex_SetBackEdgeB__SWIG_0(PyObject *self , PyObject *args) { + return py_tv; } +PyObject * TVertex_frontSVertex( BPy_TVertex *self ) { + if( self->tv->frontSVertex() ){ + return BPy_SVertex_from_SVertex(*( self->tv->frontSVertex() )); + } - PyObject *_wrap_TVertex_SetBackEdgeB__SWIG_1(PyObject *self , PyObject *args) { + Py_RETURN_NONE; } +PyObject * TVertex_backSVertex( BPy_TVertex *self ) { + if( self->tv->backSVertex() ){ + return BPy_SVertex_from_SVertex(*( self->tv->backSVertex() )); + } - PyObject *_wrap_TVertex_SetBackEdgeB(PyObject *self, PyObject *args) { + Py_RETURN_NONE; } +PyObject * TVertex_setFrontSVertex( BPy_TVertex *self, PyObject *args) { + PyObject *py_sv; - PyObject *_wrap_TVertex_SetId(PyObject *self , PyObject *args) { -} + if(!( PyArg_ParseTuple(args, "O", &py_sv) && BPy_SVertex_Check(py_sv) )) { + cout << "ERROR: TVertex_setFrontSVertex" << endl; + Py_RETURN_NONE; + } + self->tv->setFrontSVertex( ((BPy_SVertex *) py_sv)->sv ); - PyObject *_wrap_TVertex_GetSVertex(PyObject *self , PyObject *args) { + Py_RETURN_NONE; } +PyObject * TVertex_setBackSVertex( BPy_TVertex *self, PyObject *args) { + PyObject *py_sv; - PyObject *_wrap_TVertex_Replace(PyObject *self , PyObject *args) { -} + if(!( PyArg_ParseTuple(args, "O", &py_sv) && BPy_SVertex_Check(py_sv) )) { + cout << "ERROR: TVertex_setBackSVertex" << endl; + Py_RETURN_NONE; + } + self->tv->setBackSVertex( ((BPy_SVertex *) py_sv)->sv ); - PyObject *_wrap_TVertex_mate(PyObject *self , PyObject *args) { + Py_RETURN_NONE; } +PyObject * TVertex_setId( BPy_TVertex *self, PyObject *args) { + PyObject *py_id; - PyObject *_wrap_TVertex_edges_end__SWIG_0(PyObject *self , PyObject *args) { -} + if(!( PyArg_ParseTuple(args, "O", &py_id) && BPy_Id_Check(py_id) )) { + cout << "ERROR: TVertex_setId" << endl; + Py_RETURN_NONE; + } + if( ((BPy_Id *) py_id)->id ) + self->tv->setId(*( ((BPy_Id *) py_id)->id )); - PyObject *_wrap_TVertex_edges_end__SWIG_1(PyObject *self , PyObject *args) { + Py_RETURN_NONE; } +PyObject * TVertex_getSVertex( BPy_TVertex *self, PyObject *args) { + PyObject *py_fe; - PyObject *_wrap_TVertex_edges_end(PyObject *self, PyObject *args) { -} + if(!( PyArg_ParseTuple(args, "O", &py_fe) && BPy_FEdge_Check(py_fe) )) { + cout << "ERROR: TVertex_getSVertex" << endl; + Py_RETURN_NONE; + } + SVertex *sv = self->tv->getSVertex( ((BPy_FEdge *) py_fe)->fe ); + if( sv ){ + return BPy_SVertex_from_SVertex(*( sv )); + } - PyObject *_wrap_TVertex_edgesBegin(PyObject *self , PyObject *args) { + Py_RETURN_NONE; } +PyObject * TVertex_mate( BPy_TVertex *self, PyObject *args) { + PyObject *py_ve; - PyObject *_wrap_TVertex_edgesEnd(PyObject *self , PyObject *args) { -} + if(!( PyArg_ParseTuple(args, "O", &py_ve) && BPy_ViewEdge_Check(py_ve) )) { + cout << "ERROR: TVertex_mate" << endl; + Py_RETURN_NONE; + } + ViewEdge *ve = self->tv->mate( ((BPy_ViewEdge *) py_ve)->ve ); + if( ve ){ + return BPy_ViewEdge_from_ViewEdge(*( ve )); + } - PyObject *_wrap_TVertex_edgesIterator(PyObject *self , PyObject *args) { + Py_RETURN_NONE; } + +/////////////////////////////////////////////////////////////////////////////////////////// - PyObject *_wrap_delete_TVertex(PyObject *self , PyObject *args) { +#ifdef __cplusplus } - - +#endif diff --git a/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.h b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.h new file mode 100644 index 00000000000..a4f564446ef --- /dev/null +++ b/source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.h @@ -0,0 +1,31 @@ +#ifndef FREESTYLE_PYTHON_TVERTEX_H +#define FREESTYLE_PYTHON_TVERTEX_H + +#include "../BPy_ViewVertex.h" +#include "../../../view_map/ViewMap.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/////////////////////////////////////////////////////////////////////////////////////////// + +#include + +extern PyTypeObject TVertex_Type; + +#define BPy_TVertex_Check(v) (( (PyObject *) v)->ob_type == &TVertex_Type) + +/*---------------------------Python BPy_TVertex structure definition----------*/ +typedef struct { + BPy_ViewVertex py_vv; + TVertex *tv; +} BPy_TVertex; + +/////////////////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +} +#endif + +#endif /* FREESTYLE_PYTHON_TVERTEX_H */ diff --git a/source/blender/freestyle/intern/view_map/ViewMap.h b/source/blender/freestyle/intern/view_map/ViewMap.h index 2ddeb198fff..e4b0d915ada 100755 --- a/source/blender/freestyle/intern/view_map/ViewMap.h +++ b/source/blender/freestyle/intern/view_map/ViewMap.h @@ -465,7 +465,7 @@ public: /* modifiers */ /*! Sets the SVertex that is closer to the viewpoint. */ - inline void setFrontVertex(SVertex *iFrontSVertex) {_FrontSVertex = iFrontSVertex;_FrontSVertex->setViewVertex(this);} + inline void setFrontSVertex(SVertex *iFrontSVertex) {_FrontSVertex = iFrontSVertex;_FrontSVertex->setViewVertex(this);} /*! Sets the SVertex that is further away from the viewpoint. */ inline void setBackSVertex(SVertex *iBackSVertex) {_BackSVertex = iBackSVertex;_BackSVertex->setViewVertex(this);} void setFrontEdgeA(ViewEdge *iFrontEdgeA, bool incoming=true); @@ -476,7 +476,7 @@ public: inline void setId(const Id& iId) {_Id = iId;} /*! Returns the SVertex (among the 2) belonging to the FEdge iFEdge */ - inline SVertex * GetSVertex(FEdge *iFEdge) + inline SVertex * getSVertex(FEdge *iFEdge) { const vector& vfEdges = _FrontSVertex->fedges(); vector::const_iterator fe,fend; diff --git a/source/blender/freestyle/intern/view_map/ViewMapIO.cpp b/source/blender/freestyle/intern/view_map/ViewMapIO.cpp index 3591c67ce1f..e42a0df0422 100755 --- a/source/blender/freestyle/intern/view_map/ViewMapIO.cpp +++ b/source/blender/freestyle/intern/view_map/ViewMapIO.cpp @@ -463,7 +463,7 @@ namespace ViewMapIO { // FrontSVertex SVertex* fsv; READ_IF_NON_NULL(fsv, g_vm->SVertices()); - tv->setFrontVertex(fsv); + tv->setFrontSVertex(fsv); // BackSVertex SVertex* bsv; -- cgit v1.2.3