40#include "RNA_prototypes.hh"
43#include "../generic/py_capi_utils.hh"
55 Freestyle_getCurrentScene___doc__,
56 ".. function:: getCurrentScene()\n"
58 " Returns the current scene.\n"
60 " :return: The current scene.\n"
61 " :rtype: :class:`bpy.types.Scene`\n");
66 PyErr_SetString(PyExc_TypeError,
"current scene not available");
77 if (
STREQ(type,
"MIX")) {
80 if (
STREQ(type,
"ADD")) {
83 if (
STREQ(type,
"MULTIPLY")) {
86 if (
STREQ(type,
"SUBTRACT")) {
89 if (
STREQ(type,
"SCREEN")) {
92 if (
STREQ(type,
"DIVIDE")) {
95 if (
STREQ(type,
"DIFFERENCE")) {
98 if (
STREQ(type,
"EXCLUSION")) {
101 if (
STREQ(type,
"DARKEN")) {
104 if (
STREQ(type,
"LIGHTEN")) {
107 if (
STREQ(type,
"OVERLAY")) {
110 if (
STREQ(type,
"DODGE")) {
113 if (
STREQ(type,
"BURN")) {
116 if (
STREQ(type,
"HUE")) {
119 if (
STREQ(type,
"SATURATION")) {
122 if (
STREQ(type,
"VALUE")) {
125 if (
STREQ(type,
"COLOR")) {
128 if (
STREQ(type,
"SOFT_LIGHT")) {
131 if (
STREQ(type,
"LINEAR_LIGHT")) {
139 Freestyle_blendRamp___doc__,
140 ".. function:: blendRamp(type, color1, fac, color2)\n"
142 " Blend two colors according to a ramp blend type.\n"
144 " :arg type: Ramp blend type.\n"
146 " :arg color1: 1st color.\n"
147 " :type color1: :class:`mathutils.Vector` | tuple[float, float, float] | list[float]\n"
148 " :arg fac: Blend factor.\n"
149 " :type fac: float\n"
150 " :arg color2: 1st color.\n"
151 " :type color2: :class:`mathutils.Vector` | tuple[float, float, float] | list[float]\n"
152 " :return: Blended color in RGB format.\n"
153 " :rtype: :class:`mathutils.Vector`\n");
156 PyObject *obj1, *obj2;
159 float a[3], fac,
b[3];
161 if (!PyArg_ParseTuple(args,
"sOfO", &s, &obj1, &fac, &obj2)) {
166 PyErr_SetString(PyExc_TypeError,
"argument 1 is an unknown ramp blend type");
173 "argument 2 must be a 3D vector "
174 "(either a tuple/list of 3 elements or Vector)") == -1)
182 "argument 4 must be a 3D vector "
183 "(either a tuple/list of 3 elements or Vector)") == -1)
193 Freestyle_evaluateColorRamp___doc__,
194 ".. function:: evaluateColorRamp(ramp, in)\n"
196 " Evaluate a color ramp at a point in the interval 0 to 1.\n"
198 " :arg ramp: Color ramp object.\n"
199 " :type ramp: :class:`bpy.types.ColorRamp`\n"
200 " :arg in: Value in the interval 0 to 1.\n"
202 " :return: color in RGBA format.\n"
203 " :rtype: :class:`mathutils.Vector`\n");
214 PyErr_SetString(PyExc_TypeError,
"1st argument is not a ColorRamp object");
219 PyErr_SetString(PyExc_ValueError,
"failed to evaluate the color ramp");
229 Freestyle_evaluateCurveMappingF___doc__,
230 ".. function:: evaluateCurveMappingF(cumap, cur, value)\n"
232 " Evaluate a curve mapping at a point in the interval 0 to 1.\n"
234 " :arg cumap: Curve mapping object.\n"
235 " :type cumap: :class:`bpy.types.CurveMapping`\n"
236 " :arg cur: Index of the curve to be used (0 <= cur <= 3).\n"
238 " :arg value: Input value in the interval 0 to 1.\n"
239 " :type value: float\n"
240 " :return: Mapped output value.\n"
249 if (!PyArg_ParseTuple(args,
"O!if", &
pyrna_struct_Type, &py_srna, &cur, &value)) {
253 PyErr_SetString(PyExc_TypeError,
"1st argument is not a CurveMapping object");
256 if (cur < 0 || cur > 3) {
257 PyErr_SetString(PyExc_ValueError,
"2nd argument is out of range");
275 "This module provides classes for defining line drawing rules (such as\n"
276 "predicates, functions, chaining iterators, and stroke shaders), as well\n"
277 "as helper functions for style module writing.\n"
282 "- :class:`BinaryPredicate0D`\n"
283 "- :class:`BinaryPredicate1D`\n"
285 " - :class:`FalseBP1D`\n"
286 " - :class:`Length2DBP1D`\n"
287 " - :class:`SameShapeIdBP1D`\n"
288 " - :class:`TrueBP1D`\n"
289 " - :class:`ViewMapGradientNormBP1D`\n"
292 "- :class:`Interface0D`\n"
294 " - :class:`CurvePoint`\n"
296 " - :class:`StrokeVertex`\n"
298 " - :class:`SVertex`\n"
299 " - :class:`ViewVertex`\n"
301 " - :class:`NonTVertex`\n"
302 " - :class:`TVertex`\n"
304 "- :class:`Interface1D`\n"
306 " - :class:`Curve`\n"
308 " - :class:`Chain`\n"
310 " - :class:`FEdge`\n"
312 " - :class:`FEdgeSharp`\n"
313 " - :class:`FEdgeSmooth`\n"
315 " - :class:`Stroke`\n"
316 " - :class:`ViewEdge`\n"
318 "- :class:`Iterator`\n"
320 " - :class:`AdjacencyIterator`\n"
321 " - :class:`CurvePointIterator`\n"
322 " - :class:`Interface0DIterator`\n"
323 " - :class:`SVertexIterator`\n"
324 " - :class:`StrokeVertexIterator`\n"
325 " - :class:`ViewEdgeIterator`\n"
327 " - :class:`ChainingIterator`\n"
329 " - :class:`ChainPredicateIterator`\n"
330 " - :class:`ChainSilhouetteIterator`\n"
332 " - :class:`orientedViewEdgeIterator`\n"
334 "- :class:`Material`\n"
336 "- :class:`Operators`\n"
337 "- :class:`SShape`\n"
338 "- :class:`StrokeAttribute`\n"
339 "- :class:`StrokeShader`\n"
341 " - :class:`BackboneStretcherShader`\n"
342 " - :class:`BezierCurveShader`\n"
343 " - :class:`BlenderTextureShader`\n"
344 " - :class:`CalligraphicShader`\n"
345 " - :class:`ColorNoiseShader`\n"
346 " - :class:`ColorVariationPatternShader`\n"
347 " - :class:`ConstantColorShader`\n"
348 " - :class:`ConstantThicknessShader`\n"
349 " - :class:`ConstrainedIncreasingThicknessShader`\n"
350 " - :class:`GuidingLinesShader`\n"
351 " - :class:`IncreasingColorShader`\n"
352 " - :class:`IncreasingThicknessShader`\n"
353 " - :class:`PolygonalizationShader`\n"
354 " - :class:`SamplingShader`\n"
355 " - :class:`SmoothingShader`\n"
356 " - :class:`SpatialNoiseShader`\n"
357 " - :class:`StrokeTextureShader`\n"
358 " - :class:`StrokeTextureStepShader`\n"
359 " - :class:`TextureAssignerShader`\n"
360 " - :class:`ThicknessNoiseShader`\n"
361 " - :class:`ThicknessVariationPatternShader`\n"
362 " - :class:`TipRemoverShader`\n"
363 " - :class:`fstreamShader`\n"
364 " - :class:`streamShader`\n"
366 "- :class:`UnaryFunction0D`\n"
368 " - :class:`UnaryFunction0DDouble`\n"
370 " - :class:`Curvature2DAngleF0D`\n"
371 " - :class:`DensityF0D`\n"
372 " - :class:`GetProjectedXF0D`\n"
373 " - :class:`GetProjectedYF0D`\n"
374 " - :class:`GetProjectedZF0D`\n"
375 " - :class:`GetXF0D`\n"
376 " - :class:`GetYF0D`\n"
377 " - :class:`GetZF0D`\n"
378 " - :class:`LocalAverageDepthF0D`\n"
379 " - :class:`ZDiscontinuityF0D`\n"
381 " - :class:`UnaryFunction0DEdgeNature`\n"
383 " - :class:`CurveNatureF0D`\n"
385 " - :class:`UnaryFunction0DFloat`\n"
387 " - :class:`GetCurvilinearAbscissaF0D`\n"
388 " - :class:`GetParameterF0D`\n"
389 " - :class:`GetViewMapGradientNormF0D`\n"
390 " - :class:`ReadCompleteViewMapPixelF0D`\n"
391 " - :class:`ReadMapPixelF0D`\n"
392 " - :class:`ReadSteerableViewMapPixelF0D`\n"
394 " - :class:`UnaryFunction0DId`\n"
396 " - :class:`ShapeIdF0D`\n"
398 " - :class:`UnaryFunction0DMaterial`\n"
400 " - :class:`MaterialF0D`\n"
402 " - :class:`UnaryFunction0DUnsigned`\n"
404 " - :class:`QuantitativeInvisibilityF0D`\n"
406 " - :class:`UnaryFunction0DVec2f`\n"
408 " - :class:`Normal2DF0D`\n"
409 " - :class:`VertexOrientation2DF0D`\n"
411 " - :class:`UnaryFunction0DVec3f`\n"
413 " - :class:`VertexOrientation3DF0D`\n"
415 " - :class:`UnaryFunction0DVectorViewShape`\n"
417 " - :class:`GetOccludersF0D`\n"
419 " - :class:`UnaryFunction0DViewShape`\n"
421 " - :class:`GetOccludeeF0D`\n"
422 " - :class:`GetShapeF0D`\n"
424 "- :class:`UnaryFunction1D`\n"
426 " - :class:`UnaryFunction1DDouble`\n"
428 " - :class:`Curvature2DAngleF1D`\n"
429 " - :class:`DensityF1D`\n"
430 " - :class:`GetCompleteViewMapDensityF1D`\n"
431 " - :class:`GetDirectionalViewMapDensityF1D`\n"
432 " - :class:`GetProjectedXF1D`\n"
433 " - :class:`GetProjectedYF1D`\n"
434 " - :class:`GetProjectedZF1D`\n"
435 " - :class:`GetSteerableViewMapDensityF1D`\n"
436 " - :class:`GetViewMapGradientNormF1D`\n"
437 " - :class:`GetXF1D`\n"
438 " - :class:`GetYF1D`\n"
439 " - :class:`GetZF1D`\n"
440 " - :class:`LocalAverageDepthF1D`\n"
441 " - :class:`ZDiscontinuityF1D`\n"
443 " - :class:`UnaryFunction1DEdgeNature`\n"
445 " - :class:`CurveNatureF1D`\n"
447 " - :class:`UnaryFunction1DFloat`\n"
448 " - :class:`UnaryFunction1DUnsigned`\n"
450 " - :class:`QuantitativeInvisibilityF1D`\n"
452 " - :class:`UnaryFunction1DVec2f`\n"
454 " - :class:`Normal2DF1D`\n"
455 " - :class:`Orientation2DF1D`\n"
457 " - :class:`UnaryFunction1DVec3f`\n"
459 " - :class:`Orientation3DF1D`\n"
461 " - :class:`UnaryFunction1DVectorViewShape`\n"
463 " - :class:`GetOccludeeF1D`\n"
464 " - :class:`GetOccludersF1D`\n"
465 " - :class:`GetShapeF1D`\n"
467 " - :class:`UnaryFunction1DVoid`\n"
469 " - :class:`ChainingTimeStampF1D`\n"
470 " - :class:`IncrementChainingTimeStampF1D`\n"
471 " - :class:`TimeStampF1D`\n"
473 "- :class:`UnaryPredicate0D`\n"
475 " - :class:`FalseUP0D`\n"
476 " - :class:`TrueUP0D`\n"
478 "- :class:`UnaryPredicate1D`\n"
480 " - :class:`ContourUP1D`\n"
481 " - :class:`DensityLowerThanUP1D`\n"
482 " - :class:`EqualToChainingTimeStampUP1D`\n"
483 " - :class:`EqualToTimeStampUP1D`\n"
484 " - :class:`ExternalContourUP1D`\n"
485 " - :class:`FalseUP1D`\n"
486 " - :class:`QuantitativeInvisibilityUP1D`\n"
487 " - :class:`ShapeUP1D`\n"
488 " - :class:`TrueUP1D`\n"
489 " - :class:`WithinImageBoundaryUP1D`\n"
491 "- :class:`ViewMap`\n"
492 "- :class:`ViewShape`\n"
493 "- :class:`IntegrationType`\n"
494 "- :class:`MediumType`\n"
495 "- :class:`Nature`\n"
502# pragma clang diagnostic push
503# pragma clang diagnostic ignored "-Wcast-function-type"
505# pragma GCC diagnostic push
506# pragma GCC diagnostic ignored "-Wcast-function-type"
514 Freestyle_getCurrentScene___doc__},
515 {
"blendRamp", (PyCFunction)
Freestyle_blendRamp, METH_VARARGS, Freestyle_blendRamp___doc__},
516 {
"evaluateColorRamp",
519 Freestyle_evaluateColorRamp___doc__},
520 {
"evaluateCurveMappingF",
523 Freestyle_evaluateCurveMappingF___doc__},
524 {
nullptr,
nullptr, 0,
nullptr},
529# pragma clang diagnostic pop
531# pragma GCC diagnostic pop
555 module = PyModule_Create(&module_definition);
564 if (path.has_value()) {
566 BLI_path_join(modpath,
sizeof(modpath), path->c_str(),
"modules");
567 PyObject *sys_path = PySys_GetObject(
"path");
569 PyList_Append(sys_path, py_modpath);
572 printf(
"Adding Python path: %s\n", modpath);
577 "Freestyle: couldn't find 'scripts/freestyle/modules', Freestyle won't work properly.\n");
std::optional< std::string > BKE_appdir_folder_id(int folder_id, const char *subfolder) ATTR_WARN_UNUSED_RESULT
bool BKE_colorband_evaluate(const ColorBand *coba, float in, float out[4])
General operations, lookup, etc. for materials.
void ramp_blend(int type, float r_col[3], float fac, const float col[3])
#define BLI_path_join(...)
int BBox_Init(PyObject *module)
int BinaryPredicate0D_Init(PyObject *module)
int BinaryPredicate1D_Init(PyObject *module)
static PyModuleDef module_definition
int ContextFunctions_Init(PyObject *module)
static PyMethodDef module_functions[]
static PyObject * Freestyle_evaluateColorRamp(PyObject *, PyObject *args)
static int ramp_blend_type(const char *type)
static PyObject * Freestyle_evaluateCurveMappingF(PyObject *, PyObject *args)
static PyObject * Freestyle_getCurrentScene(PyObject *)
static PyObject * Freestyle_blendRamp(PyObject *, PyObject *args)
PyObject * Freestyle_Init()
PyDoc_STRVAR(Freestyle_getCurrentScene___doc__, ".. function:: getCurrentScene()\n" "\n" " Returns the current scene.\n" "\n" " :return: The current scene.\n" " :rtype: :class:`bpy.types.Scene`\n")
int FrsMaterial_Init(PyObject *module)
int FrsNoise_Init(PyObject *module)
int Id_Init(PyObject *module)
int IntegrationType_Init(PyObject *module)
int Interface0D_Init(PyObject *module)
int Interface1D_Init(PyObject *module)
int Iterator_Init(PyObject *module)
int MediumType_Init(PyObject *module)
int Nature_Init(PyObject *module)
int Operators_Init(PyObject *module)
int SShape_Init(PyObject *module)
int StrokeAttribute_Init(PyObject *module)
int StrokeShader_Init(PyObject *module)
int UnaryFunction0D_Init(PyObject *module)
int UnaryFunction1D_Init(PyObject *module)
int UnaryPredicate0D_Init(PyObject *module)
int UnaryPredicate1D_Init(PyObject *module)
int ViewMap_Init(PyObject *module)
int ViewShape_Init(PyObject *module)
@ CUMA_EXTEND_EXTRAPOLATE
struct FreestyleGlobals g_freestyle
PyTypeObject pyrna_struct_Type
PyObject * pyrna_struct_CreatePyObject(PointerRNA *ptr)
int mathutils_array_parse(float *array, int array_num_min, int array_num_max, PyObject *value, const char *error_prefix)
PyObject * Vector_CreatePyObject(const float *vec, const int vec_num, PyTypeObject *base_type)
PyObject * PyC_UnicodeFromBytes(const char *str)
static struct PyModuleDef module
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
PyObject_HEAD std::optional< PointerRNA > ptr