diff options
Diffstat (limited to 'source/blender/freestyle/intern/python/BPy_Freestyle.cpp')
-rw-r--r-- | source/blender/freestyle/intern/python/BPy_Freestyle.cpp | 860 |
1 files changed, 445 insertions, 415 deletions
diff --git a/source/blender/freestyle/intern/python/BPy_Freestyle.cpp b/source/blender/freestyle/intern/python/BPy_Freestyle.cpp index e3c7a972867..0b543c06ba6 100644 --- a/source/blender/freestyle/intern/python/BPy_Freestyle.cpp +++ b/source/blender/freestyle/intern/python/BPy_Freestyle.cpp @@ -45,7 +45,6 @@ #include "BPy_ViewMap.h" #include "BPy_ViewShape.h" - #ifdef __cplusplus extern "C" { #endif @@ -61,411 +60,441 @@ extern "C" { #include "bpy_rna.h" /* pyrna_struct_CreatePyObject() */ static char Freestyle_getCurrentScene___doc__[] = -".. function:: getCurrentScene()\n" -"\n" -" Returns the current scene.\n" -"\n" -" :return: The current scene.\n" -" :rtype: :class:`bpy.types.Scene`\n"; + ".. function:: getCurrentScene()\n" + "\n" + " Returns the current scene.\n" + "\n" + " :return: The current scene.\n" + " :rtype: :class:`bpy.types.Scene`\n"; static PyObject *Freestyle_getCurrentScene(PyObject * /*self*/) { - Scene *scene = g_freestyle.scene; - if (!scene) { - PyErr_SetString(PyExc_TypeError, "current scene not available"); - return NULL; - } - PointerRNA ptr_scene; - RNA_pointer_create(&scene->id, &RNA_Scene, scene, &ptr_scene); - return pyrna_struct_CreatePyObject(&ptr_scene); + Scene *scene = g_freestyle.scene; + if (!scene) { + PyErr_SetString(PyExc_TypeError, "current scene not available"); + return NULL; + } + PointerRNA ptr_scene; + RNA_pointer_create(&scene->id, &RNA_Scene, scene, &ptr_scene); + return pyrna_struct_CreatePyObject(&ptr_scene); } #include "DNA_material_types.h" static int ramp_blend_type(const char *type) { - if (STREQ(type, "MIX")) return MA_RAMP_BLEND; - if (STREQ(type, "ADD")) return MA_RAMP_ADD; - if (STREQ(type, "MULTIPLY")) return MA_RAMP_MULT; - if (STREQ(type, "SUBTRACT")) return MA_RAMP_SUB; - if (STREQ(type, "SCREEN")) return MA_RAMP_SCREEN; - if (STREQ(type, "DIVIDE")) return MA_RAMP_DIV; - if (STREQ(type, "DIFFERENCE")) return MA_RAMP_DIFF; - if (STREQ(type, "DARKEN")) return MA_RAMP_DARK; - if (STREQ(type, "LIGHTEN")) return MA_RAMP_LIGHT; - if (STREQ(type, "OVERLAY")) return MA_RAMP_OVERLAY; - if (STREQ(type, "DODGE")) return MA_RAMP_DODGE; - if (STREQ(type, "BURN")) return MA_RAMP_BURN; - if (STREQ(type, "HUE")) return MA_RAMP_HUE; - if (STREQ(type, "SATURATION")) return MA_RAMP_SAT; - if (STREQ(type, "VALUE")) return MA_RAMP_VAL; - if (STREQ(type, "COLOR")) return MA_RAMP_COLOR; - if (STREQ(type, "SOFT_LIGHT")) return MA_RAMP_SOFT; - if (STREQ(type, "LINEAR_LIGHT")) return MA_RAMP_LINEAR; - return -1; + if (STREQ(type, "MIX")) + return MA_RAMP_BLEND; + if (STREQ(type, "ADD")) + return MA_RAMP_ADD; + if (STREQ(type, "MULTIPLY")) + return MA_RAMP_MULT; + if (STREQ(type, "SUBTRACT")) + return MA_RAMP_SUB; + if (STREQ(type, "SCREEN")) + return MA_RAMP_SCREEN; + if (STREQ(type, "DIVIDE")) + return MA_RAMP_DIV; + if (STREQ(type, "DIFFERENCE")) + return MA_RAMP_DIFF; + if (STREQ(type, "DARKEN")) + return MA_RAMP_DARK; + if (STREQ(type, "LIGHTEN")) + return MA_RAMP_LIGHT; + if (STREQ(type, "OVERLAY")) + return MA_RAMP_OVERLAY; + if (STREQ(type, "DODGE")) + return MA_RAMP_DODGE; + if (STREQ(type, "BURN")) + return MA_RAMP_BURN; + if (STREQ(type, "HUE")) + return MA_RAMP_HUE; + if (STREQ(type, "SATURATION")) + return MA_RAMP_SAT; + if (STREQ(type, "VALUE")) + return MA_RAMP_VAL; + if (STREQ(type, "COLOR")) + return MA_RAMP_COLOR; + if (STREQ(type, "SOFT_LIGHT")) + return MA_RAMP_SOFT; + if (STREQ(type, "LINEAR_LIGHT")) + return MA_RAMP_LINEAR; + return -1; } #include "BKE_material.h" /* ramp_blend() */ static char Freestyle_blendRamp___doc__[] = -".. function:: blendRamp(type, color1, fac, color2)\n" -"\n" -" Blend two colors according to a ramp blend type.\n" -"\n" -" :arg type: Ramp blend type.\n" -" :type type: int\n" -" :arg color1: 1st color.\n" -" :type color1: :class:`mathutils.Vector`, list or tuple of 3 real numbers\n" -" :arg fac: Blend factor.\n" -" :type fac: float\n" -" :arg color2: 1st color.\n" -" :type color2: :class:`mathutils.Vector`, list or tuple of 3 real numbers\n" -" :return: Blended color in RGB format.\n" -" :rtype: :class:`mathutils.Vector`\n"; + ".. function:: blendRamp(type, color1, fac, color2)\n" + "\n" + " Blend two colors according to a ramp blend type.\n" + "\n" + " :arg type: Ramp blend type.\n" + " :type type: int\n" + " :arg color1: 1st color.\n" + " :type color1: :class:`mathutils.Vector`, list or tuple of 3 real numbers\n" + " :arg fac: Blend factor.\n" + " :type fac: float\n" + " :arg color2: 1st color.\n" + " :type color2: :class:`mathutils.Vector`, list or tuple of 3 real numbers\n" + " :return: Blended color in RGB format.\n" + " :rtype: :class:`mathutils.Vector`\n"; static PyObject *Freestyle_blendRamp(PyObject * /*self*/, PyObject *args) { - PyObject *obj1, *obj2; - char *s; - int type; - float a[3], fac, b[3]; - - if (!PyArg_ParseTuple(args, "sOfO", &s, &obj1, &fac, &obj2)) - return NULL; - type = ramp_blend_type(s); - if (type < 0) { - PyErr_SetString(PyExc_TypeError, "argument 1 is an unknown ramp blend type"); - return NULL; - } - if (mathutils_array_parse(a, 3, 3, obj1, - "argument 2 must be a 3D vector " - "(either a tuple/list of 3 elements or Vector)") == -1) - { - return NULL; - } - if (mathutils_array_parse(b, 3, 3, obj2, - "argument 4 must be a 3D vector " - "(either a tuple/list of 3 elements or Vector)") == -1) - { - return NULL; - } - ramp_blend(type, a, fac, b); - return Vector_CreatePyObject(a, 3, NULL); + PyObject *obj1, *obj2; + char *s; + int type; + float a[3], fac, b[3]; + + if (!PyArg_ParseTuple(args, "sOfO", &s, &obj1, &fac, &obj2)) + return NULL; + type = ramp_blend_type(s); + if (type < 0) { + PyErr_SetString(PyExc_TypeError, "argument 1 is an unknown ramp blend type"); + return NULL; + } + if (mathutils_array_parse(a, + 3, + 3, + obj1, + "argument 2 must be a 3D vector " + "(either a tuple/list of 3 elements or Vector)") == -1) { + return NULL; + } + if (mathutils_array_parse(b, + 3, + 3, + obj2, + "argument 4 must be a 3D vector " + "(either a tuple/list of 3 elements or Vector)") == -1) { + return NULL; + } + ramp_blend(type, a, fac, b); + return Vector_CreatePyObject(a, 3, NULL); } #include "BKE_colorband.h" /* BKE_colorband_evaluate() */ static char Freestyle_evaluateColorRamp___doc__[] = -".. function:: evaluateColorRamp(ramp, in)\n" -"\n" -" Evaluate a color ramp at a point in the interval 0 to 1.\n" -"\n" -" :arg ramp: Color ramp object.\n" -" :type ramp: :class:`bpy.types.ColorRamp`\n" -" :arg in: Value in the interval 0 to 1.\n" -" :type in: float\n" -" :return: color in RGBA format.\n" -" :rtype: :class:`mathutils.Vector`\n"; + ".. function:: evaluateColorRamp(ramp, in)\n" + "\n" + " Evaluate a color ramp at a point in the interval 0 to 1.\n" + "\n" + " :arg ramp: Color ramp object.\n" + " :type ramp: :class:`bpy.types.ColorRamp`\n" + " :arg in: Value in the interval 0 to 1.\n" + " :type in: float\n" + " :return: color in RGBA format.\n" + " :rtype: :class:`mathutils.Vector`\n"; static PyObject *Freestyle_evaluateColorRamp(PyObject * /*self*/, PyObject *args) { - BPy_StructRNA *py_srna; - ColorBand *coba; - float in, out[4]; - - if (!(PyArg_ParseTuple(args, "O!f", &pyrna_struct_Type, &py_srna, &in))) - return NULL; - if (!RNA_struct_is_a(py_srna->ptr.type, &RNA_ColorRamp)) { - PyErr_SetString(PyExc_TypeError, "1st argument is not a ColorRamp object"); - return NULL; - } - coba = (ColorBand *)py_srna->ptr.data; - if (!BKE_colorband_evaluate(coba, in, out)) { - PyErr_SetString(PyExc_ValueError, "failed to evaluate the color ramp"); - return NULL; - } - return Vector_CreatePyObject(out, 4, NULL); + BPy_StructRNA *py_srna; + ColorBand *coba; + float in, out[4]; + + if (!(PyArg_ParseTuple(args, "O!f", &pyrna_struct_Type, &py_srna, &in))) + return NULL; + if (!RNA_struct_is_a(py_srna->ptr.type, &RNA_ColorRamp)) { + PyErr_SetString(PyExc_TypeError, "1st argument is not a ColorRamp object"); + return NULL; + } + coba = (ColorBand *)py_srna->ptr.data; + if (!BKE_colorband_evaluate(coba, in, out)) { + PyErr_SetString(PyExc_ValueError, "failed to evaluate the color ramp"); + return NULL; + } + return Vector_CreatePyObject(out, 4, NULL); } #include "DNA_color_types.h" #include "BKE_colortools.h" /* curvemapping_evaluateF() */ static char Freestyle_evaluateCurveMappingF___doc__[] = -".. function:: evaluateCurveMappingF(cumap, cur, value)\n" -"\n" -" Evaluate a curve mapping at a point in the interval 0 to 1.\n" -"\n" -" :arg cumap: Curve mapping object.\n" -" :type cumap: :class:`bpy.types.CurveMapping`\n" -" :arg cur: Index of the curve to be used (0 <= cur <= 3).\n" -" :type cur: int\n" -" :arg value: Input value in the interval 0 to 1.\n" -" :type value: float\n" -" :return: Mapped output value.\n" -" :rtype: float\n"; + ".. function:: evaluateCurveMappingF(cumap, cur, value)\n" + "\n" + " Evaluate a curve mapping at a point in the interval 0 to 1.\n" + "\n" + " :arg cumap: Curve mapping object.\n" + " :type cumap: :class:`bpy.types.CurveMapping`\n" + " :arg cur: Index of the curve to be used (0 <= cur <= 3).\n" + " :type cur: int\n" + " :arg value: Input value in the interval 0 to 1.\n" + " :type value: float\n" + " :return: Mapped output value.\n" + " :rtype: float\n"; static PyObject *Freestyle_evaluateCurveMappingF(PyObject * /*self*/, PyObject *args) { - BPy_StructRNA *py_srna; - CurveMapping *cumap; - int cur; - float value; - - if (!(PyArg_ParseTuple(args, "O!if", &pyrna_struct_Type, &py_srna, &cur, &value))) - return NULL; - if (!RNA_struct_is_a(py_srna->ptr.type, &RNA_CurveMapping)) { - PyErr_SetString(PyExc_TypeError, "1st argument is not a CurveMapping object"); - return NULL; - } - if (cur < 0 || cur > 3) { - PyErr_SetString(PyExc_ValueError, "2nd argument is out of range"); - return NULL; - } - cumap = (CurveMapping *)py_srna->ptr.data; - curvemapping_initialize(cumap); - /* disable extrapolation if enabled */ - if ((cumap->cm[cur].flag & CUMA_EXTEND_EXTRAPOLATE)) { - cumap->cm[cur].flag &= ~(CUMA_EXTEND_EXTRAPOLATE); - curvemapping_changed(cumap, 0); - } - return PyFloat_FromDouble(curvemapping_evaluateF(cumap, cur, value)); + BPy_StructRNA *py_srna; + CurveMapping *cumap; + int cur; + float value; + + if (!(PyArg_ParseTuple(args, "O!if", &pyrna_struct_Type, &py_srna, &cur, &value))) + return NULL; + if (!RNA_struct_is_a(py_srna->ptr.type, &RNA_CurveMapping)) { + PyErr_SetString(PyExc_TypeError, "1st argument is not a CurveMapping object"); + return NULL; + } + if (cur < 0 || cur > 3) { + PyErr_SetString(PyExc_ValueError, "2nd argument is out of range"); + return NULL; + } + cumap = (CurveMapping *)py_srna->ptr.data; + curvemapping_initialize(cumap); + /* disable extrapolation if enabled */ + if ((cumap->cm[cur].flag & CUMA_EXTEND_EXTRAPOLATE)) { + cumap->cm[cur].flag &= ~(CUMA_EXTEND_EXTRAPOLATE); + curvemapping_changed(cumap, 0); + } + return PyFloat_FromDouble(curvemapping_evaluateF(cumap, cur, value)); } /*-----------------------Freestyle module docstring----------------------------*/ static char module_docstring[] = -"This module provides classes for defining line drawing rules (such as\n" -"predicates, functions, chaining iterators, and stroke shaders), as well\n" -"as helper functions for style module writing.\n" -"\n" -"Class hierarchy:\n" -"\n" -"- :class:`BBox`\n" -"- :class:`BinaryPredicate0D`\n" -"- :class:`BinaryPredicate1D`\n" -"\n" -" - :class:`FalseBP1D`\n" -" - :class:`Length2DBP1D`\n" -" - :class:`SameShapeIdBP1D`\n" -" - :class:`TrueBP1D`\n" -" - :class:`ViewMapGradientNormBP1D`\n" -"\n" -"- :class:`Id`\n" -"- :class:`Interface0D`\n" -"\n" -" - :class:`CurvePoint`\n" -"\n" -" - :class:`StrokeVertex`\n" -"\n" -" - :class:`SVertex`\n" -" - :class:`ViewVertex`\n" -"\n" -" - :class:`NonTVertex`\n" -" - :class:`TVertex`\n" -"\n" -"- :class:`Interface1D`\n" -"\n" -" - :class:`Curve`\n" -"\n" -" - :class:`Chain`\n" -"\n" -" - :class:`FEdge`\n" -"\n" -" - :class:`FEdgeSharp`\n" -" - :class:`FEdgeSmooth`\n" -"\n" -" - :class:`Stroke`\n" -" - :class:`ViewEdge`\n" -"\n" -"- :class:`Iterator`\n" -"\n" -" - :class:`AdjacencyIterator`\n" -" - :class:`CurvePointIterator`\n" -" - :class:`Interface0DIterator`\n" -" - :class:`SVertexIterator`\n" -" - :class:`StrokeVertexIterator`\n" -" - :class:`ViewEdgeIterator`\n" -"\n" -" - :class:`ChainingIterator`\n" -"\n" -" - :class:`ChainPredicateIterator`\n" -" - :class:`ChainSilhouetteIterator`\n" -"\n" -" - :class:`orientedViewEdgeIterator`\n" -"\n" -"- :class:`Material`\n" -"- :class:`Noise`\n" -"- :class:`Operators`\n" -"- :class:`SShape`\n" -"- :class:`StrokeAttribute`\n" -"- :class:`StrokeShader`\n" -"\n" -" - :class:`BackboneStretcherShader`\n" -" - :class:`BezierCurveShader`\n" -" - :class:`BlenderTextureShader`\n" -" - :class:`CalligraphicShader`\n" -" - :class:`ColorNoiseShader`\n" -" - :class:`ColorVariationPatternShader`\n" -" - :class:`ConstantColorShader`\n" -" - :class:`ConstantThicknessShader`\n" -" - :class:`ConstrainedIncreasingThicknessShader`\n" -" - :class:`GuidingLinesShader`\n" -" - :class:`IncreasingColorShader`\n" -" - :class:`IncreasingThicknessShader`\n" -" - :class:`PolygonalizationShader`\n" -" - :class:`SamplingShader`\n" -" - :class:`SmoothingShader`\n" -" - :class:`SpatialNoiseShader`\n" -" - :class:`StrokeTextureShader`\n" -" - :class:`StrokeTextureStepShader`\n" -" - :class:`TextureAssignerShader`\n" -" - :class:`ThicknessNoiseShader`\n" -" - :class:`ThicknessVariationPatternShader`\n" -" - :class:`TipRemoverShader`\n" -" - :class:`fstreamShader`\n" -" - :class:`streamShader`\n" -"\n" -"- :class:`UnaryFunction0D`\n" -"\n" -" - :class:`UnaryFunction0DDouble`\n" -"\n" -" - :class:`Curvature2DAngleF0D`\n" -" - :class:`DensityF0D`\n" -" - :class:`GetProjectedXF0D`\n" -" - :class:`GetProjectedYF0D`\n" -" - :class:`GetProjectedZF0D`\n" -" - :class:`GetXF0D`\n" -" - :class:`GetYF0D`\n" -" - :class:`GetZF0D`\n" -" - :class:`LocalAverageDepthF0D`\n" -" - :class:`ZDiscontinuityF0D`\n" -"\n" -" - :class:`UnaryFunction0DEdgeNature`\n" -"\n" -" - :class:`CurveNatureF0D`\n" -"\n" -" - :class:`UnaryFunction0DFloat`\n" -"\n" -" - :class:`GetCurvilinearAbscissaF0D`\n" -" - :class:`GetParameterF0D`\n" -" - :class:`GetViewMapGradientNormF0D`\n" -" - :class:`ReadCompleteViewMapPixelF0D`\n" -" - :class:`ReadMapPixelF0D`\n" -" - :class:`ReadSteerableViewMapPixelF0D`\n" -"\n" -" - :class:`UnaryFunction0DId`\n" -"\n" -" - :class:`ShapeIdF0D`\n" -"\n" -" - :class:`UnaryFunction0DMaterial`\n" -"\n" -" - :class:`MaterialF0D`\n" -"\n" -" - :class:`UnaryFunction0DUnsigned`\n" -"\n" -" - :class:`QuantitativeInvisibilityF0D`\n" -"\n" -" - :class:`UnaryFunction0DVec2f`\n" -"\n" -" - :class:`Normal2DF0D`\n" -" - :class:`VertexOrientation2DF0D`\n" -"\n" -" - :class:`UnaryFunction0DVec3f`\n" -"\n" -" - :class:`VertexOrientation3DF0D`\n" -"\n" -" - :class:`UnaryFunction0DVectorViewShape`\n" -"\n" -" - :class:`GetOccludersF0D`\n" -"\n" -" - :class:`UnaryFunction0DViewShape`\n" -"\n" -" - :class:`GetOccludeeF0D`\n" -" - :class:`GetShapeF0D`\n" -"\n" -"- :class:`UnaryFunction1D`\n" -"\n" -" - :class:`UnaryFunction1DDouble`\n" -"\n" -" - :class:`Curvature2DAngleF1D`\n" -" - :class:`DensityF1D`\n" -" - :class:`GetCompleteViewMapDensityF1D`\n" -" - :class:`GetDirectionalViewMapDensityF1D`\n" -" - :class:`GetProjectedXF1D`\n" -" - :class:`GetProjectedYF1D`\n" -" - :class:`GetProjectedZF1D`\n" -" - :class:`GetSteerableViewMapDensityF1D`\n" -" - :class:`GetViewMapGradientNormF1D`\n" -" - :class:`GetXF1D`\n" -" - :class:`GetYF1D`\n" -" - :class:`GetZF1D`\n" -" - :class:`LocalAverageDepthF1D`\n" -" - :class:`ZDiscontinuityF1D`\n" -"\n" -" - :class:`UnaryFunction1DEdgeNature`\n" -"\n" -" - :class:`CurveNatureF1D`\n" -"\n" -" - :class:`UnaryFunction1DFloat`\n" -" - :class:`UnaryFunction1DUnsigned`\n" -"\n" -" - :class:`QuantitativeInvisibilityF1D`\n" -"\n" -" - :class:`UnaryFunction1DVec2f`\n" -"\n" -" - :class:`Normal2DF1D`\n" -" - :class:`Orientation2DF1D`\n" -"\n" -" - :class:`UnaryFunction1DVec3f`\n" -"\n" -" - :class:`Orientation3DF1D`\n" -"\n" -" - :class:`UnaryFunction1DVectorViewShape`\n" -"\n" -" - :class:`GetOccludeeF1D`\n" -" - :class:`GetOccludersF1D`\n" -" - :class:`GetShapeF1D`\n" -"\n" -" - :class:`UnaryFunction1DVoid`\n" -"\n" -" - :class:`ChainingTimeStampF1D`\n" -" - :class:`IncrementChainingTimeStampF1D`\n" -" - :class:`TimeStampF1D`\n" -"\n" -"- :class:`UnaryPredicate0D`\n" -"\n" -" - :class:`FalseUP0D`\n" -" - :class:`TrueUP0D`\n" -"\n" -"- :class:`UnaryPredicate1D`\n" -"\n" -" - :class:`ContourUP1D`\n" -" - :class:`DensityLowerThanUP1D`\n" -" - :class:`EqualToChainingTimeStampUP1D`\n" -" - :class:`EqualToTimeStampUP1D`\n" -" - :class:`ExternalContourUP1D`\n" -" - :class:`FalseUP1D`\n" -" - :class:`QuantitativeInvisibilityUP1D`\n" -" - :class:`ShapeUP1D`\n" -" - :class:`TrueUP1D`\n" -" - :class:`WithinImageBoundaryUP1D`\n" -"\n" -"- :class:`ViewMap`\n" -"- :class:`ViewShape`\n" -"- :class:`IntegrationType`\n" -"- :class:`MediumType`\n" -"- :class:`Nature`\n" -"\n"; + "This module provides classes for defining line drawing rules (such as\n" + "predicates, functions, chaining iterators, and stroke shaders), as well\n" + "as helper functions for style module writing.\n" + "\n" + "Class hierarchy:\n" + "\n" + "- :class:`BBox`\n" + "- :class:`BinaryPredicate0D`\n" + "- :class:`BinaryPredicate1D`\n" + "\n" + " - :class:`FalseBP1D`\n" + " - :class:`Length2DBP1D`\n" + " - :class:`SameShapeIdBP1D`\n" + " - :class:`TrueBP1D`\n" + " - :class:`ViewMapGradientNormBP1D`\n" + "\n" + "- :class:`Id`\n" + "- :class:`Interface0D`\n" + "\n" + " - :class:`CurvePoint`\n" + "\n" + " - :class:`StrokeVertex`\n" + "\n" + " - :class:`SVertex`\n" + " - :class:`ViewVertex`\n" + "\n" + " - :class:`NonTVertex`\n" + " - :class:`TVertex`\n" + "\n" + "- :class:`Interface1D`\n" + "\n" + " - :class:`Curve`\n" + "\n" + " - :class:`Chain`\n" + "\n" + " - :class:`FEdge`\n" + "\n" + " - :class:`FEdgeSharp`\n" + " - :class:`FEdgeSmooth`\n" + "\n" + " - :class:`Stroke`\n" + " - :class:`ViewEdge`\n" + "\n" + "- :class:`Iterator`\n" + "\n" + " - :class:`AdjacencyIterator`\n" + " - :class:`CurvePointIterator`\n" + " - :class:`Interface0DIterator`\n" + " - :class:`SVertexIterator`\n" + " - :class:`StrokeVertexIterator`\n" + " - :class:`ViewEdgeIterator`\n" + "\n" + " - :class:`ChainingIterator`\n" + "\n" + " - :class:`ChainPredicateIterator`\n" + " - :class:`ChainSilhouetteIterator`\n" + "\n" + " - :class:`orientedViewEdgeIterator`\n" + "\n" + "- :class:`Material`\n" + "- :class:`Noise`\n" + "- :class:`Operators`\n" + "- :class:`SShape`\n" + "- :class:`StrokeAttribute`\n" + "- :class:`StrokeShader`\n" + "\n" + " - :class:`BackboneStretcherShader`\n" + " - :class:`BezierCurveShader`\n" + " - :class:`BlenderTextureShader`\n" + " - :class:`CalligraphicShader`\n" + " - :class:`ColorNoiseShader`\n" + " - :class:`ColorVariationPatternShader`\n" + " - :class:`ConstantColorShader`\n" + " - :class:`ConstantThicknessShader`\n" + " - :class:`ConstrainedIncreasingThicknessShader`\n" + " - :class:`GuidingLinesShader`\n" + " - :class:`IncreasingColorShader`\n" + " - :class:`IncreasingThicknessShader`\n" + " - :class:`PolygonalizationShader`\n" + " - :class:`SamplingShader`\n" + " - :class:`SmoothingShader`\n" + " - :class:`SpatialNoiseShader`\n" + " - :class:`StrokeTextureShader`\n" + " - :class:`StrokeTextureStepShader`\n" + " - :class:`TextureAssignerShader`\n" + " - :class:`ThicknessNoiseShader`\n" + " - :class:`ThicknessVariationPatternShader`\n" + " - :class:`TipRemoverShader`\n" + " - :class:`fstreamShader`\n" + " - :class:`streamShader`\n" + "\n" + "- :class:`UnaryFunction0D`\n" + "\n" + " - :class:`UnaryFunction0DDouble`\n" + "\n" + " - :class:`Curvature2DAngleF0D`\n" + " - :class:`DensityF0D`\n" + " - :class:`GetProjectedXF0D`\n" + " - :class:`GetProjectedYF0D`\n" + " - :class:`GetProjectedZF0D`\n" + " - :class:`GetXF0D`\n" + " - :class:`GetYF0D`\n" + " - :class:`GetZF0D`\n" + " - :class:`LocalAverageDepthF0D`\n" + " - :class:`ZDiscontinuityF0D`\n" + "\n" + " - :class:`UnaryFunction0DEdgeNature`\n" + "\n" + " - :class:`CurveNatureF0D`\n" + "\n" + " - :class:`UnaryFunction0DFloat`\n" + "\n" + " - :class:`GetCurvilinearAbscissaF0D`\n" + " - :class:`GetParameterF0D`\n" + " - :class:`GetViewMapGradientNormF0D`\n" + " - :class:`ReadCompleteViewMapPixelF0D`\n" + " - :class:`ReadMapPixelF0D`\n" + " - :class:`ReadSteerableViewMapPixelF0D`\n" + "\n" + " - :class:`UnaryFunction0DId`\n" + "\n" + " - :class:`ShapeIdF0D`\n" + "\n" + " - :class:`UnaryFunction0DMaterial`\n" + "\n" + " - :class:`MaterialF0D`\n" + "\n" + " - :class:`UnaryFunction0DUnsigned`\n" + "\n" + " - :class:`QuantitativeInvisibilityF0D`\n" + "\n" + " - :class:`UnaryFunction0DVec2f`\n" + "\n" + " - :class:`Normal2DF0D`\n" + " - :class:`VertexOrientation2DF0D`\n" + "\n" + " - :class:`UnaryFunction0DVec3f`\n" + "\n" + " - :class:`VertexOrientation3DF0D`\n" + "\n" + " - :class:`UnaryFunction0DVectorViewShape`\n" + "\n" + " - :class:`GetOccludersF0D`\n" + "\n" + " - :class:`UnaryFunction0DViewShape`\n" + "\n" + " - :class:`GetOccludeeF0D`\n" + " - :class:`GetShapeF0D`\n" + "\n" + "- :class:`UnaryFunction1D`\n" + "\n" + " - :class:`UnaryFunction1DDouble`\n" + "\n" + " - :class:`Curvature2DAngleF1D`\n" + " - :class:`DensityF1D`\n" + " - :class:`GetCompleteViewMapDensityF1D`\n" + " - :class:`GetDirectionalViewMapDensityF1D`\n" + " - :class:`GetProjectedXF1D`\n" + " - :class:`GetProjectedYF1D`\n" + " - :class:`GetProjectedZF1D`\n" + " - :class:`GetSteerableViewMapDensityF1D`\n" + " - :class:`GetViewMapGradientNormF1D`\n" + " - :class:`GetXF1D`\n" + " - :class:`GetYF1D`\n" + " - :class:`GetZF1D`\n" + " - :class:`LocalAverageDepthF1D`\n" + " - :class:`ZDiscontinuityF1D`\n" + "\n" + " - :class:`UnaryFunction1DEdgeNature`\n" + "\n" + " - :class:`CurveNatureF1D`\n" + "\n" + " - :class:`UnaryFunction1DFloat`\n" + " - :class:`UnaryFunction1DUnsigned`\n" + "\n" + " - :class:`QuantitativeInvisibilityF1D`\n" + "\n" + " - :class:`UnaryFunction1DVec2f`\n" + "\n" + " - :class:`Normal2DF1D`\n" + " - :class:`Orientation2DF1D`\n" + "\n" + " - :class:`UnaryFunction1DVec3f`\n" + "\n" + " - :class:`Orientation3DF1D`\n" + "\n" + " - :class:`UnaryFunction1DVectorViewShape`\n" + "\n" + " - :class:`GetOccludeeF1D`\n" + " - :class:`GetOccludersF1D`\n" + " - :class:`GetShapeF1D`\n" + "\n" + " - :class:`UnaryFunction1DVoid`\n" + "\n" + " - :class:`ChainingTimeStampF1D`\n" + " - :class:`IncrementChainingTimeStampF1D`\n" + " - :class:`TimeStampF1D`\n" + "\n" + "- :class:`UnaryPredicate0D`\n" + "\n" + " - :class:`FalseUP0D`\n" + " - :class:`TrueUP0D`\n" + "\n" + "- :class:`UnaryPredicate1D`\n" + "\n" + " - :class:`ContourUP1D`\n" + " - :class:`DensityLowerThanUP1D`\n" + " - :class:`EqualToChainingTimeStampUP1D`\n" + " - :class:`EqualToTimeStampUP1D`\n" + " - :class:`ExternalContourUP1D`\n" + " - :class:`FalseUP1D`\n" + " - :class:`QuantitativeInvisibilityUP1D`\n" + " - :class:`ShapeUP1D`\n" + " - :class:`TrueUP1D`\n" + " - :class:`WithinImageBoundaryUP1D`\n" + "\n" + "- :class:`ViewMap`\n" + "- :class:`ViewShape`\n" + "- :class:`IntegrationType`\n" + "- :class:`MediumType`\n" + "- :class:`Nature`\n" + "\n"; /*-----------------------Freestyle module method def---------------------------*/ static PyMethodDef module_functions[] = { - {"getCurrentScene", (PyCFunction) Freestyle_getCurrentScene, METH_NOARGS, Freestyle_getCurrentScene___doc__}, - {"blendRamp", (PyCFunction) Freestyle_blendRamp, METH_VARARGS, Freestyle_blendRamp___doc__}, - {"evaluateColorRamp", (PyCFunction) Freestyle_evaluateColorRamp, METH_VARARGS, Freestyle_evaluateColorRamp___doc__}, - {"evaluateCurveMappingF", (PyCFunction) Freestyle_evaluateCurveMappingF, METH_VARARGS, - Freestyle_evaluateCurveMappingF___doc__}, - {NULL, NULL, 0, NULL}, + {"getCurrentScene", + (PyCFunction)Freestyle_getCurrentScene, + METH_NOARGS, + Freestyle_getCurrentScene___doc__}, + {"blendRamp", (PyCFunction)Freestyle_blendRamp, METH_VARARGS, Freestyle_blendRamp___doc__}, + {"evaluateColorRamp", + (PyCFunction)Freestyle_evaluateColorRamp, + METH_VARARGS, + Freestyle_evaluateColorRamp___doc__}, + {"evaluateCurveMappingF", + (PyCFunction)Freestyle_evaluateCurveMappingF, + METH_VARARGS, + Freestyle_evaluateCurveMappingF___doc__}, + {NULL, NULL, 0, NULL}, }; /*-----------------------Freestyle module definition---------------------------*/ @@ -481,60 +510,61 @@ static PyModuleDef module_definition = { //-------------------MODULE INITIALIZATION-------------------------------- PyObject *Freestyle_Init(void) { - PyObject *module; - - // initialize modules - module = PyModule_Create(&module_definition); - if (!module) - return NULL; - PyDict_SetItemString(PySys_GetObject("modules"), module_definition.m_name, module); - - // update 'sys.path' for Freestyle Python API modules - const char * const path = BKE_appdir_folder_id(BLENDER_SYSTEM_SCRIPTS, "freestyle"); - if (path) { - char modpath[FILE_MAX]; - BLI_join_dirfile(modpath, sizeof(modpath), path, "modules"); - PyObject *sys_path = PySys_GetObject("path"); /* borrow */ - PyObject *py_modpath = PyUnicode_FromString(modpath); - PyList_Append(sys_path, py_modpath); - Py_DECREF(py_modpath); + PyObject *module; + + // initialize modules + module = PyModule_Create(&module_definition); + if (!module) + return NULL; + PyDict_SetItemString(PySys_GetObject("modules"), module_definition.m_name, module); + + // update 'sys.path' for Freestyle Python API modules + const char *const path = BKE_appdir_folder_id(BLENDER_SYSTEM_SCRIPTS, "freestyle"); + if (path) { + char modpath[FILE_MAX]; + BLI_join_dirfile(modpath, sizeof(modpath), path, "modules"); + PyObject *sys_path = PySys_GetObject("path"); /* borrow */ + PyObject *py_modpath = PyUnicode_FromString(modpath); + PyList_Append(sys_path, py_modpath); + Py_DECREF(py_modpath); #if 0 - printf("Adding Python path: %s\n", modpath); + printf("Adding Python path: %s\n", modpath); #endif - } - else { - printf("Freestyle: couldn't find 'scripts/freestyle/modules', Freestyle won't work properly.\n"); - } - - // attach its classes (adding the object types to the module) - - // those classes have to be initialized before the others - MediumType_Init(module); - Nature_Init(module); - - BBox_Init(module); - BinaryPredicate0D_Init(module); - BinaryPredicate1D_Init(module); - ContextFunctions_Init(module); - FrsMaterial_Init(module); - FrsNoise_Init(module); - Id_Init(module); - IntegrationType_Init(module); - Interface0D_Init(module); - Interface1D_Init(module); - Iterator_Init(module); - Operators_Init(module); - SShape_Init(module); - StrokeAttribute_Init(module); - StrokeShader_Init(module); - UnaryFunction0D_Init(module); - UnaryFunction1D_Init(module); - UnaryPredicate0D_Init(module); - UnaryPredicate1D_Init(module); - ViewMap_Init(module); - ViewShape_Init(module); - - return module; + } + else { + printf( + "Freestyle: couldn't find 'scripts/freestyle/modules', Freestyle won't work properly.\n"); + } + + // attach its classes (adding the object types to the module) + + // those classes have to be initialized before the others + MediumType_Init(module); + Nature_Init(module); + + BBox_Init(module); + BinaryPredicate0D_Init(module); + BinaryPredicate1D_Init(module); + ContextFunctions_Init(module); + FrsMaterial_Init(module); + FrsNoise_Init(module); + Id_Init(module); + IntegrationType_Init(module); + Interface0D_Init(module); + Interface1D_Init(module); + Iterator_Init(module); + Operators_Init(module); + SShape_Init(module); + StrokeAttribute_Init(module); + StrokeShader_Init(module); + UnaryFunction0D_Init(module); + UnaryFunction1D_Init(module); + UnaryPredicate0D_Init(module); + UnaryPredicate1D_Init(module); + ViewMap_Init(module); + ViewShape_Init(module); + + return module; } /////////////////////////////////////////////////////////////////////////////////////////// |