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
AgeCommit message (Collapse)Author
2018-06-17Cleanup: trailing space for freestyleCampbell Barton
2015-03-27Freestyle: Code cleanup, prepare for strict C++ flagsSergey Sharybin
2014-06-24Freestyle: use mathutils_array_parse() instead of its own helper functions.Tamito Kajiyama
Patch contribution by flokkievids (Folkert de Vries). Thanks!
2014-06-24Freestyle: use bool instead of int.Tamito Kajiyama
Patch contribution by flokkievids (Folkert de Vries). Thanks!
2014-06-16Freestyle: Python API docstring updates.Tamito Kajiyama
2014-06-16D545: Freestyle Python API: new methods for Stroke and StrokeVertexIterator.Tamito Kajiyama
This revision extends the Freestyle Python API to make for style module writing easier. - freestyle.types.Stroke: A proper support for reversed() is implemented. It works the same with other Python sequence objects (returns an iterator starting from the end). This is in effect equivalent to Stroke.stroke_vertices_end(). - freestyle.types.StrokeVertexIterator: An incremented, decremented and reversed method are added. The first two methods return a new StrokeVertexIterator object that has been incremented and decremented, respectively. The reversed method returns a new StrokeVertexIterator object that will traverse stroke vertices in the opposite direction. - freestyle.types.Interface0DIterator: Its constructor now accepts a Stroke object to create an Interface0DIterator that traverses stroke vertices. This is in effect equivalent to Stroke.vertices_begin(). The new API makes stroke shaders involving function calls much simpler as illustrated below: # in the old API it = stroke.stroke_vertices_begin() for vert in it: result = somefunc(Interface0DIterator(it)) # in the new API it = Interface0DIterator(stroke) for vert in it: result = somefunc(it) Differential Revision: https://developer.blender.org/D545 Reviewers: kjym3
2014-06-04Freestyle: Fix for a potential infinite loop in stroke resampling by vertex ↵Tamito Kajiyama
count. Changes were made in Stroke::Resample(int) in C++ to prevent a potential infinite loop caused by an inconsistency between Stroke::_Length and the stroke length computed based on stroke vertices. Such a stroke length inconsistency is usually caused by missing calls of Stroke::UpdateLength() (i.e., API implementation bugs), but also may occur due to scripting errors in user-defined style modules. This commit is meant to help script writters to identify the latter error cases. Now Stroke.resample(int) may raise a runtime error to signal an error condition.
2014-06-02Freestyle: Minor fixes.Tamito Kajiyama
- Fixed a typo in docstring. - Replaced int with boolean constants. - Updated lists of base classes for used-defined unary 0D/1D functions.
2014-04-17Freestyle: Fix for VC++ warnings about 'hypot' macro redefinitions (Part 2).Tamito Kajiyama
(See commit e1771e72fbbf828dbf5bed871b814288389f3611 for more detail of the problem). Fixed for #include <Python.h> not properly put in the extern "C" { ... } construct. Also removed redundant inclusion of the header file in the Freestyle Python API code.
2014-04-09Freestyle: fix for typos in Python API docstrings.Tamito Kajiyama
2013-10-31code cleanup: spellingCampbell Barton
2013-09-05code cleanup:Campbell Barton
- add missing headers from cmake (own omission) - quiet rna_test.c unused define warnings. - minor style edits - spelling corrections and ignore all uppercase words with spell checking script.
2013-07-20Fix for docstring inconsistency in Stroke.stroke_vertices_end().Tamito Kajiyama
2013-06-15Fix for splitting at material boundaries not correctly working with border ↵Tamito Kajiyama
lines. Problem report by Charblaze in the BlenderArtists.org Freestyle thread, thanks!
2013-05-22Fix for a crash due to de-referencing of a StrokeVertex Python wrapper object.Tamito Kajiyama
Problem report by flokkievids in the BA Freestyle thread, thanks!
2013-05-22Added new method Stroke.remove_all_vertices() for removing all vertices from ↵Tamito Kajiyama
the stroke. Patch from flokkievids in the BA Freestyle thread, thanks!
2013-03-31remove blender foundation copyright from freestyle files.Campbell Barton
this can be added back on case-by-case basis, but better not assume ownership of another projects work by default.
2013-03-08A big code clean-up patch from Bastien Montagne, many thanks!Tamito Kajiyama
2013-02-24Freestyle Python API improvements - part 8.Tamito Kajiyama
* Proper handling of keyword arguments was implemented in Operators and ContextFunctions, as well as in methods of Interface0D, Interface1D, Iterator, their subclasses, Noise and IntegrationType. * Operators' methods and functions in the ContextFunctions module were renamed from CamelCase to lower cases + underscores. Style modules were updated accordingly. * Additional code clean-up was also made.
2013-02-24Code clean-up and fix for typos in docstrings.Tamito Kajiyama
2013-02-23Code style clean-up.Tamito Kajiyama
2013-02-23Added GNU GPL header blocks.Tamito Kajiyama
2013-02-21Freestyle Python API improvements - part 5.Tamito Kajiyama
Handling of keyword arguments in Python wrapper class constructors was revised. This revision is mainly focused on Interface0D, Interface1D, Iterator, and their subclasses, as well as a few additional view map component classes. Implementation notes: Because of the extensive use of constructor overloading in the underlying C++ classes, the corresponding Python wrappers try to parse arguments through multiple calls of PyArg_ParseTupleAndKeywords() if needed. The downside of this implementation is that most argument errors result in the same error message ("invalid argument(s)") without indicating what is wrong. For now this issue is left for future work. * Now the instantiation of ViewVertex is prohibited since the underlying C++ class is an abstract class. * Removed the .cast_to_interface0diterator() method from CurvePointIterator and StrokeVertexIterator. Instead the constructor of Interface0DIterator now accepts the instances of these two iterator classes to construct a nested Interface0DIterator instance that can be passed to Function0D functor objects. Specifically, an iterator 'it' is passed to a functor 'func' as follows: func(Interface0DIterator(it)) instead of: func(it.cast_to_interface0diterator()) * Boolean arguments of class constructors only accept values of boolean type. Input values of other types are considered as error. * Additional code clean-up was made.
2013-02-16Fix for pointers to auto variables returned from Python wrapper class methods.Tamito Kajiyama
The previous implementation was a quick workaround of C++ const references. Also removed the unused 'borrowed' flag from the Python wrapper of FrsMaterial.
2013-02-15Minor coding style clean-up.Tamito Kajiyama
2013-02-15Freestyle Python API improvements - part 3.Tamito Kajiyama
Major API updates were made to address code review comments. This revision mostly focuses on Python wrappers of C++ 0D and 1D elements (i.e., Interface0D and Interface1D, as well as their subclasses). * Most getter/setter methods were reimplemented as attributes using PyGetSetDef. Vector attributes are now implemented based on mathutils callbacks. Boolean attributes now only accept boolean values. * The __getitem__ method was removed and the Sequence protocol was used instead. * The naming of methods and attributes was fixed to follow the naming conventions of the Blender Python API (i.e., lower case + underscores for methods and attributes, and CamelCase for classes). Some naming inconsistency within the Freestyle Python API was also addressed. * The Freestyle API had a number of method names including prefix/suffix "A" and "B", and their meanings were inconsistent (i.e., referring to different things depending on the classes). The names with these two letters were replaced with more straightforward names. Also some attribute names were changed so as to indicate the type of the value (e.g., FEdge.next_fedge instead of FEdge.next_edge) in line with other names explicitly indicating what the value is (e.g., SVertex.viewvertex). * In addition, some code clean-up was done in both C++ and Python. Notes: In summary, the following irregular naming changes were made through this revision (those resulting from regular changes of naming conventions are not listed): - CurvePoint: {A,B} --> {first,second}_svertex - FEdge: vertex{A,B} --> {first,second}_svertex - FEdge: {next,previous}Edge --> {next,previous}_fedge - FEdgeSharp: normal{A,B} --> normal_{right,left} - FEdgeSharp: {a,b}FaceMark --> face_mark_{right,left} - FEdgeSharp: {a,b}Material --> material_{right,left} - FEdgeSharp: {a,b}MaterialIndex --> material_index_{right,left} - FrsCurve: empty --> is_empty - FrsCurve: nSegments --> segments_size - TVertex: mate() --> get_mate() - ViewEdge: fedge{A,B} --> {first,last}_fedge - ViewEdge: setaShape, aShape --> occlude - ViewEdge: {A,B} --> {first,last}_viewvertex - ViewMap: getScene3dBBox --> scene_bbox
2012-12-09Fix for a number of compiler warnings as well as a bug hidden by the warnings.Tamito Kajiyama
Patch contribution by Bastien Montagne, thanks!
2011-10-30Fix for stroke rendering instability with stroke geometry shaders.Tamito Kajiyama
* Stroke::Resample(int nPoints) was not properly working when a wrong value was returned from Stroke::getLength2D(), resulting in repeated warning messages "Warning: incorrect points number" during stroke rendering. The main cause was that stroke geometry shaders did not update the two-dimensional (2D) length (also referred to as curvilinear abscissa) after they modified the 2D points of stroke vertices. Now all stroke geometry shaders make explicit calls for Stroke::UpdateLength() that has been introduced for recomputing the 2D length. Many thanks to Josef who reported the problem together with sample .blend files for reproducing the issue. * Missing Python wrapper of Stroke::getLength2D() was added.
2011-10-06Fine control of feature edge selection with mesh face and edge marks.Tamito Kajiyama
New "face marks" and "edge marks" have been introduced in mesh data blocks. In the edit mode of a mesh object, face marks can be put to selected faces by choosing Mesh >> Faces >> Mark Freestyle Face from the menu of a 3D View window or Ctrl-F >> Mark Freestyle Face from the context menu. Similarly, edge marks can be put to selected edges by Mesh >> Edges >> Mark Freestyle Edge or Ctrl-E >> Mark Freestyle Edge. These marks should work fine with the Subdivision surface modifier. Moreover, two new conditions for feature edge selection have been added to the Parameter Editor mode as described below: 1. The Selection by Edge Types option has now the new Edge Mark type, which can be used to (de)select feature edges having edge marks. This option can be used to add to (or remove from) the view map arbitrary edges of mesh objects. 2. Selection by Face Marks option has been newly introduced, in which face marks are used for feature edge selection in two ways. One option is called "One Face" which is to (de)select feature edges if one of faces on the left and right of each feature edge has a face mark. The other option is "Both Faces" to (de)select feature edges if both faces on the left and right have a face mark.
2010-08-12Python API documentation updates: a description of class hierarchyTamito Kajiyama
was added to the docstrings of most Python extension types.
2010-05-15Minor docstring fixes.Tamito Kajiyama
2010-05-09Removed partial implementations of the __copy__ method of some PythonTamito Kajiyama
extension classes. Copy constructors should be used to duplicate objects.
2010-05-09Renamed FrsCurve, FrsNoise and FrsMaterial Python extension typesTamito Kajiyama
to those names without the "Frs" prefix. These types are part of the Freestyle module, so that there is no need to make their names globally unique.
2010-04-18Merged changes in the trunk up to revision 28247.Tamito Kajiyama
2010-04-18Major documentation updates. The original Freestyle API referenceTamito Kajiyama
(http://freestyle.sourceforge.net/doc/html/index.html) has been incorporated into the Blender/Freestyle Python API implementation in the form of Sphinx-based embedded docstrings. Some C++-specific descriptions of classes and functions were revised so that they are suitable for Python programmers. Missing docstrings were filled, and sparse descriptions were extended. By means of the new documentation system for Blender, an up-to-date Freestyle Python API reference will be part of the Blender 2.5 documentation.
2010-04-10Removed duplicated definitions of verticesBegin(), verticesEnd(),Tamito Kajiyama
pointsBegin(), and pointsEnd(). All these methods are inherited from the Interface1D class.
2010-04-08Replaced PyObject_HEAD_INIT(NULL) with PyVarObject_HEAD_INIT(NULL, 0)Tamito Kajiyama
in the definitions of Python wrappers.
2009-09-27Made the Freestyle Python API compatible with Python 3.Tamito Kajiyama
2009-08-03Fixed argument checking in __init__ methods of Interface1D, Predicates,Tamito Kajiyama
Functions, and StrokeShader types.
2009-08-02SWIG/directors dependency removal (cont'd)Tamito Kajiyama
* Added to python/BPy_Convert.{cpp,h} 4 utility converters below for better introspection-based automatic type conversion. PyObject * Any_BPy_Interface0D_from_Interface0D( Interface0D& if0D ); PyObject * Any_BPy_Interface1D_from_Interface1D( Interface1D& if1D ); PyObject * Any_BPy_FEdge_from_FEdge( FEdge& fe ); PyObject * Any_BPy_ViewVertex_from_ViewVertex( ViewVertex& vv ); There are 4 corresponding converters without the "Any_" prefix. All calls of them in the code base were replaced with these new converters so that the introspection-based automatic conversion would take place universally. * python/BPy_Convert.{cpp,h}: Those C++ to Python converters having had a "_ptr" suffix were renamed to a name without the suffix, and their arguments were changed so as to take a reference (e.g., ViewVertex&) instead of a pointer (e.g., ViewVertex *). The changed converters and their new function prototypes are listed below. These converters now return a Python wrapper object that retains the passed reference, instead of retaining a newly created C++ object by the converters. // Interface0D converters PyObject * BPy_Interface0D_from_Interface0D( Interface0D& if0D ); PyObject * BPy_CurvePoint_from_CurvePoint( CurvePoint& cp ); PyObject * BPy_StrokeVertex_from_StrokeVertex( StrokeVertex& sv ); PyObject * BPy_SVertex_from_SVertex( SVertex& sv ); PyObject * BPy_ViewVertex_from_ViewVertex( ViewVertex& vv ); PyObject * BPy_TVertex_from_TVertex( TVertex& tv ); PyObject * BPy_NonTVertex_from_NonTVertex( NonTVertex& ntv ); // Interface1D converters PyObject * BPy_Interface1D_from_Interface1D( Interface1D& if1D ); PyObject * BPy_Chain_from_Chain( Chain& c ); PyObject * BPy_FEdge_from_FEdge( FEdge& fe ); PyObject * BPy_FEdgeSharp_from_FEdgeSharp( FEdgeSharp& fes ); PyObject * BPy_FEdgeSmooth_from_FEdgeSmooth( FEdgeSmooth& fes ); PyObject * BPy_Stroke_from_Stroke( Stroke& s ); PyObject * BPy_ViewEdge_from_ViewEdge( ViewEdge& ve ); PyObject * BPy_directedViewEdge_from_directedViewEdge( ViewVertex::directedViewEdge& dve ); // some other converters PyObject * BPy_ViewShape_from_ViewShape( ViewShape& vs ); PyObject * BPy_SShape_from_SShape( SShape& ss ); PyObject * BPy_FrsMaterial_from_FrsMaterial( FrsMaterial& m ); PyObject * BPy_StrokeAttribute_from_StrokeAttribute( StrokeAttribute& sa ); * Added a "borrowed" flag to the definitions of Python types being used to wrap C++ components of Freestyle's internal data structures. The flag indicates whether or not a Python wrapper object has a reference to a C++ object that comprises the internal data structures. The deallocation routines of the Python types check this flag and release a wrapped C++ object only when it is not part of the internal data structures. The following files were modified: python/BPy_FrsMaterial.{cpp,h} python/BPy_Interface0D.{cpp,h} python/BPy_Interface1D.{cpp,h} python/BPy_SShape.{cpp,h} python/BPy_StrokeAttribute.{cpp,h} python/BPy_ViewShape.{cpp,h} python/Interface0D/BPy_CurvePoint.cpp python/Interface0D/BPy_SVertex.cpp python/Interface0D/BPy_ViewVertex.cpp python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp python/Interface0D/ViewVertex/BPy_NonTVertex.cpp python/Interface0D/ViewVertex/BPy_TVertex.cpp python/Interface1D/BPy_FEdge.cpp python/Interface1D/BPy_FrsCurve.cpp python/Interface1D/BPy_Stroke.cpp python/Interface1D/BPy_ViewEdge.cpp python/Interface1D/Curve/BPy_Chain.cpp python/Interface1D/FEdge/BPy_FEdgeSharp.cpp python/Interface1D/FEdge/BPy_FEdgeSmooth.cpp * view_map/Interface[01]D.h, python/BPy_Interface[01]D.cpp: Removed from the Interface0D and Interface1D C++ classes a back pointer to a Python wrapper object and all "director" calls. These classes (and their subclasses) are used to build Freestyle's main data structures (such as a view map and strokes) and their class hierarchy is static. Python wrappers of these C++ classes are only used to access the data structures from the Python layer, and not intended to extend the data structures by subclassing the Python wrappers. Without the necessity of subclassing in the Python layer, the back pointer to a wrapping Python object and "director" calls would be useless (actually they were not used at all), so they were all removed. * python/Director.{cpp,h}: Removed the definitions of directors that were no longer used. * stroke/Stroke.{cpp,h}: Removed an (unused) back pointer to a Python wrapper object. * python/BPy_ViewMap.cpp: Fixed a possible null pointer reference. * python/Interface1D/BPy_FEdge.cpp: Fixed parameter checking in FEdge___init__().
2009-08-01* Implemented Python's iterator protocol in Interface0DIterator andTamito Kajiyama
orientedViewEdgeIterator. * Simplified Python-related error handling in C++ class definitions. The definitions of the following C++ methods were simplified and most code segments using the C/Python API were moved to Director.cpp. ChainingIterator::init() ChainingIterator::traverse() UnaryPredicate0D::operator()() UnaryPredicate1D::operator()() BinaryPredicate0D::operator()() BinaryPredicate1D::operator()() UnaryFunction0D::operator()() UnaryFunction1D::operator()() StrokeShader.shade() * Moved part of the introspection-based automatic type conversion code from BPy_Interface0DIterator.cpp and Director.cpp to BPy_Convert.cpp for the sake of better code organization. * Fixed an uninitialized member in StrokeVertexIterator___init__().
2009-07-29Added minor changes.Tamito Kajiyama
2009-07-27* Fixed compiler errors in UnaryFunction0DVectorViewShape::__call__()Tamito Kajiyama
and UnaryFunction1DVectorViewShape::__call__(). * Added a Python wrapper of ViewEdge::qi().
2009-07-25* Better support for vector-like objects in method arguments.Tamito Kajiyama
Now the following methods in the Freestyle Python API accept not only Blender.Mathutils.Vector instances but also lists and tuples having an appropriate number of elements. FrsNoise::turbulence2() FrsNoise::turbulence3() FrsNoise::smoothNoise2() FrsNoise::smoothNoise3() SVertex::__init__() SVertex::setPoint3D() SVertex::setPoint2D() SVertex::AddNormal() FEdgeSharp::setNormalA() FEdgeSharp::setNormalB() FEdgeSmooth::setNormal() CalligraphicShader::__init__() StrokeAttribute::setAttributeVec2f() StrokeAttribute::setAttributeVec3f() StrokeAttribute::setColor() StrokeVertex::setPoint() * Added the following converters for the sake of the improvements mentioned above. Vec2f_ptr_from_PyObject() Vec3f_ptr_from_PyObject() Vec3r_ptr_from_PyObject() Vec2f_ptr_from_PyList() Vec3f_ptr_from_PyList() Vec3r_ptr_from_PyList() Vec2f_ptr_from_PyTuple() Vec3f_ptr_from_PyTuple() Vec3r_ptr_from_PyTuple() Those converters with the suffixes _PyList and _PyTuple accept only lists and tuples having an appropriate number of elements, respectively, while those with the suffix _PyObject accept lists, tuples, or Blender.Mathutils.Vector instances. * Fixed a null pointer reference in Interface0D___dealloc__(). * Corrected the names of 3 methods in the FEdgeSmooth class.
2009-04-04Relaxed type checking concerning boolean arguments in class constructorsTamito Kajiyama
and __call__ methods so that not only True and False but also various other boolean expressions (e.g., 0, 1, and None) are accepted.
2009-04-01Improvements on error handling in the Python API.Tamito Kajiyama
2009-03-30Improvements on error handling in the Python API.Tamito Kajiyama
2009-03-29Improvements on error handling in the Python API.Tamito Kajiyama
2008-12-01Added changes to support Python's native iterator protocol in Stroke and ↵Tamito Kajiyama
StrokeVertexIterator. freestyle_init.py * Added a generic getName() method that allows subclasses to omit the method to return their class names. BPy_Convert.cpp BPy_Convert.h * Added to BPy_StrokeVertexIterator_from_StrokeVertexIterator() a second argument to specify the direction (reversed or not) of the iterator to be created. BPy_Stroke.cpp * Added support for Python's native iterator protocol. * Added code to parse the optional argument of strokeVerticesBegin(). BPy_StrokeVertexIterator.cpp BPy_StrokeVertexIterator.h * Added support for Python's native iterator protocol. Stroke.cpp * Fixed a null pointer reference. Stroke.h * Added new method Stroke::strokeVerticeAt(i) that returns the i-th StrokeVertex of the Stroke.
2008-08-07soc-2008-mxcurioni: first version of lib3ds code. It does NOT work yet and ↵Maxime Curioni
has to be debugged. It can be activate in app_blender/api.cpp by replacing the FRS_scene_3ds_export call in FRS_prepare, by FRS_load_mesh. All of the reference to the original Material class were renamed to FrsMaterial to resolve a name collision with Blender. To keep the window context necessary to draw the strokes after RE_Database_FromScene has been called, the display_clear function is used.