soc-2008-mxcurioni: added Iterator class, base class for all iterators in Freestyle (on the C++ side). Created the equivalent in Python BPy_Iterator with the simple interface:
- getExactTypeName() - increment() - decrement() - isBegin() - isEnd() Contrary to previously stated, I am reverting back to implementing iterators in the (Python) API, for different reasons: - it will make testing quicker to achieve, as I won't have to recode a big chunk of the original Python files - it will be a base for API refactoring - it won't prevent the use a list-based approach later (it is simple to get it from the Iterator)
This commit is contained in:
@@ -74,6 +74,7 @@ python_sources = [
|
||||
prefix + '/BPy_Interface1D.cpp',
|
||||
prefix + '/Interface1D/BPy_FEdge.cpp',
|
||||
prefix + '/Interface1D/BPy_Stroke.cpp',
|
||||
prefix + '/BPy_Iterator.cpp',
|
||||
prefix + '/BPy_MediumType.cpp',
|
||||
prefix + '/BPy_Nature.cpp',
|
||||
prefix + '/BPy_StrokeAttribute.cpp',
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "BPy_Id.h"
|
||||
#include "BPy_IntegrationType.h"
|
||||
#include "BPy_Interface0D.h"
|
||||
#include "BPy_Iterator.h"
|
||||
#include "Interface0D/BPy_CurvePoint.h"
|
||||
#include "BPy_Interface1D.h"
|
||||
#include "BPy_MediumType.h"
|
||||
@@ -142,6 +143,7 @@ PyObject *Freestyle_Init( void )
|
||||
IntegrationType_Init( module );
|
||||
Interface0D_Init( module );
|
||||
Interface1D_Init( module );
|
||||
Iterator_Init( module );
|
||||
StrokeAttribute_Init( module );
|
||||
StrokeShader_Init( module );
|
||||
UnaryFunction0D_Init( module );
|
||||
|
||||
176
source/blender/freestyle/intern/python/BPy_Iterator.cpp
Normal file
176
source/blender/freestyle/intern/python/BPy_Iterator.cpp
Normal file
@@ -0,0 +1,176 @@
|
||||
#include "BPy_Iterator.h"
|
||||
|
||||
#include "BPy_Convert.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/*--------------- Python API function prototypes for Iterator instance -----------*/
|
||||
static void Iterator___dealloc__(BPy_Iterator *self);
|
||||
static PyObject * Iterator___repr__(BPy_Iterator* self);
|
||||
|
||||
static PyObject * Iterator_getExactTypeName(BPy_Iterator* self);
|
||||
static PyObject * Iterator_increment(BPy_Iterator* self);
|
||||
static PyObject * Iterator_decrement(BPy_Iterator* self);
|
||||
static PyObject * Iterator_isBegin(BPy_Iterator* self);
|
||||
static PyObject * Iterator_isEnd(BPy_Iterator* self);
|
||||
|
||||
/*----------------------Iterator instance definitions ----------------------------*/
|
||||
static PyMethodDef BPy_Iterator_methods[] = {
|
||||
{"getExactTypeName", ( PyCFunction ) Iterator_getExactTypeName, METH_NOARGS, "( )Returns the string of the name of the iterator."},
|
||||
{"increment", ( PyCFunction ) Iterator_increment, METH_NOARGS, "( )Increments iterator."},
|
||||
{"decrement", ( PyCFunction ) Iterator_decrement, METH_NOARGS, "( )Decrements iterator."},
|
||||
{"isBegin", ( PyCFunction ) Iterator_isBegin, METH_NOARGS, "( )Tests if iterator points to beginning."},
|
||||
{"isEnd", ( PyCFunction ) Iterator_isEnd, METH_NOARGS, "( )Tests if iterator points to end."},
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
/*-----------------------BPy_Iterator type definition ------------------------------*/
|
||||
|
||||
PyTypeObject Iterator_Type = {
|
||||
PyObject_HEAD_INIT( NULL )
|
||||
0, /* ob_size */
|
||||
"Iterator", /* tp_name */
|
||||
sizeof( BPy_Iterator ), /* tp_basicsize */
|
||||
0, /* tp_itemsize */
|
||||
|
||||
/* methods */
|
||||
(destructor)Iterator___dealloc__, /* tp_dealloc */
|
||||
NULL, /* printfunc tp_print; */
|
||||
NULL, /* getattrfunc tp_getattr; */
|
||||
NULL, /* setattrfunc tp_setattr; */
|
||||
NULL, /* tp_compare */
|
||||
(reprfunc)Iterator___repr__, /* 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_Iterator_methods, /* struct PyMethodDef *tp_methods; */
|
||||
NULL, /* struct PyMemberDef *tp_members; */
|
||||
NULL, /* struct PyGetSetDef *tp_getset; */
|
||||
NULL, /* struct _typeobject *tp_base; */
|
||||
NULL, /* PyObject *tp_dict; */
|
||||
NULL, /* descrgetfunc tp_descr_get; */
|
||||
NULL, /* descrsetfunc tp_descr_set; */
|
||||
0, /* long tp_dictoffset; */
|
||||
NULL, /* initproc tp_init; */
|
||||
NULL, /* allocfunc tp_alloc; */
|
||||
PyType_GenericNew, /* 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--------------------------------
|
||||
PyMODINIT_FUNC Iterator_Init( PyObject *module )
|
||||
{
|
||||
|
||||
if( module == NULL )
|
||||
return;
|
||||
|
||||
if( PyType_Ready( &Iterator_Type ) < 0 )
|
||||
return;
|
||||
Py_INCREF( &Iterator_Type );
|
||||
PyModule_AddObject(module, "Iterator", (PyObject *)&Iterator_Type);
|
||||
|
||||
}
|
||||
|
||||
//------------------------INSTANCE METHODS ----------------------------------
|
||||
|
||||
void Iterator___dealloc__(BPy_Iterator* self)
|
||||
{
|
||||
delete self->it;
|
||||
self->ob_type->tp_free((PyObject*)self);
|
||||
}
|
||||
|
||||
PyObject * Iterator___repr__(BPy_Iterator* self)
|
||||
{
|
||||
return PyString_FromFormat("type: %s - address: %p", self->it->getExactTypeName().c_str(), self->it );
|
||||
}
|
||||
|
||||
PyObject * Iterator_getExactTypeName(BPy_Iterator* self) {
|
||||
return PyString_FromString( self->it->getExactTypeName().c_str() );
|
||||
}
|
||||
|
||||
|
||||
PyObject * Iterator_increment(BPy_Iterator* self) {
|
||||
self->it->increment();
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyObject * Iterator_decrement(BPy_Iterator* self) {
|
||||
self->it->decrement();
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyObject * Iterator_isBegin(BPy_Iterator* self) {
|
||||
return PyBool_from_bool( self->it->isBegin() );
|
||||
}
|
||||
|
||||
PyObject * Iterator_isEnd(BPy_Iterator* self) {
|
||||
return PyBool_from_bool( self->it->isEnd() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
35
source/blender/freestyle/intern/python/BPy_Iterator.h
Normal file
35
source/blender/freestyle/intern/python/BPy_Iterator.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef FREESTYLE_PYTHON_ITERATOR_H
|
||||
#define FREESTYLE_PYTHON_ITERATOR_H
|
||||
|
||||
#include "../system/Iterator.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
extern PyTypeObject Iterator_Type;
|
||||
|
||||
#define BPy_Iterator_Check(v) (( (PyObject *) v)->ob_type == &Iterator_Type)
|
||||
|
||||
/*---------------------------Python BPy_Iterator structure definition----------*/
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
Iterator *it;
|
||||
} BPy_Iterator;
|
||||
|
||||
/*---------------------------Python BPy_Iterator visible prototypes-----------*/
|
||||
|
||||
PyMODINIT_FUNC Iterator_Init( PyObject *module );
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* FREESTYLE_PYTHON_ITERATOR_H */
|
||||
@@ -34,13 +34,15 @@
|
||||
# include "../view_map/ViewMapAdvancedIterators.h"
|
||||
# include "Predicates1D.h"
|
||||
|
||||
#include "../system/Iterator.h" //soc
|
||||
|
||||
//using namespace ViewEdgeInternal;
|
||||
|
||||
//
|
||||
// Adjacency iterator used in the chaining process
|
||||
//
|
||||
///////////////////////////////////////////////////////////
|
||||
class LIB_STROKE_EXPORT AdjacencyIterator{
|
||||
class LIB_STROKE_EXPORT AdjacencyIterator : Iterator {
|
||||
protected:
|
||||
ViewVertexInternal::orientedViewEdgeIterator _internalIterator;
|
||||
bool _restrictToSelection;
|
||||
@@ -71,10 +73,10 @@ public:
|
||||
virtual ~AdjacencyIterator(){
|
||||
}
|
||||
|
||||
inline bool isEnd(){
|
||||
virtual inline bool isEnd(){
|
||||
return _internalIterator.isEnd();
|
||||
}
|
||||
inline bool isBegin(){
|
||||
virtual inline bool isBegin(){
|
||||
return _internalIterator.isBegin();
|
||||
}
|
||||
/*! Returns true if the current ViewEdge is is coming
|
||||
@@ -94,8 +96,8 @@ public:
|
||||
increment();
|
||||
return tmp;
|
||||
}
|
||||
void increment();
|
||||
|
||||
virtual void increment();
|
||||
|
||||
protected:
|
||||
bool isValid(ViewEdge* edge);
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
/* ----------------------------------------------------------------------------
|
||||
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||
* Version 1.3.31
|
||||
* Version 1.3.35
|
||||
*
|
||||
* This file is not intended to be easily readable and contains a number of
|
||||
* coding conventions designed to improve portability and efficiency. Do not make
|
||||
@@ -73,7 +73,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction0DVoid : public UnaryFunction0D<void >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction0DVoid : public UnaryFunction0D< void >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction0DVoid(PyObject *self);
|
||||
@@ -119,7 +119,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction0DUnsigned : public UnaryFunction0D<unsigned int >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction0DUnsigned : public UnaryFunction0D< unsigned int >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction0DUnsigned(PyObject *self);
|
||||
@@ -165,7 +165,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction0DFloat : public UnaryFunction0D<float >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction0DFloat : public UnaryFunction0D< float >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction0DFloat(PyObject *self);
|
||||
@@ -211,7 +211,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction0DDouble : public UnaryFunction0D<double >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction0DDouble : public UnaryFunction0D< double >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction0DDouble(PyObject *self);
|
||||
@@ -257,13 +257,13 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction0DVec2f : public UnaryFunction0D<Geometry::Vec2f >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction0DVec2f : public UnaryFunction0D< Geometry::Vec2f >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction0DVec2f(PyObject *self);
|
||||
virtual ~SwigDirector_UnaryFunction0DVec2f();
|
||||
virtual std::string getName() const;
|
||||
virtual VecMat::Vec2<float > operator ()(Interface0DIterator &iter);
|
||||
virtual VecMat::Vec2< float > operator ()(Interface0DIterator &iter);
|
||||
|
||||
|
||||
/* Internal Director utilities */
|
||||
@@ -303,13 +303,13 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction0DVec3f : public UnaryFunction0D<Geometry::Vec3f >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction0DVec3f : public UnaryFunction0D< Geometry::Vec3f >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction0DVec3f(PyObject *self);
|
||||
virtual ~SwigDirector_UnaryFunction0DVec3f();
|
||||
virtual std::string getName() const;
|
||||
virtual VecMat::Vec3<float > operator ()(Interface0DIterator &iter);
|
||||
virtual VecMat::Vec3< float > operator ()(Interface0DIterator &iter);
|
||||
|
||||
|
||||
/* Internal Director utilities */
|
||||
@@ -349,7 +349,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction0DId : public UnaryFunction0D<Id >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction0DId : public UnaryFunction0D< Id >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction0DId(PyObject *self);
|
||||
@@ -395,7 +395,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction1DVoid : public UnaryFunction1D<void >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction1DVoid : public UnaryFunction1D< void >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction1DVoid(PyObject *self);
|
||||
@@ -442,7 +442,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction1DUnsigned : public UnaryFunction1D<unsigned int >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction1DUnsigned : public UnaryFunction1D< unsigned int >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction1DUnsigned(PyObject *self);
|
||||
@@ -489,7 +489,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction1DFloat : public UnaryFunction1D<float >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction1DFloat : public UnaryFunction1D< float >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction1DFloat(PyObject *self);
|
||||
@@ -536,7 +536,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction1DDouble : public UnaryFunction1D<double >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction1DDouble : public UnaryFunction1D< double >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction1DDouble(PyObject *self);
|
||||
@@ -583,14 +583,14 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction1DVec2f : public UnaryFunction1D<Geometry::Vec2f >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction1DVec2f : public UnaryFunction1D< Geometry::Vec2f >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction1DVec2f(PyObject *self);
|
||||
SwigDirector_UnaryFunction1DVec2f(PyObject *self, IntegrationType iType);
|
||||
virtual ~SwigDirector_UnaryFunction1DVec2f();
|
||||
virtual std::string getName() const;
|
||||
virtual VecMat::Vec2<float > operator ()(Interface1D &inter);
|
||||
virtual VecMat::Vec2< float > operator ()(Interface1D &inter);
|
||||
|
||||
|
||||
/* Internal Director utilities */
|
||||
@@ -630,14 +630,14 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class SwigDirector_UnaryFunction1DVec3f : public UnaryFunction1D<Geometry::Vec3f >, public Swig::Director {
|
||||
class SwigDirector_UnaryFunction1DVec3f : public UnaryFunction1D< Geometry::Vec3f >, public Swig::Director {
|
||||
|
||||
public:
|
||||
SwigDirector_UnaryFunction1DVec3f(PyObject *self);
|
||||
SwigDirector_UnaryFunction1DVec3f(PyObject *self, IntegrationType iType);
|
||||
virtual ~SwigDirector_UnaryFunction1DVec3f();
|
||||
virtual std::string getName() const;
|
||||
virtual VecMat::Vec3<float > operator ()(Interface1D &inter);
|
||||
virtual VecMat::Vec3< float > operator ()(Interface1D &inter);
|
||||
|
||||
|
||||
/* Internal Director utilities */
|
||||
|
||||
1
source/blender/freestyle/intern/system/Iterator.cpp
Normal file
1
source/blender/freestyle/intern/system/Iterator.cpp
Normal file
@@ -0,0 +1 @@
|
||||
#include "Iterator.h"
|
||||
38
source/blender/freestyle/intern/system/Iterator.h
Normal file
38
source/blender/freestyle/intern/system/Iterator.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#ifndef ITERATOR_H
|
||||
#define ITERATOR_H
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
class Iterator
|
||||
{
|
||||
public:
|
||||
|
||||
virtual ~Iterator() {}
|
||||
|
||||
virtual string getExactTypeName() const {
|
||||
return "Iterator";
|
||||
}
|
||||
|
||||
virtual void increment() {
|
||||
cerr << "Warning: method increment() not implemented" << endl;
|
||||
}
|
||||
|
||||
virtual void decrement() {
|
||||
cerr << "Warning: method decrement() not implemented" << endl;
|
||||
}
|
||||
|
||||
virtual bool isBegin() const {
|
||||
cerr << "Warning: method isBegin() not implemented" << endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool isEnd() const {
|
||||
cerr << "Warning: method isEnd() not implemented" << endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif // ITERATOR_H
|
||||
@@ -38,6 +38,9 @@
|
||||
# include "../geometry/Geom.h"
|
||||
using namespace std;
|
||||
|
||||
#include "../system/Iterator.h" //soc
|
||||
|
||||
|
||||
//
|
||||
// Interface0D
|
||||
//
|
||||
@@ -160,7 +163,7 @@ public:
|
||||
//
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
class Interface0DIteratorNested
|
||||
class Interface0DIteratorNested : Iterator
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
# define VIEWMAPADVANCEDITERATORS_H
|
||||
|
||||
#include "ViewMap.h"
|
||||
|
||||
#include "../system/Iterator.h" //soc
|
||||
|
||||
/**********************************/
|
||||
/* */
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
# define VIEWMAPITERATORS_H
|
||||
|
||||
#include "ViewMap.h"
|
||||
#include "../system/Iterator.h" //soc
|
||||
|
||||
|
||||
/**********************************/
|
||||
/* */
|
||||
@@ -57,7 +59,7 @@ namespace ViewVertexInternal{
|
||||
* An instance of an orientedViewEdgeIterator can only
|
||||
* be obtained from a ViewVertex by calling edgesBegin() or edgesEnd().
|
||||
*/
|
||||
class orientedViewEdgeIterator
|
||||
class orientedViewEdgeIterator : Iterator
|
||||
{
|
||||
public:
|
||||
friend class ViewVertex;
|
||||
@@ -204,7 +206,7 @@ namespace ViewVertexInternal{
|
||||
|
||||
public:
|
||||
/*! increments.*/
|
||||
inline void increment()
|
||||
virtual inline void increment()
|
||||
{
|
||||
if(_Nature & Nature::T_VERTEX)
|
||||
{
|
||||
@@ -336,11 +338,11 @@ namespace ViewEdgeInternal {
|
||||
_previous_edge = _previous_edge->previousEdge();
|
||||
}
|
||||
|
||||
bool isBegin() const {
|
||||
virtual bool isBegin() const {
|
||||
return _vertex == _begin;
|
||||
}
|
||||
|
||||
bool isEnd() const {
|
||||
virtual bool isEnd() const {
|
||||
return (!_vertex) || (_vertex == _begin && _previous_edge);
|
||||
}
|
||||
|
||||
@@ -385,7 +387,7 @@ namespace ViewEdgeInternal {
|
||||
* ::Caution::: the dereferencing operator returns a *pointer* to
|
||||
* the pointed ViewEdge.
|
||||
*/
|
||||
class ViewEdgeIterator
|
||||
class ViewEdgeIterator : Iterator
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This file was automatically generated by SWIG (http://www.swig.org).
|
||||
# Version 1.3.31
|
||||
# Version 1.3.35
|
||||
#
|
||||
# Don't modify this file, modify the SWIG interface instead.
|
||||
# This file is compatible with both classic and new-style classes.
|
||||
@@ -60,7 +60,7 @@ class PySwigIterator(_object):
|
||||
__setattr__ = lambda self, name, value: _swig_setattr(self, PySwigIterator, name, value)
|
||||
__swig_getmethods__ = {}
|
||||
__getattr__ = lambda self, name: _swig_getattr(self, PySwigIterator, name)
|
||||
def __init__(self): raise AttributeError, "No constructor defined"
|
||||
def __init__(self, *args, **kwargs): raise AttributeError, "No constructor defined"
|
||||
__repr__ = _swig_repr
|
||||
__swig_destroy__ = _Freestyle.delete_PySwigIterator
|
||||
__del__ = lambda self : None;
|
||||
@@ -718,7 +718,7 @@ class Interface0DIteratorNested(_object):
|
||||
__setattr__ = lambda self, name, value: _swig_setattr(self, Interface0DIteratorNested, name, value)
|
||||
__swig_getmethods__ = {}
|
||||
__getattr__ = lambda self, name: _swig_getattr(self, Interface0DIteratorNested, name)
|
||||
def __init__(self): raise AttributeError, "No constructor defined"
|
||||
def __init__(self, *args, **kwargs): raise AttributeError, "No constructor defined"
|
||||
__repr__ = _swig_repr
|
||||
__swig_destroy__ = _Freestyle.delete_Interface0DIteratorNested
|
||||
__del__ = lambda self : None;
|
||||
@@ -1437,7 +1437,7 @@ class ViewVertex(Interface0D):
|
||||
__swig_getmethods__ = {}
|
||||
for _s in [Interface0D]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{}))
|
||||
__getattr__ = lambda self, name: _swig_getattr(self, ViewVertex, name)
|
||||
def __init__(self): raise AttributeError, "No constructor defined"
|
||||
def __init__(self, *args, **kwargs): raise AttributeError, "No constructor defined"
|
||||
__repr__ = _swig_repr
|
||||
def getExactTypeName(*args): return _Freestyle.ViewVertex_getExactTypeName(*args)
|
||||
__swig_setmethods__["userdata"] = _Freestyle.ViewVertex_userdata_set
|
||||
@@ -4834,7 +4834,7 @@ class Operators(_object):
|
||||
__setattr__ = lambda self, name, value: _swig_setattr(self, Operators, name, value)
|
||||
__swig_getmethods__ = {}
|
||||
__getattr__ = lambda self, name: _swig_getattr(self, Operators, name)
|
||||
def __init__(self): raise AttributeError, "No constructor defined"
|
||||
def __init__(self, *args, **kwargs): raise AttributeError, "No constructor defined"
|
||||
__repr__ = _swig_repr
|
||||
__swig_getmethods__["select"] = lambda x: _Freestyle.Operators_select
|
||||
if _newclass:select = staticmethod(_Freestyle.Operators_select)
|
||||
@@ -4901,7 +4901,7 @@ class Canvas(_object):
|
||||
__setattr__ = lambda self, name, value: _swig_setattr(self, Canvas, name, value)
|
||||
__swig_getmethods__ = {}
|
||||
__getattr__ = lambda self, name: _swig_getattr(self, Canvas, name)
|
||||
def __init__(self): raise AttributeError, "No constructor defined"
|
||||
def __init__(self, *args, **kwargs): raise AttributeError, "No constructor defined"
|
||||
__repr__ = _swig_repr
|
||||
__swig_getmethods__["getInstance"] = lambda x: _Freestyle.Canvas_getInstance
|
||||
if _newclass:getInstance = staticmethod(_Freestyle.Canvas_getInstance)
|
||||
|
||||
Reference in New Issue
Block a user