Blender  V3.3
BPy_BlenderTextureShader.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
8 
9 #include "../../stroke/BasicStrokeShaders.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #include "../../../../python/generic/py_capi_utils.h"
16 
17 using namespace Freestyle;
18 
20 
21 //------------------------INSTANCE METHODS ----------------------------------
22 
24  "Class hierarchy: :class:`freestyle.types.StrokeShader` > :class:`BlenderTextureShader`\n"
25  "\n"
26  "[Texture shader]\n"
27  "\n"
28  ".. method:: __init__(texture)\n"
29  "\n"
30  " Builds a BlenderTextureShader object.\n"
31  "\n"
32  " :arg texture: A line style texture slot or a shader node tree to define\n"
33  " a set of textures.\n"
34  " :type texture: :class:`bpy.types.LineStyleTextureSlot` or\n"
35  " :class:`bpy.types.ShaderNodeTree`\n"
36  "\n"
37  ".. method:: shade(stroke)\n"
38  "\n"
39  " Assigns a blender texture slot to the stroke shading in order to\n"
40  " simulate marks.\n"
41  "\n"
42  " :arg stroke: A Stroke object.\n"
43  " :type stroke: :class:`freestyle.types.Stroke`\n";
44 
46  PyObject *args,
47  PyObject *kwds)
48 {
49  static const char *kwlist[] = {"texture", nullptr};
50  PyObject *obj;
51  MTex *_mtex;
52  bNodeTree *_nodetree;
53 
54  if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj)) {
55  return -1;
56  }
57  _mtex = (MTex *)PyC_RNA_AsPointer(obj, "LineStyleTextureSlot");
58  if (_mtex) {
59  self->py_ss.ss = new StrokeShaders::BlenderTextureShader(_mtex);
60  return 0;
61  }
62  PyErr_Clear();
63  _nodetree = (bNodeTree *)PyC_RNA_AsPointer(obj, "ShaderNodeTree");
64  if (_nodetree) {
65  self->py_ss.ss = new StrokeShaders::BlenderTextureShader(_nodetree);
66  return 0;
67  }
68  PyErr_Format(PyExc_TypeError,
69  "expected either 'LineStyleTextureSlot' or 'ShaderNodeTree', "
70  "found '%.200s' instead",
71  Py_TYPE(obj)->tp_name);
72  return -1;
73 }
74 
75 /*-----------------------BPy_BlenderTextureShader type definition ------------------------------*/
76 
77 PyTypeObject BlenderTextureShader_Type = {
78  PyVarObject_HEAD_INIT(nullptr, 0) "BlenderTextureShader", /* tp_name */
79  sizeof(BPy_BlenderTextureShader), /* tp_basicsize */
80  0, /* tp_itemsize */
81  nullptr, /* tp_dealloc */
82  0, /* tp_vectorcall_offset */
83  nullptr, /* tp_getattr */
84  nullptr, /* tp_setattr */
85  nullptr, /* tp_reserved */
86  nullptr, /* tp_repr */
87  nullptr, /* tp_as_number */
88  nullptr, /* tp_as_sequence */
89  nullptr, /* tp_as_mapping */
90  nullptr, /* tp_hash */
91  nullptr, /* tp_call */
92  nullptr, /* tp_str */
93  nullptr, /* tp_getattro */
94  nullptr, /* tp_setattro */
95  nullptr, /* tp_as_buffer */
96  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
97  BlenderTextureShader___doc__, /* tp_doc */
98  nullptr, /* tp_traverse */
99  nullptr, /* tp_clear */
100  nullptr, /* tp_richcompare */
101  0, /* tp_weaklistoffset */
102  nullptr, /* tp_iter */
103  nullptr, /* tp_iternext */
104  nullptr, /* tp_methods */
105  nullptr, /* tp_members */
106  nullptr, /* tp_getset */
107  &StrokeShader_Type, /* tp_base */
108  nullptr, /* tp_dict */
109  nullptr, /* tp_descr_get */
110  nullptr, /* tp_descr_set */
111  0, /* tp_dictoffset */
112  (initproc)BlenderTextureShader___init__, /* tp_init */
113  nullptr, /* tp_alloc */
114  nullptr, /* tp_new */
115 };
116 
118 
119 #ifdef __cplusplus
120 }
121 #endif
static int BlenderTextureShader___init__(BPy_BlenderTextureShader *self, PyObject *args, PyObject *kwds)
PyTypeObject BlenderTextureShader_Type
static char BlenderTextureShader___doc__[]
PyTypeObject StrokeShader_Type
inherits from class Rep
Definition: AppCanvas.cpp:18
void * PyC_RNA_AsPointer(PyObject *value, const char *type_name)