Blender  V2.93
rna_gpencil_modifier.c
Go to the documentation of this file.
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 
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"
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 
60  {0, "", 0, N_("Generate"), ""},
62  "GP_ARRAY",
63  ICON_MOD_ARRAY,
64  "Array",
65  "Create array of duplicate instances"},
67  "GP_BUILD",
68  ICON_MOD_BUILD,
69  "Build",
70  "Create duplication of strokes"},
72  "GP_LINEART",
73  ICON_MOD_EDGESPLIT, /* TODO: Use a proper icon. */
74  "Line Art",
75  "Generate line art strokes from selected source"},
77  "GP_MIRROR",
78  ICON_MOD_MIRROR,
79  "Mirror",
80  "Duplicate strokes like a mirror"},
82  "GP_MULTIPLY",
83  ICON_GP_MULTIFRAME_EDITING,
84  "Multiple Strokes",
85  "Produce multiple strokes along one stroke"},
87  "GP_SIMPLIFY",
88  ICON_MOD_SIMPLIFY,
89  "Simplify",
90  "Simplify stroke reducing number of points"},
92  "GP_SUBDIV",
93  ICON_MOD_SUBSURF,
94  "Subdivide",
95  "Subdivide stroke adding more control points"},
96  {0, "", 0, N_("Deform"), ""},
98  "GP_ARMATURE",
99  ICON_MOD_ARMATURE,
100  "Armature",
101  "Deform stroke points using armature object"},
103  "GP_HOOK",
104  ICON_HOOK,
105  "Hook",
106  "Deform stroke points using objects"},
108  "GP_LATTICE",
109  ICON_MOD_LATTICE,
110  "Lattice",
111  "Deform strokes using lattice"},
112  {eGpencilModifierType_Noise, "GP_NOISE", ICON_MOD_NOISE, "Noise", "Add noise to strokes"},
114  "GP_OFFSET",
115  ICON_MOD_OFFSET,
116  "Offset",
117  "Change stroke location, rotation or scale"},
118  {eGpencilModifierType_Smooth, "GP_SMOOTH", ICON_MOD_SMOOTH, "Smooth", "Smooth stroke"},
120  "GP_THICK",
121  ICON_MOD_THICKNESS,
122  "Thickness",
123  "Change stroke thickness"},
124  {eGpencilModifierType_Time, "GP_TIME", ICON_MOD_TIME, "Time Offset", "Offset keyframes"},
125  {0, "", 0, N_("Color"), ""},
127  "GP_COLOR",
128  ICON_MOD_HUE_SATURATION,
129  "Hue/Saturation",
130  "Apply changes to stroke colors"},
132  "GP_OPACITY",
133  ICON_MOD_OPACITY,
134  "Opacity",
135  "Opacity of the strokes"},
137  "GP_TEXTURE",
138  ICON_TEXTURE,
139  "Texture Mapping",
140  "Change stroke uv texture values"},
141  {eGpencilModifierType_Tint, "GP_TINT", ICON_MOD_TINT, "Tint", "Tint strokes with new color"},
142  {0, NULL, 0, NULL, NULL},
143 };
144 
145 #ifndef RNA_RUNTIME
147  {GP_MODIFY_COLOR_BOTH, "BOTH", 0, "Stroke and Fill", "Modify fill and stroke colors"},
148  {GP_MODIFY_COLOR_STROKE, "STROKE", 0, "Stroke", "Modify stroke color only"},
149  {GP_MODIFY_COLOR_FILL, "FILL", 0, "Fill", "Modify fill color only"},
150  {0, NULL, 0, NULL, NULL},
151 };
152 
154  {GP_MODIFY_COLOR_BOTH, "BOTH", 0, "Stroke and Fill", "Modify fill and stroke colors"},
155  {GP_MODIFY_COLOR_STROKE, "STROKE", 0, "Stroke", "Modify stroke color only"},
156  {GP_MODIFY_COLOR_FILL, "FILL", 0, "Fill", "Modify fill color only"},
157  {GP_MODIFY_COLOR_HARDNESS, "HARDNESS", 0, "Hardness", "Modify stroke hardness"},
158  {0, NULL, 0, NULL, NULL},
159 };
160 
162  {eGPHook_Falloff_None, "NONE", 0, "No Falloff", ""},
163  {eGPHook_Falloff_Curve, "CURVE", 0, "Curve", ""},
164  {eGPHook_Falloff_Smooth, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""},
165  {eGPHook_Falloff_Sphere, "SPHERE", ICON_SPHERECURVE, "Sphere", ""},
166  {eGPHook_Falloff_Root, "ROOT", ICON_ROOTCURVE, "Root", ""},
167  {eGPHook_Falloff_InvSquare, "INVERSE_SQUARE", ICON_ROOTCURVE, "Inverse Square", ""},
168  {eGPHook_Falloff_Sharp, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
169  {eGPHook_Falloff_Linear, "LINEAR", ICON_LINCURVE, "Linear", ""},
170  {eGPHook_Falloff_Const, "CONSTANT", ICON_NOCURVE, "Constant", ""},
171  {0, NULL, 0, NULL, NULL},
172 };
173 
175  {GP_TIME_MODE_NORMAL, "NORMAL", 0, "Regular", "Apply offset in usual animation direction"},
176  {GP_TIME_MODE_REVERSE, "REVERSE", 0, "Reverse", "Apply offset in reverse animation direction"},
177  {GP_TIME_MODE_FIX, "FIX", 0, "Fixed Frame", "Keep frame and do not change with time"},
178  {0, NULL, 0, NULL, NULL},
179 };
180 
182  {GP_SUBDIV_CATMULL, "CATMULL_CLARK", 0, "Catmull-Clark", ""},
183  {GP_SUBDIV_SIMPLE, "SIMPLE", 0, "Simple", ""},
184  {0, NULL, 0, NULL, NULL},
185 };
187  {GP_TINT_UNIFORM, "UNIFORM", 0, "Uniform", ""},
188  {GP_TINT_GRADIENT, "GRADIENT", 0, "Gradient", ""},
189  {0, NULL, 0, NULL, NULL},
190 };
191 #endif
192 
193 #ifdef RNA_RUNTIME
194 
195 # include "DNA_curve_types.h"
196 # include "DNA_fluid_types.h"
197 # include "DNA_material_types.h"
198 # include "DNA_particle_types.h"
199 
200 # include "BKE_cachefile.h"
201 # include "BKE_context.h"
202 # include "BKE_gpencil.h"
203 # include "BKE_gpencil_modifier.h"
204 # include "BKE_object.h"
205 
206 # include "DEG_depsgraph.h"
207 # include "DEG_depsgraph_build.h"
208 
209 static StructRNA *rna_GpencilModifier_refine(struct PointerRNA *ptr)
210 {
212 
213  switch ((GpencilModifierType)md->type) {
215  return &RNA_NoiseGpencilModifier;
221  return &RNA_ThickGpencilModifier;
223  return &RNA_TintGpencilModifier;
225  return &RNA_TimeGpencilModifier;
227  return &RNA_ColorGpencilModifier;
229  return &RNA_ArrayGpencilModifier;
231  return &RNA_BuildGpencilModifier;
241  return &RNA_HookGpencilModifier;
249  return &RNA_TextureGpencilModifier;
251  return &RNA_LineartGpencilModifier;
252  /* Default */
255  return &RNA_GpencilModifier;
256  }
257 
258  return &RNA_GpencilModifier;
259 }
260 
261 static void rna_GpencilModifier_name_set(PointerRNA *ptr, const char *value)
262 {
263  GpencilModifierData *gmd = ptr->data;
264  char oldname[sizeof(gmd->name)];
265 
266  /* make a copy of the old name first */
267  BLI_strncpy(oldname, gmd->name, sizeof(gmd->name));
268 
269  /* copy the new name into the name slot */
270  BLI_strncpy_utf8(gmd->name, value, sizeof(gmd->name));
271 
272  /* make sure the name is truly unique */
273  if (ptr->owner_id) {
274  Object *ob = (Object *)ptr->owner_id;
276  }
277 
278  /* fix all the animation data which may link to this */
279  BKE_animdata_fix_paths_rename_all(NULL, "grease_pencil_modifiers", oldname, gmd->name);
280 }
281 
282 static char *rna_GpencilModifier_path(PointerRNA *ptr)
283 {
284  GpencilModifierData *gmd = ptr->data;
285  char name_esc[sizeof(gmd->name) * 2];
286 
287  BLI_str_escape(name_esc, gmd->name, sizeof(name_esc));
288  return BLI_sprintfN("grease_pencil_modifiers[\"%s\"]", name_esc);
289 }
290 
291 static void rna_GpencilModifier_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
292 {
295 }
296 
297 static void rna_GpencilModifier_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
298 {
299  rna_GpencilModifier_update(bmain, scene, ptr);
301 }
302 
303 /* Vertex Groups */
304 
305 # define RNA_GP_MOD_VGROUP_NAME_SET(_type, _prop) \
306  static void rna_##_type##GpencilModifier_##_prop##_set(PointerRNA *ptr, const char *value) \
307  { \
308  _type##GpencilModifierData *tmd = (_type##GpencilModifierData *)ptr->data; \
309  rna_object_vgroup_name_set(ptr, value, tmd->_prop, sizeof(tmd->_prop)); \
310  }
311 
312 RNA_GP_MOD_VGROUP_NAME_SET(Noise, vgname);
313 RNA_GP_MOD_VGROUP_NAME_SET(Thick, vgname);
314 RNA_GP_MOD_VGROUP_NAME_SET(Opacity, vgname);
315 RNA_GP_MOD_VGROUP_NAME_SET(Lattice, vgname);
316 RNA_GP_MOD_VGROUP_NAME_SET(Smooth, vgname);
317 RNA_GP_MOD_VGROUP_NAME_SET(Hook, vgname);
318 RNA_GP_MOD_VGROUP_NAME_SET(Offset, vgname);
319 RNA_GP_MOD_VGROUP_NAME_SET(Armature, vgname);
320 RNA_GP_MOD_VGROUP_NAME_SET(Texture, vgname);
321 RNA_GP_MOD_VGROUP_NAME_SET(Tint, vgname);
322 RNA_GP_MOD_VGROUP_NAME_SET(Lineart, vgname);
323 
324 # undef RNA_GP_MOD_VGROUP_NAME_SET
325 
326 /* Objects */
327 
328 static void greasepencil_modifier_object_set(Object *self,
329  Object **ob_p,
330  int type,
331  PointerRNA value)
332 {
333  Object *ob = value.data;
334 
335  if (!self || ob != self) {
336  if (!ob || type == OB_EMPTY || ob->type == type) {
337  id_lib_extern((ID *)ob);
338  *ob_p = ob;
339  }
340  }
341 }
342 
343 # define RNA_GP_MOD_OBJECT_SET(_type, _prop, _obtype) \
344  static void rna_##_type##GpencilModifier_##_prop##_set( \
345  PointerRNA *ptr, PointerRNA value, struct ReportList *UNUSED(reports)) \
346  { \
347  _type##GpencilModifierData *tmd = (_type##GpencilModifierData *)ptr->data; \
348  greasepencil_modifier_object_set((Object *)ptr->owner_id, &tmd->_prop, _obtype, value); \
349  }
350 
351 RNA_GP_MOD_OBJECT_SET(Armature, object, OB_ARMATURE);
352 RNA_GP_MOD_OBJECT_SET(Lattice, object, OB_LATTICE);
353 RNA_GP_MOD_OBJECT_SET(Mirror, object, OB_EMPTY);
354 
355 # undef RNA_GP_MOD_OBJECT_SET
356 
357 static void rna_HookGpencilModifier_object_set(PointerRNA *ptr,
358  PointerRNA value,
359  struct ReportList *UNUSED(reports))
360 {
362  Object *ob = (Object *)value.data;
363 
364  hmd->object = ob;
365  id_lib_extern((ID *)ob);
367 }
368 
369 static void rna_TintGpencilModifier_object_set(PointerRNA *ptr,
370  PointerRNA value,
371  struct ReportList *UNUSED(reports))
372 {
374  Object *ob = (Object *)value.data;
375 
376  hmd->object = ob;
377  id_lib_extern((ID *)ob);
378 }
379 
380 static void rna_TimeModifier_start_frame_set(PointerRNA *ptr, int value)
381 {
383  CLAMP(value, MINFRAME, MAXFRAME);
384  tmd->sfra = value;
385 
386  if (tmd->sfra >= tmd->efra) {
387  tmd->efra = MIN2(tmd->sfra, MAXFRAME);
388  }
389 }
390 
391 static void rna_TimeModifier_end_frame_set(PointerRNA *ptr, int value)
392 {
394  CLAMP(value, MINFRAME, MAXFRAME);
395  tmd->efra = value;
396 
397  if (tmd->sfra >= tmd->efra) {
398  tmd->sfra = MAX2(tmd->efra, MINFRAME);
399  }
400 }
401 
402 static void rna_GpencilOpacity_range(
403  PointerRNA *ptr, float *min, float *max, float *softmin, float *softmax)
404 {
406 
407  *min = 0.0f;
408  *softmin = 0.0f;
409 
410  *softmax = (md->flag & GP_OPACITY_NORMALIZE) ? 1.0f : 2.0f;
411  *max = *softmax;
412 }
413 
414 static void rna_GpencilOpacity_max_set(PointerRNA *ptr, float value)
415 {
417 
418  md->factor = value;
419  if (md->flag & GP_OPACITY_NORMALIZE) {
420  if (md->factor > 1.0f) {
421  md->factor = 1.0f;
422  }
423  }
424 }
425 
426 static void rna_GpencilModifier_opacity_update(Main *bmain, Scene *scene, PointerRNA *ptr)
427 {
429  if (md->flag & GP_OPACITY_NORMALIZE) {
430  if (md->factor > 1.0f) {
431  md->factor = 1.0f;
432  }
433  }
434 
435  rna_GpencilModifier_update(bmain, scene, ptr);
436 }
437 
438 bool rna_GpencilModifier_material_poll(PointerRNA *ptr, PointerRNA value)
439 {
440  Object *ob = (Object *)ptr->owner_id;
441  Material *ma = (Material *)value.owner_id;
442 
443  return BKE_gpencil_object_material_index_get(ob, ma) != -1;
444 }
445 
446 static void rna_GpencilModifier_material_set(PointerRNA *ptr,
447  PointerRNA value,
448  Material **ma_target,
449  struct ReportList *reports)
450 {
451  Object *ob = (Object *)ptr->owner_id;
452  Material *ma = (Material *)value.owner_id;
453 
454  if (ma == NULL || BKE_gpencil_object_material_index_get(ob, ma) != -1) {
455  id_lib_extern((ID *)ob);
456  *ma_target = ma;
457  }
458  else {
459  BKE_reportf(
460  reports,
461  RPT_ERROR,
462  "Cannot assign material '%s', it has to be used by the grease pencil object already",
463  ma->id.name);
464  }
465 }
466 
467 static void rna_LineartGpencilModifier_material_set(PointerRNA *ptr,
468  PointerRNA value,
469  struct ReportList *reports)
470 {
472  Material **ma_target = &lmd->target_material;
473 
474  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
475 }
476 
477 static void rna_NoiseGpencilModifier_material_set(PointerRNA *ptr,
478  PointerRNA value,
479  struct ReportList *reports)
480 {
482  Material **ma_target = &nmd->material;
483 
484  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
485 }
486 
487 static void rna_SmoothGpencilModifier_material_set(PointerRNA *ptr,
488  PointerRNA value,
489  struct ReportList *reports)
490 {
492  Material **ma_target = &smd->material;
493 
494  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
495 }
496 
497 static void rna_SubdivGpencilModifier_material_set(PointerRNA *ptr,
498  PointerRNA value,
499  struct ReportList *reports)
500 {
502  Material **ma_target = &smd->material;
503 
504  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
505 }
506 
507 static void rna_SimplifyGpencilModifier_material_set(PointerRNA *ptr,
508  PointerRNA value,
509  struct ReportList *reports)
510 {
512  Material **ma_target = &smd->material;
513 
514  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
515 }
516 
517 static void rna_ThickGpencilModifier_material_set(PointerRNA *ptr,
518  PointerRNA value,
519  struct ReportList *reports)
520 {
522  Material **ma_target = &tmd->material;
523 
524  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
525 }
526 
527 static void rna_OffsetGpencilModifier_material_set(PointerRNA *ptr,
528  PointerRNA value,
529  struct ReportList *reports)
530 {
532  Material **ma_target = &omd->material;
533 
534  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
535 }
536 
537 static void rna_TintGpencilModifier_material_set(PointerRNA *ptr,
538  PointerRNA value,
539  struct ReportList *reports)
540 {
542  Material **ma_target = &tmd->material;
543 
544  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
545 }
546 
547 static void rna_ColorGpencilModifier_material_set(PointerRNA *ptr,
548  PointerRNA value,
549  struct ReportList *reports)
550 {
552  Material **ma_target = &cmd->material;
553 
554  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
555 }
556 
557 static void rna_ArrayGpencilModifier_material_set(PointerRNA *ptr,
558  PointerRNA value,
559  struct ReportList *reports)
560 {
562  Material **ma_target = &amd->material;
563 
564  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
565 }
566 
567 static void rna_OpacityGpencilModifier_material_set(PointerRNA *ptr,
568  PointerRNA value,
569  struct ReportList *reports)
570 {
572  Material **ma_target = &omd->material;
573 
574  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
575 }
576 
577 static void rna_LatticeGpencilModifier_material_set(PointerRNA *ptr,
578  PointerRNA value,
579  struct ReportList *reports)
580 {
582  Material **ma_target = &lmd->material;
583 
584  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
585 }
586 
587 static void rna_MirrorGpencilModifier_material_set(PointerRNA *ptr,
588  PointerRNA value,
589  struct ReportList *reports)
590 {
592  Material **ma_target = &mmd->material;
593 
594  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
595 }
596 
597 static void rna_HookGpencilModifier_material_set(PointerRNA *ptr,
598  PointerRNA value,
599  struct ReportList *reports)
600 {
602  Material **ma_target = &hmd->material;
603 
604  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
605 }
606 
607 static void rna_MultiplyGpencilModifier_material_set(PointerRNA *ptr,
608  PointerRNA value,
609  struct ReportList *reports)
610 {
612  Material **ma_target = &mmd->material;
613 
614  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
615 }
616 
617 static void rna_TextureGpencilModifier_material_set(PointerRNA *ptr,
618  PointerRNA value,
619  struct ReportList *reports)
620 {
622  Material **ma_target = &tmd->material;
623 
624  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
625 }
626 
627 #else
628 
630 {
631  StructRNA *srna;
632  PropertyRNA *prop;
633 
634  srna = RNA_def_struct(brna, "NoiseGpencilModifier", "GpencilModifier");
635  RNA_def_struct_ui_text(srna, "Noise Modifier", "Noise effect modifier");
636  RNA_def_struct_sdna(srna, "NoiseGpencilModifierData");
637  RNA_def_struct_ui_icon(srna, ICON_MOD_NOISE);
638 
639  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
640  RNA_def_property_string_sdna(prop, NULL, "layername");
641  RNA_def_property_ui_text(prop, "Layer", "Layer name");
642  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
643 
644  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
648  NULL,
649  "rna_NoiseGpencilModifier_material_set",
650  NULL,
651  "rna_GpencilModifier_material_poll");
652  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
653  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
654 
655  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
656  RNA_def_property_string_sdna(prop, NULL, "vgname");
657  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
658  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_NoiseGpencilModifier_vgname_set");
659  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
660 
661  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
662  RNA_def_property_float_sdna(prop, NULL, "factor");
663  RNA_def_property_range(prop, 0.0, FLT_MAX);
664  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
665  RNA_def_property_ui_text(prop, "Offset Factor", "Amount of noise to apply");
666  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
667 
668  prop = RNA_def_property(srna, "factor_strength", PROP_FLOAT, PROP_FACTOR);
669  RNA_def_property_float_sdna(prop, NULL, "factor_strength");
670  RNA_def_property_range(prop, 0.0, FLT_MAX);
671  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
672  RNA_def_property_ui_text(prop, "Strength Factor", "Amount of noise to apply to opacity");
673  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
674 
675  prop = RNA_def_property(srna, "factor_thickness", PROP_FLOAT, PROP_FACTOR);
676  RNA_def_property_float_sdna(prop, NULL, "factor_thickness");
677  RNA_def_property_range(prop, 0.0, FLT_MAX);
678  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
679  RNA_def_property_ui_text(prop, "Thickness Factor", "Amount of noise to apply to thickness");
680  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
681 
682  prop = RNA_def_property(srna, "factor_uvs", PROP_FLOAT, PROP_FACTOR);
683  RNA_def_property_float_sdna(prop, NULL, "factor_uvs");
684  RNA_def_property_range(prop, 0.0, FLT_MAX);
685  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
686  RNA_def_property_ui_text(prop, "UV Factor", "Amount of noise to apply uv rotation");
687  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
688 
689  prop = RNA_def_property(srna, "random", PROP_BOOLEAN, PROP_NONE);
691  RNA_def_property_ui_text(prop, "Random", "Use random values over time");
692  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
693 
694  prop = RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
695  RNA_def_property_ui_text(prop, "Noise Seed", "Random seed");
696  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
697 
698  prop = RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_FACTOR);
699  RNA_def_property_float_sdna(prop, NULL, "noise_scale");
700  RNA_def_property_range(prop, 0.0, 1.0);
701  RNA_def_property_ui_text(prop, "Noise Scale", "Scale the noise frequency");
702  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
703 
704  prop = RNA_def_property(srna, "noise_offset", PROP_FLOAT, PROP_FACTOR);
705  RNA_def_property_float_sdna(prop, NULL, "noise_offset");
706  RNA_def_property_range(prop, 0.0, FLT_MAX);
707  RNA_def_property_ui_range(prop, 0.0, 100.0, 0.1, 3);
708  RNA_def_property_ui_text(prop, "Noise Offset", "Offset the noise along the strokes");
709  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
710 
711  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
714  prop, "Custom Curve", "Use a custom curve to define noise effect along the strokes");
715  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
716 
717  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
718  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
719  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
720  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
721 
722  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
723  RNA_def_property_int_sdna(prop, NULL, "pass_index");
724  RNA_def_property_range(prop, 0, 100);
725  RNA_def_property_ui_text(prop, "Pass", "Pass index");
726  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
727 
728  prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
729  RNA_def_property_int_sdna(prop, NULL, "step");
730  RNA_def_property_range(prop, 1, 100);
732  prop, "Step", "Number of frames before recalculate random values again");
733  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
734 
735  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
737  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
738  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
739 
740  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
742  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
743  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
744 
745  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
747  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
748  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
749 
750  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
752  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
753  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
754 
755  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
756  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
757  RNA_def_property_range(prop, 0, 100);
758  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
759  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
760 
761  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
763  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
764  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
765 }
766 
768 {
769  StructRNA *srna;
770  PropertyRNA *prop;
771 
772  srna = RNA_def_struct(brna, "SmoothGpencilModifier", "GpencilModifier");
773  RNA_def_struct_ui_text(srna, "Smooth Modifier", "Smooth effect modifier");
774  RNA_def_struct_sdna(srna, "SmoothGpencilModifierData");
775  RNA_def_struct_ui_icon(srna, ICON_MOD_SMOOTH);
776 
777  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
778  RNA_def_property_string_sdna(prop, NULL, "layername");
779  RNA_def_property_ui_text(prop, "Layer", "Layer name");
780  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
781 
782  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
786  NULL,
787  "rna_SmoothGpencilModifier_material_set",
788  NULL,
789  "rna_GpencilModifier_material_poll");
790  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
791  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
792 
793  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
794  RNA_def_property_string_sdna(prop, NULL, "vgname");
795  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
796  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SmoothGpencilModifier_vgname_set");
797  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
798 
799  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
800  RNA_def_property_float_sdna(prop, NULL, "factor");
801  RNA_def_property_range(prop, 0, 1);
802  RNA_def_property_ui_text(prop, "Factor", "Amount of smooth to apply");
803  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
804 
805  prop = RNA_def_property(srna, "use_edit_position", PROP_BOOLEAN, PROP_NONE);
808  prop, "Affect Position", "The modifier affects the position of the point");
809  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
810 
811  prop = RNA_def_property(srna, "use_edit_strength", PROP_BOOLEAN, PROP_NONE);
814  prop, "Affect Strength", "The modifier affects the color strength of the point");
815  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
816 
817  prop = RNA_def_property(srna, "use_edit_thickness", PROP_BOOLEAN, PROP_NONE);
820  prop, "Affect Thickness", "The modifier affects the thickness of the point");
821  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
822 
823  prop = RNA_def_property(srna, "use_edit_uv", PROP_BOOLEAN, PROP_NONE);
826  prop, "Affect UV", "The modifier affects the UV rotation factor of the point");
827  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
828 
829  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
830  RNA_def_property_int_sdna(prop, NULL, "pass_index");
831  RNA_def_property_range(prop, 0, 100);
832  RNA_def_property_ui_text(prop, "Pass", "Pass index");
833  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
834 
835  prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
836  RNA_def_property_int_sdna(prop, NULL, "step");
837  RNA_def_property_range(prop, 1, 10);
839  prop, "Step", "Number of times to apply smooth (high numbers can reduce fps)");
840  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
841 
842  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
844  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
845  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
846 
847  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
849  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
850  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
851 
852  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
854  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
855  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
856 
857  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
859  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
860  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
861 
862  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
863  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
864  RNA_def_property_range(prop, 0, 100);
865  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
866  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
867 
868  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
870  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
871  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
872 
873  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
876  prop, "Custom Curve", "Use a custom curve to define smooth effect along the strokes");
877  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
878 
879  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
880  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
881  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
882  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
883 }
884 
886 {
887  StructRNA *srna;
888  PropertyRNA *prop;
889 
890  srna = RNA_def_struct(brna, "SubdivGpencilModifier", "GpencilModifier");
891  RNA_def_struct_ui_text(srna, "Subdivision Modifier", "Subdivide Stroke modifier");
892  RNA_def_struct_sdna(srna, "SubdivGpencilModifierData");
893  RNA_def_struct_ui_icon(srna, ICON_MOD_SUBSURF);
894 
895  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
896  RNA_def_property_string_sdna(prop, NULL, "layername");
897  RNA_def_property_ui_text(prop, "Layer", "Layer name");
898  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
899 
900  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
904  NULL,
905  "rna_SubdivGpencilModifier_material_set",
906  NULL,
907  "rna_GpencilModifier_material_poll");
908  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
909  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
910 
911  prop = RNA_def_property(srna, "level", PROP_INT, PROP_NONE);
912  RNA_def_property_int_sdna(prop, NULL, "level");
913  RNA_def_property_range(prop, 0, 5);
914  RNA_def_property_ui_text(prop, "Level", "Number of subdivisions");
915  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
916 
917  prop = RNA_def_property(srna, "subdivision_type", PROP_ENUM, PROP_NONE);
918  RNA_def_property_enum_sdna(prop, NULL, "type");
920  RNA_def_property_ui_text(prop, "Subdivision Type", "Select type of subdivision algorithm");
921  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
922 
923  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
924  RNA_def_property_int_sdna(prop, NULL, "pass_index");
925  RNA_def_property_range(prop, 0, 100);
926  RNA_def_property_ui_text(prop, "Pass", "Pass index");
927  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
928 
929  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
931  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
932  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
933 
934  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
936  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
937  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
938 
939  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
941  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
942  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
943 
944  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
945  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
946  RNA_def_property_range(prop, 0, 100);
947  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
948  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
949 
950  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
952  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
953  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
954 }
955 
957 {
958  StructRNA *srna;
959  PropertyRNA *prop;
960 
961  static EnumPropertyItem prop_gpencil_simplify_mode_items[] = {
963  "FIXED",
964  ICON_IPO_CONSTANT,
965  "Fixed",
966  "Delete alternating vertices in the stroke, except extremes"},
968  "ADAPTIVE",
969  ICON_IPO_EASE_IN_OUT,
970  "Adaptive",
971  "Use a Ramer-Douglas-Peucker algorithm to simplify the stroke preserving main shape"},
973  "SAMPLE",
974  ICON_IPO_EASE_IN_OUT,
975  "Sample",
976  "Re-sample the stroke with segments of the specified length"},
978  "MERGE",
979  ICON_IPO_EASE_IN_OUT,
980  "Merge",
981  "Simplify the stroke by merging vertices closer than a given distance"},
982  {0, NULL, 0, NULL, NULL},
983  };
984 
985  srna = RNA_def_struct(brna, "SimplifyGpencilModifier", "GpencilModifier");
986  RNA_def_struct_ui_text(srna, "Simplify Modifier", "Simplify Stroke modifier");
987  RNA_def_struct_sdna(srna, "SimplifyGpencilModifierData");
988  RNA_def_struct_ui_icon(srna, ICON_MOD_SIMPLIFY);
989 
990  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
991  RNA_def_property_string_sdna(prop, NULL, "layername");
992  RNA_def_property_ui_text(prop, "Layer", "Layer name");
993  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
994 
995  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
999  NULL,
1000  "rna_SimplifyGpencilModifier_material_set",
1001  NULL,
1002  "rna_GpencilModifier_material_poll");
1003  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1004  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1005 
1006  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
1007  RNA_def_property_float_sdna(prop, NULL, "factor");
1008  RNA_def_property_range(prop, 0, 100.0);
1009  RNA_def_property_ui_range(prop, 0, 5.0f, 1.0f, 3);
1010  RNA_def_property_ui_text(prop, "Factor", "Factor of Simplify");
1011  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1012 
1013  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1014  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1015  RNA_def_property_range(prop, 0, 100);
1016  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1017  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1018 
1019  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1021  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1022  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1023 
1024  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1026  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1027  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1028 
1029  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1031  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1032  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1033 
1034  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1035  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1036  RNA_def_property_range(prop, 0, 100);
1037  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1038  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1039 
1040  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1042  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1043  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1044 
1045  /* Mode */
1046  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
1047  RNA_def_property_enum_items(prop, prop_gpencil_simplify_mode_items);
1048  RNA_def_property_ui_text(prop, "Mode", "How to simplify the stroke");
1049  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1050 
1051  prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
1052  RNA_def_property_int_sdna(prop, NULL, "step");
1053  RNA_def_property_range(prop, 1, 50);
1054  RNA_def_property_ui_text(prop, "Iterations", "Number of times to apply simplify");
1055  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1056 
1057  /* Sample */
1058  prop = RNA_def_property(srna, "length", PROP_FLOAT, PROP_DISTANCE);
1059  RNA_def_property_float_sdna(prop, NULL, "length");
1060  RNA_def_property_range(prop, 0, FLT_MAX);
1061  RNA_def_property_ui_range(prop, 0, 1.0, 0.01, 3);
1062  RNA_def_property_ui_text(prop, "Length", "Length of each segment");
1063  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1064 
1065  /* Merge */
1066  prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_DISTANCE);
1067  RNA_def_property_float_sdna(prop, NULL, "distance");
1068  RNA_def_property_range(prop, 0, FLT_MAX);
1069  RNA_def_property_ui_range(prop, 0, 1.0, 0.01, 3);
1070  RNA_def_property_ui_text(prop, "Distance", "Distance between points");
1071  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1072 }
1073 
1075 {
1076  StructRNA *srna;
1077  PropertyRNA *prop;
1078 
1079  srna = RNA_def_struct(brna, "ThickGpencilModifier", "GpencilModifier");
1080  RNA_def_struct_ui_text(srna, "Thick Modifier", "Subdivide and Smooth Stroke modifier");
1081  RNA_def_struct_sdna(srna, "ThickGpencilModifierData");
1082  RNA_def_struct_ui_icon(srna, ICON_MOD_THICKNESS);
1083 
1084  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1085  RNA_def_property_string_sdna(prop, NULL, "layername");
1086  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1087  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1088 
1089  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1093  NULL,
1094  "rna_ThickGpencilModifier_material_set",
1095  NULL,
1096  "rna_GpencilModifier_material_poll");
1097  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1098  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1099 
1100  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1101  RNA_def_property_string_sdna(prop, NULL, "vgname");
1102  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1103  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ThickGpencilModifier_vgname_set");
1104  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1105 
1106  prop = RNA_def_property(srna, "thickness", PROP_INT, PROP_NONE);
1107  RNA_def_property_int_sdna(prop, NULL, "thickness");
1108  RNA_def_property_range(prop, -100, 500);
1109  RNA_def_property_ui_text(prop, "Thickness", "Absolute thickness to apply everywhere");
1110  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1111 
1112  prop = RNA_def_property(srna, "thickness_factor", PROP_FLOAT, PROP_NONE);
1113  RNA_def_property_float_sdna(prop, NULL, "thickness_fac");
1114  RNA_def_property_range(prop, 0.0, FLT_MAX);
1115  RNA_def_property_ui_range(prop, 0.0, 10.0, 0.1, 3);
1116  RNA_def_property_ui_text(prop, "Thickness Factor", "Factor to multiply the thickness with");
1117  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1118 
1119  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1120  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1121  RNA_def_property_range(prop, 0, 100);
1122  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1123  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1124 
1125  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1127  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1128  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1129 
1130  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1132  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1133  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1134 
1135  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1137  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1138  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1139 
1140  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1142  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1143  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1144 
1145  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1146  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1147  RNA_def_property_range(prop, 0, 100);
1148  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1149  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1150 
1151  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1153  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1154  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1155 
1156  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1159  prop, "Custom Curve", "Use a custom curve to define thickness change along the strokes");
1160  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1161 
1162  prop = RNA_def_property(srna, "normalize_thickness", PROP_BOOLEAN, PROP_NONE);
1164  RNA_def_property_ui_text(prop, "Uniform Thickness", "Replace the stroke thickness");
1165  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1166 
1167  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1168  RNA_def_property_pointer_sdna(prop, NULL, "curve_thickness");
1169  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1170  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1171 }
1172 
1174 {
1175  StructRNA *srna;
1176  PropertyRNA *prop;
1177 
1178  srna = RNA_def_struct(brna, "OffsetGpencilModifier", "GpencilModifier");
1179  RNA_def_struct_ui_text(srna, "Offset Modifier", "Offset Stroke modifier");
1180  RNA_def_struct_sdna(srna, "OffsetGpencilModifierData");
1181  RNA_def_struct_ui_icon(srna, ICON_MOD_OFFSET);
1182 
1183  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1184  RNA_def_property_string_sdna(prop, NULL, "layername");
1185  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1186  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1187 
1188  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1192  NULL,
1193  "rna_OffsetGpencilModifier_material_set",
1194  NULL,
1195  "rna_GpencilModifier_material_poll");
1196  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1197  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1198 
1199  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1200  RNA_def_property_string_sdna(prop, NULL, "vgname");
1201  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1202  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_OffsetGpencilModifier_vgname_set");
1203  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1204 
1205  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1206  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1207  RNA_def_property_range(prop, 0, 100);
1208  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1209  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1210 
1211  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1213  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1214  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1215 
1216  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1218  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1219  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1220 
1221  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1223  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1224  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1225 
1226  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1228  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1229  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1230 
1231  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1232  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1233  RNA_def_property_range(prop, 0, 100);
1234  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1235  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1236 
1237  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1239  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1240  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1241 
1242  prop = RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
1243  RNA_def_property_float_sdna(prop, NULL, "loc");
1244  RNA_def_property_ui_text(prop, "Location", "Values for change location");
1245  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1246  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1247 
1248  prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER);
1249  RNA_def_property_float_sdna(prop, NULL, "rot");
1250  RNA_def_property_ui_text(prop, "Rotation", "Values for changes in rotation");
1251  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1252  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1253 
1254  prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
1255  RNA_def_property_float_sdna(prop, NULL, "scale");
1256  RNA_def_property_ui_text(prop, "Scale", "Values for changes in scale");
1257  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1258  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1259 }
1260 
1262 {
1263  StructRNA *srna;
1264  PropertyRNA *prop;
1265 
1266  /* modes */
1267  static EnumPropertyItem tint_mode_types_items[] = {
1268  {GPPAINT_MODE_STROKE, "STROKE", 0, "Stroke", "Vertex Color affects to Stroke only"},
1269  {GPPAINT_MODE_FILL, "FILL", 0, "Fill", "Vertex Color affects to Fill only"},
1270  {GPPAINT_MODE_BOTH, "BOTH", 0, "Stroke and Fill", "Vertex Color affects to Stroke and Fill"},
1271  {0, NULL, 0, NULL, NULL},
1272  };
1273 
1274  srna = RNA_def_struct(brna, "TintGpencilModifier", "GpencilModifier");
1275  RNA_def_struct_ui_text(srna, "Tint Modifier", "Tint modifier");
1276  RNA_def_struct_sdna(srna, "TintGpencilModifierData");
1277  RNA_def_struct_ui_icon(srna, ICON_COLOR);
1278 
1279  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
1280  RNA_def_property_ui_text(prop, "Object", "Parent object to define the center of the effect");
1283  RNA_def_property_pointer_funcs(prop, NULL, "rna_TintGpencilModifier_object_set", NULL, NULL);
1284  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1285 
1286  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1287  RNA_def_property_string_sdna(prop, NULL, "layername");
1288  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1289  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1290 
1291  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1295  NULL,
1296  "rna_TintGpencilModifier_material_set",
1297  NULL,
1298  "rna_GpencilModifier_material_poll");
1299  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1300  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1301 
1302  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1303  RNA_def_property_string_sdna(prop, NULL, "vgname");
1304  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1305  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_TintGpencilModifier_vgname_set");
1306  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1307 
1308  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1309  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1310  RNA_def_property_range(prop, 0, 100);
1311  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1312  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1313 
1314  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1316  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1317  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1318 
1319  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1321  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1322  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1323 
1324  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1326  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1327  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1328 
1329  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1331  RNA_def_property_ui_text(prop, "Inverse Vertex Group", "Inverse filter");
1332  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1333 
1334  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1335  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1336  RNA_def_property_range(prop, 0, 100);
1337  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1338  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1339 
1340  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1342  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1343  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1344 
1345  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
1346  RNA_def_property_float_sdna(prop, NULL, "factor");
1347  RNA_def_property_range(prop, 0, 2.0);
1348  RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 2);
1349  RNA_def_property_ui_text(prop, "Strength", "Factor for tinting");
1350  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1351 
1352  prop = RNA_def_property(srna, "radius", PROP_FLOAT, PROP_DISTANCE);
1353  RNA_def_property_float_sdna(prop, NULL, "radius");
1354  RNA_def_property_range(prop, 1e-6f, FLT_MAX);
1355  RNA_def_property_ui_range(prop, 0.001f, FLT_MAX, 1, 3);
1356  RNA_def_property_ui_text(prop, "Radius", "Defines the maximum distance of the effect");
1357  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1358 
1359  /* Mode type. */
1360  prop = RNA_def_property(srna, "vertex_mode", PROP_ENUM, PROP_NONE);
1362  RNA_def_property_enum_items(prop, tint_mode_types_items);
1363  RNA_def_property_ui_text(prop, "Mode", "Defines how vertex color affect to the strokes");
1365  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1366 
1367  /* Type of Tint. */
1368  prop = RNA_def_property(srna, "tint_type", PROP_ENUM, PROP_NONE);
1369  RNA_def_property_enum_sdna(prop, NULL, "type");
1371  RNA_def_property_ui_text(prop, "Tint Type", "Select type of tinting algorithm");
1372  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1373 
1374  /* Simple Color. */
1375  prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
1376  RNA_def_property_range(prop, 0.0, 1.0);
1377  RNA_def_property_float_sdna(prop, NULL, "rgb");
1378  RNA_def_property_array(prop, 3);
1379  RNA_def_property_ui_text(prop, "Color", "Color used for tinting");
1380  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1381 
1382  /* Color band. */
1383  prop = RNA_def_property(srna, "colors", PROP_POINTER, PROP_NONE);
1384  RNA_def_property_pointer_sdna(prop, NULL, "colorband");
1385  RNA_def_property_struct_type(prop, "ColorRamp");
1386  RNA_def_property_ui_text(prop, "Colors", "Color ramp used to define tinting colors");
1387  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1388 
1389  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1392  prop, "Custom Curve", "Use a custom curve to define vertex color effect along the strokes");
1393  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1394 
1395  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1396  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1397  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1398  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1399 }
1400 
1402 {
1403  StructRNA *srna;
1404  PropertyRNA *prop;
1405 
1406  srna = RNA_def_struct(brna, "TimeGpencilModifier", "GpencilModifier");
1407  RNA_def_struct_ui_text(srna, "Time Offset Modifier", "Time offset modifier");
1408  RNA_def_struct_sdna(srna, "TimeGpencilModifierData");
1409  RNA_def_struct_ui_icon(srna, ICON_MOD_TIME);
1410 
1411  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
1412  RNA_def_property_enum_sdna(prop, NULL, "mode");
1414  RNA_def_property_ui_text(prop, "Mode", "");
1415  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1416 
1417  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1418  RNA_def_property_string_sdna(prop, NULL, "layername");
1419  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1420  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1421 
1422  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1424  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1425  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1426 
1427  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1428  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1429  RNA_def_property_range(prop, 0, 100);
1430  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1431  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1432 
1433  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1435  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1436  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1437 
1438  prop = RNA_def_property(srna, "offset", PROP_INT, PROP_NONE);
1439  RNA_def_property_int_sdna(prop, NULL, "offset");
1440  RNA_def_property_range(prop, SHRT_MIN, SHRT_MAX);
1442  prop, "Frame Offset", "Number of frames to offset original keyframe number or frame to fix");
1443  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1444 
1445  prop = RNA_def_property(srna, "frame_scale", PROP_FLOAT, PROP_NONE);
1446  RNA_def_property_float_sdna(prop, NULL, "frame_scale");
1447  RNA_def_property_range(prop, 0.001f, 100.0f);
1448  RNA_def_property_ui_text(prop, "Frame Scale", "Evaluation time in seconds");
1449  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1450 
1451  prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_TIME);
1453  RNA_def_property_int_sdna(prop, NULL, "sfra");
1454  RNA_def_property_int_funcs(prop, NULL, "rna_TimeModifier_start_frame_set", NULL);
1456  RNA_def_property_ui_text(prop, "Start Frame", "First frame of the range");
1457  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1458 
1459  prop = RNA_def_property(srna, "frame_end", PROP_INT, PROP_TIME);
1461  RNA_def_property_int_sdna(prop, NULL, "efra");
1462  RNA_def_property_int_funcs(prop, NULL, "rna_TimeModifier_end_frame_set", NULL);
1464  RNA_def_property_ui_text(prop, "End Frame", "Final frame of the range");
1465  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1466 
1467  prop = RNA_def_property(srna, "use_keep_loop", PROP_BOOLEAN, PROP_NONE);
1470  prop, "Keep Loop", "Retiming end frames and move to start of animation to keep loop");
1471  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1472 
1473  prop = RNA_def_property(srna, "use_custom_frame_range", PROP_BOOLEAN, PROP_NONE);
1476  prop, "Custom Range", "Define a custom range of frames to use in modifier");
1477  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1478 }
1479 
1481 {
1482  StructRNA *srna;
1483  PropertyRNA *prop;
1484 
1485  srna = RNA_def_struct(brna, "ColorGpencilModifier", "GpencilModifier");
1486  RNA_def_struct_ui_text(srna, "Hue/Saturation Modifier", "Change Hue/Saturation modifier");
1487  RNA_def_struct_sdna(srna, "ColorGpencilModifierData");
1488  RNA_def_struct_ui_icon(srna, ICON_MOD_TINT);
1489 
1490  prop = RNA_def_property(srna, "modify_color", PROP_ENUM, PROP_NONE);
1491  RNA_def_property_enum_items(prop, modifier_modify_color_items); /* share the enum */
1492  RNA_def_property_ui_text(prop, "Mode", "Set what colors of the stroke are affected");
1493  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1494 
1495  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1496  RNA_def_property_string_sdna(prop, NULL, "layername");
1497  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1498  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1499 
1500  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1504  NULL,
1505  "rna_ColorGpencilModifier_material_set",
1506  NULL,
1507  "rna_GpencilModifier_material_poll");
1508  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1509  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1510 
1511  prop = RNA_def_property(srna, "hue", PROP_FLOAT, PROP_NONE);
1512  RNA_def_property_range(prop, 0.0, 1.0);
1513  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 3);
1514  RNA_def_property_float_sdna(prop, NULL, "hsv[0]");
1515  RNA_def_property_ui_text(prop, "Hue", "Color Hue");
1516  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1517 
1518  prop = RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE);
1519  RNA_def_property_range(prop, 0.0, FLT_MAX);
1520  RNA_def_property_ui_range(prop, 0.0, 2.0, 0.1, 3);
1521  RNA_def_property_float_sdna(prop, NULL, "hsv[1]");
1522  RNA_def_property_ui_text(prop, "Saturation", "Color Saturation");
1523  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1524 
1525  prop = RNA_def_property(srna, "value", PROP_FLOAT, PROP_NONE);
1526  RNA_def_property_range(prop, 0.0, FLT_MAX);
1527  RNA_def_property_ui_range(prop, 0.0, 2.0, 0.1, 3);
1528  RNA_def_property_float_sdna(prop, NULL, "hsv[2]");
1529  RNA_def_property_ui_text(prop, "Value", "Color Value");
1530  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1531 
1532  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1533  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1534  RNA_def_property_range(prop, 0, 100);
1535  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1536  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1537 
1538  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1540  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1541  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1542 
1543  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1545  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1546  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1547 
1548  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1550  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1551  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1552 
1553  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1554  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1555  RNA_def_property_range(prop, 0, 100);
1556  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1557  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1558 
1559  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1561  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1562  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1563 
1564  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1567  prop, "Custom Curve", "Use a custom curve to define color effect along the strokes");
1568  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1569 
1570  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1571  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1572  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1573  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1574 }
1575 
1577 {
1578  StructRNA *srna;
1579  PropertyRNA *prop;
1580 
1581  srna = RNA_def_struct(brna, "OpacityGpencilModifier", "GpencilModifier");
1582  RNA_def_struct_ui_text(srna, "Opacity Modifier", "Opacity of Strokes modifier");
1583  RNA_def_struct_sdna(srna, "OpacityGpencilModifierData");
1584  RNA_def_struct_ui_icon(srna, ICON_MOD_OPACITY);
1585 
1586  prop = RNA_def_property(srna, "modify_color", PROP_ENUM, PROP_NONE);
1588  RNA_def_property_ui_text(prop, "Mode", "Set what colors of the stroke are affected");
1589  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1590 
1591  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1592  RNA_def_property_string_sdna(prop, NULL, "layername");
1593  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1594  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1595 
1596  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1600  NULL,
1601  "rna_OpacityGpencilModifier_material_set",
1602  NULL,
1603  "rna_GpencilModifier_material_poll");
1604  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1605  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1606 
1607  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1608  RNA_def_property_string_sdna(prop, NULL, "vgname");
1609  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1610  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_OpacityGpencilModifier_vgname_set");
1611  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1612 
1613  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
1614  RNA_def_property_float_sdna(prop, NULL, "factor");
1615  RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 2);
1617  prop, NULL, "rna_GpencilOpacity_max_set", "rna_GpencilOpacity_range");
1618  RNA_def_property_ui_text(prop, "Opacity Factor", "Factor of Opacity");
1619  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1620 
1621  prop = RNA_def_property(srna, "hardness", PROP_FLOAT, PROP_NONE);
1622  RNA_def_property_float_sdna(prop, NULL, "hardeness");
1623  RNA_def_property_range(prop, 0.0, FLT_MAX);
1624  RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 0.1, 2);
1625  RNA_def_property_ui_text(prop, "Hardness", "Factor of stroke hardness");
1626  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1627 
1628  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1629  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1630  RNA_def_property_range(prop, 0, 100);
1631  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1632  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1633 
1634  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1636  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1637  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1638 
1639  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1641  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1642  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1643 
1644  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1646  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1647  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1648 
1649  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1651  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1652  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1653 
1654  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1655  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1656  RNA_def_property_range(prop, 0, 100);
1657  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1658  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1659 
1660  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1662  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1663  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1664 
1665  prop = RNA_def_property(srna, "normalize_opacity", PROP_BOOLEAN, PROP_NONE);
1667  RNA_def_property_ui_text(prop, "Uniform Opacity", "Replace the stroke opacity");
1668  RNA_def_property_update(prop, 0, "rna_GpencilModifier_opacity_update");
1669 
1670  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1673  prop, "Custom Curve", "Use a custom curve to define opacity effect along the strokes");
1674  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1675 
1676  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1677  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1678  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1679  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1680 }
1681 
1683 {
1684  StructRNA *srna;
1685  PropertyRNA *prop;
1686 
1687  srna = RNA_def_struct(brna, "ArrayGpencilModifier", "GpencilModifier");
1688  RNA_def_struct_ui_text(srna, "Instance Modifier", "Create grid of duplicate instances");
1689  RNA_def_struct_sdna(srna, "ArrayGpencilModifierData");
1690  RNA_def_struct_ui_icon(srna, ICON_MOD_ARRAY);
1691 
1692  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1693  RNA_def_property_string_sdna(prop, NULL, "layername");
1694  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1695  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1696 
1697  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1701  NULL,
1702  "rna_ArrayGpencilModifier_material_set",
1703  NULL,
1704  "rna_GpencilModifier_material_poll");
1705  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1706  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1707 
1708  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1709  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1710  RNA_def_property_range(prop, 0, 100);
1711  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1712  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1713 
1714  prop = RNA_def_property(srna, "count", PROP_INT, PROP_NONE);
1715  RNA_def_property_range(prop, 1, SHRT_MAX);
1716  RNA_def_property_ui_range(prop, 1, 50, 1, -1);
1717  RNA_def_property_ui_text(prop, "Count", "Number of items");
1718  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1719 
1720  /* Offset parameters */
1721  prop = RNA_def_property(srna, "offset_object", PROP_POINTER, PROP_NONE);
1722  RNA_def_property_pointer_sdna(prop, NULL, "object");
1724  prop,
1725  "Object Offset",
1726  "Use the location and rotation of another object to determine the distance and "
1727  "rotational change between arrayed items");
1730  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1731 
1732  prop = RNA_def_property(srna, "constant_offset", PROP_FLOAT, PROP_TRANSLATION);
1733  RNA_def_property_float_sdna(prop, NULL, "offset");
1734  RNA_def_property_ui_text(prop, "Constant Offset", "Value for the distance between items");
1735  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1736  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1737 
1738  prop = RNA_def_property(srna, "relative_offset", PROP_FLOAT, PROP_XYZ);
1739  RNA_def_property_float_sdna(prop, NULL, "shift");
1741  prop,
1742  "Relative Offset",
1743  "The size of the geometry will determine the distance between arrayed items");
1744  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1745  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1746 
1747  prop = RNA_def_property(srna, "random_offset", PROP_FLOAT, PROP_XYZ);
1748  RNA_def_property_float_sdna(prop, NULL, "rnd_offset");
1749  RNA_def_property_ui_text(prop, "Random Offset", "Value for changes in location");
1750  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1751  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1752 
1753  prop = RNA_def_property(srna, "random_rotation", PROP_FLOAT, PROP_EULER);
1754  RNA_def_property_float_sdna(prop, NULL, "rnd_rot");
1755  RNA_def_property_ui_text(prop, "Random Rotation", "Value for changes in rotation");
1756  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1757  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1758 
1759  prop = RNA_def_property(srna, "random_scale", PROP_FLOAT, PROP_XYZ);
1760  RNA_def_property_float_sdna(prop, NULL, "rnd_scale");
1761  RNA_def_property_ui_text(prop, "Scale", "Value for changes in scale");
1762  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1763  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1764 
1765  prop = RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
1766  RNA_def_property_ui_text(prop, "Seed", "Random seed");
1767  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1768 
1769  prop = RNA_def_property(srna, "replace_material", PROP_INT, PROP_NONE);
1770  RNA_def_property_int_sdna(prop, NULL, "mat_rpl");
1771  RNA_def_property_range(prop, 0, SHRT_MAX);
1773  prop,
1774  "Material",
1775  "Index of the material used for generated strokes (0 keep original material)");
1776  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1777 
1778  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1780  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1781  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1782 
1783  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1785  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1786  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1787 
1788  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1790  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1791  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1792 
1793  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1794  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1795  RNA_def_property_range(prop, 0, 100);
1796  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1797  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1798 
1799  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1801  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1802  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1803 
1804  prop = RNA_def_property(srna, "use_constant_offset", PROP_BOOLEAN, PROP_NONE);
1806  RNA_def_property_ui_text(prop, "Offset", "Enable offset");
1807  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1808 
1809  prop = RNA_def_property(srna, "use_object_offset", PROP_BOOLEAN, PROP_NONE);
1811  RNA_def_property_ui_text(prop, "Object Offset", "Enable object offset");
1812  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1813 
1814  prop = RNA_def_property(srna, "use_relative_offset", PROP_BOOLEAN, PROP_NONE);
1816  RNA_def_property_ui_text(prop, "Shift", "Enable shift");
1817  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1818 
1819  prop = RNA_def_property(srna, "use_uniform_random_scale", PROP_BOOLEAN, PROP_NONE);
1822  prop, "Uniform Scale", "Use the same random seed for each scale axis for a uniform scale");
1823  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1824 }
1825 
1827 {
1828  static EnumPropertyItem prop_gpencil_build_mode_items[] = {
1830  "SEQUENTIAL",
1831  ICON_PARTICLE_POINT,
1832  "Sequential",
1833  "Strokes appear/disappear one after the other, but only a single one changes at a time"},
1835  "CONCURRENT",
1836  ICON_PARTICLE_TIP,
1837  "Concurrent",
1838  "Multiple strokes appear/disappear at once"},
1839  {0, NULL, 0, NULL, NULL},
1840  };
1841 
1842  static EnumPropertyItem prop_gpencil_build_transition_items[] = {
1844  "GROW",
1845  0,
1846  "Grow",
1847  "Show points in the order they occur in each stroke "
1848  "(e.g. for animating lines being drawn)"},
1850  "SHRINK",
1851  0,
1852  "Shrink",
1853  "Hide points from the end of each stroke to the start "
1854  "(e.g. for animating lines being erased)"},
1856  "FADE",
1857  0,
1858  "Fade",
1859  "Hide points in the order they occur in each stroke "
1860  "(e.g. for animating ink fading or vanishing after getting drawn)"},
1861  {0, NULL, 0, NULL, NULL},
1862  };
1863 
1864  static EnumPropertyItem prop_gpencil_build_time_align_items[] = {
1866  "START",
1867  0,
1868  "Align Start",
1869  "All strokes start at same time (i.e. short strokes finish earlier)"},
1871  "END",
1872  0,
1873  "Align End",
1874  "All strokes end at same time (i.e. short strokes start later)"},
1875  {0, NULL, 0, NULL, NULL},
1876  };
1877 
1878  StructRNA *srna;
1879  PropertyRNA *prop;
1880 
1881  srna = RNA_def_struct(brna, "BuildGpencilModifier", "GpencilModifier");
1882  RNA_def_struct_ui_text(srna, "Build Modifier", "Animate strokes appearing and disappearing");
1883  RNA_def_struct_sdna(srna, "BuildGpencilModifierData");
1884  RNA_def_struct_ui_icon(srna, ICON_MOD_BUILD);
1885 
1886  /* Mode */
1887  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
1888  RNA_def_property_enum_items(prop, prop_gpencil_build_mode_items);
1889  RNA_def_property_ui_text(prop, "Mode", "How many strokes are being animated at a time");
1890  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1891 
1892  /* Direction */
1893  prop = RNA_def_property(srna, "transition", PROP_ENUM, PROP_NONE);
1894  RNA_def_property_enum_items(prop, prop_gpencil_build_transition_items);
1896  prop, "Transition", "How are strokes animated (i.e. are they appearing or disappearing)");
1897  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1898 
1899  /* Transition Onset Delay + Length */
1900  prop = RNA_def_property(srna, "start_delay", PROP_FLOAT, PROP_NONE);
1901  RNA_def_property_float_sdna(prop, NULL, "start_delay");
1903  prop,
1904  "Start Delay",
1905  "Number of frames after each GP keyframe before the modifier has any effect");
1907  RNA_def_property_ui_range(prop, 0, 200, 1, -1);
1908  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1909 
1910  prop = RNA_def_property(srna, "length", PROP_FLOAT, PROP_NONE);
1911  RNA_def_property_float_sdna(prop, NULL, "length");
1913  "Length",
1914  "Maximum number of frames that the build effect can run for "
1915  "(unless another GP keyframe occurs before this time has elapsed)");
1917  RNA_def_property_ui_range(prop, 1, 1000, 1, -1);
1918  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1919 
1920  /* Concurrent Mode Settings */
1921  prop = RNA_def_property(srna, "concurrent_time_alignment", PROP_ENUM, PROP_NONE);
1922  RNA_def_property_enum_sdna(prop, NULL, "time_alignment");
1923  RNA_def_property_enum_items(prop, prop_gpencil_build_time_align_items);
1925  prop, "Time Alignment", "When should strokes start to appear/disappear");
1926  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1927 
1928  /* Time Limits */
1929  prop = RNA_def_property(srna, "use_restrict_frame_range", PROP_BOOLEAN, PROP_NONE);
1932  prop, "Restrict Frame Range", "Only modify strokes during the specified frame range");
1933  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1934 
1935  /* Use percentage */
1936  prop = RNA_def_property(srna, "use_percentage", PROP_BOOLEAN, PROP_NONE);
1939  prop, "Restrict Visible Points", "Use a percentage factor to determine the visible points");
1940  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1941 
1942  /* Percentage factor. */
1943  prop = RNA_def_property(srna, "percentage_factor", PROP_FLOAT, PROP_FACTOR);
1944  RNA_def_property_float_sdna(prop, NULL, "percentage_fac");
1945  RNA_def_property_ui_text(prop, "Factor", "Defines how much of the stroke is visible");
1946  RNA_def_property_range(prop, 0.0f, 1.0f);
1947  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1948 
1949  prop = RNA_def_property(srna, "frame_start", PROP_FLOAT, PROP_NONE);
1950  RNA_def_property_float_sdna(prop, NULL, "start_frame");
1952  prop, "Start Frame", "Start Frame (when Restrict Frame Range is enabled)");
1954  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1955 
1956  prop = RNA_def_property(srna, "frame_end", PROP_FLOAT, PROP_NONE);
1957  RNA_def_property_float_sdna(prop, NULL, "end_frame");
1958  RNA_def_property_ui_text(prop, "End Frame", "End Frame (when Restrict Frame Range is enabled)");
1960  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1961 
1962  /* Filters - Layer */
1963  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1964  RNA_def_property_string_sdna(prop, NULL, "layername");
1965  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1966  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1967 
1968  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1970  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1971  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1972 
1973  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1974  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1975  RNA_def_property_range(prop, 0, 100);
1976  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1977  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1978 
1979  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1981  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1982  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1983 }
1984 
1986 {
1987  StructRNA *srna;
1988  PropertyRNA *prop;
1989 
1990  srna = RNA_def_struct(brna, "LatticeGpencilModifier", "GpencilModifier");
1992  srna, "Lattice Modifier", "Change stroke using lattice to deform modifier");
1993  RNA_def_struct_sdna(srna, "LatticeGpencilModifierData");
1994  RNA_def_struct_ui_icon(srna, ICON_MOD_LATTICE);
1995 
1996  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1997  RNA_def_property_string_sdna(prop, NULL, "layername");
1998  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1999  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2000 
2001  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2005  NULL,
2006  "rna_LatticeGpencilModifier_material_set",
2007  NULL,
2008  "rna_GpencilModifier_material_poll");
2009  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2010  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2011 
2012  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2013  RNA_def_property_string_sdna(prop, NULL, "vgname");
2014  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
2015  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_LatticeGpencilModifier_vgname_set");
2016  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2017 
2018  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2019  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2020  RNA_def_property_range(prop, 0, 100);
2021  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2022  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2023 
2024  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2026  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2027  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2028 
2029  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2031  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2032  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2033 
2034  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2036  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2037  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2038 
2039  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
2041  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
2042  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2043 
2044  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2045  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2046  RNA_def_property_range(prop, 0, 100);
2047  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2048  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2049 
2050  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2052  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2053  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2054 
2055  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2056  RNA_def_property_ui_text(prop, "Object", "Lattice object to deform with");
2058  prop, NULL, "rna_LatticeGpencilModifier_object_set", NULL, "rna_Lattice_object_poll");
2061  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2062 
2063  prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
2064  RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
2065  RNA_def_property_ui_range(prop, 0, 1, 10, 2);
2066  RNA_def_property_ui_text(prop, "Strength", "Strength of modifier effect");
2067  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2068 }
2069 
2071 {
2072  StructRNA *srna;
2073  PropertyRNA *prop;
2074 
2075  srna = RNA_def_struct(brna, "MirrorGpencilModifier", "GpencilModifier");
2076  RNA_def_struct_ui_text(srna, "Mirror Modifier", "Create mirroring strokes");
2077  RNA_def_struct_sdna(srna, "MirrorGpencilModifierData");
2078  RNA_def_struct_ui_icon(srna, ICON_MOD_MIRROR);
2079 
2080  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2081  RNA_def_property_string_sdna(prop, NULL, "layername");
2082  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2083  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2084 
2085  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2089  NULL,
2090  "rna_MirrorGpencilModifier_material_set",
2091  NULL,
2092  "rna_GpencilModifier_material_poll");
2093  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2094  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2095 
2096  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2097  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2098  RNA_def_property_range(prop, 0, 100);
2099  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2100  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2101 
2102  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2104  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2105  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2106 
2107  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2109  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2110  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2111 
2112  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2114  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2115  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2116 
2117  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2118  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2119  RNA_def_property_range(prop, 0, 100);
2120  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2121  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2122 
2123  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2125  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2126  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2127 
2128  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2129  RNA_def_property_ui_text(prop, "Object", "Object used as center");
2130  RNA_def_property_pointer_funcs(prop, NULL, "rna_MirrorGpencilModifier_object_set", NULL, NULL);
2133  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2134 
2135  prop = RNA_def_property(srna, "use_clip", PROP_BOOLEAN, PROP_NONE);
2137  RNA_def_property_ui_text(prop, "Clip", "Clip points");
2138  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2139 
2140  prop = RNA_def_property(srna, "use_axis_x", PROP_BOOLEAN, PROP_NONE);
2142  RNA_def_property_ui_text(prop, "X", "Mirror the X axis");
2143  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2144 
2145  prop = RNA_def_property(srna, "use_axis_y", PROP_BOOLEAN, PROP_NONE);
2147  RNA_def_property_ui_text(prop, "Y", "Mirror the Y axis");
2148  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2149 
2150  prop = RNA_def_property(srna, "use_axis_z", PROP_BOOLEAN, PROP_NONE);
2152  RNA_def_property_ui_text(prop, "Z", "Mirror the Z axis");
2153  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2154 }
2155 
2157 {
2158  StructRNA *srna;
2159  PropertyRNA *prop;
2160 
2161  srna = RNA_def_struct(brna, "HookGpencilModifier", "GpencilModifier");
2163  srna, "Hook Modifier", "Hook modifier to modify the location of stroke points");
2164  RNA_def_struct_sdna(srna, "HookGpencilModifierData");
2165  RNA_def_struct_ui_icon(srna, ICON_HOOK);
2166 
2167  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2169  prop, "Object", "Parent Object for hook, also recalculates and clears offset");
2172  RNA_def_property_pointer_funcs(prop, NULL, "rna_HookGpencilModifier_object_set", NULL, NULL);
2173  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2174 
2175  prop = RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
2176  RNA_def_property_string_sdna(prop, NULL, "subtarget");
2178  prop,
2179  "Sub-Target",
2180  "Name of Parent Bone for hook (if applicable), also recalculates and clears offset");
2181  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2182 
2183  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2184  RNA_def_property_string_sdna(prop, NULL, "layername");
2185  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2186  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2187 
2188  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2192  NULL,
2193  "rna_HookGpencilModifier_material_set",
2194  NULL,
2195  "rna_GpencilModifier_material_poll");
2196  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2197  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2198 
2199  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2200  RNA_def_property_string_sdna(prop, NULL, "vgname");
2201  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
2202  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_HookGpencilModifier_vgname_set");
2203  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2204 
2205  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2206  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2207  RNA_def_property_range(prop, 0, 100);
2208  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2209  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2210 
2211  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2213  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2214  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2215 
2216  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2218  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2219  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2220 
2221  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2223  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2224  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2225 
2226  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
2228  RNA_def_property_ui_text(prop, "Inverse Vertex Group", "Inverse filter");
2229  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2230 
2231  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2232  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2233  RNA_def_property_range(prop, 0, 100);
2234  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2235  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2236 
2237  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2239  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2240  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2241 
2242  prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
2243  RNA_def_property_float_sdna(prop, NULL, "force");
2244  RNA_def_property_range(prop, 0, 1);
2245  RNA_def_property_ui_text(prop, "Strength", "Relative force of the hook");
2246  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2247 
2248  prop = RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE);
2249  RNA_def_property_enum_items(prop, modifier_gphook_falloff_items); /* share the enum */
2250  RNA_def_property_ui_text(prop, "Falloff Type", "");
2251  RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_CURVE); /* Abusing id_curve :/ */
2252  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2253 
2254  prop = RNA_def_property(srna, "falloff_radius", PROP_FLOAT, PROP_DISTANCE);
2255  RNA_def_property_float_sdna(prop, NULL, "falloff");
2256  RNA_def_property_range(prop, 0, FLT_MAX);
2257  RNA_def_property_ui_range(prop, 0, 100, 100, 2);
2259  prop, "Radius", "If not zero, the distance from the hook where influence ends");
2260  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2261 
2262  prop = RNA_def_property(srna, "falloff_curve", PROP_POINTER, PROP_NONE);
2263  RNA_def_property_pointer_sdna(prop, NULL, "curfalloff");
2264  RNA_def_property_ui_text(prop, "Falloff Curve", "Custom light falloff curve");
2265  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2266 
2267  prop = RNA_def_property(srna, "center", PROP_FLOAT, PROP_NONE);
2268  RNA_def_property_float_sdna(prop, NULL, "cent");
2269  RNA_def_property_ui_text(prop, "Hook Center", "");
2270  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2271 
2272  prop = RNA_def_property(srna, "matrix_inverse", PROP_FLOAT, PROP_MATRIX);
2273  RNA_def_property_float_sdna(prop, NULL, "parentinv");
2276  prop, "Matrix", "Reverse the transformation between this object and its target");
2277  RNA_def_property_update(prop, NC_OBJECT | ND_TRANSFORM, "rna_GpencilModifier_update");
2278 
2279  prop = RNA_def_property(srna, "use_falloff_uniform", PROP_BOOLEAN, PROP_NONE);
2281  RNA_def_property_ui_text(prop, "Uniform Falloff", "Compensate for non-uniform object scale");
2282  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2283 }
2284 
2286 {
2287  StructRNA *srna;
2288  PropertyRNA *prop;
2289 
2290  srna = RNA_def_struct(brna, "ArmatureGpencilModifier", "GpencilModifier");
2292  srna, "Armature Modifier", "Change stroke using armature to deform modifier");
2293  RNA_def_struct_sdna(srna, "ArmatureGpencilModifierData");
2294  RNA_def_struct_ui_icon(srna, ICON_MOD_ARMATURE);
2295 
2296  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2297  RNA_def_property_ui_text(prop, "Object", "Armature object to deform with");
2299  prop, NULL, "rna_ArmatureGpencilModifier_object_set", NULL, "rna_Armature_object_poll");
2302  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2303 
2304  prop = RNA_def_property(srna, "use_bone_envelopes", PROP_BOOLEAN, PROP_NONE);
2305  RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_ENVELOPE);
2306  RNA_def_property_ui_text(prop, "Use Bone Envelopes", "Bind Bone envelopes to armature modifier");
2307  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2308 
2309  prop = RNA_def_property(srna, "use_vertex_groups", PROP_BOOLEAN, PROP_NONE);
2310  RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_VGROUP);
2311  RNA_def_property_ui_text(prop, "Use Vertex Groups", "Bind vertex groups to armature modifier");
2312  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2313 
2314  prop = RNA_def_property(srna, "use_deform_preserve_volume", PROP_BOOLEAN, PROP_NONE);
2317  prop, "Preserve Volume", "Deform rotation interpolation with quaternions");
2318  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2319 
2320  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2321  RNA_def_property_string_sdna(prop, NULL, "vgname");
2323  prop,
2324  "Vertex Group",
2325  "Name of Vertex Group which determines influence of modifier per point");
2326  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ArmatureGpencilModifier_vgname_set");
2327  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2328 
2329  prop = RNA_def_property(srna, "invert_vertex_group", PROP_BOOLEAN, PROP_NONE);
2331  RNA_def_property_ui_text(prop, "Invert", "Invert vertex group influence");
2332  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2333 }
2334 
2336 {
2337  StructRNA *srna;
2338  PropertyRNA *prop;
2339 
2340  srna = RNA_def_struct(brna, "MultiplyGpencilModifier", "GpencilModifier");
2341  RNA_def_struct_ui_text(srna, "Multiply Modifier", "Generate multiple strokes from one stroke");
2342  RNA_def_struct_sdna(srna, "MultiplyGpencilModifierData");
2343  RNA_def_struct_ui_icon(srna, ICON_GP_MULTIFRAME_EDITING);
2344 
2345  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2346  RNA_def_property_string_sdna(prop, NULL, "layername");
2347  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2348  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2349 
2350  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2354  NULL,
2355  "rna_MultiplyGpencilModifier_material_set",
2356  NULL,
2357  "rna_GpencilModifier_material_poll");
2358  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2359  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2360 
2361  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2362  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2363  RNA_def_property_range(prop, 0, 100);
2364  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2365  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2366 
2367  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2369  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2370  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2371 
2372  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2374  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2375  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2376 
2377  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2379  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2380  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2381 
2382  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2383  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2384  RNA_def_property_range(prop, 0, 100);
2385  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2386  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2387 
2388  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2390  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2391  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2392 
2393  prop = RNA_def_property(srna, "use_fade", PROP_BOOLEAN, PROP_NONE);
2395  RNA_def_property_ui_text(prop, "Fade", "Fade the stroke thickness for each generated stroke");
2396  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2397 
2398  prop = RNA_def_property(srna, "duplicates", PROP_INT, PROP_NONE);
2399  RNA_def_property_int_sdna(prop, NULL, "duplications");
2400  RNA_def_property_range(prop, 0, 999);
2401  RNA_def_property_ui_range(prop, 1, 10, 1, 1);
2402  RNA_def_property_ui_text(prop, "Duplicates", "How many copies of strokes be displayed");
2403  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2404 
2405  prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_DISTANCE);
2406  RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
2407  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.01, 3);
2408  RNA_def_property_ui_text(prop, "Distance", "Distance of duplications");
2409  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2410 
2411  prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
2412  RNA_def_property_ui_range(prop, -1, 1, 0.01, 3);
2413  RNA_def_property_ui_text(prop, "Offset", "Offset of duplicates. -1 to 1: inner to outer");
2414  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2415 
2416  prop = RNA_def_property(srna, "fading_thickness", PROP_FLOAT, PROP_NONE);
2417  RNA_def_property_range(prop, 0, 1);
2418  RNA_def_property_ui_text(prop, "Thickness", "Fade influence of stroke's thickness");
2419  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2420 
2421  prop = RNA_def_property(srna, "fading_opacity", PROP_FLOAT, PROP_NONE);
2422  RNA_def_property_range(prop, 0, 1);
2423  RNA_def_property_ui_text(prop, "Opacity", "Fade influence of stroke's opacity");
2424  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2425 
2426  prop = RNA_def_property(srna, "fading_center", PROP_FLOAT, PROP_FACTOR);
2427  RNA_def_property_range(prop, 0, 1);
2428  RNA_def_property_ui_text(prop, "Center", "Fade center");
2429  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2430 }
2431 
2433 {
2434  StructRNA *srna;
2435  PropertyRNA *prop;
2436 
2437  static const EnumPropertyItem fit_type_items[] = {
2439  "CONSTANT_LENGTH",
2440  0,
2441  "Constant Length",
2442  "Keep the texture at a constant length regardless of the length of each stroke"},
2444  "FIT_STROKE",
2445  0,
2446  "Stroke Length",
2447  "Scale the texture to fit the length of each stroke"},
2448  {0, NULL, 0, NULL, NULL},
2449  };
2450 
2451  static const EnumPropertyItem mode_items[] = {
2452  {STROKE, "STROKE", 0, "Stroke", "Manipulate only stroke texture coordinates"},
2453  {FILL, "FILL", 0, "Fill", "Manipulate only fill texture coordinates"},
2454  {STROKE_AND_FILL,
2455  "STROKE_AND_FILL",
2456  0,
2457  "Stroke and Fill",
2458  "Manipulate both stroke and fill texture coordinates"},
2459  {0, NULL, 0, NULL, NULL},
2460  };
2461 
2462  srna = RNA_def_struct(brna, "TextureGpencilModifier", "GpencilModifier");
2464  srna, "Texture Modifier", "Transform stroke texture coordinates Modifier");
2465  RNA_def_struct_sdna(srna, "TextureGpencilModifierData");
2466  RNA_def_struct_ui_icon(srna, ICON_TEXTURE);
2467 
2468  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2469  RNA_def_property_string_sdna(prop, NULL, "layername");
2470  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2471  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2472 
2473  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2475  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2476  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2477 
2478  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2482  NULL,
2483  "rna_TextureGpencilModifier_material_set",
2484  NULL,
2485  "rna_GpencilModifier_material_poll");
2486  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2487  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2488 
2489  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2491  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2492  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2493 
2494  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2495  RNA_def_property_string_sdna(prop, NULL, "vgname");
2496  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
2497  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_TextureGpencilModifier_vgname_set");
2498  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2499 
2500  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
2502  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
2503  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2504 
2505  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2506  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2507  RNA_def_property_range(prop, 0, 100);
2508  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2509  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2510 
2511  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2513  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2514  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2515 
2516  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2517  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2518  RNA_def_property_range(prop, 0, 100);
2519  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2520  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2521 
2522  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2524  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2525  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2526 
2527  prop = RNA_def_property(srna, "uv_offset", PROP_FLOAT, PROP_NONE);
2528  RNA_def_property_float_sdna(prop, NULL, "uv_offset");
2529  RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
2530  RNA_def_property_ui_range(prop, -100.0, 100.0, 0.1, 3);
2531  RNA_def_property_ui_text(prop, "UV Offset", "Offset value to add to stroke UVs");
2532  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2533 
2534  prop = RNA_def_property(srna, "uv_scale", PROP_FLOAT, PROP_NONE);
2535  RNA_def_property_float_sdna(prop, NULL, "uv_scale");
2536  RNA_def_property_range(prop, 0.0, FLT_MAX);
2537  RNA_def_property_ui_range(prop, 0.0, 100.0, 0.1, 3);
2538  RNA_def_property_ui_text(prop, "UV Scale", "Factor to scale the UVs");
2539  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2540 
2541  /* Rotation of Dot Texture. */
2542  prop = RNA_def_property(srna, "alignment_rotation", PROP_FLOAT, PROP_ANGLE);
2543  RNA_def_property_float_sdna(prop, NULL, "alignment_rotation");
2544  RNA_def_property_float_default(prop, 0.0f);
2545  RNA_def_property_range(prop, -DEG2RADF(90.0f), DEG2RADF(90.0f));
2546  RNA_def_property_ui_range(prop, -DEG2RADF(90.0f), DEG2RADF(90.0f), 10, 3);
2548  prop, "Rotation", "Additional rotation applied to dots and square strokes");
2549  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2550 
2551  prop = RNA_def_property(srna, "fill_rotation", PROP_FLOAT, PROP_ANGLE);
2552  RNA_def_property_float_sdna(prop, NULL, "fill_rotation");
2553  RNA_def_property_ui_text(prop, "Fill Rotation", "Additional rotation of the fill UV");
2554  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2555 
2556  prop = RNA_def_property(srna, "fill_offset", PROP_FLOAT, PROP_COORDS);
2557  RNA_def_property_float_sdna(prop, NULL, "fill_offset");
2558  RNA_def_property_array(prop, 2);
2559  RNA_def_property_ui_text(prop, "Fill Offset", "Additional offset of the fill UV");
2560  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2561 
2562  prop = RNA_def_property(srna, "fill_scale", PROP_FLOAT, PROP_COORDS);
2563  RNA_def_property_float_sdna(prop, NULL, "fill_scale");
2564  RNA_def_property_range(prop, 0.01f, 100.0f);
2565  RNA_def_property_ui_text(prop, "Fill Scale", "Additional scale of the fill UV");
2566  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2567 
2568  prop = RNA_def_property(srna, "fit_method", PROP_ENUM, PROP_NONE);
2569  RNA_def_property_enum_sdna(prop, NULL, "fit_method");
2570  RNA_def_property_enum_items(prop, fit_type_items);
2571  RNA_def_property_ui_text(prop, "Fit Method", "");
2572  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2573 
2574  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
2575  RNA_def_property_enum_sdna(prop, NULL, "mode");
2577  RNA_def_property_ui_text(prop, "Mode", "");
2578  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2579 }
2580 
2582 {
2583  StructRNA *srna;
2584  PropertyRNA *prop;
2585 
2586  static const EnumPropertyItem modifier_lineart_source_type[] = {
2587  {LRT_SOURCE_COLLECTION, "COLLECTION", 0, "Collection", ""},
2588  {LRT_SOURCE_OBJECT, "OBJECT", 0, "Object", ""},
2589  {LRT_SOURCE_SCENE, "SCENE", 0, "Scene", ""},
2590  {0, NULL, 0, NULL, NULL},
2591  };
2592 
2593  srna = RNA_def_struct(brna, "LineartGpencilModifier", "GpencilModifier");
2595  srna, "Line Art Modifier", "Generate line art strokes from selected source");
2596  RNA_def_struct_sdna(srna, "LineartGpencilModifierData");
2597  RNA_def_struct_ui_icon(srna, ICON_MOD_EDGESPLIT);
2598 
2599  prop = RNA_def_property(srna, "use_fuzzy_intersections", PROP_BOOLEAN, PROP_NONE);
2600  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_INTERSECTION_AS_CONTOUR);
2602  "Intersection With Contour",
2603  "Treat intersection and contour lines as if they were the same type so "
2604  "they can be chained together");
2605  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2606 
2607  prop = RNA_def_property(srna, "use_fuzzy_all", PROP_BOOLEAN, PROP_NONE);
2608  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_EVERYTHING_AS_CONTOUR);
2610  prop, "All Lines", "Treat all lines as the same line type so they can be chained together");
2611  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2612 
2613  prop = RNA_def_property(srna, "use_object_instances", PROP_BOOLEAN, PROP_NONE);
2614  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_ALLOW_DUPLI_OBJECTS);
2616  prop,
2617  "Instanced Objects",
2618  "Support particle objects and face/vertex instances to show in line art");
2619  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2620 
2621  prop = RNA_def_property(srna, "use_edge_overlap", PROP_BOOLEAN, PROP_NONE);
2622  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_ALLOW_OVERLAPPING_EDGES);
2624  prop,
2625  "Handle Overlapping Edges",
2626  "Allow edges in the same location (i.e. from edge split) to show properly. May run slower");
2627  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2628 
2629  prop = RNA_def_property(srna, "use_clip_plane_boundaries", PROP_BOOLEAN, PROP_NONE);
2632  "Clipping Boundaries",
2633  "Allow lines generated by the near/far clipping plane to be shown");
2634  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2635 
2636  prop = RNA_def_property(srna, "crease_threshold", PROP_FLOAT, PROP_ANGLE);
2637  RNA_def_property_range(prop, 0, DEG2RAD(180.0f));
2638  RNA_def_property_ui_range(prop, 0.0f, DEG2RAD(180.0f), 0.01f, 1);
2640  prop, "Crease Threshold", "Angles smaller than this will be treated as creases");
2641  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2642 
2643  prop = RNA_def_property(srna, "split_angle", PROP_FLOAT, PROP_ANGLE);
2644  RNA_def_property_float_sdna(prop, NULL, "angle_splitting_threshold");
2646  prop, "Angle Splitting", "Angle in screen space below which a stroke is split in two");
2647  /* Don't allow value very close to PI, or we get a lot of small segments.*/
2648  RNA_def_property_ui_range(prop, 0.0f, DEG2RAD(179.5f), 0.01f, 1);
2649  RNA_def_property_range(prop, 0.0f, DEG2RAD(180.0f));
2650  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2651 
2652  prop = RNA_def_property(srna, "use_remove_doubles", PROP_BOOLEAN, PROP_NONE);
2653  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_REMOVE_DOUBLES);
2655  prop, "Remove Doubles", "Remove doubles from the source geometry before generating stokes");
2656  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2657 
2658  prop = RNA_def_property(srna, "chaining_image_threshold", PROP_FLOAT, PROP_DISTANCE);
2660  prop,
2661  "Image Threshold",
2662  "Segments with an image distance smaller than this will be chained together");
2663  RNA_def_property_ui_range(prop, 0.0f, 0.3f, 0.001f, 4);
2664  RNA_def_property_range(prop, 0.0f, 0.3f);
2665  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
2666 
2667  prop = RNA_def_property(srna, "source_type", PROP_ENUM, PROP_NONE);
2668  RNA_def_property_enum_items(prop, modifier_lineart_source_type);
2669  RNA_def_property_ui_text(prop, "Source Type", "Line art stroke source type");
2670  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2671 
2672  prop = RNA_def_property(srna, "source_object", PROP_POINTER, PROP_NONE);
2674  RNA_def_property_struct_type(prop, "Object");
2677  prop, "Source Object", "Source object that this modifier uses data from");
2678  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2679 
2680  prop = RNA_def_property(srna, "source_collection", PROP_POINTER, PROP_NONE);
2682  RNA_def_property_struct_type(prop, "Collection");
2685  prop, "Source Collection", "Source collection that this modifier uses data from");
2686  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2687 
2688  /* types */
2689  prop = RNA_def_property(srna, "use_contour", PROP_BOOLEAN, PROP_NONE);
2691  RNA_def_property_ui_text(prop, "Use Contour", "Generate strokes from contours lines");
2692  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2693 
2694  prop = RNA_def_property(srna, "use_crease", PROP_BOOLEAN, PROP_NONE);
2696  RNA_def_property_ui_text(prop, "Use Crease", "Generate strokes from creased edges");
2697  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2698 
2699  prop = RNA_def_property(srna, "use_material", PROP_BOOLEAN, PROP_NONE);
2702  prop, "Use Material", "Generate strokes from borders between materials");
2703  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2704 
2705  prop = RNA_def_property(srna, "use_edge_mark", PROP_BOOLEAN, PROP_NONE);
2707  RNA_def_property_ui_text(prop, "Use Edge Mark", "Generate strokes from freestyle marked edges");
2708  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2709 
2710  prop = RNA_def_property(srna, "use_intersection", PROP_BOOLEAN, PROP_NONE);
2712  RNA_def_property_ui_text(prop, "Use Intersection", "Generate strokes from intersections");
2713  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2714 
2715  prop = RNA_def_property(srna, "use_multiple_levels", PROP_BOOLEAN, PROP_NONE);
2716  RNA_def_property_boolean_sdna(prop, NULL, "use_multiple_levels", 0);
2718  prop, "Use Occlusion Range", "Generate strokes from a range of occlusion levels");
2719  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2720 
2721  prop = RNA_def_property(srna, "level_start", PROP_INT, PROP_NONE);
2723  prop, "Level Start", "Minimum number of occlusions for the generated strokes");
2724  RNA_def_property_range(prop, 0, 128);
2725  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2726 
2727  prop = RNA_def_property(srna, "level_end", PROP_INT, PROP_NONE);
2729  prop, "Level End", "Maximum number of occlusions for the generated strokes");
2730  RNA_def_property_range(prop, 0, 128);
2731  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2732 
2733  prop = RNA_def_property(srna, "target_material", PROP_POINTER, PROP_NONE);
2735  RNA_def_property_struct_type(prop, "Material");
2738  NULL,
2739  "rna_LineartGpencilModifier_material_set",
2740  NULL,
2741  "rna_GpencilModifier_material_poll");
2743  prop, "Target Material", "Grease Pencil material assigned to the generated strokes");
2744  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2745 
2746  prop = RNA_def_property(srna, "target_layer", PROP_STRING, PROP_NONE);
2748  prop, "Target Layer", "Grease Pencil layer assigned to the generated strokes");
2749  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2750 
2751  prop = RNA_def_property(srna, "source_vertex_group", PROP_STRING, PROP_NONE);
2753  prop,
2754  "Source Vertex Group",
2755  "Match the beginning of vertex group names from mesh objects, match all when left empty");
2756  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2757 
2758  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2759  RNA_def_property_string_sdna(prop, NULL, "vgname");
2760  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_LineartGpencilModifier_vgname_set");
2761  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for selected strokes");
2762  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2763 
2764  prop = RNA_def_property(srna, "invert_source_vertex_group", PROP_BOOLEAN, PROP_NONE);
2766  RNA_def_property_ui_text(prop, "Invert Vertex Group", "Invert source vertex group values");
2767  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2768 
2769  prop = RNA_def_property(srna, "use_output_vertex_group_match_by_name", PROP_BOOLEAN, PROP_NONE);
2771  RNA_def_property_ui_text(prop, "Match Output", "Match output vertex group based on name");
2772  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2773 
2774  prop = RNA_def_property(srna, "is_baked", PROP_BOOLEAN, PROP_NONE);
2776  RNA_def_property_ui_text(prop, "Is Baked", "This modifier has baked data");
2777  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2778 
2779  prop = RNA_def_property(srna, "thickness", PROP_INT, PROP_NONE);
2780  RNA_def_property_ui_text(prop, "Thickness", "The thickness for the generated strokes");
2781  RNA_def_property_ui_range(prop, 1, 100, 1, 1);
2782  RNA_def_property_range(prop, 1, 200);
2783  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2784 
2785  prop = RNA_def_property(srna, "opacity", PROP_FLOAT, PROP_FACTOR);
2786  RNA_def_property_ui_text(prop, "Opacity", "The strength value for the generate strokes");
2787  RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.01f, 2);
2788  RNA_def_property_range(prop, 0.0f, 1.0f);
2789  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2790 
2791  prop = RNA_def_property(srna, "use_transparency", PROP_BOOLEAN, PROP_NONE);
2794  prop, "Use Transparency", "Use transparency mask from this material in line art");
2795  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2796 
2797  prop = RNA_def_property(srna, "use_transparency_match", PROP_BOOLEAN, PROP_NONE);
2800  prop, "Match Transparency", "Require matching all transparency masks instead of just one");
2801  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2802 
2803  prop = RNA_def_property(srna, "use_transparency_mask", PROP_BOOLEAN, PROP_NONE);
2804  RNA_def_property_boolean_sdna(prop, NULL, "transparency_mask", 1);
2805  RNA_def_property_array(prop, 8);
2806  RNA_def_property_ui_text(prop, "Mask", "");
2807  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2808 }
2809 
2811 {
2812  StructRNA *srna;
2813  PropertyRNA *prop;
2814 
2815  /* data */
2816  srna = RNA_def_struct(brna, "GpencilModifier", NULL);
2817  RNA_def_struct_ui_text(srna, "GpencilModifier", "Modifier affecting the grease pencil object");
2818  RNA_def_struct_refine_func(srna, "rna_GpencilModifier_refine");
2819  RNA_def_struct_path_func(srna, "rna_GpencilModifier_path");
2820  RNA_def_struct_sdna(srna, "GpencilModifierData");
2821 
2822  /* strings */
2823  prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
2824  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_GpencilModifier_name_set");
2825  RNA_def_property_ui_text(prop, "Name", "Modifier name");
2827  RNA_def_struct_name_property(srna, prop);
2828 
2829  /* enums */
2830  prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
2832  RNA_def_property_enum_sdna(prop, NULL, "type");
2834  RNA_def_property_ui_text(prop, "Type", "");
2835 
2836  /* flags */
2837  prop = RNA_def_property(srna, "show_viewport", PROP_BOOLEAN, PROP_NONE);
2839  RNA_def_property_ui_text(prop, "Realtime", "Display modifier in viewport");
2842  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2843  RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_ON, 1);
2844 
2845  prop = RNA_def_property(srna, "show_render", PROP_BOOLEAN, PROP_NONE);
2848  RNA_def_property_ui_text(prop, "Render", "Use modifier during render");
2849  RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_ON, 1);
2851 
2852  prop = RNA_def_property(srna, "show_in_editmode", PROP_BOOLEAN, PROP_NONE);
2854  RNA_def_property_ui_text(prop, "Edit Mode", "Display modifier in Edit mode");
2855  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2856  RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0);
2857 
2858  prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
2860  RNA_def_property_boolean_sdna(prop, NULL, "ui_expand_flag", 0);
2862  RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface");
2863  RNA_def_property_ui_icon(prop, ICON_DISCLOSURE_TRI_RIGHT, 1);
2864 
2865  /* types */
2885 }
2886 
2887 #endif
void BKE_animdata_fix_paths_rename_all(struct ID *ref_id, const char *prefix, const char *oldName, const char *newName)
Definition: anim_data.c:1414
int BKE_gpencil_object_material_index_get(struct Object *ob, struct Material *ma)
Definition: gpencil.c:2437
bool BKE_gpencil_modifier_unique_name(struct ListBase *modifiers, struct GpencilModifierData *gmd)
void id_lib_extern(struct ID *id)
Definition: lib_id.c:207
General operations, lookup, etc. for blender objects.
void BKE_object_modifier_gpencil_hook_reset(struct Object *ob, struct HookGpencilModifierData *hmd)
Definition: object.c:1254
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
#define DEG2RAD(_deg)
#define DEG2RADF(_deg)
Random number functions.
size_t size_t char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, const size_t dst_maxncpy) ATTR_NONNULL()
Definition: string.c:333
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
Definition: string.c:108
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
Definition: string_utf8.c:258
#define UNUSED(x)
#define MAX2(a, b)
#define MIN2(a, b)
#define BLT_I18NCONTEXT_ID_CURVE
#define N_(msgid)
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
@ ID_RECALC_GEOMETRY
Definition: DNA_ID.h:611
@ ARM_DEF_VGROUP
@ ARM_DEF_QUATERNION
@ ARM_DEF_INVERT_VGROUP
@ ARM_DEF_ENVELOPE
@ GPPAINT_MODE_STROKE
@ GPPAINT_MODE_FILL
@ GPPAINT_MODE_BOTH
@ GP_SUBDIV_INVERT_MATERIAL
@ GP_SUBDIV_INVERT_LAYERPASS
@ GP_SUBDIV_INVERT_LAYER
@ eGpencilModifierMode_Render
@ eGpencilModifierMode_Editmode
@ eGpencilModifierMode_Realtime
@ GP_LATTICE_INVERT_LAYERPASS
@ GP_LATTICE_INVERT_PASS
@ GP_LATTICE_INVERT_LAYER
@ GP_LATTICE_INVERT_VGROUP
@ GP_LATTICE_INVERT_MATERIAL
@ GP_BUILD_TRANSITION_FADE
@ GP_BUILD_TRANSITION_SHRINK
@ GP_BUILD_TRANSITION_GROW
@ GP_BUILD_MODE_SEQUENTIAL
@ GP_BUILD_MODE_CONCURRENT
@ GP_SIMPLIFY_INVERT_LAYER
@ GP_SIMPLIFY_INVERT_PASS
@ GP_SIMPLIFY_INVERT_MATERIAL
@ GP_SIMPLIFY_INVERT_LAYERPASS
@ GP_HOOK_INVERT_MATERIAL
@ GP_HOOK_INVERT_LAYERPASS
@ GP_TIME_INVERT_LAYERPASS
@ GP_COLOR_INVERT_LAYERPASS
@ GP_COLOR_INVERT_MATERIAL
@ LRT_GPENCIL_TRANSPARENCY_ENABLE
@ LRT_GPENCIL_TRANSPARENCY_MATCH
@ GP_SMOOTH_INVERT_LAYERPASS
@ GP_SMOOTH_MOD_LOCATION
@ GP_SMOOTH_MOD_STRENGTH
@ GP_SMOOTH_MOD_THICKNESS
@ GP_SMOOTH_INVERT_LAYER
@ GP_SMOOTH_CUSTOM_CURVE
@ GP_SMOOTH_INVERT_MATERIAL
@ GP_SMOOTH_INVERT_VGROUP
@ LRT_GPENCIL_INVERT_SOURCE_VGROUP
@ LRT_GPENCIL_MATCH_OUTPUT_VGROUP
@ GP_BUILD_TIMEALIGN_START
@ GP_BUILD_TIMEALIGN_END
@ GP_OPACITY_INVERT_LAYER
@ GP_OPACITY_INVERT_VGROUP
@ GP_OPACITY_CUSTOM_CURVE
@ GP_OPACITY_INVERT_MATERIAL
@ GP_OPACITY_INVERT_PASS
@ GP_OPACITY_INVERT_LAYERPASS
@ GP_THICK_INVERT_VGROUP
@ GP_THICK_INVERT_MATERIAL
@ GP_THICK_INVERT_LAYERPASS
@ GP_MULTIPLY_ENABLE_FADING
@ GP_TEX_CONSTANT_LENGTH
@ eGPHook_Falloff_InvSquare
@ eGPHook_Falloff_Smooth
@ eGPHook_Falloff_Linear
@ eGPHook_Falloff_Sphere
@ GP_ARRAY_UNIFORM_RANDOM_SCALE
@ GP_ARRAY_INVERT_MATERIAL
@ GP_ARRAY_INVERT_LAYERPASS
@ GP_ARRAY_USE_OB_OFFSET
@ GP_OFFSET_INVERT_MATERIAL
@ GP_OFFSET_INVERT_LAYER
@ GP_OFFSET_INVERT_VGROUP
@ GP_OFFSET_INVERT_LAYERPASS
@ GP_TINT_INVERT_LAYERPASS
@ GP_TINT_INVERT_MATERIAL
@ GP_BUILD_RESTRICT_TIME
@ GP_BUILD_INVERT_LAYERPASS
@ GP_MIRROR_INVERT_MATERIAL
@ GP_MIRROR_INVERT_LAYER
@ GP_MIRROR_INVERT_LAYERPASS
@ GP_MODIFY_COLOR_STROKE
@ GP_MODIFY_COLOR_HARDNESS
@ GP_TEX_INVERT_LAYERPASS
@ GP_TEX_INVERT_MATERIAL
@ eGpencilModifierType_Array
@ eGpencilModifierType_Noise
@ eGpencilModifierType_Mirror
@ eGpencilModifierType_Color
@ eGpencilModifierType_Multiply
@ eGpencilModifierType_Texture
@ eGpencilModifierType_Subdiv
@ eGpencilModifierType_Lattice
@ eGpencilModifierType_Opacity
@ eGpencilModifierType_Hook
@ eGpencilModifierType_Simplify
@ eGpencilModifierType_Armature
@ eGpencilModifierType_Lineart
@ eGpencilModifierType_None
@ eGpencilModifierType_Smooth
@ eGpencilModifierType_Tint
@ NUM_GREASEPENCIL_MODIFIER_TYPES
@ eGpencilModifierType_Time
@ eGpencilModifierType_Thick
@ eGpencilModifierType_Build
@ eGpencilModifierType_Offset
@ GP_NOISE_INVERT_VGROUP
@ GP_NOISE_INVERT_MATERIAL
@ GP_NOISE_INVERT_LAYERPASS
@ LRT_EDGE_FLAG_MATERIAL
@ LRT_EDGE_FLAG_CREASE
@ LRT_EDGE_FLAG_INTERSECTION
@ LRT_EDGE_FLAG_CONTOUR
@ LRT_EDGE_FLAG_EDGE_MARK
@ LRT_EVERYTHING_AS_CONTOUR
@ LRT_INTERSECTION_AS_CONTOUR
@ LRT_ALLOW_OVERLAPPING_EDGES
@ LRT_ALLOW_DUPLI_OBJECTS
@ LRT_REMOVE_DOUBLES
@ LRT_ALLOW_CLIPPING_BOUNDARIES
Object is a sort of wrapper for general info.
@ OB_LATTICE
@ OB_EMPTY
@ OB_ARMATURE
#define MINFRAME
#define MAXFRAMEF
#define MINAFRAMEF
#define MAXFRAME
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Texture
Group RGB to Bright Vector Camera CLAMP
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White Noise
StructRNA RNA_ArrayGpencilModifier
StructRNA RNA_OffsetGpencilModifier
StructRNA RNA_ArmatureGpencilModifier
StructRNA RNA_BuildGpencilModifier
StructRNA RNA_SmoothGpencilModifier
StructRNA RNA_MultiplyGpencilModifier
StructRNA RNA_TintGpencilModifier
StructRNA RNA_MirrorGpencilModifier
StructRNA RNA_TimeGpencilModifier
StructRNA RNA_SimplifyGpencilModifier
StructRNA RNA_HookGpencilModifier
StructRNA RNA_SubdivGpencilModifier
StructRNA RNA_LatticeGpencilModifier
StructRNA RNA_ColorGpencilModifier
StructRNA RNA_NoiseGpencilModifier
StructRNA RNA_ThickGpencilModifier
StructRNA RNA_OpacityGpencilModifier
StructRNA RNA_GpencilModifier
@ PROP_FLOAT
Definition: RNA_types.h:75
@ PROP_BOOLEAN
Definition: RNA_types.h:73
@ PROP_ENUM
Definition: RNA_types.h:77
@ PROP_INT
Definition: RNA_types.h:74
@ PROP_STRING
Definition: RNA_types.h:76
@ PROP_POINTER
Definition: RNA_types.h:78
#define RNA_TRANSLATION_PREC_DEFAULT
Definition: RNA_types.h:104
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
Definition: RNA_types.h:297
@ PROP_ANIMATABLE
Definition: RNA_types.h:188
@ PROP_EDITABLE
Definition: RNA_types.h:175
@ PROP_LIB_EXCEPTION
Definition: RNA_types.h:181
@ PROP_NO_DEG_UPDATE
Definition: RNA_types.h:286
@ PROP_ID_SELF_CHECK
Definition: RNA_types.h:218
@ PROP_TIME
Definition: RNA_types.h:133
@ PROP_MATRIX
Definition: RNA_types.h:144
@ PROP_XYZ
Definition: RNA_types.h:148
@ PROP_DISTANCE
Definition: RNA_types.h:135
@ PROP_COLOR
Definition: RNA_types.h:139
@ PROP_ANGLE
Definition: RNA_types.h:132
@ PROP_EULER
Definition: RNA_types.h:145
@ PROP_COORDS
Definition: RNA_types.h:153
@ PROP_NONE
Definition: RNA_types.h:113
@ PROP_FACTOR
Definition: RNA_types.h:131
@ PROP_TRANSLATION
Definition: RNA_types.h:140
@ PROP_UNSIGNED
Definition: RNA_types.h:129
#define NC_SCENE
Definition: WM_types.h:279
#define ND_MODIFIER
Definition: WM_types.h:363
#define ND_TRANSFORM
Definition: WM_types.h:357
#define NA_RENAME
Definition: WM_types.h:466
#define NC_OBJECT
Definition: WM_types.h:280
Scene scene
static const EnumPropertyItem mode_items[]
Definition: paint_mask.c:75
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
Definition: rna_define.c:1167
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2762
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
Definition: rna_define.c:1212
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
Definition: rna_define.c:2257
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
Definition: rna_define.c:3312
void RNA_def_property_float_default(PropertyRNA *prop, float value)
Definition: rna_define.c:2042
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
Definition: rna_define.c:3153
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
Definition: rna_define.c:1676
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2717
void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive)
Definition: rna_define.c:1684
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
Definition: rna_define.c:1259
void RNA_def_property_multi_array(PropertyRNA *prop, int dimension, const int length[])
Definition: rna_define.c:1629
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
Definition: rna_define.c:1892
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
Definition: rna_define.c:1067
void RNA_def_property_array(PropertyRNA *prop, int length)
Definition: rna_define.c:1568
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
Definition: rna_define.c:1757
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
Definition: rna_define.c:1792
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
Definition: rna_define.c:2927
const int rna_matrix_dimsize_4x4[]
Definition: rna_define.c:1626
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
Definition: rna_define.c:1279
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2691
void RNA_def_struct_name_property(struct StructRNA *srna, struct PropertyRNA *prop)
Definition: rna_define.c:1122
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
Definition: rna_define.c:1517
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
Definition: rna_define.c:3373
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
Definition: rna_define.c:1047
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2623
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
Definition: rna_define.c:3055
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
Definition: rna_define.c:1267
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
Definition: rna_define.c:2870
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
Definition: rna_define.c:1512
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2515
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
Definition: rna_define.c:1706
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2364
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
Definition: rna_define.c:1525
static const EnumPropertyItem gpencil_tint_type_items[]
static void rna_def_modifier_gpencilsimplify(BlenderRNA *brna)
static void rna_def_modifier_gpencilhook(BlenderRNA *brna)
static void rna_def_modifier_gpenciltexture(BlenderRNA *brna)
static void rna_def_modifier_gpencilarmature(BlenderRNA *brna)
static void rna_def_modifier_gpencilcolor(BlenderRNA *brna)
static void rna_def_modifier_gpencilnoise(BlenderRNA *brna)
static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
static const EnumPropertyItem gpencil_subdivision_type_items[]
static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
static void rna_def_modifier_gpencilmultiply(BlenderRNA *brna)
static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
void RNA_def_greasepencil_modifier(BlenderRNA *brna)
static const EnumPropertyItem modifier_gphook_falloff_items[]
static const EnumPropertyItem rna_enum_time_mode_items[]
static void rna_def_modifier_gpencillattice(BlenderRNA *brna)
static void rna_def_modifier_gpencilbuild(BlenderRNA *brna)
static void rna_def_modifier_gpencilmirror(BlenderRNA *brna)
static void rna_def_modifier_gpenciltime(BlenderRNA *brna)
static void rna_def_modifier_gpenciloffset(BlenderRNA *brna)
static void rna_def_modifier_gpenciltint(BlenderRNA *brna)
static const EnumPropertyItem modifier_modify_color_items[]
const EnumPropertyItem rna_enum_object_greasepencil_modifier_type_items[]
static void rna_def_modifier_gpencilsmooth(BlenderRNA *brna)
static void rna_def_modifier_gpencilarray(BlenderRNA *brna)
static void rna_def_modifier_gpencilsubdiv(BlenderRNA *brna)
static const EnumPropertyItem modifier_modify_opacity_items[]
#define min(a, b)
Definition: sort.c:51
Definition: DNA_ID.h:273
Definition: BKE_main.h:116
ListBase greasepencil_modifiers
Definition: msgfmt.c:181
void * data
Definition: RNA_types.h:52
struct ID * owner_id
Definition: RNA_types.h:50
float max
void WM_main_add_notifier(unsigned int type, void *reference)
PointerRNA * ptr
Definition: wm_files.c:3157