1 /*
2 * This program is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU General Public License
4 * as published by the Free Software Foundation; either version 2
5 * of the License, or (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software Foundation,
14 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15 */
16
17 /** \file
18 * \ingroup RNA
19 */
20
21 #include <float.h>
22 #include <limits.h>
23 #include <stdlib.h>
24
25 #include "DNA_armature_types.h"
26 #include "DNA_brush_types.h"
27 #include "DNA_cachefile_types.h"
28 #include "DNA_gpencil_modifier_types.h"
29 #include "DNA_mesh_types.h"
30 #include "DNA_object_force_types.h"
31 #include "DNA_object_types.h"
32 #include "DNA_scene_types.h"
33
34 #include "MEM_guardedalloc.h"
35
36 #include "BLI_math.h"
37 #include "BLI_rand.h"
38
39 #include "BLT_translation.h"
40
41 #include "BKE_animsys.h"
42 #include "BKE_data_transfer.h"
43 #include "BKE_dynamicpaint.h"
44 #include "BKE_effect.h"
45 #include "BKE_fluid.h" /* For BKE_fluid_modifier_free & BKE_fluid_modifier_create_type_data */
46 #include "BKE_mesh_mapping.h"
47 #include "BKE_mesh_remap.h"
48 #include "BKE_multires.h"
49
50 #include "RNA_access.h"
51 #include "RNA_define.h"
52 #include "RNA_enum_types.h"
53
54 #include "rna_internal.h"
55
56 #include "WM_api.h"
57 #include "WM_types.h"
58
59 const EnumPropertyItem rna_enum_object_greasepencil_modifier_type_items[] = {
60 {0, "", 0, N_("Generate"), ""},
61 {eGpencilModifierType_Array,
62 "GP_ARRAY",
63 ICON_MOD_ARRAY,
64 "Array",
65 "Create array of duplicate instances"},
66 {eGpencilModifierType_Build,
67 "GP_BUILD",
68 ICON_MOD_BUILD,
69 "Build",
70 "Create duplication of strokes"},
71 {eGpencilModifierType_Mirror,
72 "GP_MIRROR",
73 ICON_MOD_MIRROR,
74 "Mirror",
75 "Duplicate strokes like a mirror"},
76 {eGpencilModifierType_Multiply,
77 "GP_MULTIPLY",
78 ICON_GP_MULTIFRAME_EDITING,
79 "Multiple Strokes",
80 "Produce multiple strokes along one stroke"},
81 {eGpencilModifierType_Simplify,
82 "GP_SIMPLIFY",
83 ICON_MOD_SIMPLIFY,
84 "Simplify",
85 "Simplify stroke reducing number of points"},
86 {eGpencilModifierType_Subdiv,
87 "GP_SUBDIV",
88 ICON_MOD_SUBSURF,
89 "Subdivide",
90 "Subdivide stroke adding more control points"},
91 {0, "", 0, N_("Deform"), ""},
92 {eGpencilModifierType_Armature,
93 "GP_ARMATURE",
94 ICON_MOD_ARMATURE,
95 "Armature",
96 "Deform stroke points using armature object"},
97 {eGpencilModifierType_Hook,
98 "GP_HOOK",
99 ICON_HOOK,
100 "Hook",
101 "Deform stroke points using objects"},
102 {eGpencilModifierType_Lattice,
103 "GP_LATTICE",
104 ICON_MOD_LATTICE,
105 "Lattice",
106 "Deform strokes using lattice"},
107 {eGpencilModifierType_Noise, "GP_NOISE", ICON_MOD_NOISE, "Noise", "Add noise to strokes"},
108 {eGpencilModifierType_Offset,
109 "GP_OFFSET",
110 ICON_MOD_OFFSET,
111 "Offset",
112 "Change stroke location, rotation or scale"},
113 {eGpencilModifierType_Smooth, "GP_SMOOTH", ICON_MOD_SMOOTH, "Smooth", "Smooth stroke"},
114 {eGpencilModifierType_Thick,
115 "GP_THICK",
116 ICON_MOD_THICKNESS,
117 "Thickness",
118 "Change stroke thickness"},
119 {eGpencilModifierType_Time, "GP_TIME", ICON_MOD_TIME, "Time Offset", "Offset keyframes"},
120 {0, "", 0, N_("Color"), ""},
121 {eGpencilModifierType_Color,
122 "GP_COLOR",
123 ICON_MOD_HUE_SATURATION,
124 "Hue/Saturation",
125 "Apply changes to stroke colors"},
126 {eGpencilModifierType_Opacity,
127 "GP_OPACITY",
128 ICON_MOD_OPACITY,
129 "Opacity",
130 "Opacity of the strokes"},
131 {eGpencilModifierType_Texture,
132 "GP_TEXTURE",
133 ICON_TEXTURE,
134 "Texture Mapping",
135 "Change stroke uv texture values"},
136 {eGpencilModifierType_Tint, "GP_TINT", ICON_MOD_TINT, "Tint", "Tint strokes with new color"},
137 {0, NULL, 0, NULL, NULL},
138 };
139
140 #ifndef RNA_RUNTIME
141 static const EnumPropertyItem modifier_modify_color_items[] = {
142 {GP_MODIFY_COLOR_BOTH, "BOTH", 0, "Stroke and Fill", "Modify fill and stroke colors"},
143 {GP_MODIFY_COLOR_STROKE, "STROKE", 0, "Stroke", "Modify stroke color only"},
144 {GP_MODIFY_COLOR_FILL, "FILL", 0, "Fill", "Modify fill color only"},
145 {0, NULL, 0, NULL, NULL},
146 };
147
148 static const EnumPropertyItem modifier_modify_opacity_items[] = {
149 {GP_MODIFY_COLOR_BOTH, "BOTH", 0, "Stroke and Fill", "Modify fill and stroke colors"},
150 {GP_MODIFY_COLOR_STROKE, "STROKE", 0, "Stroke", "Modify stroke color only"},
151 {GP_MODIFY_COLOR_FILL, "FILL", 0, "Fill", "Modify fill color only"},
152 {GP_MODIFY_COLOR_HARDNESS, "HARDNESS", 0, "Hardness", "Modify stroke hardness"},
153 {0, NULL, 0, NULL, NULL},
154 };
155
156 static const EnumPropertyItem modifier_gphook_falloff_items[] = {
157 {eGPHook_Falloff_None, "NONE", 0, "No Falloff", ""},
158 {eGPHook_Falloff_Curve, "CURVE", 0, "Curve", ""},
159 {eGPHook_Falloff_Smooth, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""},
160 {eGPHook_Falloff_Sphere, "SPHERE", ICON_SPHERECURVE, "Sphere", ""},
161 {eGPHook_Falloff_Root, "ROOT", ICON_ROOTCURVE, "Root", ""},
162 {eGPHook_Falloff_InvSquare, "INVERSE_SQUARE", ICON_ROOTCURVE, "Inverse Square", ""},
163 {eGPHook_Falloff_Sharp, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
164 {eGPHook_Falloff_Linear, "LINEAR", ICON_LINCURVE, "Linear", ""},
165 {eGPHook_Falloff_Const, "CONSTANT", ICON_NOCURVE, "Constant", ""},
166 {0, NULL, 0, NULL, NULL},
167 };
168
169 static const EnumPropertyItem rna_enum_time_mode_items[] = {
170 {GP_TIME_MODE_NORMAL, "NORMAL", 0, "Regular", "Apply offset in usual animation direction"},
171 {GP_TIME_MODE_REVERSE, "REVERSE", 0, "Reverse", "Apply offset in reverse animation direction"},
172 {GP_TIME_MODE_FIX, "FIX", 0, "Fixed Frame", "Keep frame and do not change with time"},
173 {0, NULL, 0, NULL, NULL},
174 };
175
176 static const EnumPropertyItem gpencil_subdivision_type_items[] = {
177 {GP_SUBDIV_CATMULL, "CATMULL_CLARK", 0, "Catmull-Clark", ""},
178 {GP_SUBDIV_SIMPLE, "SIMPLE", 0, "Simple", ""},
179 {0, NULL, 0, NULL, NULL},
180 };
181 static const EnumPropertyItem gpencil_tint_type_items[] = {
182 {GP_TINT_UNIFORM, "UNIFORM", 0, "Uniform", ""},
183 {GP_TINT_GRADIENT, "GRADIENT", 0, "Gradient", ""},
184 {0, NULL, 0, NULL, NULL},
185 };
186 #endif
187
188 #ifdef RNA_RUNTIME
189
190 # include "DNA_curve_types.h"
191 # include "DNA_fluid_types.h"
192 # include "DNA_particle_types.h"
193
194 # include "BKE_cachefile.h"
195 # include "BKE_context.h"
196 # include "BKE_gpencil.h"
197 # include "BKE_gpencil_modifier.h"
198 # include "BKE_object.h"
199
200 # include "DEG_depsgraph.h"
201 # include "DEG_depsgraph_build.h"
202
rna_GpencilModifier_refine(struct PointerRNA * ptr)203 static StructRNA *rna_GpencilModifier_refine(struct PointerRNA *ptr)
204 {
205 GpencilModifierData *md = (GpencilModifierData *)ptr->data;
206
207 switch ((GpencilModifierType)md->type) {
208 case eGpencilModifierType_Noise:
209 return &RNA_NoiseGpencilModifier;
210 case eGpencilModifierType_Subdiv:
211 return &RNA_SubdivGpencilModifier;
212 case eGpencilModifierType_Simplify:
213 return &RNA_SimplifyGpencilModifier;
214 case eGpencilModifierType_Thick:
215 return &RNA_ThickGpencilModifier;
216 case eGpencilModifierType_Tint:
217 return &RNA_TintGpencilModifier;
218 case eGpencilModifierType_Time:
219 return &RNA_TimeGpencilModifier;
220 case eGpencilModifierType_Color:
221 return &RNA_ColorGpencilModifier;
222 case eGpencilModifierType_Array:
223 return &RNA_ArrayGpencilModifier;
224 case eGpencilModifierType_Build:
225 return &RNA_BuildGpencilModifier;
226 case eGpencilModifierType_Opacity:
227 return &RNA_OpacityGpencilModifier;
228 case eGpencilModifierType_Lattice:
229 return &RNA_LatticeGpencilModifier;
230 case eGpencilModifierType_Mirror:
231 return &RNA_MirrorGpencilModifier;
232 case eGpencilModifierType_Smooth:
233 return &RNA_SmoothGpencilModifier;
234 case eGpencilModifierType_Hook:
235 return &RNA_HookGpencilModifier;
236 case eGpencilModifierType_Offset:
237 return &RNA_OffsetGpencilModifier;
238 case eGpencilModifierType_Armature:
239 return &RNA_ArmatureGpencilModifier;
240 case eGpencilModifierType_Multiply:
241 return &RNA_MultiplyGpencilModifier;
242 case eGpencilModifierType_Texture:
243 return &RNA_TextureGpencilModifier;
244 /* Default */
245 case eGpencilModifierType_None:
246 case NUM_GREASEPENCIL_MODIFIER_TYPES:
247 return &RNA_GpencilModifier;
248 }
249
250 return &RNA_GpencilModifier;
251 }
252
rna_GpencilModifier_name_set(PointerRNA * ptr,const char * value)253 static void rna_GpencilModifier_name_set(PointerRNA *ptr, const char *value)
254 {
255 GpencilModifierData *gmd = ptr->data;
256 char oldname[sizeof(gmd->name)];
257
258 /* make a copy of the old name first */
259 BLI_strncpy(oldname, gmd->name, sizeof(gmd->name));
260
261 /* copy the new name into the name slot */
262 BLI_strncpy_utf8(gmd->name, value, sizeof(gmd->name));
263
264 /* make sure the name is truly unique */
265 if (ptr->owner_id) {
266 Object *ob = (Object *)ptr->owner_id;
267 BKE_gpencil_modifier_unique_name(&ob->greasepencil_modifiers, gmd);
268 }
269
270 /* fix all the animation data which may link to this */
271 BKE_animdata_fix_paths_rename_all(NULL, "grease_pencil_modifiers", oldname, gmd->name);
272 }
273
rna_GpencilModifier_path(PointerRNA * ptr)274 static char *rna_GpencilModifier_path(PointerRNA *ptr)
275 {
276 GpencilModifierData *gmd = ptr->data;
277 char name_esc[sizeof(gmd->name) * 2];
278
279 BLI_strescape(name_esc, gmd->name, sizeof(name_esc));
280 return BLI_sprintfN("grease_pencil_modifiers[\"%s\"]", name_esc);
281 }
282
rna_GpencilModifier_update(Main * UNUSED (bmain),Scene * UNUSED (scene),PointerRNA * ptr)283 static void rna_GpencilModifier_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
284 {
285 DEG_id_tag_update(ptr->owner_id, ID_RECALC_GEOMETRY);
286 WM_main_add_notifier(NC_OBJECT | ND_MODIFIER, ptr->owner_id);
287 }
288
rna_GpencilModifier_dependency_update(Main * bmain,Scene * scene,PointerRNA * ptr)289 static void rna_GpencilModifier_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
290 {
291 rna_GpencilModifier_update(bmain, scene, ptr);
292 DEG_relations_tag_update(bmain);
293 }
294
295 /* Vertex Groups */
296
297 # define RNA_GP_MOD_VGROUP_NAME_SET(_type, _prop) \
298 static void rna_##_type##GpencilModifier_##_prop##_set(PointerRNA *ptr, const char *value) \
299 { \
300 _type##GpencilModifierData *tmd = (_type##GpencilModifierData *)ptr->data; \
301 rna_object_vgroup_name_set(ptr, value, tmd->_prop, sizeof(tmd->_prop)); \
302 }
303
304 RNA_GP_MOD_VGROUP_NAME_SET(Noise, vgname);
305 RNA_GP_MOD_VGROUP_NAME_SET(Thick, vgname);
306 RNA_GP_MOD_VGROUP_NAME_SET(Opacity, vgname);
307 RNA_GP_MOD_VGROUP_NAME_SET(Lattice, vgname);
308 RNA_GP_MOD_VGROUP_NAME_SET(Smooth, vgname);
309 RNA_GP_MOD_VGROUP_NAME_SET(Hook, vgname);
310 RNA_GP_MOD_VGROUP_NAME_SET(Offset, vgname);
311 RNA_GP_MOD_VGROUP_NAME_SET(Armature, vgname);
312 RNA_GP_MOD_VGROUP_NAME_SET(Texture, vgname);
313 RNA_GP_MOD_VGROUP_NAME_SET(Tint, vgname);
314
315 # undef RNA_GP_MOD_VGROUP_NAME_SET
316
317 /* Objects */
318
greasepencil_modifier_object_set(Object * self,Object ** ob_p,int type,PointerRNA value)319 static void greasepencil_modifier_object_set(Object *self,
320 Object **ob_p,
321 int type,
322 PointerRNA value)
323 {
324 Object *ob = value.data;
325
326 if (!self || ob != self) {
327 if (!ob || type == OB_EMPTY || ob->type == type) {
328 id_lib_extern((ID *)ob);
329 *ob_p = ob;
330 }
331 }
332 }
333
334 # define RNA_GP_MOD_OBJECT_SET(_type, _prop, _obtype) \
335 static void rna_##_type##GpencilModifier_##_prop##_set( \
336 PointerRNA *ptr, PointerRNA value, struct ReportList *UNUSED(reports)) \
337 { \
338 _type##GpencilModifierData *tmd = (_type##GpencilModifierData *)ptr->data; \
339 greasepencil_modifier_object_set((Object *)ptr->owner_id, &tmd->_prop, _obtype, value); \
340 }
341
342 RNA_GP_MOD_OBJECT_SET(Armature, object, OB_ARMATURE);
343 RNA_GP_MOD_OBJECT_SET(Lattice, object, OB_LATTICE);
344 RNA_GP_MOD_OBJECT_SET(Mirror, object, OB_EMPTY);
345
346 # undef RNA_GP_MOD_OBJECT_SET
347
rna_HookGpencilModifier_object_set(PointerRNA * ptr,PointerRNA value,struct ReportList * UNUSED (reports))348 static void rna_HookGpencilModifier_object_set(PointerRNA *ptr,
349 PointerRNA value,
350 struct ReportList *UNUSED(reports))
351 {
352 HookGpencilModifierData *hmd = ptr->data;
353 Object *ob = (Object *)value.data;
354
355 hmd->object = ob;
356 id_lib_extern((ID *)ob);
357 BKE_object_modifier_gpencil_hook_reset(ob, hmd);
358 }
359
rna_TintGpencilModifier_object_set(PointerRNA * ptr,PointerRNA value,struct ReportList * UNUSED (reports))360 static void rna_TintGpencilModifier_object_set(PointerRNA *ptr,
361 PointerRNA value,
362 struct ReportList *UNUSED(reports))
363 {
364 TintGpencilModifierData *hmd = ptr->data;
365 Object *ob = (Object *)value.data;
366
367 hmd->object = ob;
368 id_lib_extern((ID *)ob);
369 }
370
rna_TimeModifier_start_frame_set(PointerRNA * ptr,int value)371 static void rna_TimeModifier_start_frame_set(PointerRNA *ptr, int value)
372 {
373 TimeGpencilModifierData *tmd = ptr->data;
374 CLAMP(value, MINFRAME, MAXFRAME);
375 tmd->sfra = value;
376
377 if (tmd->sfra >= tmd->efra) {
378 tmd->efra = MIN2(tmd->sfra, MAXFRAME);
379 }
380 }
381
rna_TimeModifier_end_frame_set(PointerRNA * ptr,int value)382 static void rna_TimeModifier_end_frame_set(PointerRNA *ptr, int value)
383 {
384 TimeGpencilModifierData *tmd = ptr->data;
385 CLAMP(value, MINFRAME, MAXFRAME);
386 tmd->efra = value;
387
388 if (tmd->sfra >= tmd->efra) {
389 tmd->sfra = MAX2(tmd->efra, MINFRAME);
390 }
391 }
392
rna_GpencilOpacity_range(PointerRNA * ptr,float * min,float * max,float * softmin,float * softmax)393 static void rna_GpencilOpacity_range(
394 PointerRNA *ptr, float *min, float *max, float *softmin, float *softmax)
395 {
396 OpacityGpencilModifierData *md = (OpacityGpencilModifierData *)ptr->data;
397
398 *min = 0.0f;
399 *softmin = 0.0f;
400
401 *softmax = (md->flag & GP_OPACITY_NORMALIZE) ? 1.0f : 2.0f;
402 *max = *softmax;
403 }
404
rna_GpencilOpacity_max_set(PointerRNA * ptr,float value)405 static void rna_GpencilOpacity_max_set(PointerRNA *ptr, float value)
406 {
407 OpacityGpencilModifierData *md = (OpacityGpencilModifierData *)ptr->data;
408
409 md->factor = value;
410 if (md->flag & GP_OPACITY_NORMALIZE) {
411 if (md->factor > 1.0f) {
412 md->factor = 1.0f;
413 }
414 }
415 }
416
rna_GpencilModifier_opacity_update(Main * bmain,Scene * scene,PointerRNA * ptr)417 static void rna_GpencilModifier_opacity_update(Main *bmain, Scene *scene, PointerRNA *ptr)
418 {
419 OpacityGpencilModifierData *md = (OpacityGpencilModifierData *)ptr->data;
420 if (md->flag & GP_OPACITY_NORMALIZE) {
421 if (md->factor > 1.0f) {
422 md->factor = 1.0f;
423 }
424 }
425
426 rna_GpencilModifier_update(bmain, scene, ptr);
427 }
428
429 #else
430
rna_def_modifier_gpencilnoise(BlenderRNA * brna)431 static void rna_def_modifier_gpencilnoise(BlenderRNA *brna)
432 {
433 StructRNA *srna;
434 PropertyRNA *prop;
435
436 srna = RNA_def_struct(brna, "NoiseGpencilModifier", "GpencilModifier");
437 RNA_def_struct_ui_text(srna, "Noise Modifier", "Noise effect modifier");
438 RNA_def_struct_sdna(srna, "NoiseGpencilModifierData");
439 RNA_def_struct_ui_icon(srna, ICON_MOD_NOISE);
440
441 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
442 RNA_def_property_string_sdna(prop, NULL, "layername");
443 RNA_def_property_ui_text(prop, "Layer", "Layer name");
444 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
445
446 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
447 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
448 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
449 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
450 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
451
452 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
453 RNA_def_property_string_sdna(prop, NULL, "vgname");
454 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
455 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_NoiseGpencilModifier_vgname_set");
456 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
457
458 prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
459 RNA_def_property_float_sdna(prop, NULL, "factor");
460 RNA_def_property_range(prop, 0.0, FLT_MAX);
461 RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
462 RNA_def_property_ui_text(prop, "Offset Factor", "Amount of noise to apply");
463 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
464
465 prop = RNA_def_property(srna, "factor_strength", PROP_FLOAT, PROP_FACTOR);
466 RNA_def_property_float_sdna(prop, NULL, "factor_strength");
467 RNA_def_property_range(prop, 0.0, FLT_MAX);
468 RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
469 RNA_def_property_ui_text(prop, "Strength Factor", "Amount of noise to apply to opacity");
470 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
471
472 prop = RNA_def_property(srna, "factor_thickness", PROP_FLOAT, PROP_FACTOR);
473 RNA_def_property_float_sdna(prop, NULL, "factor_thickness");
474 RNA_def_property_range(prop, 0.0, FLT_MAX);
475 RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
476 RNA_def_property_ui_text(prop, "Thickness Factor", "Amount of noise to apply to thickness");
477 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
478
479 prop = RNA_def_property(srna, "factor_uvs", PROP_FLOAT, PROP_FACTOR);
480 RNA_def_property_float_sdna(prop, NULL, "factor_uvs");
481 RNA_def_property_range(prop, 0.0, FLT_MAX);
482 RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
483 RNA_def_property_ui_text(prop, "UV Factor", "Amount of noise to apply uv rotation");
484 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
485
486 prop = RNA_def_property(srna, "random", PROP_BOOLEAN, PROP_NONE);
487 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_USE_RANDOM);
488 RNA_def_property_ui_text(prop, "Random", "Use random values over time");
489 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
490
491 prop = RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
492 RNA_def_property_ui_text(prop, "Seed", "Random seed");
493 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
494
495 prop = RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_FACTOR);
496 RNA_def_property_float_sdna(prop, NULL, "noise_scale");
497 RNA_def_property_range(prop, 0.0, 1.0);
498 RNA_def_property_ui_text(prop, "Noise Scale", "Scale the noise frequency");
499 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
500
501 prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
502 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_CUSTOM_CURVE);
503 RNA_def_property_ui_text(
504 prop, "Custom Curve", "Use a custom curve to define noise effect along the strokes");
505 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
506
507 prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
508 RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
509 RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
510 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
511
512 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
513 RNA_def_property_int_sdna(prop, NULL, "pass_index");
514 RNA_def_property_range(prop, 0, 100);
515 RNA_def_property_ui_text(prop, "Pass", "Pass index");
516 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
517
518 prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
519 RNA_def_property_int_sdna(prop, NULL, "step");
520 RNA_def_property_range(prop, 1, 100);
521 RNA_def_property_ui_text(
522 prop, "Step", "Number of frames before recalculate random values again");
523 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
524
525 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
526 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_LAYER);
527 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
528 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
529
530 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
531 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_MATERIAL);
532 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
533 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
534
535 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
536 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_PASS);
537 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
538 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
539
540 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
541 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_VGROUP);
542 RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
543 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
544
545 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
546 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
547 RNA_def_property_range(prop, 0, 100);
548 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
549 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
550
551 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
552 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_LAYERPASS);
553 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
554 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
555 }
556
rna_def_modifier_gpencilsmooth(BlenderRNA * brna)557 static void rna_def_modifier_gpencilsmooth(BlenderRNA *brna)
558 {
559 StructRNA *srna;
560 PropertyRNA *prop;
561
562 srna = RNA_def_struct(brna, "SmoothGpencilModifier", "GpencilModifier");
563 RNA_def_struct_ui_text(srna, "Smooth Modifier", "Smooth effect modifier");
564 RNA_def_struct_sdna(srna, "SmoothGpencilModifierData");
565 RNA_def_struct_ui_icon(srna, ICON_MOD_SMOOTH);
566
567 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
568 RNA_def_property_string_sdna(prop, NULL, "layername");
569 RNA_def_property_ui_text(prop, "Layer", "Layer name");
570 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
571
572 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
573 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
574 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
575 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
576 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
577
578 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
579 RNA_def_property_string_sdna(prop, NULL, "vgname");
580 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
581 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SmoothGpencilModifier_vgname_set");
582 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
583
584 prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
585 RNA_def_property_float_sdna(prop, NULL, "factor");
586 RNA_def_property_range(prop, 0, 1);
587 RNA_def_property_ui_text(prop, "Factor", "Amount of smooth to apply");
588 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
589
590 prop = RNA_def_property(srna, "use_edit_position", PROP_BOOLEAN, PROP_NONE);
591 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_MOD_LOCATION);
592 RNA_def_property_ui_text(
593 prop, "Affect Position", "The modifier affects the position of the point");
594 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
595
596 prop = RNA_def_property(srna, "use_edit_strength", PROP_BOOLEAN, PROP_NONE);
597 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_MOD_STRENGTH);
598 RNA_def_property_ui_text(
599 prop, "Affect Strength", "The modifier affects the color strength of the point");
600 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
601
602 prop = RNA_def_property(srna, "use_edit_thickness", PROP_BOOLEAN, PROP_NONE);
603 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_MOD_THICKNESS);
604 RNA_def_property_ui_text(
605 prop, "Affect Thickness", "The modifier affects the thickness of the point");
606 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
607
608 prop = RNA_def_property(srna, "use_edit_uv", PROP_BOOLEAN, PROP_NONE);
609 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_MOD_UV);
610 RNA_def_property_ui_text(
611 prop, "Affect UV", "The modifier affects the UV rotation factor of the point");
612 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
613
614 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
615 RNA_def_property_int_sdna(prop, NULL, "pass_index");
616 RNA_def_property_range(prop, 0, 100);
617 RNA_def_property_ui_text(prop, "Pass", "Pass index");
618 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
619
620 prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
621 RNA_def_property_int_sdna(prop, NULL, "step");
622 RNA_def_property_range(prop, 1, 10);
623 RNA_def_property_ui_text(
624 prop, "Step", "Number of times to apply smooth (high numbers can reduce fps)");
625 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
626
627 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
628 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_LAYER);
629 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
630 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
631
632 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
633 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_MATERIAL);
634 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
635 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
636
637 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
638 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_PASS);
639 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
640 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
641
642 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
643 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_VGROUP);
644 RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
645 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
646
647 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
648 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
649 RNA_def_property_range(prop, 0, 100);
650 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
651 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
652
653 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
654 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_LAYERPASS);
655 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
656 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
657
658 prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
659 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_CUSTOM_CURVE);
660 RNA_def_property_ui_text(
661 prop, "Custom Curve", "Use a custom curve to define smooth effect along the strokes");
662 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
663
664 prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
665 RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
666 RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
667 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
668 }
669
rna_def_modifier_gpencilsubdiv(BlenderRNA * brna)670 static void rna_def_modifier_gpencilsubdiv(BlenderRNA *brna)
671 {
672 StructRNA *srna;
673 PropertyRNA *prop;
674
675 srna = RNA_def_struct(brna, "SubdivGpencilModifier", "GpencilModifier");
676 RNA_def_struct_ui_text(srna, "Subdivision Modifier", "Subdivide Stroke modifier");
677 RNA_def_struct_sdna(srna, "SubdivGpencilModifierData");
678 RNA_def_struct_ui_icon(srna, ICON_MOD_SUBSURF);
679
680 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
681 RNA_def_property_string_sdna(prop, NULL, "layername");
682 RNA_def_property_ui_text(prop, "Layer", "Layer name");
683 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
684
685 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
686 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
687 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
688 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
689 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
690
691 prop = RNA_def_property(srna, "level", PROP_INT, PROP_NONE);
692 RNA_def_property_int_sdna(prop, NULL, "level");
693 RNA_def_property_range(prop, 0, 5);
694 RNA_def_property_ui_text(prop, "Level", "Number of subdivisions");
695 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
696
697 prop = RNA_def_property(srna, "subdivision_type", PROP_ENUM, PROP_NONE);
698 RNA_def_property_enum_sdna(prop, NULL, "type");
699 RNA_def_property_enum_items(prop, gpencil_subdivision_type_items);
700 RNA_def_property_ui_text(prop, "Subdivision Type", "Select type of subdivision algorithm");
701 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
702
703 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
704 RNA_def_property_int_sdna(prop, NULL, "pass_index");
705 RNA_def_property_range(prop, 0, 100);
706 RNA_def_property_ui_text(prop, "Pass", "Pass index");
707 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
708
709 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
710 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SUBDIV_INVERT_LAYER);
711 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
712 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
713
714 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
715 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SUBDIV_INVERT_MATERIAL);
716 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
717 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
718
719 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
720 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SUBDIV_INVERT_PASS);
721 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
722 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
723
724 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
725 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
726 RNA_def_property_range(prop, 0, 100);
727 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
728 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
729
730 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
731 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SUBDIV_INVERT_LAYERPASS);
732 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
733 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
734 }
735
rna_def_modifier_gpencilsimplify(BlenderRNA * brna)736 static void rna_def_modifier_gpencilsimplify(BlenderRNA *brna)
737 {
738 StructRNA *srna;
739 PropertyRNA *prop;
740
741 static EnumPropertyItem prop_gpencil_simplify_mode_items[] = {
742 {GP_SIMPLIFY_FIXED,
743 "FIXED",
744 ICON_IPO_CONSTANT,
745 "Fixed",
746 "Delete alternating vertices in the stroke, except extremes"},
747 {GP_SIMPLIFY_ADAPTIVE,
748 "ADAPTIVE",
749 ICON_IPO_EASE_IN_OUT,
750 "Adaptive",
751 "Use a Ramer-Douglas-Peucker algorithm to simplify the stroke preserving main shape"},
752 {GP_SIMPLIFY_SAMPLE,
753 "SAMPLE",
754 ICON_IPO_EASE_IN_OUT,
755 "Sample",
756 "Re-sample the stroke with segments of the specified length"},
757 {GP_SIMPLIFY_MERGE,
758 "MERGE",
759 ICON_IPO_EASE_IN_OUT,
760 "Merge",
761 "Simplify the stroke by merging vertices closer than a given distance"},
762 {0, NULL, 0, NULL, NULL},
763 };
764
765 srna = RNA_def_struct(brna, "SimplifyGpencilModifier", "GpencilModifier");
766 RNA_def_struct_ui_text(srna, "Simplify Modifier", "Simplify Stroke modifier");
767 RNA_def_struct_sdna(srna, "SimplifyGpencilModifierData");
768 RNA_def_struct_ui_icon(srna, ICON_MOD_SIMPLIFY);
769
770 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
771 RNA_def_property_string_sdna(prop, NULL, "layername");
772 RNA_def_property_ui_text(prop, "Layer", "Layer name");
773 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
774
775 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
776 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
777 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
778 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
779 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
780
781 prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
782 RNA_def_property_float_sdna(prop, NULL, "factor");
783 RNA_def_property_range(prop, 0, 100.0);
784 RNA_def_property_ui_range(prop, 0, 100.0, 1.0f, 3);
785 RNA_def_property_ui_text(prop, "Factor", "Factor of Simplify");
786 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
787
788 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
789 RNA_def_property_int_sdna(prop, NULL, "pass_index");
790 RNA_def_property_range(prop, 0, 100);
791 RNA_def_property_ui_text(prop, "Pass", "Pass index");
792 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
793
794 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
795 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SIMPLIFY_INVERT_LAYER);
796 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
797 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
798
799 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
800 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SIMPLIFY_INVERT_MATERIAL);
801 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
802 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
803
804 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
805 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SIMPLIFY_INVERT_PASS);
806 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
807 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
808
809 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
810 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
811 RNA_def_property_range(prop, 0, 100);
812 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
813 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
814
815 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
816 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SIMPLIFY_INVERT_LAYERPASS);
817 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
818 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
819
820 /* Mode */
821 prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
822 RNA_def_property_enum_items(prop, prop_gpencil_simplify_mode_items);
823 RNA_def_property_ui_text(prop, "Mode", "How to simplify the stroke");
824 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
825
826 prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
827 RNA_def_property_int_sdna(prop, NULL, "step");
828 RNA_def_property_range(prop, 1, 50);
829 RNA_def_property_ui_text(prop, "Iterations", "Number of times to apply simplify");
830 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
831
832 /* Sample */
833 prop = RNA_def_property(srna, "length", PROP_FLOAT, PROP_DISTANCE);
834 RNA_def_property_float_sdna(prop, NULL, "length");
835 RNA_def_property_range(prop, 0, FLT_MAX);
836 RNA_def_property_ui_range(prop, 0, 1.0, 0.01, 3);
837 RNA_def_property_ui_text(prop, "Length", "Length of each segment");
838 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
839
840 /* Merge */
841 prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_DISTANCE);
842 RNA_def_property_float_sdna(prop, NULL, "distance");
843 RNA_def_property_range(prop, 0, FLT_MAX);
844 RNA_def_property_ui_range(prop, 0, 1.0, 0.01, 3);
845 RNA_def_property_ui_text(prop, "Distance", "Distance between points");
846 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
847 }
848
rna_def_modifier_gpencilthick(BlenderRNA * brna)849 static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
850 {
851 StructRNA *srna;
852 PropertyRNA *prop;
853
854 srna = RNA_def_struct(brna, "ThickGpencilModifier", "GpencilModifier");
855 RNA_def_struct_ui_text(srna, "Thick Modifier", "Subdivide and Smooth Stroke modifier");
856 RNA_def_struct_sdna(srna, "ThickGpencilModifierData");
857 RNA_def_struct_ui_icon(srna, ICON_MOD_THICKNESS);
858
859 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
860 RNA_def_property_string_sdna(prop, NULL, "layername");
861 RNA_def_property_ui_text(prop, "Layer", "Layer name");
862 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
863
864 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
865 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
866 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
867 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
868 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
869
870 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
871 RNA_def_property_string_sdna(prop, NULL, "vgname");
872 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
873 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ThickGpencilModifier_vgname_set");
874 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
875
876 prop = RNA_def_property(srna, "thickness", PROP_INT, PROP_NONE);
877 RNA_def_property_int_sdna(prop, NULL, "thickness");
878 RNA_def_property_range(prop, -100, 500);
879 RNA_def_property_ui_text(prop, "Thickness", "Absolute thickness to apply everywhere");
880 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
881
882 prop = RNA_def_property(srna, "thickness_factor", PROP_FLOAT, PROP_NONE);
883 RNA_def_property_float_sdna(prop, NULL, "thickness_fac");
884 RNA_def_property_range(prop, 0.0, FLT_MAX);
885 RNA_def_property_ui_range(prop, 0.0, 10.0, 0.1, 3);
886 RNA_def_property_ui_text(prop, "Thickness Factor", "Factor to multiply the thickness with");
887 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
888
889 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
890 RNA_def_property_int_sdna(prop, NULL, "pass_index");
891 RNA_def_property_range(prop, 0, 100);
892 RNA_def_property_ui_text(prop, "Pass", "Pass index");
893 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
894
895 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
896 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_INVERT_LAYER);
897 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
898 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
899
900 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
901 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_INVERT_MATERIAL);
902 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
903 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
904
905 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
906 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_INVERT_PASS);
907 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
908 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
909
910 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
911 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_INVERT_VGROUP);
912 RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
913 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
914
915 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
916 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
917 RNA_def_property_range(prop, 0, 100);
918 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
919 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
920
921 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
922 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_INVERT_LAYERPASS);
923 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
924 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
925
926 prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
927 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_CUSTOM_CURVE);
928 RNA_def_property_ui_text(
929 prop, "Custom Curve", "Use a custom curve to define thickness change along the strokes");
930 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
931
932 prop = RNA_def_property(srna, "normalize_thickness", PROP_BOOLEAN, PROP_NONE);
933 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_NORMALIZE);
934 RNA_def_property_ui_text(prop, "Uniform Thickness", "Replace the stroke thickness");
935 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
936
937 prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
938 RNA_def_property_pointer_sdna(prop, NULL, "curve_thickness");
939 RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
940 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
941 }
942
rna_def_modifier_gpenciloffset(BlenderRNA * brna)943 static void rna_def_modifier_gpenciloffset(BlenderRNA *brna)
944 {
945 StructRNA *srna;
946 PropertyRNA *prop;
947
948 srna = RNA_def_struct(brna, "OffsetGpencilModifier", "GpencilModifier");
949 RNA_def_struct_ui_text(srna, "Offset Modifier", "Offset Stroke modifier");
950 RNA_def_struct_sdna(srna, "OffsetGpencilModifierData");
951 RNA_def_struct_ui_icon(srna, ICON_MOD_OFFSET);
952
953 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
954 RNA_def_property_string_sdna(prop, NULL, "layername");
955 RNA_def_property_ui_text(prop, "Layer", "Layer name");
956 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
957
958 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
959 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
960 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
961 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
962 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
963
964 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
965 RNA_def_property_string_sdna(prop, NULL, "vgname");
966 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
967 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_OffsetGpencilModifier_vgname_set");
968 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
969
970 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
971 RNA_def_property_int_sdna(prop, NULL, "pass_index");
972 RNA_def_property_range(prop, 0, 100);
973 RNA_def_property_ui_text(prop, "Pass", "Pass index");
974 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
975
976 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
977 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERT_LAYER);
978 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
979 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
980
981 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
982 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERT_MATERIAL);
983 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
984 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
985
986 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
987 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERT_PASS);
988 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
989 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
990
991 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
992 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERT_VGROUP);
993 RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
994 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
995
996 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
997 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
998 RNA_def_property_range(prop, 0, 100);
999 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1000 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1001
1002 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1003 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERT_LAYERPASS);
1004 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1005 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1006
1007 prop = RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
1008 RNA_def_property_float_sdna(prop, NULL, "loc");
1009 RNA_def_property_ui_text(prop, "Location", "Values for change location");
1010 RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1011 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1012
1013 prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER);
1014 RNA_def_property_float_sdna(prop, NULL, "rot");
1015 RNA_def_property_ui_text(prop, "Rotation", "Values for changes in rotation");
1016 RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1017 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1018
1019 prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
1020 RNA_def_property_float_sdna(prop, NULL, "scale");
1021 RNA_def_property_ui_text(prop, "Scale", "Values for changes in scale");
1022 RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1023 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1024 }
1025
rna_def_modifier_gpenciltint(BlenderRNA * brna)1026 static void rna_def_modifier_gpenciltint(BlenderRNA *brna)
1027 {
1028 StructRNA *srna;
1029 PropertyRNA *prop;
1030
1031 /* modes */
1032 static EnumPropertyItem tint_mode_types_items[] = {
1033 {GPPAINT_MODE_STROKE, "STROKE", 0, "Stroke", "Vertex Color affects to Stroke only"},
1034 {GPPAINT_MODE_FILL, "FILL", 0, "Fill", "Vertex Color affects to Fill only"},
1035 {GPPAINT_MODE_BOTH, "BOTH", 0, "Stroke and Fill", "Vertex Color affects to Stroke and Fill"},
1036 {0, NULL, 0, NULL, NULL},
1037 };
1038
1039 srna = RNA_def_struct(brna, "TintGpencilModifier", "GpencilModifier");
1040 RNA_def_struct_ui_text(srna, "Tint Modifier", "Tint modifier");
1041 RNA_def_struct_sdna(srna, "TintGpencilModifierData");
1042 RNA_def_struct_ui_icon(srna, ICON_COLOR);
1043
1044 prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
1045 RNA_def_property_ui_text(prop, "Object", "Parent object to define the center of the effect");
1046 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1047 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1048 RNA_def_property_pointer_funcs(prop, NULL, "rna_TintGpencilModifier_object_set", NULL, NULL);
1049 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1050
1051 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1052 RNA_def_property_string_sdna(prop, NULL, "layername");
1053 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1054 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1055
1056 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1057 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1058 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1059 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1060 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1061
1062 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1063 RNA_def_property_string_sdna(prop, NULL, "vgname");
1064 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1065 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_TintGpencilModifier_vgname_set");
1066 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1067
1068 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1069 RNA_def_property_int_sdna(prop, NULL, "pass_index");
1070 RNA_def_property_range(prop, 0, 100);
1071 RNA_def_property_ui_text(prop, "Pass", "Pass index");
1072 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1073
1074 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1075 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_INVERT_LAYER);
1076 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1077 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1078
1079 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1080 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_INVERT_MATERIAL);
1081 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1082 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1083
1084 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1085 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_INVERT_PASS);
1086 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1087 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1088
1089 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1090 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_INVERT_VGROUP);
1091 RNA_def_property_ui_text(prop, "Inverse Vertex Group", "Inverse filter");
1092 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1093
1094 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1095 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1096 RNA_def_property_range(prop, 0, 100);
1097 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1098 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1099
1100 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1101 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_INVERT_LAYERPASS);
1102 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1103 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1104
1105 prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
1106 RNA_def_property_float_sdna(prop, NULL, "factor");
1107 RNA_def_property_range(prop, 0, 2.0);
1108 RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 2);
1109 RNA_def_property_ui_text(prop, "Strength", "Factor for tinting");
1110 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1111
1112 prop = RNA_def_property(srna, "radius", PROP_FLOAT, PROP_DISTANCE);
1113 RNA_def_property_float_sdna(prop, NULL, "radius");
1114 RNA_def_property_range(prop, 1e-6f, FLT_MAX);
1115 RNA_def_property_ui_range(prop, 0.001f, FLT_MAX, 1, 3);
1116 RNA_def_property_ui_text(prop, "Radius", "Defines the maximum distance of the effect");
1117 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1118
1119 /* Mode type. */
1120 prop = RNA_def_property(srna, "vertex_mode", PROP_ENUM, PROP_NONE);
1121 RNA_def_property_enum_bitflag_sdna(prop, NULL, "mode");
1122 RNA_def_property_enum_items(prop, tint_mode_types_items);
1123 RNA_def_property_ui_text(prop, "Mode", "Defines how vertex color affect to the strokes");
1124 RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
1125 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1126
1127 /* Type of Tint. */
1128 prop = RNA_def_property(srna, "tint_type", PROP_ENUM, PROP_NONE);
1129 RNA_def_property_enum_sdna(prop, NULL, "type");
1130 RNA_def_property_enum_items(prop, gpencil_tint_type_items);
1131 RNA_def_property_ui_text(prop, "Tint Type", "Select type of tinting algorithm");
1132 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1133
1134 /* Simple Color. */
1135 prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
1136 RNA_def_property_range(prop, 0.0, 1.0);
1137 RNA_def_property_float_sdna(prop, NULL, "rgb");
1138 RNA_def_property_array(prop, 3);
1139 RNA_def_property_ui_text(prop, "Color", "Color used for tinting");
1140 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1141
1142 /* Color band. */
1143 prop = RNA_def_property(srna, "colors", PROP_POINTER, PROP_NONE);
1144 RNA_def_property_pointer_sdna(prop, NULL, "colorband");
1145 RNA_def_property_struct_type(prop, "ColorRamp");
1146 RNA_def_property_ui_text(prop, "Colors", "Color ramp used to define tinting colors");
1147 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1148
1149 prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1150 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_CUSTOM_CURVE);
1151 RNA_def_property_ui_text(
1152 prop, "Custom Curve", "Use a custom curve to define vertex color effect along the strokes");
1153 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1154
1155 prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1156 RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1157 RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1158 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1159 }
1160
rna_def_modifier_gpenciltime(BlenderRNA * brna)1161 static void rna_def_modifier_gpenciltime(BlenderRNA *brna)
1162 {
1163 StructRNA *srna;
1164 PropertyRNA *prop;
1165
1166 srna = RNA_def_struct(brna, "TimeGpencilModifier", "GpencilModifier");
1167 RNA_def_struct_ui_text(srna, "Time Offset Modifier", "Time offset modifier");
1168 RNA_def_struct_sdna(srna, "TimeGpencilModifierData");
1169 RNA_def_struct_ui_icon(srna, ICON_MOD_TIME);
1170
1171 prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
1172 RNA_def_property_enum_sdna(prop, NULL, "mode");
1173 RNA_def_property_enum_items(prop, rna_enum_time_mode_items);
1174 RNA_def_property_ui_text(prop, "Mode", "");
1175 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1176
1177 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1178 RNA_def_property_string_sdna(prop, NULL, "layername");
1179 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1180 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1181
1182 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1183 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TIME_INVERT_LAYER);
1184 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1185 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1186
1187 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1188 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1189 RNA_def_property_range(prop, 0, 100);
1190 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1191 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1192
1193 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1194 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TIME_INVERT_LAYERPASS);
1195 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1196 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1197
1198 prop = RNA_def_property(srna, "offset", PROP_INT, PROP_NONE);
1199 RNA_def_property_int_sdna(prop, NULL, "offset");
1200 RNA_def_property_range(prop, SHRT_MIN, SHRT_MAX);
1201 RNA_def_property_ui_text(
1202 prop, "Frame Offset", "Number of frames to offset original keyframe number or frame to fix");
1203 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1204
1205 prop = RNA_def_property(srna, "frame_scale", PROP_FLOAT, PROP_NONE);
1206 RNA_def_property_float_sdna(prop, NULL, "frame_scale");
1207 RNA_def_property_range(prop, 0.001f, 100.0f);
1208 RNA_def_property_ui_text(prop, "Frame Scale", "Evaluation time in seconds");
1209 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1210
1211 prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_TIME);
1212 RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
1213 RNA_def_property_int_sdna(prop, NULL, "sfra");
1214 RNA_def_property_int_funcs(prop, NULL, "rna_TimeModifier_start_frame_set", NULL);
1215 RNA_def_property_range(prop, MINFRAME, MAXFRAME);
1216 RNA_def_property_ui_text(prop, "Start Frame", "First frame of the range");
1217 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1218
1219 prop = RNA_def_property(srna, "frame_end", PROP_INT, PROP_TIME);
1220 RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
1221 RNA_def_property_int_sdna(prop, NULL, "efra");
1222 RNA_def_property_int_funcs(prop, NULL, "rna_TimeModifier_end_frame_set", NULL);
1223 RNA_def_property_range(prop, MINFRAME, MAXFRAME);
1224 RNA_def_property_ui_text(prop, "End Frame", "Final frame of the range");
1225 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1226
1227 prop = RNA_def_property(srna, "use_keep_loop", PROP_BOOLEAN, PROP_NONE);
1228 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TIME_KEEP_LOOP);
1229 RNA_def_property_ui_text(
1230 prop, "Keep Loop", "Retiming end frames and move to start of animation to keep loop");
1231 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1232
1233 prop = RNA_def_property(srna, "use_custom_frame_range", PROP_BOOLEAN, PROP_NONE);
1234 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TIME_CUSTOM_RANGE);
1235 RNA_def_property_ui_text(
1236 prop, "Custom Range", "Define a custom range of frames to use in modifier");
1237 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1238 }
1239
rna_def_modifier_gpencilcolor(BlenderRNA * brna)1240 static void rna_def_modifier_gpencilcolor(BlenderRNA *brna)
1241 {
1242 StructRNA *srna;
1243 PropertyRNA *prop;
1244
1245 srna = RNA_def_struct(brna, "ColorGpencilModifier", "GpencilModifier");
1246 RNA_def_struct_ui_text(srna, "Hue/Saturation Modifier", "Change Hue/Saturation modifier");
1247 RNA_def_struct_sdna(srna, "ColorGpencilModifierData");
1248 RNA_def_struct_ui_icon(srna, ICON_MOD_TINT);
1249
1250 prop = RNA_def_property(srna, "modify_color", PROP_ENUM, PROP_NONE);
1251 RNA_def_property_enum_items(prop, modifier_modify_color_items); /* share the enum */
1252 RNA_def_property_ui_text(prop, "Mode", "Set what colors of the stroke are affected");
1253 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1254
1255 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1256 RNA_def_property_string_sdna(prop, NULL, "layername");
1257 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1258 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1259
1260 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1261 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1262 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1263 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1264 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1265
1266 prop = RNA_def_property(srna, "hue", PROP_FLOAT, PROP_NONE);
1267 RNA_def_property_range(prop, 0.0, 1.0);
1268 RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 3);
1269 RNA_def_property_float_sdna(prop, NULL, "hsv[0]");
1270 RNA_def_property_ui_text(prop, "Hue", "Color Hue");
1271 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1272
1273 prop = RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE);
1274 RNA_def_property_range(prop, 0.0, FLT_MAX);
1275 RNA_def_property_ui_range(prop, 0.0, 2.0, 0.1, 3);
1276 RNA_def_property_float_sdna(prop, NULL, "hsv[1]");
1277 RNA_def_property_ui_text(prop, "Saturation", "Color Saturation");
1278 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1279
1280 prop = RNA_def_property(srna, "value", PROP_FLOAT, PROP_NONE);
1281 RNA_def_property_range(prop, 0.0, FLT_MAX);
1282 RNA_def_property_ui_range(prop, 0.0, 2.0, 0.1, 3);
1283 RNA_def_property_float_sdna(prop, NULL, "hsv[2]");
1284 RNA_def_property_ui_text(prop, "Value", "Color Value");
1285 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1286
1287 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1288 RNA_def_property_int_sdna(prop, NULL, "pass_index");
1289 RNA_def_property_range(prop, 0, 100);
1290 RNA_def_property_ui_text(prop, "Pass", "Pass index");
1291 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1292
1293 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1294 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_COLOR_INVERT_LAYER);
1295 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1296 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1297
1298 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1299 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_COLOR_INVERT_MATERIAL);
1300 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1301 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1302
1303 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1304 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_COLOR_INVERT_PASS);
1305 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1306 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1307
1308 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1309 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1310 RNA_def_property_range(prop, 0, 100);
1311 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1312 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1313
1314 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1315 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_COLOR_INVERT_LAYERPASS);
1316 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1317 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1318
1319 prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1320 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_COLOR_CUSTOM_CURVE);
1321 RNA_def_property_ui_text(
1322 prop, "Custom Curve", "Use a custom curve to define color effect along the strokes");
1323 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1324
1325 prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1326 RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1327 RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1328 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1329 }
1330
rna_def_modifier_gpencilopacity(BlenderRNA * brna)1331 static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
1332 {
1333 StructRNA *srna;
1334 PropertyRNA *prop;
1335
1336 srna = RNA_def_struct(brna, "OpacityGpencilModifier", "GpencilModifier");
1337 RNA_def_struct_ui_text(srna, "Opacity Modifier", "Opacity of Strokes modifier");
1338 RNA_def_struct_sdna(srna, "OpacityGpencilModifierData");
1339 RNA_def_struct_ui_icon(srna, ICON_MOD_OPACITY);
1340
1341 prop = RNA_def_property(srna, "modify_color", PROP_ENUM, PROP_NONE);
1342 RNA_def_property_enum_items(prop, modifier_modify_opacity_items);
1343 RNA_def_property_ui_text(prop, "Mode", "Set what colors of the stroke are affected");
1344 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1345
1346 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1347 RNA_def_property_string_sdna(prop, NULL, "layername");
1348 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1349 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1350
1351 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1352 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1353 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1354 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1355 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1356
1357 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1358 RNA_def_property_string_sdna(prop, NULL, "vgname");
1359 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1360 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_OpacityGpencilModifier_vgname_set");
1361 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1362
1363 prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
1364 RNA_def_property_float_sdna(prop, NULL, "factor");
1365 RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 2);
1366 RNA_def_property_float_funcs(
1367 prop, NULL, "rna_GpencilOpacity_max_set", "rna_GpencilOpacity_range");
1368 RNA_def_property_ui_text(prop, "Opacity Factor", "Factor of Opacity");
1369 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1370
1371 prop = RNA_def_property(srna, "hardness", PROP_FLOAT, PROP_NONE);
1372 RNA_def_property_float_sdna(prop, NULL, "hardeness");
1373 RNA_def_property_range(prop, 0.0, FLT_MAX);
1374 RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 0.1, 2);
1375 RNA_def_property_ui_text(prop, "Hardness", "Factor of stroke hardness");
1376 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1377
1378 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1379 RNA_def_property_int_sdna(prop, NULL, "pass_index");
1380 RNA_def_property_range(prop, 0, 100);
1381 RNA_def_property_ui_text(prop, "Pass", "Pass index");
1382 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1383
1384 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1385 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_LAYER);
1386 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1387 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1388
1389 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1390 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_MATERIAL);
1391 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1392 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1393
1394 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1395 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_PASS);
1396 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1397 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1398
1399 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1400 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_VGROUP);
1401 RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1402 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1403
1404 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1405 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1406 RNA_def_property_range(prop, 0, 100);
1407 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1408 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1409
1410 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1411 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_LAYERPASS);
1412 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1413 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1414
1415 prop = RNA_def_property(srna, "normalize_opacity", PROP_BOOLEAN, PROP_NONE);
1416 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_NORMALIZE);
1417 RNA_def_property_ui_text(prop, "Uniform Opacity", "Replace the stroke opacity");
1418 RNA_def_property_update(prop, 0, "rna_GpencilModifier_opacity_update");
1419
1420 prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1421 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_CUSTOM_CURVE);
1422 RNA_def_property_ui_text(
1423 prop, "Custom Curve", "Use a custom curve to define opacity effect along the strokes");
1424 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1425
1426 prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1427 RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1428 RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1429 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1430 }
1431
rna_def_modifier_gpencilarray(BlenderRNA * brna)1432 static void rna_def_modifier_gpencilarray(BlenderRNA *brna)
1433 {
1434 StructRNA *srna;
1435 PropertyRNA *prop;
1436
1437 srna = RNA_def_struct(brna, "ArrayGpencilModifier", "GpencilModifier");
1438 RNA_def_struct_ui_text(srna, "Instance Modifier", "Create grid of duplicate instances");
1439 RNA_def_struct_sdna(srna, "ArrayGpencilModifierData");
1440 RNA_def_struct_ui_icon(srna, ICON_MOD_ARRAY);
1441
1442 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1443 RNA_def_property_string_sdna(prop, NULL, "layername");
1444 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1445 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1446
1447 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1448 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1449 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1450 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1451 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1452
1453 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1454 RNA_def_property_int_sdna(prop, NULL, "pass_index");
1455 RNA_def_property_range(prop, 0, 100);
1456 RNA_def_property_ui_text(prop, "Pass", "Pass index");
1457 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1458
1459 prop = RNA_def_property(srna, "count", PROP_INT, PROP_NONE);
1460 RNA_def_property_range(prop, 1, SHRT_MAX);
1461 RNA_def_property_ui_range(prop, 1, 50, 1, -1);
1462 RNA_def_property_ui_text(prop, "Count", "Number of items");
1463 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1464
1465 /* Offset parameters */
1466 prop = RNA_def_property(srna, "offset_object", PROP_POINTER, PROP_NONE);
1467 RNA_def_property_pointer_sdna(prop, NULL, "object");
1468 RNA_def_property_ui_text(
1469 prop,
1470 "Object Offset",
1471 "Use the location and rotation of another object to determine the distance and "
1472 "rotational change between arrayed items");
1473 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1474 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1475 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1476
1477 prop = RNA_def_property(srna, "constant_offset", PROP_FLOAT, PROP_TRANSLATION);
1478 RNA_def_property_float_sdna(prop, NULL, "offset");
1479 RNA_def_property_ui_text(prop, "Constant Offset", "Value for the distance between items");
1480 RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1481 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1482
1483 prop = RNA_def_property(srna, "relative_offset", PROP_FLOAT, PROP_XYZ);
1484 RNA_def_property_float_sdna(prop, NULL, "shift");
1485 RNA_def_property_ui_text(
1486 prop,
1487 "Relative Offset",
1488 "The size of the geometry will determine the distance between arrayed items");
1489 RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1490 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1491
1492 prop = RNA_def_property(srna, "random_offset", PROP_FLOAT, PROP_XYZ);
1493 RNA_def_property_float_sdna(prop, NULL, "rnd_offset");
1494 RNA_def_property_ui_text(prop, "Random Offset", "Value for changes in location");
1495 RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1496 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1497
1498 prop = RNA_def_property(srna, "random_rotation", PROP_FLOAT, PROP_EULER);
1499 RNA_def_property_float_sdna(prop, NULL, "rnd_rot");
1500 RNA_def_property_ui_text(prop, "Random Rotation", "Value for changes in rotation");
1501 RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1502 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1503
1504 prop = RNA_def_property(srna, "random_scale", PROP_FLOAT, PROP_XYZ);
1505 RNA_def_property_float_sdna(prop, NULL, "rnd_scale");
1506 RNA_def_property_ui_text(prop, "Scale", "Value for changes in scale");
1507 RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1508 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1509
1510 prop = RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
1511 RNA_def_property_ui_text(prop, "Seed", "Random seed");
1512 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1513
1514 prop = RNA_def_property(srna, "replace_material", PROP_INT, PROP_NONE);
1515 RNA_def_property_int_sdna(prop, NULL, "mat_rpl");
1516 RNA_def_property_range(prop, 0, SHRT_MAX);
1517 RNA_def_property_ui_text(
1518 prop,
1519 "Material",
1520 "Index of the material used for generated strokes (0 keep original material)");
1521 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1522
1523 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1524 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_INVERT_LAYER);
1525 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1526 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1527
1528 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1529 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_INVERT_MATERIAL);
1530 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1531 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1532
1533 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1534 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_INVERT_PASS);
1535 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1536 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1537
1538 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1539 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1540 RNA_def_property_range(prop, 0, 100);
1541 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1542 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1543
1544 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1545 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_INVERT_LAYERPASS);
1546 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1547 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1548
1549 prop = RNA_def_property(srna, "use_constant_offset", PROP_BOOLEAN, PROP_NONE);
1550 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_USE_OFFSET);
1551 RNA_def_property_ui_text(prop, "Offset", "Enable offset");
1552 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1553
1554 prop = RNA_def_property(srna, "use_object_offset", PROP_BOOLEAN, PROP_NONE);
1555 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_USE_OB_OFFSET);
1556 RNA_def_property_ui_text(prop, "Object Offset", "Enable object offset");
1557 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1558
1559 prop = RNA_def_property(srna, "use_relative_offset", PROP_BOOLEAN, PROP_NONE);
1560 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_USE_RELATIVE);
1561 RNA_def_property_ui_text(prop, "Shift", "Enable shift");
1562 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1563 }
1564
rna_def_modifier_gpencilbuild(BlenderRNA * brna)1565 static void rna_def_modifier_gpencilbuild(BlenderRNA *brna)
1566 {
1567 static EnumPropertyItem prop_gpencil_build_mode_items[] = {
1568 {GP_BUILD_MODE_SEQUENTIAL,
1569 "SEQUENTIAL",
1570 ICON_PARTICLE_POINT,
1571 "Sequential",
1572 "Strokes appear/disappear one after the other, but only a single one changes at a time"},
1573 {GP_BUILD_MODE_CONCURRENT,
1574 "CONCURRENT",
1575 ICON_PARTICLE_TIP,
1576 "Concurrent",
1577 "Multiple strokes appear/disappear at once"},
1578 {0, NULL, 0, NULL, NULL},
1579 };
1580
1581 static EnumPropertyItem prop_gpencil_build_transition_items[] = {
1582 {GP_BUILD_TRANSITION_GROW,
1583 "GROW",
1584 0,
1585 "Grow",
1586 "Show points in the order they occur in each stroke "
1587 "(e.g. for animating lines being drawn)"},
1588 {GP_BUILD_TRANSITION_SHRINK,
1589 "SHRINK",
1590 0,
1591 "Shrink",
1592 "Hide points from the end of each stroke to the start "
1593 "(e.g. for animating lines being erased)"},
1594 {GP_BUILD_TRANSITION_FADE,
1595 "FADE",
1596 0,
1597 "Fade",
1598 "Hide points in the order they occur in each stroke "
1599 "(e.g. for animating ink fading or vanishing after getting drawn)"},
1600 {0, NULL, 0, NULL, NULL},
1601 };
1602
1603 static EnumPropertyItem prop_gpencil_build_time_align_items[] = {
1604 {GP_BUILD_TIMEALIGN_START,
1605 "START",
1606 0,
1607 "Align Start",
1608 "All strokes start at same time (i.e. short strokes finish earlier)"},
1609 {GP_BUILD_TIMEALIGN_END,
1610 "END",
1611 0,
1612 "Align End",
1613 "All strokes end at same time (i.e. short strokes start later)"},
1614 {0, NULL, 0, NULL, NULL},
1615 };
1616
1617 StructRNA *srna;
1618 PropertyRNA *prop;
1619
1620 srna = RNA_def_struct(brna, "BuildGpencilModifier", "GpencilModifier");
1621 RNA_def_struct_ui_text(srna, "Build Modifier", "Animate strokes appearing and disappearing");
1622 RNA_def_struct_sdna(srna, "BuildGpencilModifierData");
1623 RNA_def_struct_ui_icon(srna, ICON_MOD_BUILD);
1624
1625 /* Mode */
1626 prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
1627 RNA_def_property_enum_items(prop, prop_gpencil_build_mode_items);
1628 RNA_def_property_ui_text(prop, "Mode", "How many strokes are being animated at a time");
1629 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1630
1631 /* Direction */
1632 prop = RNA_def_property(srna, "transition", PROP_ENUM, PROP_NONE);
1633 RNA_def_property_enum_items(prop, prop_gpencil_build_transition_items);
1634 RNA_def_property_ui_text(
1635 prop, "Transition", "How are strokes animated (i.e. are they appearing or disappearing)");
1636 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1637
1638 /* Transition Onset Delay + Length */
1639 prop = RNA_def_property(srna, "start_delay", PROP_FLOAT, PROP_NONE);
1640 RNA_def_property_float_sdna(prop, NULL, "start_delay");
1641 RNA_def_property_ui_text(
1642 prop,
1643 "Start Delay",
1644 "Number of frames after each GP keyframe before the modifier has any effect");
1645 RNA_def_property_range(prop, 0, MAXFRAMEF);
1646 RNA_def_property_ui_range(prop, 0, 200, 1, -1);
1647 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1648
1649 prop = RNA_def_property(srna, "length", PROP_FLOAT, PROP_NONE);
1650 RNA_def_property_float_sdna(prop, NULL, "length");
1651 RNA_def_property_ui_text(prop,
1652 "Length",
1653 "Maximum number of frames that the build effect can run for "
1654 "(unless another GP keyframe occurs before this time has elapsed)");
1655 RNA_def_property_range(prop, 1, MAXFRAMEF);
1656 RNA_def_property_ui_range(prop, 1, 1000, 1, -1);
1657 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1658
1659 /* Concurrent Mode Settings */
1660 prop = RNA_def_property(srna, "concurrent_time_alignment", PROP_ENUM, PROP_NONE);
1661 RNA_def_property_enum_sdna(prop, NULL, "time_alignment");
1662 RNA_def_property_enum_items(prop, prop_gpencil_build_time_align_items);
1663 RNA_def_property_ui_text(
1664 prop, "Time Alignment", "When should strokes start to appear/disappear");
1665 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1666
1667 /* Time Limits */
1668 prop = RNA_def_property(srna, "use_restrict_frame_range", PROP_BOOLEAN, PROP_NONE);
1669 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BUILD_RESTRICT_TIME);
1670 RNA_def_property_ui_text(
1671 prop, "Restrict Frame Range", "Only modify strokes during the specified frame range");
1672 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1673
1674 /* Use percentage */
1675 prop = RNA_def_property(srna, "use_percentage", PROP_BOOLEAN, PROP_NONE);
1676 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BUILD_PERCENTAGE);
1677 RNA_def_property_ui_text(
1678 prop, "Restrict Visible Points", "Use a percentage factor to determine the visible points");
1679 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1680
1681 /* Percentage factor. */
1682 prop = RNA_def_property(srna, "percentage_factor", PROP_FLOAT, PROP_FACTOR);
1683 RNA_def_property_float_sdna(prop, NULL, "percentage_fac");
1684 RNA_def_property_ui_text(prop, "Factor", "Defines how much of the stroke is visible");
1685 RNA_def_property_range(prop, 0.0f, 1.0f);
1686 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1687
1688 prop = RNA_def_property(srna, "frame_start", PROP_FLOAT, PROP_NONE);
1689 RNA_def_property_float_sdna(prop, NULL, "start_frame");
1690 RNA_def_property_ui_text(
1691 prop, "Start Frame", "Start Frame (when Restrict Frame Range is enabled)");
1692 RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF);
1693 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1694
1695 prop = RNA_def_property(srna, "frame_end", PROP_FLOAT, PROP_NONE);
1696 RNA_def_property_float_sdna(prop, NULL, "end_frame");
1697 RNA_def_property_ui_text(prop, "End Frame", "End Frame (when Restrict Frame Range is enabled)");
1698 RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF);
1699 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1700
1701 /* Filters - Layer */
1702 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1703 RNA_def_property_string_sdna(prop, NULL, "layername");
1704 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1705 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1706
1707 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1708 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BUILD_INVERT_LAYER);
1709 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1710 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1711
1712 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1713 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1714 RNA_def_property_range(prop, 0, 100);
1715 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1716 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1717
1718 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1719 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BUILD_INVERT_LAYERPASS);
1720 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1721 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1722 }
1723
rna_def_modifier_gpencillattice(BlenderRNA * brna)1724 static void rna_def_modifier_gpencillattice(BlenderRNA *brna)
1725 {
1726 StructRNA *srna;
1727 PropertyRNA *prop;
1728
1729 srna = RNA_def_struct(brna, "LatticeGpencilModifier", "GpencilModifier");
1730 RNA_def_struct_ui_text(
1731 srna, "Lattice Modifier", "Change stroke using lattice to deform modifier");
1732 RNA_def_struct_sdna(srna, "LatticeGpencilModifierData");
1733 RNA_def_struct_ui_icon(srna, ICON_MOD_LATTICE);
1734
1735 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1736 RNA_def_property_string_sdna(prop, NULL, "layername");
1737 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1738 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1739
1740 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1741 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1742 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1743 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1744 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1745
1746 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1747 RNA_def_property_string_sdna(prop, NULL, "vgname");
1748 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1749 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_LatticeGpencilModifier_vgname_set");
1750 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1751
1752 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1753 RNA_def_property_int_sdna(prop, NULL, "pass_index");
1754 RNA_def_property_range(prop, 0, 100);
1755 RNA_def_property_ui_text(prop, "Pass", "Pass index");
1756 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1757
1758 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1759 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LATTICE_INVERT_LAYER);
1760 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1761 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1762
1763 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1764 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LATTICE_INVERT_MATERIAL);
1765 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1766 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1767
1768 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1769 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LATTICE_INVERT_PASS);
1770 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1771 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1772
1773 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1774 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LATTICE_INVERT_VGROUP);
1775 RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1776 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1777
1778 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1779 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1780 RNA_def_property_range(prop, 0, 100);
1781 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1782 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1783
1784 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1785 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LATTICE_INVERT_LAYERPASS);
1786 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1787 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1788
1789 prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
1790 RNA_def_property_ui_text(prop, "Object", "Lattice object to deform with");
1791 RNA_def_property_pointer_funcs(
1792 prop, NULL, "rna_LatticeGpencilModifier_object_set", NULL, "rna_Lattice_object_poll");
1793 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1794 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1795 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1796
1797 prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
1798 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
1799 RNA_def_property_ui_range(prop, 0, 1, 10, 2);
1800 RNA_def_property_ui_text(prop, "Strength", "Strength of modifier effect");
1801 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1802 }
1803
rna_def_modifier_gpencilmirror(BlenderRNA * brna)1804 static void rna_def_modifier_gpencilmirror(BlenderRNA *brna)
1805 {
1806 StructRNA *srna;
1807 PropertyRNA *prop;
1808
1809 srna = RNA_def_struct(brna, "MirrorGpencilModifier", "GpencilModifier");
1810 RNA_def_struct_ui_text(srna, "Mirror Modifier", "Create mirroring strokes");
1811 RNA_def_struct_sdna(srna, "MirrorGpencilModifierData");
1812 RNA_def_struct_ui_icon(srna, ICON_MOD_MIRROR);
1813
1814 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1815 RNA_def_property_string_sdna(prop, NULL, "layername");
1816 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1817 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1818
1819 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1820 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1821 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1822 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1823 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1824
1825 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1826 RNA_def_property_int_sdna(prop, NULL, "pass_index");
1827 RNA_def_property_range(prop, 0, 100);
1828 RNA_def_property_ui_text(prop, "Pass", "Pass index");
1829 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1830
1831 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1832 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_LAYER);
1833 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1834 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1835
1836 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1837 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_MATERIAL);
1838 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1839 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1840
1841 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1842 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_PASS);
1843 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1844 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1845
1846 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1847 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1848 RNA_def_property_range(prop, 0, 100);
1849 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1850 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1851
1852 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1853 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_LAYERPASS);
1854 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1855 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1856
1857 prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
1858 RNA_def_property_ui_text(prop, "Object", "Object used as center");
1859 RNA_def_property_pointer_funcs(prop, NULL, "rna_MirrorGpencilModifier_object_set", NULL, NULL);
1860 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1861 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1862 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1863
1864 prop = RNA_def_property(srna, "use_clip", PROP_BOOLEAN, PROP_NONE);
1865 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_CLIPPING);
1866 RNA_def_property_ui_text(prop, "Clip", "Clip points");
1867 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1868
1869 prop = RNA_def_property(srna, "use_axis_x", PROP_BOOLEAN, PROP_NONE);
1870 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_AXIS_X);
1871 RNA_def_property_ui_text(prop, "X", "Mirror the X axis");
1872 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1873
1874 prop = RNA_def_property(srna, "use_axis_y", PROP_BOOLEAN, PROP_NONE);
1875 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_AXIS_Y);
1876 RNA_def_property_ui_text(prop, "Y", "Mirror the Y axis");
1877 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1878
1879 prop = RNA_def_property(srna, "use_axis_z", PROP_BOOLEAN, PROP_NONE);
1880 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_AXIS_Z);
1881 RNA_def_property_ui_text(prop, "Z", "Mirror the Z axis");
1882 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1883 }
1884
rna_def_modifier_gpencilhook(BlenderRNA * brna)1885 static void rna_def_modifier_gpencilhook(BlenderRNA *brna)
1886 {
1887 StructRNA *srna;
1888 PropertyRNA *prop;
1889
1890 srna = RNA_def_struct(brna, "HookGpencilModifier", "GpencilModifier");
1891 RNA_def_struct_ui_text(
1892 srna, "Hook Modifier", "Hook modifier to modify the location of stroke points");
1893 RNA_def_struct_sdna(srna, "HookGpencilModifierData");
1894 RNA_def_struct_ui_icon(srna, ICON_HOOK);
1895
1896 prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
1897 RNA_def_property_ui_text(
1898 prop, "Object", "Parent Object for hook, also recalculates and clears offset");
1899 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1900 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1901 RNA_def_property_pointer_funcs(prop, NULL, "rna_HookGpencilModifier_object_set", NULL, NULL);
1902 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1903
1904 prop = RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
1905 RNA_def_property_string_sdna(prop, NULL, "subtarget");
1906 RNA_def_property_ui_text(
1907 prop,
1908 "Sub-Target",
1909 "Name of Parent Bone for hook (if applicable), also recalculates and clears offset");
1910 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1911
1912 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1913 RNA_def_property_string_sdna(prop, NULL, "layername");
1914 RNA_def_property_ui_text(prop, "Layer", "Layer name");
1915 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1916
1917 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1918 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
1919 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
1920 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1921 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1922
1923 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1924 RNA_def_property_string_sdna(prop, NULL, "vgname");
1925 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1926 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_HookGpencilModifier_vgname_set");
1927 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1928
1929 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1930 RNA_def_property_int_sdna(prop, NULL, "pass_index");
1931 RNA_def_property_range(prop, 0, 100);
1932 RNA_def_property_ui_text(prop, "Pass", "Pass index");
1933 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1934
1935 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1936 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_INVERT_LAYER);
1937 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1938 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1939
1940 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1941 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_INVERT_MATERIAL);
1942 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1943 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1944
1945 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1946 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_INVERT_PASS);
1947 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1948 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1949
1950 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1951 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_INVERT_VGROUP);
1952 RNA_def_property_ui_text(prop, "Inverse Vertex Group", "Inverse filter");
1953 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1954
1955 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1956 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1957 RNA_def_property_range(prop, 0, 100);
1958 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1959 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1960
1961 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1962 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_INVERT_LAYERPASS);
1963 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1964 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1965
1966 prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
1967 RNA_def_property_float_sdna(prop, NULL, "force");
1968 RNA_def_property_range(prop, 0, 1);
1969 RNA_def_property_ui_text(prop, "Strength", "Relative force of the hook");
1970 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1971
1972 prop = RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE);
1973 RNA_def_property_enum_items(prop, modifier_gphook_falloff_items); /* share the enum */
1974 RNA_def_property_ui_text(prop, "Falloff Type", "");
1975 RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_CURVE); /* Abusing id_curve :/ */
1976 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1977
1978 prop = RNA_def_property(srna, "falloff_radius", PROP_FLOAT, PROP_DISTANCE);
1979 RNA_def_property_float_sdna(prop, NULL, "falloff");
1980 RNA_def_property_range(prop, 0, FLT_MAX);
1981 RNA_def_property_ui_range(prop, 0, 100, 100, 2);
1982 RNA_def_property_ui_text(
1983 prop, "Radius", "If not zero, the distance from the hook where influence ends");
1984 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1985
1986 prop = RNA_def_property(srna, "falloff_curve", PROP_POINTER, PROP_NONE);
1987 RNA_def_property_pointer_sdna(prop, NULL, "curfalloff");
1988 RNA_def_property_ui_text(prop, "Falloff Curve", "Custom light falloff curve");
1989 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1990
1991 prop = RNA_def_property(srna, "center", PROP_FLOAT, PROP_NONE);
1992 RNA_def_property_float_sdna(prop, NULL, "cent");
1993 RNA_def_property_ui_text(prop, "Hook Center", "");
1994 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1995
1996 prop = RNA_def_property(srna, "matrix_inverse", PROP_FLOAT, PROP_MATRIX);
1997 RNA_def_property_float_sdna(prop, NULL, "parentinv");
1998 RNA_def_property_multi_array(prop, 2, rna_matrix_dimsize_4x4);
1999 RNA_def_property_ui_text(
2000 prop, "Matrix", "Reverse the transformation between this object and its target");
2001 RNA_def_property_update(prop, NC_OBJECT | ND_TRANSFORM, "rna_GpencilModifier_update");
2002
2003 prop = RNA_def_property(srna, "use_falloff_uniform", PROP_BOOLEAN, PROP_NONE);
2004 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_UNIFORM_SPACE);
2005 RNA_def_property_ui_text(prop, "Uniform Falloff", "Compensate for non-uniform object scale");
2006 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2007 }
2008
rna_def_modifier_gpencilarmature(BlenderRNA * brna)2009 static void rna_def_modifier_gpencilarmature(BlenderRNA *brna)
2010 {
2011 StructRNA *srna;
2012 PropertyRNA *prop;
2013
2014 srna = RNA_def_struct(brna, "ArmatureGpencilModifier", "GpencilModifier");
2015 RNA_def_struct_ui_text(
2016 srna, "Armature Modifier", "Change stroke using armature to deform modifier");
2017 RNA_def_struct_sdna(srna, "ArmatureGpencilModifierData");
2018 RNA_def_struct_ui_icon(srna, ICON_MOD_ARMATURE);
2019
2020 prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2021 RNA_def_property_ui_text(prop, "Object", "Armature object to deform with");
2022 RNA_def_property_pointer_funcs(
2023 prop, NULL, "rna_ArmatureGpencilModifier_object_set", NULL, "rna_Armature_object_poll");
2024 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
2025 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
2026 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2027
2028 prop = RNA_def_property(srna, "use_bone_envelopes", PROP_BOOLEAN, PROP_NONE);
2029 RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_ENVELOPE);
2030 RNA_def_property_ui_text(prop, "Use Bone Envelopes", "Bind Bone envelopes to armature modifier");
2031 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2032
2033 prop = RNA_def_property(srna, "use_vertex_groups", PROP_BOOLEAN, PROP_NONE);
2034 RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_VGROUP);
2035 RNA_def_property_ui_text(prop, "Use Vertex Groups", "Bind vertex groups to armature modifier");
2036 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2037
2038 prop = RNA_def_property(srna, "use_deform_preserve_volume", PROP_BOOLEAN, PROP_NONE);
2039 RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_QUATERNION);
2040 RNA_def_property_ui_text(
2041 prop, "Preserve Volume", "Deform rotation interpolation with quaternions");
2042 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2043
2044 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2045 RNA_def_property_string_sdna(prop, NULL, "vgname");
2046 RNA_def_property_ui_text(
2047 prop,
2048 "Vertex Group",
2049 "Name of Vertex Group which determines influence of modifier per point");
2050 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ArmatureGpencilModifier_vgname_set");
2051 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2052
2053 prop = RNA_def_property(srna, "invert_vertex_group", PROP_BOOLEAN, PROP_NONE);
2054 RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_INVERT_VGROUP);
2055 RNA_def_property_ui_text(prop, "Invert", "Invert vertex group influence");
2056 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2057 }
2058
rna_def_modifier_gpencilmultiply(BlenderRNA * brna)2059 static void rna_def_modifier_gpencilmultiply(BlenderRNA *brna)
2060 {
2061 StructRNA *srna;
2062 PropertyRNA *prop;
2063
2064 srna = RNA_def_struct(brna, "MultiplyGpencilModifier", "GpencilModifier");
2065 RNA_def_struct_ui_text(srna, "Multiply Modifier", "Generate multiple strokes from one stroke");
2066 RNA_def_struct_sdna(srna, "MultiplyGpencilModifierData");
2067 RNA_def_struct_ui_icon(srna, ICON_GP_MULTIFRAME_EDITING);
2068
2069 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2070 RNA_def_property_string_sdna(prop, NULL, "layername");
2071 RNA_def_property_ui_text(prop, "Layer", "Layer name");
2072 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2073
2074 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2075 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
2076 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
2077 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2078 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2079
2080 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2081 RNA_def_property_int_sdna(prop, NULL, "pass_index");
2082 RNA_def_property_range(prop, 0, 100);
2083 RNA_def_property_ui_text(prop, "Pass", "Pass index");
2084 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2085
2086 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2087 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_LAYER);
2088 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2089 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2090
2091 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2092 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_MATERIAL);
2093 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2094 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2095
2096 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2097 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_PASS);
2098 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2099 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2100
2101 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2102 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2103 RNA_def_property_range(prop, 0, 100);
2104 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2105 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2106
2107 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2108 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_LAYERPASS);
2109 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2110 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2111
2112 prop = RNA_def_property(srna, "enable_angle_splitting", PROP_BOOLEAN, PROP_NONE);
2113 RNA_def_property_boolean_sdna(prop, NULL, "flags", GP_MULTIPLY_ENABLE_ANGLE_SPLITTING);
2114 RNA_def_property_ui_text(prop, "Angle Splitting", "Enable angle splitting");
2115 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2116
2117 prop = RNA_def_property(srna, "use_fade", PROP_BOOLEAN, PROP_NONE);
2118 RNA_def_property_boolean_sdna(prop, NULL, "flags", GP_MULTIPLY_ENABLE_FADING);
2119 RNA_def_property_ui_text(prop, "Fade", "Fade the stroke thickness for each generated stroke");
2120 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2121
2122 prop = RNA_def_property(srna, "split_angle", PROP_FLOAT, PROP_ANGLE);
2123 RNA_def_property_range(prop, 0, M_PI);
2124 RNA_def_property_ui_range(prop, 0, M_PI, 10, 2);
2125 RNA_def_property_ui_text(prop, "Angle", "Split angle for segments");
2126 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2127
2128 prop = RNA_def_property(srna, "duplicates", PROP_INT, PROP_NONE);
2129 RNA_def_property_int_sdna(prop, NULL, "duplications");
2130 RNA_def_property_range(prop, 0, 999);
2131 RNA_def_property_ui_range(prop, 1, 10, 1, 1);
2132 RNA_def_property_ui_text(prop, "Duplicates", "How many copies of strokes be displayed");
2133 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2134
2135 prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_DISTANCE);
2136 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
2137 RNA_def_property_ui_range(prop, 0.0, 1.0, 0.01, 3);
2138 RNA_def_property_ui_text(prop, "Distance", "Distance of duplications");
2139 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2140
2141 prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
2142 RNA_def_property_ui_range(prop, -1, 1, 0.01, 3);
2143 RNA_def_property_ui_text(prop, "Offset", "Offset of duplicates. -1 to 1: inner to outer");
2144 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2145
2146 prop = RNA_def_property(srna, "fading_thickness", PROP_FLOAT, PROP_NONE);
2147 RNA_def_property_range(prop, 0, 1);
2148 RNA_def_property_ui_text(prop, "Thickness", "Fade influence of stroke's thickness");
2149 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2150
2151 prop = RNA_def_property(srna, "fading_opacity", PROP_FLOAT, PROP_NONE);
2152 RNA_def_property_range(prop, 0, 1);
2153 RNA_def_property_ui_text(prop, "Opacity", "Fade influence of stroke's opacity");
2154 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2155
2156 prop = RNA_def_property(srna, "fading_center", PROP_FLOAT, PROP_FACTOR);
2157 RNA_def_property_range(prop, 0, 1);
2158 RNA_def_property_ui_text(prop, "Center", "Fade center");
2159 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2160 }
2161
rna_def_modifier_gpenciltexture(BlenderRNA * brna)2162 static void rna_def_modifier_gpenciltexture(BlenderRNA *brna)
2163 {
2164 StructRNA *srna;
2165 PropertyRNA *prop;
2166
2167 static const EnumPropertyItem fit_type_items[] = {
2168 {GP_TEX_CONSTANT_LENGTH,
2169 "CONSTANT_LENGTH",
2170 0,
2171 "Constant Length",
2172 "Keep the texture at a constant length regardless of the length of each stroke"},
2173 {GP_TEX_FIT_STROKE,
2174 "FIT_STROKE",
2175 0,
2176 "Stroke Length",
2177 "Scale the texture to fit the length of each stroke"},
2178 {0, NULL, 0, NULL, NULL},
2179 };
2180
2181 static const EnumPropertyItem mode_items[] = {
2182 {STROKE, "STROKE", 0, "Stroke", "Manipulate only stroke texture coordinates"},
2183 {FILL, "FILL", 0, "Fill", "Manipulate only fill texture coordinates"},
2184 {STROKE_AND_FILL,
2185 "STROKE_AND_FILL",
2186 0,
2187 "Stroke and Fill",
2188 "Manipulate both stroke and fill texture coordinates"},
2189 {0, NULL, 0, NULL, NULL},
2190 };
2191
2192 srna = RNA_def_struct(brna, "TextureGpencilModifier", "GpencilModifier");
2193 RNA_def_struct_ui_text(
2194 srna, "Texture Modifier", "Transform stroke texture coordinates Modifier");
2195 RNA_def_struct_sdna(srna, "TextureGpencilModifierData");
2196 RNA_def_struct_ui_icon(srna, ICON_TEXTURE);
2197
2198 prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2199 RNA_def_property_string_sdna(prop, NULL, "layername");
2200 RNA_def_property_ui_text(prop, "Layer", "Layer name");
2201 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2202
2203 prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2204 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TEX_INVERT_LAYER);
2205 RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2206 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2207
2208 prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2209 RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
2210 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
2211 RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2212 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2213
2214 prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2215 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TEX_INVERT_MATERIAL);
2216 RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2217 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2218
2219 prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2220 RNA_def_property_string_sdna(prop, NULL, "vgname");
2221 RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
2222 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_TextureGpencilModifier_vgname_set");
2223 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2224
2225 prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
2226 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TEX_INVERT_VGROUP);
2227 RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
2228 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2229
2230 prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2231 RNA_def_property_int_sdna(prop, NULL, "pass_index");
2232 RNA_def_property_range(prop, 0, 100);
2233 RNA_def_property_ui_text(prop, "Pass", "Pass index");
2234 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2235
2236 prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2237 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TEX_INVERT_PASS);
2238 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2239 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2240
2241 prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2242 RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2243 RNA_def_property_range(prop, 0, 100);
2244 RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2245 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2246
2247 prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2248 RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TEX_INVERT_LAYERPASS);
2249 RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2250 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2251
2252 prop = RNA_def_property(srna, "uv_offset", PROP_FLOAT, PROP_NONE);
2253 RNA_def_property_float_sdna(prop, NULL, "uv_offset");
2254 RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
2255 RNA_def_property_ui_range(prop, -100.0, 100.0, 0.1, 3);
2256 RNA_def_property_ui_text(prop, "UV Offset", "Offset value to add to stroke UVs");
2257 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2258
2259 prop = RNA_def_property(srna, "uv_scale", PROP_FLOAT, PROP_NONE);
2260 RNA_def_property_float_sdna(prop, NULL, "uv_scale");
2261 RNA_def_property_range(prop, 0.0, FLT_MAX);
2262 RNA_def_property_ui_range(prop, 0.0, 100.0, 0.1, 3);
2263 RNA_def_property_ui_text(prop, "UV Scale", "Factor to scale the UVs");
2264 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2265
2266 prop = RNA_def_property(srna, "fill_rotation", PROP_FLOAT, PROP_ANGLE);
2267 RNA_def_property_float_sdna(prop, NULL, "fill_rotation");
2268 RNA_def_property_ui_text(prop, "Fill Rotation", "Additional rotation of the fill UV");
2269 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2270
2271 prop = RNA_def_property(srna, "fill_offset", PROP_FLOAT, PROP_COORDS);
2272 RNA_def_property_float_sdna(prop, NULL, "fill_offset");
2273 RNA_def_property_array(prop, 2);
2274 RNA_def_property_ui_text(prop, "Fill Offset", "Additional offset of the fill UV");
2275 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2276
2277 prop = RNA_def_property(srna, "fill_scale", PROP_FLOAT, PROP_COORDS);
2278 RNA_def_property_float_sdna(prop, NULL, "fill_scale");
2279 RNA_def_property_range(prop, 0.01f, 100.0f);
2280 RNA_def_property_ui_text(prop, "Fill Scale", "Additional scale of the fill UV");
2281 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2282
2283 prop = RNA_def_property(srna, "fit_method", PROP_ENUM, PROP_NONE);
2284 RNA_def_property_enum_sdna(prop, NULL, "fit_method");
2285 RNA_def_property_enum_items(prop, fit_type_items);
2286 RNA_def_property_ui_text(prop, "Fit Method", "");
2287 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2288
2289 prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
2290 RNA_def_property_enum_sdna(prop, NULL, "mode");
2291 RNA_def_property_enum_items(prop, mode_items);
2292 RNA_def_property_ui_text(prop, "Mode", "");
2293 RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2294 }
2295
RNA_def_greasepencil_modifier(BlenderRNA * brna)2296 void RNA_def_greasepencil_modifier(BlenderRNA *brna)
2297 {
2298 StructRNA *srna;
2299 PropertyRNA *prop;
2300
2301 /* data */
2302 srna = RNA_def_struct(brna, "GpencilModifier", NULL);
2303 RNA_def_struct_ui_text(srna, "GpencilModifier", "Modifier affecting the grease pencil object");
2304 RNA_def_struct_refine_func(srna, "rna_GpencilModifier_refine");
2305 RNA_def_struct_path_func(srna, "rna_GpencilModifier_path");
2306 RNA_def_struct_sdna(srna, "GpencilModifierData");
2307
2308 /* strings */
2309 prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
2310 RNA_def_property_string_funcs(prop, NULL, NULL, "rna_GpencilModifier_name_set");
2311 RNA_def_property_ui_text(prop, "Name", "Modifier name");
2312 RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER | NA_RENAME, NULL);
2313 RNA_def_struct_name_property(srna, prop);
2314
2315 /* enums */
2316 prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
2317 RNA_def_property_clear_flag(prop, PROP_EDITABLE);
2318 RNA_def_property_enum_sdna(prop, NULL, "type");
2319 RNA_def_property_enum_items(prop, rna_enum_object_greasepencil_modifier_type_items);
2320 RNA_def_property_ui_text(prop, "Type", "");
2321
2322 /* flags */
2323 prop = RNA_def_property(srna, "show_viewport", PROP_BOOLEAN, PROP_NONE);
2324 RNA_def_property_boolean_sdna(prop, NULL, "mode", eGpencilModifierMode_Realtime);
2325 RNA_def_property_ui_text(prop, "Realtime", "Display modifier in viewport");
2326 RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
2327 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
2328 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2329 RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_ON, 1);
2330
2331 prop = RNA_def_property(srna, "show_render", PROP_BOOLEAN, PROP_NONE);
2332 RNA_def_property_boolean_sdna(prop, NULL, "mode", eGpencilModifierMode_Render);
2333 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
2334 RNA_def_property_ui_text(prop, "Render", "Use modifier during render");
2335 RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_ON, 1);
2336 RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, NULL);
2337
2338 prop = RNA_def_property(srna, "show_in_editmode", PROP_BOOLEAN, PROP_NONE);
2339 RNA_def_property_boolean_sdna(prop, NULL, "mode", eGpencilModifierMode_Editmode);
2340 RNA_def_property_ui_text(prop, "Edit Mode", "Display modifier in Edit mode");
2341 RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2342 RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0);
2343
2344 prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
2345 RNA_def_property_flag(prop, PROP_NO_DEG_UPDATE);
2346 RNA_def_property_boolean_sdna(prop, NULL, "ui_expand_flag", 0);
2347 RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
2348 RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface");
2349 RNA_def_property_ui_icon(prop, ICON_DISCLOSURE_TRI_RIGHT, 1);
2350
2351 /* types */
2352 rna_def_modifier_gpencilnoise(brna);
2353 rna_def_modifier_gpencilsmooth(brna);
2354 rna_def_modifier_gpencilsubdiv(brna);
2355 rna_def_modifier_gpencilsimplify(brna);
2356 rna_def_modifier_gpencilthick(brna);
2357 rna_def_modifier_gpenciloffset(brna);
2358 rna_def_modifier_gpenciltint(brna);
2359 rna_def_modifier_gpenciltime(brna);
2360 rna_def_modifier_gpencilcolor(brna);
2361 rna_def_modifier_gpencilarray(brna);
2362 rna_def_modifier_gpencilbuild(brna);
2363 rna_def_modifier_gpencilopacity(brna);
2364 rna_def_modifier_gpencillattice(brna);
2365 rna_def_modifier_gpencilmirror(brna);
2366 rna_def_modifier_gpencilhook(brna);
2367 rna_def_modifier_gpencilarmature(brna);
2368 rna_def_modifier_gpencilmultiply(brna);
2369 rna_def_modifier_gpenciltexture(brna);
2370 }
2371
2372 #endif
2373