Blender  V3.3
rna_gpencil_modifier.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
7 #include <float.h>
8 #include <limits.h>
9 #include <stdlib.h>
10 
11 #include "DNA_armature_types.h"
12 #include "DNA_brush_types.h"
13 #include "DNA_cachefile_types.h"
15 #include "DNA_gpencil_types.h"
16 #include "DNA_mesh_types.h"
17 #include "DNA_modifier_types.h"
18 #include "DNA_object_force_types.h"
19 #include "DNA_object_types.h"
20 #include "DNA_scene_types.h"
21 
22 #include "MEM_guardedalloc.h"
23 
24 #include "BLI_math.h"
25 #include "BLI_rand.h"
26 #include "BLI_string_utils.h"
27 
28 #include "BLT_translation.h"
29 
30 #include "BKE_animsys.h"
31 #include "BKE_data_transfer.h"
32 #include "BKE_dynamicpaint.h"
33 #include "BKE_effect.h"
34 #include "BKE_fluid.h" /* For BKE_fluid_modifier_free & BKE_fluid_modifier_create_type_data */
35 #include "BKE_mesh_mapping.h"
36 #include "BKE_mesh_remap.h"
37 #include "BKE_multires.h"
38 
39 #include "RNA_access.h"
40 #include "RNA_define.h"
41 #include "RNA_enum_types.h"
42 
43 #include "rna_internal.h"
44 
45 #include "WM_api.h"
46 #include "WM_types.h"
47 
49  RNA_ENUM_ITEM_HEADING(N_("Modify"), NULL),
51  "GP_TEXTURE",
52  ICON_MOD_UVPROJECT,
53  "Texture Mapping",
54  "Change stroke uv texture values"},
55  {eGpencilModifierType_Time, "GP_TIME", ICON_MOD_TIME, "Time Offset", "Offset keyframes"},
57  "GP_WEIGHT_ANGLE",
58  ICON_MOD_VERTEX_WEIGHT,
59  "Vertex Weight Angle",
60  "Generate Vertex Weights base on stroke angle"},
62  "GP_WEIGHT_PROXIMITY",
63  ICON_MOD_VERTEX_WEIGHT,
64  "Vertex Weight Proximity",
65  "Generate Vertex Weights base on distance to object"},
66 
67  RNA_ENUM_ITEM_HEADING(N_("Generate"), NULL),
69  "GP_ARRAY",
70  ICON_MOD_ARRAY,
71  "Array",
72  "Create array of duplicate instances"},
74  "GP_BUILD",
75  ICON_MOD_BUILD,
76  "Build",
77  "Create duplication of strokes"},
79  "GP_DASH",
80  ICON_MOD_DASH,
81  "Dot Dash",
82  "Generate dot-dash styled strokes"},
84  "GP_ENVELOPE",
85  ICON_MOD_SKIN,
86  "Envelope",
87  "Create an envelope shape"},
89  "GP_LENGTH",
90  ICON_MOD_LENGTH,
91  "Length",
92  "Extend or shrink strokes"},
94  "GP_LINEART",
95  ICON_MOD_LINEART,
96  "Line Art",
97  "Generate line art strokes from selected source"},
99  "GP_MIRROR",
100  ICON_MOD_MIRROR,
101  "Mirror",
102  "Duplicate strokes like a mirror"},
104  "GP_MULTIPLY",
105  ICON_GP_MULTIFRAME_EDITING,
106  "Multiple Strokes",
107  "Produce multiple strokes along one stroke"},
109  "GP_SIMPLIFY",
110  ICON_MOD_SIMPLIFY,
111  "Simplify",
112  "Simplify stroke reducing number of points"},
114  "GP_SUBDIV",
115  ICON_MOD_SUBSURF,
116  "Subdivide",
117  "Subdivide stroke adding more control points"},
118  RNA_ENUM_ITEM_HEADING(N_("Deform"), NULL),
120  "GP_ARMATURE",
121  ICON_MOD_ARMATURE,
122  "Armature",
123  "Deform stroke points using armature object"},
125  "GP_HOOK",
126  ICON_HOOK,
127  "Hook",
128  "Deform stroke points using objects"},
130  "GP_LATTICE",
131  ICON_MOD_LATTICE,
132  "Lattice",
133  "Deform strokes using lattice"},
134  {eGpencilModifierType_Noise, "GP_NOISE", ICON_MOD_NOISE, "Noise", "Add noise to strokes"},
136  "GP_OFFSET",
137  ICON_MOD_OFFSET,
138  "Offset",
139  "Change stroke location, rotation or scale"},
141  "SHRINKWRAP",
142  ICON_MOD_SHRINKWRAP,
143  "Shrinkwrap",
144  "Project the shape onto another object"},
145  {eGpencilModifierType_Smooth, "GP_SMOOTH", ICON_MOD_SMOOTH, "Smooth", "Smooth stroke"},
147  "GP_THICK",
148  ICON_MOD_THICKNESS,
149  "Thickness",
150  "Change stroke thickness"},
151  RNA_ENUM_ITEM_HEADING(N_("Color"), NULL),
153  "GP_COLOR",
154  ICON_MOD_HUE_SATURATION,
155  "Hue/Saturation",
156  "Apply changes to stroke colors"},
158  "GP_OPACITY",
159  ICON_MOD_OPACITY,
160  "Opacity",
161  "Opacity of the strokes"},
162  {eGpencilModifierType_Tint, "GP_TINT", ICON_MOD_TINT, "Tint", "Tint strokes with new color"},
163  {0, NULL, 0, NULL, NULL},
164 };
165 
166 #ifndef RNA_RUNTIME
168  {GP_MODIFY_COLOR_BOTH, "BOTH", 0, "Stroke & Fill", "Modify fill and stroke colors"},
169  {GP_MODIFY_COLOR_STROKE, "STROKE", 0, "Stroke", "Modify stroke color only"},
170  {GP_MODIFY_COLOR_FILL, "FILL", 0, "Fill", "Modify fill color only"},
171  {0, NULL, 0, NULL, NULL},
172 };
173 
175  {GP_MODIFY_COLOR_BOTH, "BOTH", 0, "Stroke & Fill", "Modify fill and stroke colors"},
176  {GP_MODIFY_COLOR_STROKE, "STROKE", 0, "Stroke", "Modify stroke color only"},
177  {GP_MODIFY_COLOR_FILL, "FILL", 0, "Fill", "Modify fill color only"},
178  {GP_MODIFY_COLOR_HARDNESS, "HARDNESS", 0, "Hardness", "Modify stroke hardness"},
179  {0, NULL, 0, NULL, NULL},
180 };
181 
183  {eGPHook_Falloff_None, "NONE", 0, "No Falloff", ""},
184  {eGPHook_Falloff_Curve, "CURVE", 0, "Curve", ""},
185  {eGPHook_Falloff_Smooth, "SMOOTH", ICON_SMOOTHCURVE, "Smooth", ""},
186  {eGPHook_Falloff_Sphere, "SPHERE", ICON_SPHERECURVE, "Sphere", ""},
187  {eGPHook_Falloff_Root, "ROOT", ICON_ROOTCURVE, "Root", ""},
188  {eGPHook_Falloff_InvSquare, "INVERSE_SQUARE", ICON_ROOTCURVE, "Inverse Square", ""},
189  {eGPHook_Falloff_Sharp, "SHARP", ICON_SHARPCURVE, "Sharp", ""},
190  {eGPHook_Falloff_Linear, "LINEAR", ICON_LINCURVE, "Linear", ""},
191  {eGPHook_Falloff_Const, "CONSTANT", ICON_NOCURVE, "Constant", ""},
192  {0, NULL, 0, NULL, NULL},
193 };
194 
196  {GP_TIME_MODE_NORMAL, "NORMAL", 0, "Regular", "Apply offset in usual animation direction"},
197  {GP_TIME_MODE_REVERSE, "REVERSE", 0, "Reverse", "Apply offset in reverse animation direction"},
198  {GP_TIME_MODE_FIX, "FIX", 0, "Fixed Frame", "Keep frame and do not change with time"},
199  {GP_TIME_MODE_PINGPONG, "PINGPONG", 0, "Ping Pong", "Loop back and forth"},
200  {0, NULL, 0, NULL, NULL},
201 };
202 
204  {GP_SUBDIV_CATMULL, "CATMULL_CLARK", 0, "Catmull-Clark", ""},
205  {GP_SUBDIV_SIMPLE, "SIMPLE", 0, "Simple", ""},
206  {0, NULL, 0, NULL, NULL},
207 };
209  {GP_TINT_UNIFORM, "UNIFORM", 0, "Uniform", ""},
210  {GP_TINT_GRADIENT, "GRADIENT", 0, "Gradient", ""},
211  {0, NULL, 0, NULL, NULL},
212 };
214  {GP_LENGTH_RELATIVE, "RELATIVE", 0, "Relative", "Length in ratio to the stroke's length"},
215  {GP_LENGTH_ABSOLUTE, "ABSOLUTE", 0, "Absolute", "Length in geometry space"},
216  {0, NULL, 0, NULL, NULL},
217 };
218 
221  "DEFORM",
222  0,
223  "Deform",
224  "Deform the stroke to best match the envelope shape"},
226  "SEGMENTS",
227  0,
228  "Segments",
229  "Add segments to create the envelope. Keep the original stroke"},
231  "FILLS",
232  0,
233  "Fills",
234  "Add fill segments to create the envelope. Don't keep the original stroke"},
235  {0, NULL, 0, NULL, NULL},
236 };
238  {GP_NOISE_RANDOM_STEP, "STEP", 0, "Steps", "Randomize every number of frames"},
239  {GP_NOISE_RANDOM_KEYFRAME, "KEYFRAME", 0, "Keyframes", "Randomize on keyframes only"},
240  {0, NULL, 0, NULL, NULL},
241 };
242 #endif
243 
244 #ifdef RNA_RUNTIME
245 
246 # include "DNA_curve_types.h"
247 # include "DNA_fluid_types.h"
248 # include "DNA_material_types.h"
249 # include "DNA_particle_types.h"
250 
251 # include "BKE_cachefile.h"
252 # include "BKE_context.h"
253 # include "BKE_gpencil.h"
254 # include "BKE_gpencil_modifier.h"
255 # include "BKE_object.h"
256 
257 # include "DEG_depsgraph.h"
258 # include "DEG_depsgraph_build.h"
259 
260 static StructRNA *rna_GpencilModifier_refine(struct PointerRNA *ptr)
261 {
263 
264  switch ((GpencilModifierType)md->type) {
266  return &RNA_NoiseGpencilModifier;
268  return &RNA_SubdivGpencilModifier;
270  return &RNA_SimplifyGpencilModifier;
272  return &RNA_ThickGpencilModifier;
274  return &RNA_TintGpencilModifier;
276  return &RNA_TimeGpencilModifier;
278  return &RNA_WeightProxGpencilModifier;
280  return &RNA_WeightAngleGpencilModifier;
282  return &RNA_ColorGpencilModifier;
284  return &RNA_ArrayGpencilModifier;
286  return &RNA_BuildGpencilModifier;
288  return &RNA_OpacityGpencilModifier;
290  return &RNA_LatticeGpencilModifier;
292  return &RNA_LengthGpencilModifier;
294  return &RNA_MirrorGpencilModifier;
296  return &RNA_ShrinkwrapGpencilModifier;
298  return &RNA_SmoothGpencilModifier;
300  return &RNA_HookGpencilModifier;
302  return &RNA_OffsetGpencilModifier;
304  return &RNA_ArmatureGpencilModifier;
306  return &RNA_MultiplyGpencilModifier;
308  return &RNA_TextureGpencilModifier;
310  return &RNA_LineartGpencilModifier;
312  return &RNA_DashGpencilModifierData;
314  return &RNA_EnvelopeGpencilModifier;
315  /* Default */
318  return &RNA_GpencilModifier;
319  }
320 
321  return &RNA_GpencilModifier;
322 }
323 
324 static void rna_GpencilModifier_name_set(PointerRNA *ptr, const char *value)
325 {
326  GpencilModifierData *gmd = ptr->data;
327  char oldname[sizeof(gmd->name)];
328 
329  /* Make a copy of the old name first. */
330  BLI_strncpy(oldname, gmd->name, sizeof(gmd->name));
331 
332  /* Copy the new name into the name slot. */
333  BLI_strncpy_utf8(gmd->name, value, sizeof(gmd->name));
334 
335  /* Make sure the name is truly unique. */
336  if (ptr->owner_id) {
337  Object *ob = (Object *)ptr->owner_id;
339  }
340 
341  /* Fix all the animation data which may link to this. */
342  BKE_animdata_fix_paths_rename_all(NULL, "grease_pencil_modifiers", oldname, gmd->name);
343 }
344 
345 static char *rna_GpencilModifier_path(const PointerRNA *ptr)
346 {
347  const GpencilModifierData *gmd = ptr->data;
348  char name_esc[sizeof(gmd->name) * 2];
349 
350  BLI_str_escape(name_esc, gmd->name, sizeof(name_esc));
351  return BLI_sprintfN("grease_pencil_modifiers[\"%s\"]", name_esc);
352 }
353 
354 static void rna_GpencilModifier_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
355 {
358 }
359 
360 static void rna_GpencilModifier_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
361 {
362  rna_GpencilModifier_update(bmain, scene, ptr);
364 }
365 
366 /* Vertex Groups */
367 
368 # define RNA_GP_MOD_VGROUP_NAME_SET(_type, _prop) \
369  static void rna_##_type##GpencilModifier_##_prop##_set(PointerRNA *ptr, const char *value) \
370  { \
371  _type##GpencilModifierData *tmd = (_type##GpencilModifierData *)ptr->data; \
372  rna_object_vgroup_name_set(ptr, value, tmd->_prop, sizeof(tmd->_prop)); \
373  }
374 
375 RNA_GP_MOD_VGROUP_NAME_SET(Noise, vgname);
376 RNA_GP_MOD_VGROUP_NAME_SET(Thick, vgname);
377 RNA_GP_MOD_VGROUP_NAME_SET(Opacity, vgname);
378 RNA_GP_MOD_VGROUP_NAME_SET(Lattice, vgname);
379 RNA_GP_MOD_VGROUP_NAME_SET(Smooth, vgname);
380 RNA_GP_MOD_VGROUP_NAME_SET(Hook, vgname);
381 RNA_GP_MOD_VGROUP_NAME_SET(Offset, vgname);
382 RNA_GP_MOD_VGROUP_NAME_SET(Armature, vgname);
383 RNA_GP_MOD_VGROUP_NAME_SET(Texture, vgname);
384 RNA_GP_MOD_VGROUP_NAME_SET(Tint, vgname);
385 RNA_GP_MOD_VGROUP_NAME_SET(WeightProx, target_vgname);
386 RNA_GP_MOD_VGROUP_NAME_SET(WeightProx, vgname);
387 RNA_GP_MOD_VGROUP_NAME_SET(WeightAngle, target_vgname);
388 RNA_GP_MOD_VGROUP_NAME_SET(WeightAngle, vgname);
389 RNA_GP_MOD_VGROUP_NAME_SET(Lineart, vgname);
390 RNA_GP_MOD_VGROUP_NAME_SET(Shrinkwrap, vgname);
391 RNA_GP_MOD_VGROUP_NAME_SET(Envelope, vgname);
392 RNA_GP_MOD_VGROUP_NAME_SET(Build, target_vgname);
393 
394 # undef RNA_GP_MOD_VGROUP_NAME_SET
395 
396 /* Objects */
397 
398 static void greasepencil_modifier_object_set(Object *self,
399  Object **ob_p,
400  int type,
401  PointerRNA value)
402 {
403  Object *ob = value.data;
404 
405  if (!self || ob != self) {
406  if (!ob || type == OB_EMPTY || ob->type == type) {
407  id_lib_extern((ID *)ob);
408  *ob_p = ob;
409  }
410  }
411 }
412 
413 # define RNA_GP_MOD_OBJECT_SET(_type, _prop, _obtype) \
414  static void rna_##_type##GpencilModifier_##_prop##_set( \
415  PointerRNA *ptr, PointerRNA value, struct ReportList *UNUSED(reports)) \
416  { \
417  _type##GpencilModifierData *tmd = (_type##GpencilModifierData *)ptr->data; \
418  greasepencil_modifier_object_set((Object *)ptr->owner_id, &tmd->_prop, _obtype, value); \
419  }
420 
421 RNA_GP_MOD_OBJECT_SET(Armature, object, OB_ARMATURE);
422 RNA_GP_MOD_OBJECT_SET(Lattice, object, OB_LATTICE);
423 RNA_GP_MOD_OBJECT_SET(Mirror, object, OB_EMPTY);
424 RNA_GP_MOD_OBJECT_SET(WeightProx, object, OB_EMPTY);
425 RNA_GP_MOD_OBJECT_SET(Shrinkwrap, target, OB_MESH);
426 RNA_GP_MOD_OBJECT_SET(Shrinkwrap, aux_target, OB_MESH);
427 RNA_GP_MOD_OBJECT_SET(Build, object, OB_EMPTY);
428 
429 # undef RNA_GP_MOD_OBJECT_SET
430 
431 static void rna_HookGpencilModifier_object_set(PointerRNA *ptr,
432  PointerRNA value,
433  struct ReportList *UNUSED(reports))
434 {
436  Object *ob = (Object *)value.data;
437 
438  hmd->object = ob;
439  id_lib_extern((ID *)ob);
441 }
442 
443 static void rna_TintGpencilModifier_object_set(PointerRNA *ptr,
444  PointerRNA value,
445  struct ReportList *UNUSED(reports))
446 {
448  Object *ob = (Object *)value.data;
449 
450  hmd->object = ob;
451  id_lib_extern((ID *)ob);
452 }
453 
454 static void rna_TimeModifier_start_frame_set(PointerRNA *ptr, int value)
455 {
457  CLAMP(value, MINFRAME, MAXFRAME);
458  tmd->sfra = value;
459 
460  if (tmd->sfra >= tmd->efra) {
461  tmd->efra = MIN2(tmd->sfra, MAXFRAME);
462  }
463 }
464 
465 static void rna_TimeModifier_end_frame_set(PointerRNA *ptr, int value)
466 {
468  CLAMP(value, MINFRAME, MAXFRAME);
469  tmd->efra = value;
470 
471  if (tmd->sfra >= tmd->efra) {
472  tmd->sfra = MAX2(tmd->efra, MINFRAME);
473  }
474 }
475 
476 static void rna_GpencilOpacity_range(
477  PointerRNA *ptr, float *min, float *max, float *softmin, float *softmax)
478 {
480 
481  *min = 0.0f;
482  *softmin = 0.0f;
483 
484  *softmax = (md->flag & GP_OPACITY_NORMALIZE) ? 1.0f : 2.0f;
485  *max = *softmax;
486 }
487 
488 static void rna_GpencilOpacity_max_set(PointerRNA *ptr, float value)
489 {
491 
492  md->factor = value;
493  if (md->flag & GP_OPACITY_NORMALIZE) {
494  if (md->factor > 1.0f) {
495  md->factor = 1.0f;
496  }
497  }
498 }
499 
500 static void rna_GpencilModifier_opacity_update(Main *bmain, Scene *scene, PointerRNA *ptr)
501 {
503  if (md->flag & GP_OPACITY_NORMALIZE) {
504  if (md->factor > 1.0f) {
505  md->factor = 1.0f;
506  }
507  }
508 
509  rna_GpencilModifier_update(bmain, scene, ptr);
510 }
511 
512 bool rna_GpencilModifier_material_poll(PointerRNA *ptr, PointerRNA value)
513 {
514  Object *ob = (Object *)ptr->owner_id;
515  Material *ma = (Material *)value.owner_id;
516 
517  return BKE_gpencil_object_material_index_get(ob, ma) != -1;
518 }
519 
520 static void rna_GpencilModifier_material_set(PointerRNA *ptr,
521  PointerRNA value,
522  Material **ma_target,
523  struct ReportList *reports)
524 {
525  Object *ob = (Object *)ptr->owner_id;
526  Material *ma = (Material *)value.owner_id;
527 
528  if (ma == NULL || BKE_gpencil_object_material_index_get(ob, ma) != -1) {
529  id_lib_extern((ID *)ob);
530  *ma_target = ma;
531  }
532  else {
533  BKE_reportf(
534  reports,
535  RPT_ERROR,
536  "Cannot assign material '%s', it has to be used by the grease pencil object already",
537  ma->id.name);
538  }
539 }
540 
541 static void rna_LineartGpencilModifier_material_set(PointerRNA *ptr,
542  PointerRNA value,
543  struct ReportList *reports)
544 {
546  Material **ma_target = &lmd->target_material;
547 
548  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
549 }
550 
551 static void rna_NoiseGpencilModifier_material_set(PointerRNA *ptr,
552  PointerRNA value,
553  struct ReportList *reports)
554 {
556  Material **ma_target = &nmd->material;
557 
558  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
559 }
560 
561 static void rna_SmoothGpencilModifier_material_set(PointerRNA *ptr,
562  PointerRNA value,
563  struct ReportList *reports)
564 {
566  Material **ma_target = &smd->material;
567 
568  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
569 }
570 
571 static void rna_SubdivGpencilModifier_material_set(PointerRNA *ptr,
572  PointerRNA value,
573  struct ReportList *reports)
574 {
576  Material **ma_target = &smd->material;
577 
578  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
579 }
580 
581 static void rna_SimplifyGpencilModifier_material_set(PointerRNA *ptr,
582  PointerRNA value,
583  struct ReportList *reports)
584 {
586  Material **ma_target = &smd->material;
587 
588  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
589 }
590 
591 static void rna_ThickGpencilModifier_material_set(PointerRNA *ptr,
592  PointerRNA value,
593  struct ReportList *reports)
594 {
596  Material **ma_target = &tmd->material;
597 
598  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
599 }
600 
601 static void rna_WeightProxGpencilModifier_material_set(PointerRNA *ptr,
602  PointerRNA value,
603  struct ReportList *reports)
604 {
606  Material **ma_target = &tmd->material;
607 
608  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
609 }
610 
611 static void rna_WeightAngleGpencilModifier_material_set(PointerRNA *ptr,
612  PointerRNA value,
613  struct ReportList *reports)
614 {
616  Material **ma_target = &tmd->material;
617 
618  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
619 }
620 
621 static void rna_OffsetGpencilModifier_material_set(PointerRNA *ptr,
622  PointerRNA value,
623  struct ReportList *reports)
624 {
626  Material **ma_target = &omd->material;
627 
628  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
629 }
630 
631 static void rna_TintGpencilModifier_material_set(PointerRNA *ptr,
632  PointerRNA value,
633  struct ReportList *reports)
634 {
636  Material **ma_target = &tmd->material;
637 
638  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
639 }
640 
641 static void rna_ColorGpencilModifier_material_set(PointerRNA *ptr,
642  PointerRNA value,
643  struct ReportList *reports)
644 {
646  Material **ma_target = &cmd->material;
647 
648  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
649 }
650 
651 static void rna_ArrayGpencilModifier_material_set(PointerRNA *ptr,
652  PointerRNA value,
653  struct ReportList *reports)
654 {
656  Material **ma_target = &amd->material;
657 
658  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
659 }
660 
661 static void rna_OpacityGpencilModifier_material_set(PointerRNA *ptr,
662  PointerRNA value,
663  struct ReportList *reports)
664 {
666  Material **ma_target = &omd->material;
667 
668  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
669 }
670 
671 static void rna_LatticeGpencilModifier_material_set(PointerRNA *ptr,
672  PointerRNA value,
673  struct ReportList *reports)
674 {
676  Material **ma_target = &lmd->material;
677 
678  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
679 }
680 
681 static void rna_MirrorGpencilModifier_material_set(PointerRNA *ptr,
682  PointerRNA value,
683  struct ReportList *reports)
684 {
686  Material **ma_target = &mmd->material;
687 
688  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
689 }
690 
691 static void rna_HookGpencilModifier_material_set(PointerRNA *ptr,
692  PointerRNA value,
693  struct ReportList *reports)
694 {
696  Material **ma_target = &hmd->material;
697 
698  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
699 }
700 
701 static void rna_MultiplyGpencilModifier_material_set(PointerRNA *ptr,
702  PointerRNA value,
703  struct ReportList *reports)
704 {
706  Material **ma_target = &mmd->material;
707 
708  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
709 }
710 
711 static void rna_TextureGpencilModifier_material_set(PointerRNA *ptr,
712  PointerRNA value,
713  struct ReportList *reports)
714 {
716  Material **ma_target = &tmd->material;
717 
718  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
719 }
720 
721 static void rna_ShrinkwrapGpencilModifier_material_set(PointerRNA *ptr,
722  PointerRNA value,
723  struct ReportList *reports)
724 {
726  Material **ma_target = &tmd->material;
727 
728  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
729 }
730 
731 static void rna_Lineart_start_level_set(PointerRNA *ptr, int value)
732 {
734 
735  CLAMP(value, 0, 128);
736  lmd->level_start = value;
737  lmd->level_end = MAX2(value, lmd->level_end);
738 }
739 
740 static void rna_Lineart_end_level_set(PointerRNA *ptr, int value)
741 {
743 
744  CLAMP(value, 0, 128);
745  lmd->level_end = value;
746  lmd->level_start = MIN2(value, lmd->level_start);
747 }
748 
749 static void rna_GpencilDash_segments_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
750 {
753  iter, dmd->segments, sizeof(DashGpencilModifierSegment), dmd->segments_len, false, NULL);
754 }
755 
756 static char *rna_DashGpencilModifierSegment_path(const PointerRNA *ptr)
757 {
759 
761 
762  BLI_assert(dmd != NULL);
763 
764  char name_esc[sizeof(dmd->modifier.name) * 2];
765  BLI_str_escape(name_esc, dmd->modifier.name, sizeof(name_esc));
766 
767  char ds_name_esc[sizeof(ds->name) * 2];
768  BLI_str_escape(ds_name_esc, ds->name, sizeof(ds_name_esc));
769 
770  return BLI_sprintfN("grease_pencil_modifiers[\"%s\"].segments[\"%s\"]", name_esc, ds_name_esc);
771 }
772 
773 static bool dash_segment_name_exists_fn(void *arg, const char *name)
774 {
775  const DashGpencilModifierData *dmd = (const DashGpencilModifierData *)arg;
776  for (int i = 0; i < dmd->segments_len; i++) {
777  if (STREQ(dmd->segments[i].name, name) && dmd->segments[i].name != name) {
778  return true;
779  }
780  }
781  return false;
782 }
783 
784 static void rna_DashGpencilModifierSegment_name_set(PointerRNA *ptr, const char *value)
785 {
787 
788  char oldname[sizeof(ds->name)];
789  BLI_strncpy(oldname, ds->name, sizeof(ds->name));
790 
791  BLI_strncpy_utf8(ds->name, value, sizeof(ds->name));
792 
793  BLI_assert(ds->dmd != NULL);
795  dash_segment_name_exists_fn, ds->dmd, "Segment", '.', ds->name, sizeof(ds->name));
796 
797  char name_esc[sizeof(ds->dmd->modifier.name) * 2];
798  BLI_str_escape(name_esc, ds->dmd->modifier.name, sizeof(name_esc));
799 
800  char prefix[36 + sizeof(name_esc) + 1];
801  SNPRINTF(prefix, "grease_pencil_modifiers[\"%s\"].segments", name_esc);
802 
803  /* Fix all the animation data which may link to this. */
804  BKE_animdata_fix_paths_rename_all(NULL, prefix, oldname, ds->name);
805 }
806 
807 static int rna_ShrinkwrapGpencilModifier_face_cull_get(PointerRNA *ptr)
808 {
811 }
812 
813 static void rna_ShrinkwrapGpencilModifier_face_cull_set(struct PointerRNA *ptr, int value)
814 {
817 }
818 
819 static void rna_EnvelopeGpencilModifier_material_set(PointerRNA *ptr,
820  PointerRNA value,
821  struct ReportList *reports)
822 {
824  Material **ma_target = &emd->material;
825 
826  rna_GpencilModifier_material_set(ptr, value, ma_target, reports);
827 }
828 
829 #else
830 
832 {
833  StructRNA *srna;
834  PropertyRNA *prop;
835 
836  srna = RNA_def_struct(brna, "NoiseGpencilModifier", "GpencilModifier");
837  RNA_def_struct_ui_text(srna, "Noise Modifier", "Noise effect modifier");
838  RNA_def_struct_sdna(srna, "NoiseGpencilModifierData");
839  RNA_def_struct_ui_icon(srna, ICON_MOD_NOISE);
840 
842 
843  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
844  RNA_def_property_string_sdna(prop, NULL, "layername");
845  RNA_def_property_ui_text(prop, "Layer", "Layer name");
846  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
847 
848  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
851  NULL,
852  "rna_NoiseGpencilModifier_material_set",
853  NULL,
854  "rna_GpencilModifier_material_poll");
855  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
856  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
857 
858  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
859  RNA_def_property_string_sdna(prop, NULL, "vgname");
860  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
861  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_NoiseGpencilModifier_vgname_set");
862  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
863 
864  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
865  RNA_def_property_float_sdna(prop, NULL, "factor");
866  RNA_def_property_range(prop, 0.0, FLT_MAX);
867  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
868  RNA_def_property_ui_text(prop, "Offset Factor", "Amount of noise to apply");
869  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
870 
871  prop = RNA_def_property(srna, "factor_strength", PROP_FLOAT, PROP_FACTOR);
872  RNA_def_property_float_sdna(prop, NULL, "factor_strength");
873  RNA_def_property_range(prop, 0.0, FLT_MAX);
874  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
875  RNA_def_property_ui_text(prop, "Strength Factor", "Amount of noise to apply to opacity");
876  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
877 
878  prop = RNA_def_property(srna, "factor_thickness", PROP_FLOAT, PROP_FACTOR);
879  RNA_def_property_float_sdna(prop, NULL, "factor_thickness");
880  RNA_def_property_range(prop, 0.0, FLT_MAX);
881  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
882  RNA_def_property_ui_text(prop, "Thickness Factor", "Amount of noise to apply to thickness");
883  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
884 
885  prop = RNA_def_property(srna, "factor_uvs", PROP_FLOAT, PROP_FACTOR);
886  RNA_def_property_float_sdna(prop, NULL, "factor_uvs");
887  RNA_def_property_range(prop, 0.0, FLT_MAX);
888  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 2);
889  RNA_def_property_ui_text(prop, "UV Factor", "Amount of noise to apply uv rotation");
890  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
891 
892  prop = RNA_def_property(srna, "use_random", PROP_BOOLEAN, PROP_NONE);
894  RNA_def_property_ui_text(prop, "Random", "Use random values over time");
895  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
896 
897  prop = RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
898  RNA_def_property_ui_text(prop, "Noise Seed", "Random seed");
899  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
900 
901  prop = RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_FACTOR);
902  RNA_def_property_float_sdna(prop, NULL, "noise_scale");
903  RNA_def_property_range(prop, 0.0, 1.0);
904  RNA_def_property_ui_text(prop, "Noise Scale", "Scale the noise frequency");
905  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
906 
907  prop = RNA_def_property(srna, "noise_offset", PROP_FLOAT, PROP_FACTOR);
908  RNA_def_property_float_sdna(prop, NULL, "noise_offset");
909  RNA_def_property_range(prop, 0.0, FLT_MAX);
910  RNA_def_property_ui_range(prop, 0.0, 100.0, 0.1, 3);
911  RNA_def_property_ui_text(prop, "Noise Offset", "Offset the noise along the strokes");
912  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
913 
914  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
917  prop, "Custom Curve", "Use a custom curve to define noise effect along the strokes");
918  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
919 
920  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
921  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
922  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
923  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
924 
925  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
926  RNA_def_property_int_sdna(prop, NULL, "pass_index");
927  RNA_def_property_range(prop, 0, 100);
928  RNA_def_property_ui_text(prop, "Pass", "Pass index");
929  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
930 
931  prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
932  RNA_def_property_int_sdna(prop, NULL, "step");
933  RNA_def_property_range(prop, 1, 100);
934  RNA_def_property_ui_text(prop, "Step", "Number of frames between randomization steps");
935  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
936 
937  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
939  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
940  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
941 
942  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
944  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
945  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
946 
947  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
949  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
950  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
951 
952  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
954  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
955  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
956 
957  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
958  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
959  RNA_def_property_range(prop, 0, 100);
960  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
961  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
962 
963  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
965  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
966  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
967 
968  prop = RNA_def_property(srna, "random_mode", PROP_ENUM, PROP_NONE);
969  RNA_def_property_enum_sdna(prop, NULL, "noise_mode");
971  RNA_def_property_ui_text(prop, "Mode", "Where to perform randomization");
972  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
973 
975 }
976 
978 {
979  StructRNA *srna;
980  PropertyRNA *prop;
981 
982  srna = RNA_def_struct(brna, "SmoothGpencilModifier", "GpencilModifier");
983  RNA_def_struct_ui_text(srna, "Smooth Modifier", "Smooth effect modifier");
984  RNA_def_struct_sdna(srna, "SmoothGpencilModifierData");
985  RNA_def_struct_ui_icon(srna, ICON_MOD_SMOOTH);
986 
988 
989  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
990  RNA_def_property_string_sdna(prop, NULL, "layername");
991  RNA_def_property_ui_text(prop, "Layer", "Layer name");
992  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
993 
994  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
997  NULL,
998  "rna_SmoothGpencilModifier_material_set",
999  NULL,
1000  "rna_GpencilModifier_material_poll");
1001  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1002  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1003 
1004  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1005  RNA_def_property_string_sdna(prop, NULL, "vgname");
1006  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1007  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SmoothGpencilModifier_vgname_set");
1008  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1009 
1010  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
1011  RNA_def_property_float_sdna(prop, NULL, "factor");
1012  RNA_def_property_range(prop, 0, 1);
1013  RNA_def_property_ui_text(prop, "Factor", "Amount of smooth to apply");
1014  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1015 
1016  prop = RNA_def_property(srna, "use_edit_position", PROP_BOOLEAN, PROP_NONE);
1019  prop, "Affect Position", "The modifier affects the position of the point");
1020  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1021 
1022  prop = RNA_def_property(srna, "use_edit_strength", PROP_BOOLEAN, PROP_NONE);
1025  prop, "Affect Strength", "The modifier affects the color strength of the point");
1026  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1027 
1028  prop = RNA_def_property(srna, "use_edit_thickness", PROP_BOOLEAN, PROP_NONE);
1031  prop, "Affect Thickness", "The modifier affects the thickness of the point");
1032  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1033 
1034  prop = RNA_def_property(srna, "use_edit_uv", PROP_BOOLEAN, PROP_NONE);
1037  prop, "Affect UV", "The modifier affects the UV rotation factor of the point");
1038  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1039 
1040  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1041  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1042  RNA_def_property_range(prop, 0, 100);
1043  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1044  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1045 
1046  prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
1047  RNA_def_property_int_sdna(prop, NULL, "step");
1048  RNA_def_property_range(prop, 1, 1000);
1050  prop, "Step", "Number of times to apply smooth (high numbers can reduce fps)");
1051  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1052 
1053  prop = RNA_def_property(srna, "use_keep_shape", PROP_BOOLEAN, PROP_NONE);
1055  RNA_def_property_ui_text(prop, "Keep Shape", "Smooth the details, but keep the overall shape");
1056  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1057 
1058  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1060  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1061  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1062 
1063  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1065  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1066  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1067 
1068  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1070  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1071  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1072 
1073  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1075  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1076  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1077 
1078  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1079  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1080  RNA_def_property_range(prop, 0, 100);
1081  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1082  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1083 
1084  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1086  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1087  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1088 
1089  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1092  prop, "Custom Curve", "Use a custom curve to define smooth effect along the strokes");
1093  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1094 
1095  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1096  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1097  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1098  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1099 
1101 }
1102 
1104 {
1105  StructRNA *srna;
1106  PropertyRNA *prop;
1107 
1108  srna = RNA_def_struct(brna, "SubdivGpencilModifier", "GpencilModifier");
1109  RNA_def_struct_ui_text(srna, "Subdivision Modifier", "Subdivide Stroke modifier");
1110  RNA_def_struct_sdna(srna, "SubdivGpencilModifierData");
1111  RNA_def_struct_ui_icon(srna, ICON_MOD_SUBSURF);
1112 
1114 
1115  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1116  RNA_def_property_string_sdna(prop, NULL, "layername");
1117  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1118  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1119 
1120  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1123  NULL,
1124  "rna_SubdivGpencilModifier_material_set",
1125  NULL,
1126  "rna_GpencilModifier_material_poll");
1127  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1128  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1129 
1130  prop = RNA_def_property(srna, "level", PROP_INT, PROP_NONE);
1131  RNA_def_property_int_sdna(prop, NULL, "level");
1132  RNA_def_property_range(prop, 0, 5);
1133  RNA_def_property_ui_text(prop, "Level", "Number of subdivisions");
1134  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1135 
1136  prop = RNA_def_property(srna, "subdivision_type", PROP_ENUM, PROP_NONE);
1137  RNA_def_property_enum_sdna(prop, NULL, "type");
1139  RNA_def_property_ui_text(prop, "Subdivision Type", "Select type of subdivision algorithm");
1140  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1141 
1142  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1143  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1144  RNA_def_property_range(prop, 0, 100);
1145  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1146  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1147 
1148  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1150  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1151  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1152 
1153  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1155  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1156  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1157 
1158  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1160  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1161  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1162 
1163  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1164  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1165  RNA_def_property_range(prop, 0, 100);
1166  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1167  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1168 
1169  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1171  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1172  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1173 
1175 }
1176 
1178 {
1179  StructRNA *srna;
1180  PropertyRNA *prop;
1181 
1182  static EnumPropertyItem prop_gpencil_simplify_mode_items[] = {
1184  "FIXED",
1185  ICON_IPO_CONSTANT,
1186  "Fixed",
1187  "Delete alternating vertices in the stroke, except extremes"},
1189  "ADAPTIVE",
1190  ICON_IPO_EASE_IN_OUT,
1191  "Adaptive",
1192  "Use a Ramer-Douglas-Peucker algorithm to simplify the stroke preserving main shape"},
1194  "SAMPLE",
1195  ICON_IPO_EASE_IN_OUT,
1196  "Sample",
1197  "Re-sample the stroke with segments of the specified length"},
1199  "MERGE",
1200  ICON_IPO_EASE_IN_OUT,
1201  "Merge",
1202  "Simplify the stroke by merging vertices closer than a given distance"},
1203  {0, NULL, 0, NULL, NULL},
1204  };
1205 
1206  srna = RNA_def_struct(brna, "SimplifyGpencilModifier", "GpencilModifier");
1207  RNA_def_struct_ui_text(srna, "Simplify Modifier", "Simplify Stroke modifier");
1208  RNA_def_struct_sdna(srna, "SimplifyGpencilModifierData");
1209  RNA_def_struct_ui_icon(srna, ICON_MOD_SIMPLIFY);
1210 
1212 
1213  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1214  RNA_def_property_string_sdna(prop, NULL, "layername");
1215  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1216  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1217 
1218  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1221  NULL,
1222  "rna_SimplifyGpencilModifier_material_set",
1223  NULL,
1224  "rna_GpencilModifier_material_poll");
1225  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1226  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1227 
1228  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
1229  RNA_def_property_float_sdna(prop, NULL, "factor");
1230  RNA_def_property_range(prop, 0, 100.0);
1231  RNA_def_property_ui_range(prop, 0, 5.0f, 1.0f, 3);
1232  RNA_def_property_ui_text(prop, "Factor", "Factor of Simplify");
1233  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1234 
1235  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1236  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1237  RNA_def_property_range(prop, 0, 100);
1238  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1239  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1240 
1241  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1243  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1244  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1245 
1246  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1248  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1249  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1250 
1251  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1253  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1254  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1255 
1256  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1257  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1258  RNA_def_property_range(prop, 0, 100);
1259  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1260  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1261 
1262  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1264  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1265  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1266 
1267  /* Mode */
1268  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
1269  RNA_def_property_enum_items(prop, prop_gpencil_simplify_mode_items);
1270  RNA_def_property_ui_text(prop, "Mode", "How to simplify the stroke");
1271  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1272 
1273  prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
1274  RNA_def_property_int_sdna(prop, NULL, "step");
1275  RNA_def_property_range(prop, 1, 50);
1276  RNA_def_property_ui_text(prop, "Iterations", "Number of times to apply simplify");
1277  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1278 
1279  /* Sample */
1280  prop = RNA_def_property(srna, "length", PROP_FLOAT, PROP_DISTANCE);
1281  RNA_def_property_float_sdna(prop, NULL, "length");
1282  RNA_def_property_range(prop, 0.005, FLT_MAX);
1283  RNA_def_property_ui_range(prop, 0, 1.0, 0.05, 3);
1284  RNA_def_property_ui_text(prop, "Length", "Length of each segment");
1285  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1286 
1287  prop = RNA_def_property(srna, "sharp_threshold", PROP_FLOAT, PROP_ANGLE);
1288  RNA_def_property_float_sdna(prop, NULL, "sharp_threshold");
1289  RNA_def_property_range(prop, 0, M_PI);
1290  RNA_def_property_ui_range(prop, 0, M_PI, 1.0, 1);
1292  prop, "Sharp Threshold", "Preserve corners that have sharper angle than this threshold");
1293  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1294 
1295  /* Merge */
1296  prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_DISTANCE);
1297  RNA_def_property_float_sdna(prop, NULL, "distance");
1298  RNA_def_property_range(prop, 0, FLT_MAX);
1299  RNA_def_property_ui_range(prop, 0, 1.0, 0.01, 3);
1300  RNA_def_property_ui_text(prop, "Distance", "Distance between points");
1301  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1302 
1304 }
1305 
1307 {
1308  StructRNA *srna;
1309  PropertyRNA *prop;
1310 
1311  srna = RNA_def_struct(brna, "ThickGpencilModifier", "GpencilModifier");
1312  RNA_def_struct_ui_text(srna, "Thick Modifier", "Subdivide and Smooth Stroke modifier");
1313  RNA_def_struct_sdna(srna, "ThickGpencilModifierData");
1314  RNA_def_struct_ui_icon(srna, ICON_MOD_THICKNESS);
1315 
1317 
1318  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1319  RNA_def_property_string_sdna(prop, NULL, "layername");
1320  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1321  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1322 
1323  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1326  NULL,
1327  "rna_ThickGpencilModifier_material_set",
1328  NULL,
1329  "rna_GpencilModifier_material_poll");
1330  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1331  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1332 
1333  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1334  RNA_def_property_string_sdna(prop, NULL, "vgname");
1335  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1336  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ThickGpencilModifier_vgname_set");
1337  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1338 
1339  prop = RNA_def_property(srna, "thickness", PROP_INT, PROP_NONE);
1340  RNA_def_property_int_sdna(prop, NULL, "thickness");
1341  RNA_def_property_range(prop, -100, 500);
1342  RNA_def_property_ui_text(prop, "Thickness", "Absolute thickness to apply everywhere");
1343  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1344 
1345  prop = RNA_def_property(srna, "thickness_factor", PROP_FLOAT, PROP_NONE);
1346  RNA_def_property_float_sdna(prop, NULL, "thickness_fac");
1347  RNA_def_property_range(prop, 0.0, FLT_MAX);
1348  RNA_def_property_ui_range(prop, 0.0, 10.0, 0.1, 3);
1349  RNA_def_property_ui_text(prop, "Thickness Factor", "Factor to multiply the thickness with");
1350  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1351 
1352  prop = RNA_def_property(srna, "use_weight_factor", PROP_BOOLEAN, PROP_NONE);
1354  RNA_def_property_ui_text(prop, "Weighted", "Use weight to modulate effect");
1355  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1356 
1357  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1358  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1359  RNA_def_property_range(prop, 0, 100);
1360  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1361  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1362 
1363  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1365  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1366  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1367 
1368  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1370  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1371  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1372 
1373  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1375  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1376  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1377 
1378  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1380  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1381  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1382 
1383  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1384  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1385  RNA_def_property_range(prop, 0, 100);
1386  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1387  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1388 
1389  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1391  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1392  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1393 
1394  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1397  prop, "Custom Curve", "Use a custom curve to define thickness change along the strokes");
1398  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1399 
1400  prop = RNA_def_property(srna, "use_normalized_thickness", PROP_BOOLEAN, PROP_NONE);
1402  RNA_def_property_ui_text(prop, "Uniform Thickness", "Replace the stroke thickness");
1403  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1404 
1405  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1406  RNA_def_property_pointer_sdna(prop, NULL, "curve_thickness");
1407  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1408  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1409 
1411 }
1412 
1414 {
1415  StructRNA *srna;
1416  PropertyRNA *prop;
1417 
1418  srna = RNA_def_struct(brna, "OffsetGpencilModifier", "GpencilModifier");
1419  RNA_def_struct_ui_text(srna, "Offset Modifier", "Offset Stroke modifier");
1420  RNA_def_struct_sdna(srna, "OffsetGpencilModifierData");
1421  RNA_def_struct_ui_icon(srna, ICON_MOD_OFFSET);
1422 
1424 
1425  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1426  RNA_def_property_string_sdna(prop, NULL, "layername");
1427  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1428  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1429 
1430  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1433  NULL,
1434  "rna_OffsetGpencilModifier_material_set",
1435  NULL,
1436  "rna_GpencilModifier_material_poll");
1437  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1438  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1439 
1440  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1441  RNA_def_property_string_sdna(prop, NULL, "vgname");
1442  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1443  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_OffsetGpencilModifier_vgname_set");
1444  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1445 
1446  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1447  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1448  RNA_def_property_range(prop, 0, 100);
1449  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1450  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1451 
1452  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1454  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1455  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1456 
1457  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1459  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1460  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1461 
1462  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1464  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1465  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1466 
1467  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1469  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1470  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1471 
1472  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1473  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1474  RNA_def_property_range(prop, 0, 100);
1475  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1476  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1477 
1478  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1480  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1481  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1482 
1483  prop = RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
1484  RNA_def_property_float_sdna(prop, NULL, "loc");
1485  RNA_def_property_ui_text(prop, "Location", "Values for change location");
1486  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1487  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1488 
1489  prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER);
1490  RNA_def_property_float_sdna(prop, NULL, "rot");
1491  RNA_def_property_ui_text(prop, "Rotation", "Values for changes in rotation");
1492  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1493  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1494 
1495  prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
1496  RNA_def_property_float_sdna(prop, NULL, "scale");
1497  RNA_def_property_ui_text(prop, "Scale", "Values for changes in scale");
1498  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1499  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1500 
1501  prop = RNA_def_property(srna, "random_offset", PROP_FLOAT, PROP_XYZ);
1502  RNA_def_property_float_sdna(prop, NULL, "rnd_offset");
1503  RNA_def_property_ui_text(prop, "Random Offset", "Value for changes in location");
1504  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1505  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1506 
1507  prop = RNA_def_property(srna, "random_rotation", PROP_FLOAT, PROP_EULER);
1508  RNA_def_property_float_sdna(prop, NULL, "rnd_rot");
1509  RNA_def_property_ui_text(prop, "Random Rotation", "Value for changes in rotation");
1510  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1511  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1512 
1513  prop = RNA_def_property(srna, "random_scale", PROP_FLOAT, PROP_XYZ);
1514  RNA_def_property_float_sdna(prop, NULL, "rnd_scale");
1515  RNA_def_property_ui_text(prop, "Scale", "Value for changes in scale");
1516  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
1517  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1518 
1519  prop = RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
1520  RNA_def_property_ui_text(prop, "Seed", "Random seed");
1521  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1522 
1523  prop = RNA_def_property(srna, "use_uniform_random_scale", PROP_BOOLEAN, PROP_NONE);
1526  prop, "Uniform Scale", "Use the same random seed for each scale axis for a uniform scale");
1527  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1528 
1530 }
1531 
1533 {
1534  StructRNA *srna;
1535  PropertyRNA *prop;
1536 
1537  /* modes */
1538  static EnumPropertyItem tint_mode_types_items[] = {
1539  {GPPAINT_MODE_STROKE, "STROKE", 0, "Stroke", "Vertex Color affects to Stroke only"},
1540  {GPPAINT_MODE_FILL, "FILL", 0, "Fill", "Vertex Color affects to Fill only"},
1541  {GPPAINT_MODE_BOTH, "BOTH", 0, "Stroke & Fill", "Vertex Color affects to Stroke and Fill"},
1542  {0, NULL, 0, NULL, NULL},
1543  };
1544 
1545  srna = RNA_def_struct(brna, "TintGpencilModifier", "GpencilModifier");
1546  RNA_def_struct_ui_text(srna, "Tint Modifier", "Tint modifier");
1547  RNA_def_struct_sdna(srna, "TintGpencilModifierData");
1548  RNA_def_struct_ui_icon(srna, ICON_COLOR);
1549 
1551 
1552  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
1553  RNA_def_property_ui_text(prop, "Object", "Parent object to define the center of the effect");
1555  RNA_def_property_pointer_funcs(prop, NULL, "rna_TintGpencilModifier_object_set", NULL, NULL);
1556  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
1557 
1558  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1559  RNA_def_property_string_sdna(prop, NULL, "layername");
1560  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1561  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1562 
1563  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1566  NULL,
1567  "rna_TintGpencilModifier_material_set",
1568  NULL,
1569  "rna_GpencilModifier_material_poll");
1570  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1571  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1572 
1573  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1574  RNA_def_property_string_sdna(prop, NULL, "vgname");
1575  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1576  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_TintGpencilModifier_vgname_set");
1577  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1578 
1579  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1580  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1581  RNA_def_property_range(prop, 0, 100);
1582  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1583  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1584 
1585  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1587  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1588  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1589 
1590  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1592  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1593  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1594 
1595  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1597  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1598  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1599 
1600  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1602  RNA_def_property_ui_text(prop, "Inverse Vertex Group", "Inverse filter");
1603  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1604 
1605  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1606  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1607  RNA_def_property_range(prop, 0, 100);
1608  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1609  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1610 
1611  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1613  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1614  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1615 
1616  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
1617  RNA_def_property_float_sdna(prop, NULL, "factor");
1618  RNA_def_property_range(prop, 0, 2.0);
1619  RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 2);
1620  RNA_def_property_ui_text(prop, "Strength", "Factor for tinting");
1621  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1622 
1623  prop = RNA_def_property(srna, "use_weight_factor", PROP_BOOLEAN, PROP_NONE);
1625  RNA_def_property_ui_text(prop, "Weighted", "Use weight to modulate effect");
1626  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1627 
1628  prop = RNA_def_property(srna, "radius", PROP_FLOAT, PROP_DISTANCE);
1629  RNA_def_property_float_sdna(prop, NULL, "radius");
1630  RNA_def_property_range(prop, 1e-6f, FLT_MAX);
1631  RNA_def_property_ui_range(prop, 0.001f, FLT_MAX, 1, 3);
1632  RNA_def_property_ui_text(prop, "Radius", "Defines the maximum distance of the effect");
1633  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1634 
1635  /* Mode type. */
1636  prop = RNA_def_property(srna, "vertex_mode", PROP_ENUM, PROP_NONE);
1638  RNA_def_property_enum_items(prop, tint_mode_types_items);
1639  RNA_def_property_ui_text(prop, "Mode", "Defines how vertex color affect to the strokes");
1641  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1642 
1643  /* Type of Tint. */
1644  prop = RNA_def_property(srna, "tint_type", PROP_ENUM, PROP_NONE);
1645  RNA_def_property_enum_sdna(prop, NULL, "type");
1647  RNA_def_property_ui_text(prop, "Tint Type", "Select type of tinting algorithm");
1648  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1649 
1650  /* Simple Color. */
1651  prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
1652  RNA_def_property_range(prop, 0.0, 1.0);
1653  RNA_def_property_float_sdna(prop, NULL, "rgb");
1654  RNA_def_property_array(prop, 3);
1655  RNA_def_property_ui_text(prop, "Color", "Color used for tinting");
1656  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1657 
1658  /* Color band. */
1659  prop = RNA_def_property(srna, "colors", PROP_POINTER, PROP_NONE);
1660  RNA_def_property_pointer_sdna(prop, NULL, "colorband");
1661  RNA_def_property_struct_type(prop, "ColorRamp");
1662  RNA_def_property_ui_text(prop, "Colors", "Color ramp used to define tinting colors");
1663  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1664 
1665  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1668  prop, "Custom Curve", "Use a custom curve to define vertex color effect along the strokes");
1669  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1670 
1671  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1672  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1673  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1674  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1675 
1677 }
1678 
1680 {
1681  StructRNA *srna;
1682  PropertyRNA *prop;
1683 
1684  srna = RNA_def_struct(brna, "TimeGpencilModifier", "GpencilModifier");
1685  RNA_def_struct_ui_text(srna, "Time Offset Modifier", "Time offset modifier");
1686  RNA_def_struct_sdna(srna, "TimeGpencilModifierData");
1687  RNA_def_struct_ui_icon(srna, ICON_MOD_TIME);
1688 
1690 
1691  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
1692  RNA_def_property_enum_sdna(prop, NULL, "mode");
1694  RNA_def_property_ui_text(prop, "Mode", "");
1695  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1696 
1697  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1698  RNA_def_property_string_sdna(prop, NULL, "layername");
1699  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1700  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1701 
1702  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1704  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1705  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1706 
1707  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1708  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1709  RNA_def_property_range(prop, 0, 100);
1710  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1711  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1712 
1713  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1715  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1716  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1717 
1718  prop = RNA_def_property(srna, "offset", PROP_INT, PROP_NONE);
1719  RNA_def_property_int_sdna(prop, NULL, "offset");
1720  RNA_def_property_range(prop, SHRT_MIN, SHRT_MAX);
1722  prop, "Frame Offset", "Number of frames to offset original keyframe number or frame to fix");
1723  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1724 
1725  prop = RNA_def_property(srna, "frame_scale", PROP_FLOAT, PROP_NONE);
1726  RNA_def_property_float_sdna(prop, NULL, "frame_scale");
1727  RNA_def_property_range(prop, 0.001f, 100.0f);
1728  RNA_def_property_ui_text(prop, "Frame Scale", "Evaluation time in seconds");
1729  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1730 
1731  prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_TIME);
1733  RNA_def_property_int_sdna(prop, NULL, "sfra");
1734  RNA_def_property_int_funcs(prop, NULL, "rna_TimeModifier_start_frame_set", NULL);
1736  RNA_def_property_ui_text(prop, "Start Frame", "First frame of the range");
1737  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1738 
1739  prop = RNA_def_property(srna, "frame_end", PROP_INT, PROP_TIME);
1741  RNA_def_property_int_sdna(prop, NULL, "efra");
1742  RNA_def_property_int_funcs(prop, NULL, "rna_TimeModifier_end_frame_set", NULL);
1744  RNA_def_property_ui_text(prop, "End Frame", "Final frame of the range");
1745  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1746 
1747  prop = RNA_def_property(srna, "use_keep_loop", PROP_BOOLEAN, PROP_NONE);
1750  prop, "Keep Loop", "Retiming end frames and move to start of animation to keep loop");
1751  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1752 
1753  prop = RNA_def_property(srna, "use_custom_frame_range", PROP_BOOLEAN, PROP_NONE);
1756  prop, "Custom Range", "Define a custom range of frames to use in modifier");
1757  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1758 
1760 }
1761 
1763 {
1764  StructRNA *srna;
1765  PropertyRNA *prop;
1766 
1767  srna = RNA_def_struct(brna, "ColorGpencilModifier", "GpencilModifier");
1768  RNA_def_struct_ui_text(srna, "Hue/Saturation Modifier", "Change Hue/Saturation modifier");
1769  RNA_def_struct_sdna(srna, "ColorGpencilModifierData");
1770  RNA_def_struct_ui_icon(srna, ICON_MOD_TINT);
1771 
1773 
1774  prop = RNA_def_property(srna, "modify_color", PROP_ENUM, PROP_NONE);
1775  RNA_def_property_enum_items(prop, modifier_modify_color_items); /* share the enum */
1776  RNA_def_property_ui_text(prop, "Mode", "Set what colors of the stroke are affected");
1777  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1778 
1779  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1780  RNA_def_property_string_sdna(prop, NULL, "layername");
1781  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1782  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1783 
1784  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1787  NULL,
1788  "rna_ColorGpencilModifier_material_set",
1789  NULL,
1790  "rna_GpencilModifier_material_poll");
1791  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1792  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1793 
1794  prop = RNA_def_property(srna, "hue", PROP_FLOAT, PROP_NONE);
1795  RNA_def_property_range(prop, 0.0, 1.0);
1796  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 3);
1797  RNA_def_property_float_sdna(prop, NULL, "hsv[0]");
1798  RNA_def_property_ui_text(prop, "Hue", "Color Hue");
1799  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1800 
1801  prop = RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE);
1802  RNA_def_property_range(prop, 0.0, FLT_MAX);
1803  RNA_def_property_ui_range(prop, 0.0, 2.0, 0.1, 3);
1804  RNA_def_property_float_sdna(prop, NULL, "hsv[1]");
1805  RNA_def_property_ui_text(prop, "Saturation", "Color Saturation");
1806  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1807 
1808  prop = RNA_def_property(srna, "value", PROP_FLOAT, PROP_NONE);
1809  RNA_def_property_range(prop, 0.0, FLT_MAX);
1810  RNA_def_property_ui_range(prop, 0.0, 2.0, 0.1, 3);
1811  RNA_def_property_float_sdna(prop, NULL, "hsv[2]");
1812  RNA_def_property_ui_text(prop, "Value", "Color Value");
1813  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1814 
1815  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1816  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1817  RNA_def_property_range(prop, 0, 100);
1818  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1819  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1820 
1821  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1823  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1824  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1825 
1826  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1828  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1829  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1830 
1831  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1833  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1834  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1835 
1836  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1837  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1838  RNA_def_property_range(prop, 0, 100);
1839  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1840  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1841 
1842  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1844  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1845  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1846 
1847  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1850  prop, "Custom Curve", "Use a custom curve to define color effect along the strokes");
1851  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1852 
1853  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1854  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1855  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1856  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1857 
1859 }
1860 
1862 {
1863  StructRNA *srna;
1864  PropertyRNA *prop;
1865 
1866  srna = RNA_def_struct(brna, "OpacityGpencilModifier", "GpencilModifier");
1867  RNA_def_struct_ui_text(srna, "Opacity Modifier", "Opacity of Strokes modifier");
1868  RNA_def_struct_sdna(srna, "OpacityGpencilModifierData");
1869  RNA_def_struct_ui_icon(srna, ICON_MOD_OPACITY);
1870 
1872 
1873  prop = RNA_def_property(srna, "modify_color", PROP_ENUM, PROP_NONE);
1875  RNA_def_property_ui_text(prop, "Mode", "Set what colors of the stroke are affected");
1876  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1877 
1878  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1879  RNA_def_property_string_sdna(prop, NULL, "layername");
1880  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1881  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1882 
1883  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1886  NULL,
1887  "rna_OpacityGpencilModifier_material_set",
1888  NULL,
1889  "rna_GpencilModifier_material_poll");
1890  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
1891  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1892 
1893  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
1894  RNA_def_property_string_sdna(prop, NULL, "vgname");
1895  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
1896  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_OpacityGpencilModifier_vgname_set");
1897  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1898 
1899  prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
1900  RNA_def_property_float_sdna(prop, NULL, "factor");
1901  RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 2);
1903  prop, NULL, "rna_GpencilOpacity_max_set", "rna_GpencilOpacity_range");
1904  RNA_def_property_ui_text(prop, "Opacity Factor", "Factor of Opacity");
1905  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1906 
1907  prop = RNA_def_property(srna, "hardness", PROP_FLOAT, PROP_NONE);
1908  RNA_def_property_float_sdna(prop, NULL, "hardeness");
1909  RNA_def_property_range(prop, 0.0, FLT_MAX);
1910  RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 0.1, 2);
1911  RNA_def_property_ui_text(prop, "Hardness", "Factor of stroke hardness");
1912  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1913 
1914  prop = RNA_def_property(srna, "use_weight_factor", PROP_BOOLEAN, PROP_NONE);
1916  RNA_def_property_ui_text(prop, "Weighted", "Use weight to modulate effect");
1917  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1918 
1919  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
1920  RNA_def_property_int_sdna(prop, NULL, "pass_index");
1921  RNA_def_property_range(prop, 0, 100);
1922  RNA_def_property_ui_text(prop, "Pass", "Pass index");
1923  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1924 
1925  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
1927  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
1928  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1929 
1930  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
1932  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
1933  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1934 
1935  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
1937  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1938  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1939 
1940  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
1942  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
1943  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1944 
1945  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
1946  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
1947  RNA_def_property_range(prop, 0, 100);
1948  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
1949  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1950 
1951  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
1953  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
1954  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1955 
1956  prop = RNA_def_property(srna, "use_normalized_opacity", PROP_BOOLEAN, PROP_NONE);
1958  RNA_def_property_ui_text(prop, "Uniform Opacity", "Replace the stroke opacity");
1959  RNA_def_property_update(prop, 0, "rna_GpencilModifier_opacity_update");
1960 
1961  prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
1964  prop, "Custom Curve", "Use a custom curve to define opacity effect along the strokes");
1965  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1966 
1967  prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE);
1968  RNA_def_property_pointer_sdna(prop, NULL, "curve_intensity");
1969  RNA_def_property_ui_text(prop, "Curve", "Custom curve to apply effect");
1970  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1971 
1973 }
1974 
1976 {
1977  StructRNA *srna;
1978  PropertyRNA *prop;
1979 
1980  srna = RNA_def_struct(brna, "ArrayGpencilModifier", "GpencilModifier");
1981  RNA_def_struct_ui_text(srna, "Instance Modifier", "Create grid of duplicate instances");
1982  RNA_def_struct_sdna(srna, "ArrayGpencilModifierData");
1983  RNA_def_struct_ui_icon(srna, ICON_MOD_ARRAY);
1984 
1986 
1987  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
1988  RNA_def_property_string_sdna(prop, NULL, "layername");
1989  RNA_def_property_ui_text(prop, "Layer", "Layer name");
1990  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
1991 
1992  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
1995  NULL,
1996  "rna_ArrayGpencilModifier_material_set",
1997  NULL,
1998  "rna_GpencilModifier_material_poll");
1999  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2000  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2001 
2002  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2003  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2004  RNA_def_property_range(prop, 0, 100);
2005  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2006  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2007 
2008  prop = RNA_def_property(srna, "count", PROP_INT, PROP_NONE);
2009  RNA_def_property_range(prop, 1, SHRT_MAX);
2010  RNA_def_property_ui_range(prop, 1, 50, 1, -1);
2011  RNA_def_property_ui_text(prop, "Count", "Number of items");
2012  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2013 
2014  /* Offset parameters */
2015  prop = RNA_def_property(srna, "offset_object", PROP_POINTER, PROP_NONE);
2016  RNA_def_property_pointer_sdna(prop, NULL, "object");
2018  prop,
2019  "Object Offset",
2020  "Use the location and rotation of another object to determine the distance and "
2021  "rotational change between arrayed items");
2023  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2024 
2025  prop = RNA_def_property(srna, "constant_offset", PROP_FLOAT, PROP_TRANSLATION);
2026  RNA_def_property_float_sdna(prop, NULL, "offset");
2027  RNA_def_property_ui_text(prop, "Constant Offset", "Value for the distance between items");
2028  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
2029  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2030 
2031  prop = RNA_def_property(srna, "relative_offset", PROP_FLOAT, PROP_XYZ);
2032  RNA_def_property_float_sdna(prop, NULL, "shift");
2034  prop,
2035  "Relative Offset",
2036  "The size of the geometry will determine the distance between arrayed items");
2037  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
2038  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2039 
2040  prop = RNA_def_property(srna, "random_offset", PROP_FLOAT, PROP_XYZ);
2041  RNA_def_property_float_sdna(prop, NULL, "rnd_offset");
2042  RNA_def_property_ui_text(prop, "Random Offset", "Value for changes in location");
2043  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
2044  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2045 
2046  prop = RNA_def_property(srna, "random_rotation", PROP_FLOAT, PROP_EULER);
2047  RNA_def_property_float_sdna(prop, NULL, "rnd_rot");
2048  RNA_def_property_ui_text(prop, "Random Rotation", "Value for changes in rotation");
2049  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
2050  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2051 
2052  prop = RNA_def_property(srna, "random_scale", PROP_FLOAT, PROP_XYZ);
2053  RNA_def_property_float_sdna(prop, NULL, "rnd_scale");
2054  RNA_def_property_ui_text(prop, "Scale", "Value for changes in scale");
2055  RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
2056  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2057 
2058  prop = RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
2059  RNA_def_property_ui_text(prop, "Seed", "Random seed");
2060  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2061 
2062  prop = RNA_def_property(srna, "replace_material", PROP_INT, PROP_NONE);
2063  RNA_def_property_int_sdna(prop, NULL, "mat_rpl");
2064  RNA_def_property_range(prop, 0, SHRT_MAX);
2066  prop,
2067  "Material",
2068  "Index of the material used for generated strokes (0 keep original material)");
2069  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2070 
2071  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2073  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2074  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2075 
2076  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2078  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2079  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2080 
2081  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2083  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2084  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2085 
2086  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2087  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2088  RNA_def_property_range(prop, 0, 100);
2089  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2090  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2091 
2092  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2094  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2095  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2096 
2097  prop = RNA_def_property(srna, "use_constant_offset", PROP_BOOLEAN, PROP_NONE);
2099  RNA_def_property_ui_text(prop, "Offset", "Enable offset");
2100  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2101 
2102  prop = RNA_def_property(srna, "use_object_offset", PROP_BOOLEAN, PROP_NONE);
2104  RNA_def_property_ui_text(prop, "Object Offset", "Enable object offset");
2105  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2106 
2107  prop = RNA_def_property(srna, "use_relative_offset", PROP_BOOLEAN, PROP_NONE);
2109  RNA_def_property_ui_text(prop, "Shift", "Enable shift");
2110  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2111 
2112  prop = RNA_def_property(srna, "use_uniform_random_scale", PROP_BOOLEAN, PROP_NONE);
2115  prop, "Uniform Scale", "Use the same random seed for each scale axis for a uniform scale");
2116  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2117 
2119 }
2120 
2122 {
2123  static EnumPropertyItem prop_gpencil_build_mode_items[] = {
2125  "SEQUENTIAL",
2126  0,
2127  "Sequential",
2128  "Strokes appear/disappear one after the other, but only a single one changes at a time"},
2130  "CONCURRENT",
2131  0,
2132  "Concurrent",
2133  "Multiple strokes appear/disappear at once"},
2135  "ADDITIVE",
2136  0,
2137  "Additive",
2138  "Builds only new strokes (assuming 'additive' drawing)"},
2139  {0, NULL, 0, NULL, NULL},
2140  };
2141 
2142  static EnumPropertyItem prop_gpencil_build_transition_items[] = {
2144  "GROW",
2145  0,
2146  "Grow",
2147  "Show points in the order they occur in each stroke "
2148  "(e.g. for animating lines being drawn)"},
2150  "SHRINK",
2151  0,
2152  "Shrink",
2153  "Hide points from the end of each stroke to the start "
2154  "(e.g. for animating lines being erased)"},
2156  "FADE", /* "Fade" is the original id string kept for compatibility purpose. */
2157  0,
2158  "Vanish",
2159  "Hide points in the order they occur in each stroke "
2160  "(e.g. for animating ink fading or vanishing after getting drawn)"},
2161  {0, NULL, 0, NULL, NULL},
2162  };
2163 
2164  static EnumPropertyItem prop_gpencil_build_time_align_items[] = {
2166  "START",
2167  0,
2168  "Align Start",
2169  "All strokes start at same time (i.e. short strokes finish earlier)"},
2171  "END",
2172  0,
2173  "Align End",
2174  "All strokes end at same time (i.e. short strokes start later)"},
2175  {0, NULL, 0, NULL, NULL},
2176  };
2177 
2178  StructRNA *srna;
2179  PropertyRNA *prop;
2180 
2181  srna = RNA_def_struct(brna, "BuildGpencilModifier", "GpencilModifier");
2182  RNA_def_struct_ui_text(srna, "Build Modifier", "Animate strokes appearing and disappearing");
2183  RNA_def_struct_sdna(srna, "BuildGpencilModifierData");
2184  RNA_def_struct_ui_icon(srna, ICON_MOD_BUILD);
2185 
2187 
2188  /* Mode */
2189  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
2190  RNA_def_property_enum_items(prop, prop_gpencil_build_mode_items);
2191  RNA_def_property_ui_text(prop, "Mode", "How many strokes are being animated at a time");
2192  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2193 
2194  /* Direction */
2195  prop = RNA_def_property(srna, "transition", PROP_ENUM, PROP_NONE);
2196  RNA_def_property_enum_items(prop, prop_gpencil_build_transition_items);
2198  prop, "Transition", "How are strokes animated (i.e. are they appearing or disappearing)");
2199  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2200 
2201  /* Transition Onset Delay + Length */
2202  prop = RNA_def_property(srna, "start_delay", PROP_FLOAT, PROP_NONE);
2203  RNA_def_property_float_sdna(prop, NULL, "start_delay");
2205  prop,
2206  "Start Delay",
2207  "Number of frames after each GP keyframe before the modifier has any effect");
2209  RNA_def_property_ui_range(prop, 0, 200, 1, -1);
2210  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2211 
2212  prop = RNA_def_property(srna, "length", PROP_FLOAT, PROP_NONE);
2213  RNA_def_property_float_sdna(prop, NULL, "length");
2215  "Length",
2216  "Maximum number of frames that the build effect can run for "
2217  "(unless another GP keyframe occurs before this time has elapsed)");
2219  RNA_def_property_ui_range(prop, 1, 1000, 1, -1);
2220  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2221 
2222  /* Concurrent Mode Settings */
2223  prop = RNA_def_property(srna, "concurrent_time_alignment", PROP_ENUM, PROP_NONE);
2224  RNA_def_property_enum_sdna(prop, NULL, "time_alignment");
2225  RNA_def_property_enum_items(prop, prop_gpencil_build_time_align_items);
2227  prop, "Time Alignment", "When should strokes start to appear/disappear");
2228  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2229 
2230  /* Time Limits */
2231  prop = RNA_def_property(srna, "use_restrict_frame_range", PROP_BOOLEAN, PROP_NONE);
2234  prop, "Restrict Frame Range", "Only modify strokes during the specified frame range");
2235  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2236 
2237  /* Use percentage */
2238  prop = RNA_def_property(srna, "use_percentage", PROP_BOOLEAN, PROP_NONE);
2241  prop, "Restrict Visible Points", "Use a percentage factor to determine the visible points");
2242  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2243 
2244  /* Percentage factor. */
2245  prop = RNA_def_property(srna, "percentage_factor", PROP_FLOAT, PROP_FACTOR);
2246  RNA_def_property_float_sdna(prop, NULL, "percentage_fac");
2247  RNA_def_property_ui_text(prop, "Factor", "Defines how much of the stroke is visible");
2248  RNA_def_property_range(prop, 0.0f, 1.0f);
2249  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2250 
2251  prop = RNA_def_property(srna, "frame_start", PROP_FLOAT, PROP_NONE);
2252  RNA_def_property_float_sdna(prop, NULL, "start_frame");
2254  prop, "Start Frame", "Start Frame (when Restrict Frame Range is enabled)");
2256  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2257 
2258  prop = RNA_def_property(srna, "frame_end", PROP_FLOAT, PROP_NONE);
2259  RNA_def_property_float_sdna(prop, NULL, "end_frame");
2260  RNA_def_property_ui_text(prop, "End Frame", "End Frame (when Restrict Frame Range is enabled)");
2262  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2263 
2264  prop = RNA_def_property(srna, "use_fading", PROP_BOOLEAN, PROP_NONE);
2266  RNA_def_property_ui_text(prop, "Use Fading", "Fade out strokes instead of directly cutting off");
2267  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2268 
2269  prop = RNA_def_property(srna, "fade_factor", PROP_FLOAT, PROP_FACTOR);
2270  RNA_def_property_float_sdna(prop, NULL, "fade_fac");
2271  RNA_def_property_ui_text(prop, "Fade Factor", "Defines how much of the stroke is fading in/out");
2272  RNA_def_property_range(prop, 0.0f, 1.0f);
2273  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2274 
2275  prop = RNA_def_property(srna, "target_vertex_group", PROP_STRING, PROP_NONE);
2276  RNA_def_property_string_sdna(prop, NULL, "target_vgname");
2277  RNA_def_property_ui_text(prop, "Vertex Group", "Output Vertex group");
2278  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_BuildGpencilModifier_target_vgname_set");
2279  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2280 
2281  prop = RNA_def_property(srna, "fade_opacity_strength", PROP_FLOAT, PROP_FACTOR);
2282  RNA_def_property_float_sdna(prop, NULL, "fade_opacity_strength");
2284  prop, "Opacity Strength", "How much strength fading applies on top of stroke opacity");
2285  RNA_def_property_range(prop, 0.0f, 1.0f);
2286  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2287 
2288  prop = RNA_def_property(srna, "fade_thickness_strength", PROP_FLOAT, PROP_FACTOR);
2289  RNA_def_property_float_sdna(prop, NULL, "fade_thickness_strength");
2291  prop, "Thickness Strength", "How much strength fading applies on top of stroke thickness");
2292  RNA_def_property_range(prop, 0.0f, 1.0f);
2293  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2294 
2295  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2296  RNA_def_property_ui_text(prop, "Object", "Object used as build starting position");
2297  RNA_def_property_pointer_funcs(prop, NULL, "rna_BuildGpencilModifier_object_set", NULL, NULL);
2299  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2300 
2301  /* Filters - Layer */
2302  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2303  RNA_def_property_string_sdna(prop, NULL, "layername");
2304  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2305  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2306 
2307  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2309  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2310  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2311 
2312  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2313  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2314  RNA_def_property_range(prop, 0, 100);
2315  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2316  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2317 
2318  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2320  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2321  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2322 
2324 }
2325 
2327 {
2328  StructRNA *srna;
2329  PropertyRNA *prop;
2330 
2331  srna = RNA_def_struct(brna, "LatticeGpencilModifier", "GpencilModifier");
2333  srna, "Lattice Modifier", "Change stroke using lattice to deform modifier");
2334  RNA_def_struct_sdna(srna, "LatticeGpencilModifierData");
2335  RNA_def_struct_ui_icon(srna, ICON_MOD_LATTICE);
2336 
2338 
2339  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2340  RNA_def_property_string_sdna(prop, NULL, "layername");
2341  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2342  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2343 
2344  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2347  NULL,
2348  "rna_LatticeGpencilModifier_material_set",
2349  NULL,
2350  "rna_GpencilModifier_material_poll");
2351  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2352  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2353 
2354  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2355  RNA_def_property_string_sdna(prop, NULL, "vgname");
2356  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
2357  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_LatticeGpencilModifier_vgname_set");
2358  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2359 
2360  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2361  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2362  RNA_def_property_range(prop, 0, 100);
2363  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2364  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2365 
2366  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2368  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2369  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2370 
2371  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2373  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2374  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2375 
2376  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2378  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2379  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2380 
2381  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
2383  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
2384  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2385 
2386  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2387  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2388  RNA_def_property_range(prop, 0, 100);
2389  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2390  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2391 
2392  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2394  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2395  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2396 
2397  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2398  RNA_def_property_ui_text(prop, "Object", "Lattice object to deform with");
2400  prop, NULL, "rna_LatticeGpencilModifier_object_set", NULL, "rna_Lattice_object_poll");
2402  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2403 
2404  prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
2405  RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
2406  RNA_def_property_ui_range(prop, 0, 1, 10, 2);
2407  RNA_def_property_ui_text(prop, "Strength", "Strength of modifier effect");
2408  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2409 
2411 }
2412 
2414 {
2415  StructRNA *srna;
2416  PropertyRNA *prop;
2417 
2418  srna = RNA_def_struct(brna, "MirrorGpencilModifier", "GpencilModifier");
2419  RNA_def_struct_ui_text(srna, "Mirror Modifier", "Create mirroring strokes");
2420  RNA_def_struct_sdna(srna, "MirrorGpencilModifierData");
2421  RNA_def_struct_ui_icon(srna, ICON_MOD_MIRROR);
2422 
2424 
2425  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2426  RNA_def_property_string_sdna(prop, NULL, "layername");
2427  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2428  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2429 
2430  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2433  NULL,
2434  "rna_MirrorGpencilModifier_material_set",
2435  NULL,
2436  "rna_GpencilModifier_material_poll");
2437  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2438  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2439 
2440  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2441  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2442  RNA_def_property_range(prop, 0, 100);
2443  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2444  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2445 
2446  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2448  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2449  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2450 
2451  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2453  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2454  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2455 
2456  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2458  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2459  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2460 
2461  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2462  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2463  RNA_def_property_range(prop, 0, 100);
2464  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2465  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2466 
2467  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2469  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2470  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2471 
2472  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2473  RNA_def_property_ui_text(prop, "Object", "Object used as center");
2474  RNA_def_property_pointer_funcs(prop, NULL, "rna_MirrorGpencilModifier_object_set", NULL, NULL);
2476  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2477 
2478  prop = RNA_def_property(srna, "use_clip", PROP_BOOLEAN, PROP_NONE);
2480  RNA_def_property_ui_text(prop, "Clip", "Clip points");
2481  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2482 
2483  prop = RNA_def_property(srna, "use_axis_x", PROP_BOOLEAN, PROP_NONE);
2485  RNA_def_property_ui_text(prop, "X", "Mirror the X axis");
2486  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2487 
2488  prop = RNA_def_property(srna, "use_axis_y", PROP_BOOLEAN, PROP_NONE);
2490  RNA_def_property_ui_text(prop, "Y", "Mirror the Y axis");
2491  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2492 
2493  prop = RNA_def_property(srna, "use_axis_z", PROP_BOOLEAN, PROP_NONE);
2495  RNA_def_property_ui_text(prop, "Z", "Mirror the Z axis");
2496  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2497 
2499 }
2500 
2502 {
2503  StructRNA *srna;
2504  PropertyRNA *prop;
2505 
2506  srna = RNA_def_struct(brna, "HookGpencilModifier", "GpencilModifier");
2508  srna, "Hook Modifier", "Hook modifier to modify the location of stroke points");
2509  RNA_def_struct_sdna(srna, "HookGpencilModifierData");
2510  RNA_def_struct_ui_icon(srna, ICON_HOOK);
2511 
2513 
2514  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2516  prop, "Object", "Parent Object for hook, also recalculates and clears offset");
2518  RNA_def_property_pointer_funcs(prop, NULL, "rna_HookGpencilModifier_object_set", NULL, NULL);
2519  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2520 
2521  prop = RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE);
2522  RNA_def_property_string_sdna(prop, NULL, "subtarget");
2524  prop,
2525  "Sub-Target",
2526  "Name of Parent Bone for hook (if applicable), also recalculates and clears offset");
2527  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2528 
2529  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2530  RNA_def_property_string_sdna(prop, NULL, "layername");
2531  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2532  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2533 
2534  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2537  NULL,
2538  "rna_HookGpencilModifier_material_set",
2539  NULL,
2540  "rna_GpencilModifier_material_poll");
2541  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2542  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2543 
2544  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2545  RNA_def_property_string_sdna(prop, NULL, "vgname");
2546  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
2547  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_HookGpencilModifier_vgname_set");
2548  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2549 
2550  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2551  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2552  RNA_def_property_range(prop, 0, 100);
2553  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2554  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2555 
2556  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2558  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2559  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2560 
2561  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2563  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2564  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2565 
2566  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2568  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2569  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2570 
2571  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
2573  RNA_def_property_ui_text(prop, "Inverse Vertex Group", "Inverse filter");
2574  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2575 
2576  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2577  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2578  RNA_def_property_range(prop, 0, 100);
2579  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2580  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2581 
2582  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2584  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2585  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2586 
2587  prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
2588  RNA_def_property_float_sdna(prop, NULL, "force");
2589  RNA_def_property_range(prop, 0, 1);
2590  RNA_def_property_ui_text(prop, "Strength", "Relative force of the hook");
2591  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2592 
2593  prop = RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE);
2594  RNA_def_property_enum_items(prop, modifier_gphook_falloff_items); /* share the enum */
2595  RNA_def_property_ui_text(prop, "Falloff Type", "");
2597  BLT_I18NCONTEXT_ID_CURVE_LEGACY); /* Abusing id_curve :/ */
2598  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2599 
2600  prop = RNA_def_property(srna, "falloff_radius", PROP_FLOAT, PROP_DISTANCE);
2601  RNA_def_property_float_sdna(prop, NULL, "falloff");
2602  RNA_def_property_range(prop, 0, FLT_MAX);
2603  RNA_def_property_ui_range(prop, 0, 100, 100, 2);
2605  prop, "Radius", "If not zero, the distance from the hook where influence ends");
2606  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2607 
2608  prop = RNA_def_property(srna, "falloff_curve", PROP_POINTER, PROP_NONE);
2609  RNA_def_property_pointer_sdna(prop, NULL, "curfalloff");
2610  RNA_def_property_ui_text(prop, "Falloff Curve", "Custom light falloff curve");
2611  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2612 
2613  prop = RNA_def_property(srna, "center", PROP_FLOAT, PROP_NONE);
2614  RNA_def_property_float_sdna(prop, NULL, "cent");
2615  RNA_def_property_ui_text(prop, "Hook Center", "");
2616  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2617 
2618  prop = RNA_def_property(srna, "matrix_inverse", PROP_FLOAT, PROP_MATRIX);
2619  RNA_def_property_float_sdna(prop, NULL, "parentinv");
2622  prop, "Matrix", "Reverse the transformation between this object and its target");
2623  RNA_def_property_update(prop, NC_OBJECT | ND_TRANSFORM, "rna_GpencilModifier_update");
2624 
2625  prop = RNA_def_property(srna, "use_falloff_uniform", PROP_BOOLEAN, PROP_NONE);
2627  RNA_def_property_ui_text(prop, "Uniform Falloff", "Compensate for non-uniform object scale");
2628  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2629 
2631 }
2632 
2634 {
2635  StructRNA *srna;
2636  PropertyRNA *prop;
2637 
2638  srna = RNA_def_struct(brna, "ArmatureGpencilModifier", "GpencilModifier");
2640  srna, "Armature Modifier", "Change stroke using armature to deform modifier");
2641  RNA_def_struct_sdna(srna, "ArmatureGpencilModifierData");
2642  RNA_def_struct_ui_icon(srna, ICON_MOD_ARMATURE);
2643 
2645 
2646  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2647  RNA_def_property_ui_text(prop, "Object", "Armature object to deform with");
2649  prop, NULL, "rna_ArmatureGpencilModifier_object_set", NULL, "rna_Armature_object_poll");
2651  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2652 
2653  prop = RNA_def_property(srna, "use_bone_envelopes", PROP_BOOLEAN, PROP_NONE);
2654  RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_ENVELOPE);
2655  RNA_def_property_ui_text(prop, "Use Bone Envelopes", "Bind Bone envelopes to armature modifier");
2656  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2657 
2658  prop = RNA_def_property(srna, "use_vertex_groups", PROP_BOOLEAN, PROP_NONE);
2659  RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_VGROUP);
2660  RNA_def_property_ui_text(prop, "Use Vertex Groups", "Bind vertex groups to armature modifier");
2661  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2662 
2663  prop = RNA_def_property(srna, "use_deform_preserve_volume", PROP_BOOLEAN, PROP_NONE);
2666  prop, "Preserve Volume", "Deform rotation interpolation with quaternions");
2667  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2668 
2669  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2670  RNA_def_property_string_sdna(prop, NULL, "vgname");
2672  prop,
2673  "Vertex Group",
2674  "Name of Vertex Group which determines influence of modifier per point");
2675  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ArmatureGpencilModifier_vgname_set");
2676  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2677 
2678  prop = RNA_def_property(srna, "invert_vertex_group", PROP_BOOLEAN, PROP_NONE);
2680  RNA_def_property_ui_text(prop, "Invert", "Invert vertex group influence");
2681  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2682 
2684 }
2685 
2687 {
2688  StructRNA *srna;
2689  PropertyRNA *prop;
2690 
2691  srna = RNA_def_struct(brna, "MultiplyGpencilModifier", "GpencilModifier");
2692  RNA_def_struct_ui_text(srna, "Multiply Modifier", "Generate multiple strokes from one stroke");
2693  RNA_def_struct_sdna(srna, "MultiplyGpencilModifierData");
2694  RNA_def_struct_ui_icon(srna, ICON_GP_MULTIFRAME_EDITING);
2695 
2697 
2698  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2699  RNA_def_property_string_sdna(prop, NULL, "layername");
2700  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2701  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2702 
2703  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2706  NULL,
2707  "rna_MultiplyGpencilModifier_material_set",
2708  NULL,
2709  "rna_GpencilModifier_material_poll");
2710  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2711  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2712 
2713  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2714  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2715  RNA_def_property_range(prop, 0, 100);
2716  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2717  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2718 
2719  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2721  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2722  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2723 
2724  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2726  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2727  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2728 
2729  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2731  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2732  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2733 
2734  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2735  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2736  RNA_def_property_range(prop, 0, 100);
2737  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2738  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2739 
2740  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2742  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2743  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2744 
2745  prop = RNA_def_property(srna, "use_fade", PROP_BOOLEAN, PROP_NONE);
2747  RNA_def_property_ui_text(prop, "Fade", "Fade the stroke thickness for each generated stroke");
2748  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2749 
2750  prop = RNA_def_property(srna, "duplicates", PROP_INT, PROP_NONE);
2751  RNA_def_property_int_sdna(prop, NULL, "duplications");
2752  RNA_def_property_range(prop, 0, 999);
2753  RNA_def_property_ui_range(prop, 1, 10, 1, 1);
2754  RNA_def_property_ui_text(prop, "Duplicates", "How many copies of strokes be displayed");
2755  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2756 
2757  prop = RNA_def_property(srna, "distance", PROP_FLOAT, PROP_DISTANCE);
2758  RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
2759  RNA_def_property_ui_range(prop, 0.0, 1.0, 0.01, 3);
2760  RNA_def_property_ui_text(prop, "Distance", "Distance of duplications");
2761  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2762 
2763  prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
2764  RNA_def_property_ui_range(prop, -1, 1, 0.01, 3);
2765  RNA_def_property_ui_text(prop, "Offset", "Offset of duplicates. -1 to 1: inner to outer");
2766  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2767 
2768  prop = RNA_def_property(srna, "fading_thickness", PROP_FLOAT, PROP_NONE);
2769  RNA_def_property_range(prop, 0, 1);
2770  RNA_def_property_ui_text(prop, "Thickness", "Fade influence of stroke's thickness");
2771  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2772 
2773  prop = RNA_def_property(srna, "fading_opacity", PROP_FLOAT, PROP_NONE);
2774  RNA_def_property_range(prop, 0, 1);
2775  RNA_def_property_ui_text(prop, "Opacity", "Fade influence of stroke's opacity");
2776  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2777 
2778  prop = RNA_def_property(srna, "fading_center", PROP_FLOAT, PROP_FACTOR);
2779  RNA_def_property_range(prop, 0, 1);
2780  RNA_def_property_ui_text(prop, "Center", "Fade center");
2781  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2782 
2784 }
2785 
2787 {
2788  StructRNA *srna;
2789  PropertyRNA *prop;
2790 
2791  static const EnumPropertyItem fit_type_items[] = {
2793  "CONSTANT_LENGTH",
2794  0,
2795  "Constant Length",
2796  "Keep the texture at a constant length regardless of the length of each stroke"},
2798  "FIT_STROKE",
2799  0,
2800  "Stroke Length",
2801  "Scale the texture to fit the length of each stroke"},
2802  {0, NULL, 0, NULL, NULL},
2803  };
2804 
2805  static const EnumPropertyItem mode_items[] = {
2806  {STROKE, "STROKE", 0, "Stroke", "Manipulate only stroke texture coordinates"},
2807  {FILL, "FILL", 0, "Fill", "Manipulate only fill texture coordinates"},
2808  {STROKE_AND_FILL,
2809  "STROKE_AND_FILL",
2810  0,
2811  "Stroke & Fill",
2812  "Manipulate both stroke and fill texture coordinates"},
2813  {0, NULL, 0, NULL, NULL},
2814  };
2815 
2816  srna = RNA_def_struct(brna, "TextureGpencilModifier", "GpencilModifier");
2818  srna, "Texture Modifier", "Transform stroke texture coordinates Modifier");
2819  RNA_def_struct_sdna(srna, "TextureGpencilModifierData");
2820  RNA_def_struct_ui_icon(srna, ICON_MOD_UVPROJECT);
2821 
2823 
2824  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2825  RNA_def_property_string_sdna(prop, NULL, "layername");
2826  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2827  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2828 
2829  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
2831  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
2832  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2833 
2834  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2837  NULL,
2838  "rna_TextureGpencilModifier_material_set",
2839  NULL,
2840  "rna_GpencilModifier_material_poll");
2841  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2842  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2843 
2844  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
2846  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
2847  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2848 
2849  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2850  RNA_def_property_string_sdna(prop, NULL, "vgname");
2851  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
2852  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_TextureGpencilModifier_vgname_set");
2853  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2854 
2855  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
2857  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
2858  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2859 
2860  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
2861  RNA_def_property_int_sdna(prop, NULL, "pass_index");
2862  RNA_def_property_range(prop, 0, 100);
2863  RNA_def_property_ui_text(prop, "Pass", "Pass index");
2864  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2865 
2866  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
2868  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2869  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2870 
2871  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
2872  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
2873  RNA_def_property_range(prop, 0, 100);
2874  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
2875  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2876 
2877  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
2879  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
2880  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2881 
2882  prop = RNA_def_property(srna, "uv_offset", PROP_FLOAT, PROP_NONE);
2883  RNA_def_property_float_sdna(prop, NULL, "uv_offset");
2884  RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
2885  RNA_def_property_ui_range(prop, -100.0, 100.0, 0.1, 3);
2886  RNA_def_property_ui_text(prop, "UV Offset", "Offset value to add to stroke UVs");
2887  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2888 
2889  prop = RNA_def_property(srna, "uv_scale", PROP_FLOAT, PROP_NONE);
2890  RNA_def_property_float_sdna(prop, NULL, "uv_scale");
2891  RNA_def_property_range(prop, 0.0, FLT_MAX);
2892  RNA_def_property_ui_range(prop, 0.0, 100.0, 0.1, 3);
2893  RNA_def_property_ui_text(prop, "UV Scale", "Factor to scale the UVs");
2894  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2895 
2896  /* Rotation of Dot Texture. */
2897  prop = RNA_def_property(srna, "alignment_rotation", PROP_FLOAT, PROP_ANGLE);
2898  RNA_def_property_float_sdna(prop, NULL, "alignment_rotation");
2899  RNA_def_property_float_default(prop, 0.0f);
2900  RNA_def_property_range(prop, -DEG2RADF(90.0f), DEG2RADF(90.0f));
2901  RNA_def_property_ui_range(prop, -DEG2RADF(90.0f), DEG2RADF(90.0f), 10, 3);
2903  prop, "Rotation", "Additional rotation applied to dots and square strokes");
2904  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2905 
2906  prop = RNA_def_property(srna, "fill_rotation", PROP_FLOAT, PROP_ANGLE);
2907  RNA_def_property_float_sdna(prop, NULL, "fill_rotation");
2908  RNA_def_property_ui_text(prop, "Fill Rotation", "Additional rotation of the fill UV");
2909  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2910 
2911  prop = RNA_def_property(srna, "fill_offset", PROP_FLOAT, PROP_COORDS);
2912  RNA_def_property_float_sdna(prop, NULL, "fill_offset");
2913  RNA_def_property_array(prop, 2);
2914  RNA_def_property_ui_text(prop, "Fill Offset", "Additional offset of the fill UV");
2915  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2916 
2917  prop = RNA_def_property(srna, "fill_scale", PROP_FLOAT, PROP_COORDS);
2918  RNA_def_property_float_sdna(prop, NULL, "fill_scale");
2919  RNA_def_property_range(prop, 0.01f, 100.0f);
2920  RNA_def_property_ui_text(prop, "Fill Scale", "Additional scale of the fill UV");
2921  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2922 
2923  prop = RNA_def_property(srna, "fit_method", PROP_ENUM, PROP_NONE);
2924  RNA_def_property_enum_sdna(prop, NULL, "fit_method");
2925  RNA_def_property_enum_items(prop, fit_type_items);
2926  RNA_def_property_ui_text(prop, "Fit Method", "");
2927  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2928 
2929  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
2930  RNA_def_property_enum_sdna(prop, NULL, "mode");
2932  RNA_def_property_ui_text(prop, "Mode", "");
2933  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2934 
2936 }
2937 
2939 {
2940  StructRNA *srna;
2941  PropertyRNA *prop;
2942 
2943  srna = RNA_def_struct(brna, "WeightProxGpencilModifier", "GpencilModifier");
2944  RNA_def_struct_ui_text(srna, "Weight Modifier Proximity", "Calculate Vertex Weight dynamically");
2945  RNA_def_struct_sdna(srna, "WeightProxGpencilModifierData");
2946  RNA_def_struct_ui_icon(srna, ICON_MOD_VERTEX_WEIGHT);
2947 
2949 
2950  prop = RNA_def_property(srna, "target_vertex_group", PROP_STRING, PROP_NONE);
2951  RNA_def_property_string_sdna(prop, NULL, "target_vgname");
2952  RNA_def_property_ui_text(prop, "Vertex Group", "Output Vertex group");
2954  prop, NULL, NULL, "rna_WeightProxGpencilModifier_target_vgname_set");
2955  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2956 
2957  prop = RNA_def_property(srna, "use_multiply", PROP_BOOLEAN, PROP_NONE);
2960  prop,
2961  "Multiply Weights",
2962  "Multiply the calculated weights with the existing values in the vertex group");
2963  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2964 
2965  prop = RNA_def_property(srna, "use_invert_output", PROP_BOOLEAN, PROP_NONE);
2967  RNA_def_property_ui_text(prop, "Invert", "Invert output weight values");
2968  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2969 
2970  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
2971  RNA_def_property_string_sdna(prop, NULL, "layername");
2972  RNA_def_property_ui_text(prop, "Layer", "Layer name");
2973  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2974 
2975  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
2978  NULL,
2979  "rna_WeightProxGpencilModifier_material_set",
2980  NULL,
2981  "rna_GpencilModifier_material_poll");
2982  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
2983  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2984 
2985  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
2986  RNA_def_property_string_sdna(prop, NULL, "vgname");
2987  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
2988  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_WeightProxGpencilModifier_vgname_set");
2989  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
2990 
2991  /* Distance reference object */
2992  prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
2993  RNA_def_property_ui_text(prop, "Target Object", "Object used as distance reference");
2995  prop, NULL, "rna_WeightProxGpencilModifier_object_set", NULL, NULL);
2997  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
2998 
2999  prop = RNA_def_property(srna, "distance_start", PROP_FLOAT, PROP_DISTANCE);
3000  RNA_def_property_float_sdna(prop, NULL, "dist_start");
3001  RNA_def_property_range(prop, 0.0, FLT_MAX);
3002  RNA_def_property_ui_range(prop, 0.0, 1000.0, 1.0, 2);
3003  RNA_def_property_ui_text(prop, "Lowest", "Distance mapping to 0.0 weight");
3004  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3005 
3006  prop = RNA_def_property(srna, "minimum_weight", PROP_FLOAT, PROP_FACTOR);
3007  RNA_def_property_float_sdna(prop, NULL, "min_weight");
3008  RNA_def_property_ui_text(prop, "Minimum", "Minimum value for vertex weight");
3009  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3010 
3011  prop = RNA_def_property(srna, "distance_end", PROP_FLOAT, PROP_DISTANCE);
3012  RNA_def_property_float_sdna(prop, NULL, "dist_end");
3013  RNA_def_property_range(prop, 0.0, FLT_MAX);
3014  RNA_def_property_ui_range(prop, 0.0, 1000.0, 1.0, 2);
3015  RNA_def_property_ui_text(prop, "Highest", "Distance mapping to 1.0 weight");
3016  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3017 
3018  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
3019  RNA_def_property_int_sdna(prop, NULL, "pass_index");
3020  RNA_def_property_range(prop, 0, 100);
3021  RNA_def_property_ui_text(prop, "Pass", "Pass index");
3022  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3023 
3024  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
3026  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
3027  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3028 
3029  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
3031  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
3032  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3033 
3034  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
3036  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
3037  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3038 
3039  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
3041  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
3042  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3043 
3044  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
3045  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
3046  RNA_def_property_range(prop, 0, 100);
3047  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
3048  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3049 
3050  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
3052  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
3053  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3054 
3056 }
3057 
3059 {
3060  StructRNA *srna;
3061  PropertyRNA *prop;
3062 
3063  static const EnumPropertyItem axis_items[] = {
3064  {0, "X", 0, "X", ""},
3065  {1, "Y", 0, "Y", ""},
3066  {2, "Z", 0, "Z", ""},
3067  {0, NULL, 0, NULL, NULL},
3068  };
3069 
3070  static const EnumPropertyItem space_items[] = {
3071  {GP_SPACE_LOCAL, "LOCAL", 0, "Local Space", ""},
3072  {GP_SPACE_WORLD, "WORLD", 0, "World Space", ""},
3073  {0, NULL, 0, NULL, NULL},
3074  };
3075 
3076  srna = RNA_def_struct(brna, "WeightAngleGpencilModifier", "GpencilModifier");
3077  RNA_def_struct_ui_text(srna, "Weight Modifier Angle", "Calculate Vertex Weight dynamically");
3078  RNA_def_struct_sdna(srna, "WeightAngleGpencilModifierData");
3079  RNA_def_struct_ui_icon(srna, ICON_MOD_VERTEX_WEIGHT);
3080 
3082 
3083  prop = RNA_def_property(srna, "target_vertex_group", PROP_STRING, PROP_NONE);
3084  RNA_def_property_string_sdna(prop, NULL, "target_vgname");
3085  RNA_def_property_ui_text(prop, "Vertex Group", "Output Vertex group");
3087  prop, NULL, NULL, "rna_WeightAngleGpencilModifier_target_vgname_set");
3088  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3089 
3090  prop = RNA_def_property(srna, "use_multiply", PROP_BOOLEAN, PROP_NONE);
3093  prop,
3094  "Multiply Weights",
3095  "Multiply the calculated weights with the existing values in the vertex group");
3096  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3097 
3098  prop = RNA_def_property(srna, "use_invert_output", PROP_BOOLEAN, PROP_NONE);
3100  RNA_def_property_ui_text(prop, "Invert", "Invert output weight values");
3101  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3102 
3103  prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE);
3104  RNA_def_property_float_sdna(prop, NULL, "angle");
3105  RNA_def_property_ui_text(prop, "Angle", "Angle");
3106  RNA_def_property_range(prop, 0.0f, DEG2RAD(180.0f));
3107  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3108 
3109  prop = RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE);
3110  RNA_def_property_enum_sdna(prop, NULL, "axis");
3111  RNA_def_property_enum_items(prop, axis_items);
3112  RNA_def_property_ui_text(prop, "Axis", "");
3113  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3114 
3115  prop = RNA_def_property(srna, "space", PROP_ENUM, PROP_NONE);
3116  RNA_def_property_enum_sdna(prop, NULL, "space");
3118  RNA_def_property_ui_text(prop, "Space", "Coordinates space");
3119  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3120 
3121  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
3122  RNA_def_property_string_sdna(prop, NULL, "layername");
3123  RNA_def_property_ui_text(prop, "Layer", "Layer name");
3124  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3125 
3126  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
3129  NULL,
3130  "rna_WeightAngleGpencilModifier_material_set",
3131  NULL,
3132  "rna_GpencilModifier_material_poll");
3133  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
3134  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3135 
3136  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
3137  RNA_def_property_string_sdna(prop, NULL, "vgname");
3138  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
3139  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_WeightAngleGpencilModifier_vgname_set");
3140  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3141 
3142  prop = RNA_def_property(srna, "minimum_weight", PROP_FLOAT, PROP_FACTOR);
3143  RNA_def_property_float_sdna(prop, NULL, "min_weight");
3144  RNA_def_property_ui_text(prop, "Minimum", "Minimum value for vertex weight");
3145  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3146 
3147  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
3148  RNA_def_property_int_sdna(prop, NULL, "pass_index");
3149  RNA_def_property_range(prop, 0, 100);
3150  RNA_def_property_ui_text(prop, "Pass", "Pass index");
3151  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3152 
3153  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
3155  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
3156  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3157 
3158  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
3160  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
3161  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3162 
3163  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
3165  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
3166  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3167 
3168  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
3170  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
3171  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3172 
3173  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
3174  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
3175  RNA_def_property_range(prop, 0, 100);
3176  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
3177  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3178 
3179  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
3181  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
3182  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3183 
3185 }
3186 
3188 {
3189  StructRNA *srna;
3190  PropertyRNA *prop;
3191 
3192  static const EnumPropertyItem modifier_lineart_source_type[] = {
3193  {LRT_SOURCE_COLLECTION, "COLLECTION", 0, "Collection", ""},
3194  {LRT_SOURCE_OBJECT, "OBJECT", 0, "Object", ""},
3195  {LRT_SOURCE_SCENE, "SCENE", 0, "Scene", ""},
3196  {0, NULL, 0, NULL, NULL},
3197  };
3198 
3199  static const EnumPropertyItem modifier_lineart_shadow_region_filtering[] = {
3201  "NONE",
3202  0,
3203  "None",
3204  "Not filtering any lines based on illumination region"},
3206  "ILLUMINATED",
3207  0,
3208  "Illuminated",
3209  "Only selecting lines from illuminated regions"},
3211  "SHADED",
3212  0,
3213  "Shaded",
3214  "Only selecting lines from shaded regions"},
3216  "ILLUMINATED_ENCLOSED",
3217  0,
3218  "Illuminated (Enclosed Shapes)",
3219  "Selecting lines from lit regions, and make the combination of contour, light contour and "
3220  "shadow lines into enclosed shapes"},
3221  {0, NULL, 0, NULL, NULL},
3222  };
3223 
3224  static const EnumPropertyItem modifier_lineart_silhouette_filtering[] = {
3225  {LRT_SILHOUETTE_FILTER_NONE, "NONE", 0, "Contour", ""},
3226  {LRT_SILHOUETTE_FILTER_GROUP, "GROUP", 0, "Silhouette", ""},
3227  {LRT_SILHOUETTE_FILTER_INDIVIDUAL, "INDIVIDUAL", 0, "Individual Silhouette", ""},
3228  {0, NULL, 0, NULL, NULL},
3229  };
3230 
3231  srna = RNA_def_struct(brna, "LineartGpencilModifier", "GpencilModifier");
3233  srna, "Line Art Modifier", "Generate line art strokes from selected source");
3234  RNA_def_struct_sdna(srna, "LineartGpencilModifierData");
3235  RNA_def_struct_ui_icon(srna, ICON_MOD_LINEART);
3236 
3238 
3239  prop = RNA_def_property(srna, "use_custom_camera", PROP_BOOLEAN, PROP_NONE);
3240  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_USE_CUSTOM_CAMERA);
3242  prop, "Use Custom Camera", "Use custom camera instead of the active camera");
3243  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3244 
3245  prop = RNA_def_property(srna, "use_fuzzy_intersections", PROP_BOOLEAN, PROP_NONE);
3246  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_INTERSECTION_AS_CONTOUR);
3248  "Intersection With Contour",
3249  "Treat intersection and contour lines as if they were the same type so "
3250  "they can be chained together");
3251  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3252 
3253  prop = RNA_def_property(srna, "use_fuzzy_all", PROP_BOOLEAN, PROP_NONE);
3254  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_EVERYTHING_AS_CONTOUR);
3256  prop, "All Lines", "Treat all lines as the same line type so they can be chained together");
3257  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3258 
3259  prop = RNA_def_property(srna, "use_object_instances", PROP_BOOLEAN, PROP_NONE);
3260  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_ALLOW_DUPLI_OBJECTS);
3262  prop,
3263  "Instanced Objects",
3264  "Support particle objects and face/vertex instances to show in line art");
3265  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3266 
3267  prop = RNA_def_property(srna, "use_edge_overlap", PROP_BOOLEAN, PROP_NONE);
3268  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_ALLOW_OVERLAPPING_EDGES);
3270  prop,
3271  "Handle Overlapping Edges",
3272  "Allow edges in the same location (i.e. from edge split) to show properly. May run slower");
3273  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3274 
3275  prop = RNA_def_property(srna, "use_clip_plane_boundaries", PROP_BOOLEAN, PROP_NONE);
3278  "Clipping Boundaries",
3279  "Allow lines generated by the near/far clipping plane to be shown");
3280  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3281 
3282  prop = RNA_def_property(srna, "crease_threshold", PROP_FLOAT, PROP_ANGLE);
3283  RNA_def_property_range(prop, 0, DEG2RAD(180.0f));
3284  RNA_def_property_ui_range(prop, 0.0f, DEG2RAD(180.0f), 0.01f, 1);
3286  "Crease Threshold",
3287  "Angles smaller than this will be treated as creases. Crease angle "
3288  "priority: object line art crease override > mesh auto smooth angle > "
3289  "line art default crease");
3290  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3291 
3292  prop = RNA_def_property(srna, "split_angle", PROP_FLOAT, PROP_ANGLE);
3293  RNA_def_property_float_sdna(prop, NULL, "angle_splitting_threshold");
3295  prop, "Angle Splitting", "Angle in screen space below which a stroke is split in two");
3296  /* Don't allow value very close to PI, or we get a lot of small segments. */
3297  RNA_def_property_ui_range(prop, 0.0f, DEG2RAD(179.5f), 0.01f, 1);
3298  RNA_def_property_range(prop, 0.0f, DEG2RAD(180.0f));
3299  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3300 
3301  prop = RNA_def_property(srna, "smooth_tolerance", PROP_FLOAT, PROP_NONE);
3302  RNA_def_property_float_sdna(prop, NULL, "chain_smooth_tolerance");
3304  prop, "Smooth Tolerance", "Strength of smoothing applied on jagged chains");
3305  RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.05f, 4);
3306  RNA_def_property_range(prop, 0.0f, 30.0f);
3307  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3308 
3309  prop = RNA_def_property(srna, "use_loose_as_contour", PROP_BOOLEAN, PROP_NONE);
3310  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_LOOSE_AS_CONTOUR);
3311  RNA_def_property_ui_text(prop, "Loose As Contour", "Loose edges will have contour type");
3312  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3313 
3314  prop = RNA_def_property(srna, "invert_source_vertex_group", PROP_BOOLEAN, PROP_NONE);
3316  RNA_def_property_ui_text(prop, "Invert Vertex Group", "Invert source vertex group values");
3317  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3318 
3319  prop = RNA_def_property(srna, "use_output_vertex_group_match_by_name", PROP_BOOLEAN, PROP_NONE);
3321  RNA_def_property_ui_text(prop, "Match Output", "Match output vertex group based on name");
3322  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3323 
3324  prop = RNA_def_property(srna, "use_face_mark", PROP_BOOLEAN, PROP_NONE);
3325  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_FILTER_FACE_MARK);
3327  prop, "Filter Face Marks", "Filter feature lines using freestyle face marks");
3328  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3329 
3330  prop = RNA_def_property(srna, "use_face_mark_invert", PROP_BOOLEAN, PROP_NONE);
3331  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_FILTER_FACE_MARK_INVERT);
3332  RNA_def_property_ui_text(prop, "Invert", "Invert face mark filtering");
3333  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3334 
3335  prop = RNA_def_property(srna, "use_face_mark_boundaries", PROP_BOOLEAN, PROP_NONE);
3338  prop, "Boundaries", "Filter feature lines based on face mark boundaries");
3339  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3340 
3341  prop = RNA_def_property(srna, "use_face_mark_keep_contour", PROP_BOOLEAN, PROP_NONE);
3343  prop, NULL, "calculation_flags", LRT_FILTER_FACE_MARK_KEEP_CONTOUR);
3344  RNA_def_property_ui_text(prop, "Keep Contour", "Preserve contour lines while filtering");
3345  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3346 
3347  prop = RNA_def_property(srna, "chaining_image_threshold", PROP_FLOAT, PROP_DISTANCE);
3349  prop,
3350  "Image Threshold",
3351  "Segments with an image distance smaller than this will be chained together");
3352  RNA_def_property_ui_range(prop, 0.0f, 0.3f, 0.001f, 4);
3353  RNA_def_property_range(prop, 0.0f, 0.3f);
3354  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3355 
3356  prop = RNA_def_property(srna, "use_loose_edge_chain", PROP_BOOLEAN, PROP_NONE);
3357  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_CHAIN_LOOSE_EDGES);
3358  RNA_def_property_ui_text(prop, "Chain Loose Edges", "Allow loose edges to be chained together");
3359  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3360 
3361  prop = RNA_def_property(srna, "use_geometry_space_chain", PROP_BOOLEAN, PROP_NONE);
3362  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_CHAIN_GEOMETRY_SPACE);
3364  prop, "Use Geometry Space", "Use geometry distance for chaining instead of image space");
3365  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3366 
3367  prop = RNA_def_property(srna, "use_detail_preserve", PROP_BOOLEAN, PROP_NONE);
3368  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_CHAIN_PRESERVE_DETAILS);
3370  prop, "Preserve Details", "Keep the zig-zag \"noise\" in initial chaining");
3371  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3372 
3373  prop = RNA_def_property(srna, "use_overlap_edge_type_support", PROP_BOOLEAN, PROP_NONE);
3376  "Overlapping Edge Types",
3377  "Allow an edge to have multiple overlapping types. This will create a "
3378  "separate stroke for each overlapping type");
3379  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3380 
3381  prop = RNA_def_property(srna, "stroke_depth_offset", PROP_FLOAT, PROP_DISTANCE);
3383  "Stroke Depth Offset",
3384  "Move strokes slightly towards the camera to avoid clipping while "
3385  "preserve depth for the viewport");
3386  RNA_def_property_ui_range(prop, 0.0, 0.5, 0.001, 4);
3387  RNA_def_property_range(prop, -0.1, FLT_MAX);
3388  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3389 
3390  prop = RNA_def_property(srna, "use_offset_towards_custom_camera", PROP_BOOLEAN, PROP_NONE);
3393  "Offset Towards Custom Camera",
3394  "Offset strokes towards selected camera instead of the active camera");
3395  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3396 
3397  prop = RNA_def_property(srna, "source_camera", PROP_POINTER, PROP_NONE);
3399  RNA_def_property_struct_type(prop, "Object");
3402  prop, "Camera Object", "Use specified camera object for generating line art");
3403  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3404 
3405  prop = RNA_def_property(srna, "light_contour_object", PROP_POINTER, PROP_NONE);
3407  RNA_def_property_struct_type(prop, "Object");
3410  prop, "Light Object", "Use this light object to generate light contour");
3411  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3412 
3413  prop = RNA_def_property(srna, "source_type", PROP_ENUM, PROP_NONE);
3414  RNA_def_property_enum_items(prop, modifier_lineart_source_type);
3415  RNA_def_property_ui_text(prop, "Source Type", "Line art stroke source type");
3416  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3417 
3418  prop = RNA_def_property(srna, "source_object", PROP_POINTER, PROP_NONE);
3420  RNA_def_property_struct_type(prop, "Object");
3421  RNA_def_property_ui_text(prop, "Object", "Generate strokes from this object");
3422  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3423 
3424  prop = RNA_def_property(srna, "source_collection", PROP_POINTER, PROP_NONE);
3426  RNA_def_property_struct_type(prop, "Collection");
3428  prop, "Collection", "Generate strokes from the objects in this collection");
3429  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3430 
3431  /* types */
3432  prop = RNA_def_property(srna, "use_contour", PROP_BOOLEAN, PROP_NONE);
3434  RNA_def_property_ui_text(prop, "Use Contour", "Generate strokes from contours lines");
3435  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3436 
3437  prop = RNA_def_property(srna, "use_loose", PROP_BOOLEAN, PROP_NONE);
3439  RNA_def_property_ui_text(prop, "Use Loose", "Generate strokes from loose edges");
3440  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3441 
3442  prop = RNA_def_property(srna, "use_crease", PROP_BOOLEAN, PROP_NONE);
3444  RNA_def_property_ui_text(prop, "Use Crease", "Generate strokes from creased edges");
3445  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3446 
3447  prop = RNA_def_property(srna, "use_material", PROP_BOOLEAN, PROP_NONE);
3450  prop, "Use Material", "Generate strokes from borders between materials");
3451  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3452 
3453  prop = RNA_def_property(srna, "use_edge_mark", PROP_BOOLEAN, PROP_NONE);
3455  RNA_def_property_ui_text(prop, "Use Edge Mark", "Generate strokes from freestyle marked edges");
3456  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3457 
3458  prop = RNA_def_property(srna, "use_intersection", PROP_BOOLEAN, PROP_NONE);
3460  RNA_def_property_ui_text(prop, "Use Intersection", "Generate strokes from intersections");
3461  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3462 
3463  prop = RNA_def_property(srna, "use_light_contour", PROP_BOOLEAN, PROP_NONE);
3466  "Use Light Contour",
3467  "Generate light/shadow separation lines from a reference light object");
3468  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3469 
3470  prop = RNA_def_property(srna, "use_shadow", PROP_BOOLEAN, PROP_NONE);
3473  prop, "Use Shadow", "Project contour lines using a light source object");
3474  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3475 
3476  prop = RNA_def_property(srna, "shadow_region_filtering", PROP_ENUM, PROP_NONE);
3477  RNA_def_property_enum_sdna(prop, NULL, "shadow_selection");
3478  RNA_def_property_enum_items(prop, modifier_lineart_shadow_region_filtering);
3480  "Shadow Region Filtering",
3481  "Select feature lines that comes from lit or shaded regions. Will not "
3482  "affect cast shadow and light contour since they are at the border");
3483  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3484 
3485  prop = RNA_def_property(srna, "silhouette_filtering", PROP_ENUM, PROP_NONE);
3486  RNA_def_property_enum_sdna(prop, NULL, "silhouette_selection");
3487  RNA_def_property_enum_items(prop, modifier_lineart_silhouette_filtering);
3488  RNA_def_property_ui_text(prop, "Silhouette Filtering", "Select contour or silhouette");
3489  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3490 
3491  prop = RNA_def_property(srna, "use_multiple_levels", PROP_BOOLEAN, PROP_NONE);
3492  RNA_def_property_boolean_sdna(prop, NULL, "use_multiple_levels", 0);
3494  prop, "Use Occlusion Range", "Generate strokes from a range of occlusion levels");
3495  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3496 
3497  prop = RNA_def_property(srna, "level_start", PROP_INT, PROP_NONE);
3499  prop, "Level Start", "Minimum number of occlusions for the generated strokes");
3500  RNA_def_property_range(prop, 0, 128);
3501  RNA_def_property_int_funcs(prop, NULL, "rna_Lineart_start_level_set", NULL);
3502  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3503 
3504  prop = RNA_def_property(srna, "level_end", PROP_INT, PROP_NONE);
3506  prop, "Level End", "Maximum number of occlusions for the generated strokes");
3507  RNA_def_property_range(prop, 0, 128);
3508  RNA_def_property_int_funcs(prop, NULL, "rna_Lineart_end_level_set", NULL);
3509  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3510 
3511  prop = RNA_def_property(srna, "target_material", PROP_POINTER, PROP_NONE);
3513  RNA_def_property_struct_type(prop, "Material");
3515  NULL,
3516  "rna_LineartGpencilModifier_material_set",
3517  NULL,
3518  "rna_GpencilModifier_material_poll");
3520  prop, "Material", "Grease Pencil material assigned to the generated strokes");
3521  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3522 
3523  prop = RNA_def_property(srna, "target_layer", PROP_STRING, PROP_NONE);
3524  RNA_def_property_ui_text(prop, "Layer", "Grease Pencil layer assigned to the generated strokes");
3525  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3526 
3527  prop = RNA_def_property(srna, "source_vertex_group", PROP_STRING, PROP_NONE);
3529  prop,
3530  "Source Vertex Group",
3531  "Match the beginning of vertex group names from mesh objects, match all when left empty");
3532  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3533 
3534  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
3535  RNA_def_property_string_sdna(prop, NULL, "vgname");
3536  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_LineartGpencilModifier_vgname_set");
3537  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for selected strokes");
3538  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3539 
3540  prop = RNA_def_property(srna, "is_baked", PROP_BOOLEAN, PROP_NONE);
3542  RNA_def_property_ui_text(prop, "Is Baked", "This modifier has baked data");
3543  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3544 
3545  prop = RNA_def_property(srna, "use_cache", PROP_BOOLEAN, PROP_NONE);
3548  "Use Cache",
3549  "Use cached scene data from the first line art modifier in the stack. "
3550  "Certain settings will be unavailable");
3551  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3552 
3553  prop = RNA_def_property(srna, "overscan", PROP_FLOAT, PROP_NONE);
3555  prop,
3556  "Overscan",
3557  "A margin to prevent strokes from ending abruptly at the edge of the image");
3558  RNA_def_property_ui_range(prop, 0.0f, 0.5f, 0.01f, 3);
3559  RNA_def_property_range(prop, 0.0f, 0.5f);
3560  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3561 
3562  prop = RNA_def_property(srna, "thickness", PROP_INT, PROP_NONE);
3563  RNA_def_property_ui_text(prop, "Thickness", "The thickness for the generated strokes");
3564  RNA_def_property_ui_range(prop, 1, 100, 1, 1);
3565  RNA_def_property_range(prop, 1, 200);
3566  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3567 
3568  prop = RNA_def_property(srna, "opacity", PROP_FLOAT, PROP_FACTOR);
3569  RNA_def_property_ui_text(prop, "Opacity", "The strength value for the generate strokes");
3570  RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.01f, 2);
3571  RNA_def_property_range(prop, 0.0f, 1.0f);
3572  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3573 
3574  prop = RNA_def_property(srna, "use_material_mask", PROP_BOOLEAN, PROP_NONE);
3577  prop, "Use Material Mask", "Use material masks to filter out occluded strokes");
3578  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3579 
3580  prop = RNA_def_property(srna, "use_material_mask_match", PROP_BOOLEAN, PROP_NONE);
3583  prop, "Match Masks", "Require matching all material masks instead of just one");
3584  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3585 
3586  prop = RNA_def_property(srna, "use_material_mask_bits", PROP_BOOLEAN, PROP_NONE);
3587  RNA_def_property_boolean_sdna(prop, NULL, "material_mask_bits", 1);
3588  RNA_def_property_array(prop, 8);
3589  RNA_def_property_ui_text(prop, "Masks", "Mask bits to match from Material Line Art settings");
3590  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3591 
3592  prop = RNA_def_property(srna, "use_intersection_match", PROP_BOOLEAN, PROP_NONE);
3595  prop, "Match Intersection", "Require matching all intersection masks instead of just one");
3596  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3597 
3598  prop = RNA_def_property(srna, "use_intersection_mask", PROP_BOOLEAN, PROP_NONE);
3599  RNA_def_property_boolean_sdna(prop, NULL, "intersection_mask", 1);
3600  RNA_def_property_array(prop, 8);
3601  RNA_def_property_ui_text(prop, "Masks", "Mask bits to match from Collection Line Art settings");
3602  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3603 
3604  prop = RNA_def_property(srna, "use_crease_on_smooth", PROP_BOOLEAN, PROP_NONE);
3606  prop, NULL, "calculation_flags", LRT_USE_CREASE_ON_SMOOTH_SURFACES);
3608  prop, "Crease On Smooth Surfaces", "Allow crease edges to show inside smooth surfaces");
3609  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3610 
3611  prop = RNA_def_property(srna, "use_crease_on_sharp", PROP_BOOLEAN, PROP_NONE);
3613  RNA_def_property_ui_text(prop, "Crease On Sharp Edges", "Allow crease to show on sharp edges");
3614  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3615 
3616  prop = RNA_def_property(srna, "use_image_boundary_trimming", PROP_BOOLEAN, PROP_NONE);
3619  prop,
3620  "Image Boundary Trimming",
3621  "Trim all edges right at the boundary of image(including overscan region)");
3622 
3623  prop = RNA_def_property(srna, "use_back_face_culling", PROP_BOOLEAN, PROP_NONE);
3624  RNA_def_property_boolean_sdna(prop, NULL, "calculation_flags", LRT_USE_BACK_FACE_CULLING);
3626  prop,
3627  "Back Face Culling",
3628  "Remove all back faces to speed up calculation, this will create edges in "
3629  "different occlusion levels than when disabled");
3630  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3631 
3632  prop = RNA_def_property(srna, "shadow_camera_near", PROP_FLOAT, PROP_NONE);
3633  RNA_def_property_ui_text(prop, "Shadow Camera Near", "Near clipping distance of shadow camera");
3634  RNA_def_property_ui_range(prop, 0.0f, 500.0f, 0.1f, 2);
3635  RNA_def_property_range(prop, 0.0f, 10000.0f);
3636  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3637 
3638  prop = RNA_def_property(srna, "shadow_camera_far", PROP_FLOAT, PROP_NONE);
3639  RNA_def_property_ui_text(prop, "Shadow Camera Far", "Far clipping distance of shadow camera");
3640  RNA_def_property_ui_range(prop, 0.0f, 500.0f, 0.1f, 2);
3641  RNA_def_property_range(prop, 0.0f, 10000.0f);
3642  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3643 
3644  prop = RNA_def_property(srna, "shadow_camera_size", PROP_FLOAT, PROP_NONE);
3646  "Shadow Camera Size",
3647  "This value represent the \"Orthographic Scale\" of an ortho camera."
3648  "If the camera is put at the lamps position with this scale, it will "
3649  "represent the coverage of the shadow \"camera\" ");
3650  RNA_def_property_ui_range(prop, 0.0f, 500.0f, 0.1f, 2);
3651  RNA_def_property_range(prop, 0.0f, 10000.0f);
3652 
3653  prop = RNA_def_property(srna, "use_invert_collection", PROP_BOOLEAN, PROP_NONE);
3656  "Invert Collection Filtering",
3657  "Select everything except lines from specified collection");
3658  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3659 
3660  prop = RNA_def_property(srna, "use_invert_silhouette", PROP_BOOLEAN, PROP_NONE);
3662  RNA_def_property_ui_text(prop, "Invert Silhouette Filtering", "Select anti-silhouette lines");
3663  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3664 
3666 }
3667 
3669 {
3670  StructRNA *srna;
3671  PropertyRNA *prop;
3672 
3673  srna = RNA_def_struct(brna, "LengthGpencilModifier", "GpencilModifier");
3674  RNA_def_struct_ui_text(srna, "Length Modifier", "Stretch or shrink strokes");
3675  RNA_def_struct_sdna(srna, "LengthGpencilModifierData");
3676  RNA_def_struct_ui_icon(srna, ICON_MOD_LENGTH);
3677 
3679 
3680  prop = RNA_def_property(srna, "start_factor", PROP_FLOAT, PROP_NONE);
3681  RNA_def_property_float_sdna(prop, NULL, "start_fac");
3682  RNA_def_property_ui_range(prop, -10.0f, 10.0f, 0.1, 2);
3684  prop, "Start Factor", "Added length to the start of each stroke relative to its length");
3685  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3686 
3687  prop = RNA_def_property(srna, "end_factor", PROP_FLOAT, PROP_NONE);
3688  RNA_def_property_float_sdna(prop, NULL, "end_fac");
3689  RNA_def_property_ui_range(prop, -10.0f, 10.0f, 0.1, 2);
3691  prop, "End Factor", "Added length to the end of each stroke relative to its length");
3692  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3693 
3694  prop = RNA_def_property(srna, "start_length", PROP_FLOAT, PROP_DISTANCE);
3695  RNA_def_property_float_sdna(prop, NULL, "start_fac");
3696  RNA_def_property_ui_range(prop, -100.0f, 100.0f, 0.1f, 3);
3698  prop, "Start Factor", "Absolute added length to the start of each stroke");
3699  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3700 
3701  prop = RNA_def_property(srna, "end_length", PROP_FLOAT, PROP_DISTANCE);
3702  RNA_def_property_float_sdna(prop, NULL, "end_fac");
3703  RNA_def_property_ui_range(prop, -100.0f, 100.0f, 0.1f, 3);
3704  RNA_def_property_ui_text(prop, "End Factor", "Absolute added length to the end of each stroke");
3705  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3706 
3707  prop = RNA_def_property(srna, "random_start_factor", PROP_FLOAT, PROP_NONE);
3708  RNA_def_property_float_sdna(prop, NULL, "rand_start_fac");
3709  RNA_def_property_ui_range(prop, -10.0f, 10.0f, 0.1, 1);
3711  prop, "Random Start Factor", "Size of random length added to the start of each stroke");
3712  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3713 
3714  prop = RNA_def_property(srna, "random_end_factor", PROP_FLOAT, PROP_NONE);
3715  RNA_def_property_float_sdna(prop, NULL, "rand_end_fac");
3716  RNA_def_property_ui_range(prop, -10.0f, 10.0f, 0.1, 1);
3718  prop, "Random End Factor", "Size of random length added to the end of each stroke");
3719  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3720 
3721  prop = RNA_def_property(srna, "random_offset", PROP_FLOAT, PROP_NONE);
3722  RNA_def_property_float_sdna(prop, NULL, "rand_offset");
3723  RNA_def_property_ui_range(prop, 0.0f, 100.0f, 0.1, 3);
3725  prop, "Random Noise Offset", "Smoothly offset each stroke's random value");
3726  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3727 
3728  prop = RNA_def_property(srna, "use_random", PROP_BOOLEAN, PROP_NONE);
3730  RNA_def_property_ui_text(prop, "Random", "Use random values over time");
3731  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3732 
3733  prop = RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED);
3734  RNA_def_property_ui_text(prop, "Seed", "Random seed");
3735  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3736 
3737  prop = RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
3738  RNA_def_property_int_sdna(prop, NULL, "step");
3739  RNA_def_property_range(prop, 1, 100);
3741  prop, "Step", "Number of frames before recalculate random values again");
3742  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3743 
3744  prop = RNA_def_property(srna, "overshoot_factor", PROP_FLOAT, PROP_FACTOR);
3745  RNA_def_property_float_sdna(prop, NULL, "overshoot_fac");
3746  RNA_def_property_range(prop, 0.0f, 1.0f);
3748  prop,
3749  "Used Length",
3750  "Defines what portion of the stroke is used for the calculation of the extension");
3751  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3752 
3753  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
3754  RNA_def_property_enum_sdna(prop, NULL, "mode");
3756  RNA_def_property_ui_text(prop, "Mode", "Mode to define length");
3757  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3758 
3759  prop = RNA_def_property(srna, "use_curvature", PROP_BOOLEAN, PROP_NONE);
3761  RNA_def_property_ui_text(prop, "Use Curvature", "Follow the curvature of the stroke");
3762  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3763 
3764  prop = RNA_def_property(srna, "invert_curvature", PROP_BOOLEAN, PROP_NONE);
3767  prop, "Invert Curvature", "Invert the curvature of the stroke's extension");
3768  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3769 
3770  prop = RNA_def_property(srna, "point_density", PROP_FLOAT, PROP_NONE);
3771  RNA_def_property_range(prop, 0.1f, 1000.0f);
3772  RNA_def_property_ui_range(prop, 0.1f, 1000.0f, 1.0f, 1);
3775  prop, "Point Density", "Multiplied by Start/End for the total added point count");
3776  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3777 
3778  prop = RNA_def_property(srna, "segment_influence", PROP_FLOAT, PROP_FACTOR);
3779  RNA_def_property_range(prop, -2.0f, 3.0f);
3780  RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.1f, 2);
3782  "Segment Influence",
3783  "Factor to determine how much the length of the individual segments "
3784  "should influence the final computed curvature. Higher factors makes "
3785  "small segments influence the overall curvature less");
3786  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3787 
3788  prop = RNA_def_property(srna, "max_angle", PROP_FLOAT, PROP_ANGLE);
3790  "Filter Angle",
3791  "Ignore points on the stroke that deviate from their neighbors by more "
3792  "than this angle when determining the extrapolation shape");
3793  RNA_def_property_range(prop, 0.0f, DEG2RAD(180.0f));
3794  RNA_def_property_ui_range(prop, 0.0f, DEG2RAD(179.5f), 10.0f, 1);
3795  RNA_def_property_update(prop, NC_SCENE, "rna_GpencilModifier_update");
3796 
3797  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
3798  RNA_def_property_string_sdna(prop, NULL, "layername");
3799  RNA_def_property_ui_text(prop, "Layer", "Layer name");
3800  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3801 
3802  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
3804  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
3805  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3806 
3807  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
3808  RNA_def_property_int_sdna(prop, NULL, "pass_index");
3809  RNA_def_property_range(prop, 0, 100);
3810  RNA_def_property_ui_text(prop, "Pass", "Pass index");
3811  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3812 
3813  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
3815  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
3816  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3817 
3818  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
3820  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
3821  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3822 
3823  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
3825  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
3826  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3827 
3828  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
3829  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
3830  RNA_def_property_range(prop, 0, 100);
3831  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
3832  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3833 
3834  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
3836  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
3837  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3838 
3840 }
3841 
3843 {
3844  StructRNA *srna;
3845  PropertyRNA *prop;
3846 
3847  srna = RNA_def_struct(brna, "DashGpencilModifierSegment", NULL);
3848  RNA_def_struct_ui_text(srna, "Dash Modifier Segment", "Configuration for a single dash segment");
3849  RNA_def_struct_sdna(srna, "DashGpencilModifierSegment");
3850  RNA_def_struct_path_func(srna, "rna_DashGpencilModifierSegment_path");
3851 
3852  prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
3853  RNA_def_property_ui_text(prop, "Name", "Name of the dash segment");
3854  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3855  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_DashGpencilModifierSegment_name_set");
3857  RNA_def_struct_name_property(srna, prop);
3858 
3859  prop = RNA_def_property(srna, "dash", PROP_INT, PROP_NONE);
3862  prop,
3863  "Dash",
3864  "The number of consecutive points from the original stroke to include in this segment");
3865  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3866 
3867  prop = RNA_def_property(srna, "gap", PROP_INT, PROP_NONE);
3869  RNA_def_property_ui_text(prop, "Gap", "The number of points skipped after this segment");
3870  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3871 
3872  prop = RNA_def_property(srna, "radius", PROP_FLOAT, PROP_FACTOR | PROP_UNSIGNED);
3873  RNA_def_property_ui_range(prop, 0, 1, 0.1, 2);
3875  prop, "Radius", "The factor to apply to the original point's radius for the new points");
3876  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3877 
3878  prop = RNA_def_property(srna, "opacity", PROP_FLOAT, PROP_FACTOR);
3879  RNA_def_property_ui_range(prop, 0, 1, 0.1, 2);
3881  prop, "Opacity", "The factor to apply to the original point's opacity for the new points");
3882  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3883 
3884  prop = RNA_def_property(srna, "material_index", PROP_INT, PROP_NONE);
3885  RNA_def_property_int_sdna(prop, NULL, "mat_nr");
3886  RNA_def_property_range(prop, -1, INT16_MAX);
3888  prop,
3889  "Material Index",
3890  "Use this index on generated segment. -1 means using the existing material");
3891  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3892 
3893  prop = RNA_def_property(srna, "use_cyclic", PROP_BOOLEAN, PROP_NONE);
3895  RNA_def_property_ui_text(prop, "Cyclic", "Enable cyclic on individual stroke dashes");
3896  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3897 
3898  srna = RNA_def_struct(brna, "DashGpencilModifierData", "GpencilModifier");
3899  RNA_def_struct_ui_text(srna, "Dash Modifier", "Create dot-dash effect for strokes");
3900  RNA_def_struct_sdna(srna, "DashGpencilModifierData");
3901  RNA_def_struct_ui_icon(srna, ICON_MOD_DASH);
3902 
3904 
3905  prop = RNA_def_property(srna, "segments", PROP_COLLECTION, PROP_NONE);
3906  RNA_def_property_struct_type(prop, "DashGpencilModifierSegment");
3907  RNA_def_property_collection_sdna(prop, NULL, "segments", NULL);
3909  "rna_GpencilDash_segments_begin",
3910  "rna_iterator_array_next",
3911  "rna_iterator_array_end",
3912  "rna_iterator_array_get",
3913  NULL,
3914  NULL,
3915  NULL,
3916  NULL);
3917  RNA_def_property_ui_text(prop, "Segments", "");
3918 
3919  prop = RNA_def_property(srna, "segment_active_index", PROP_INT, PROP_UNSIGNED);
3921  RNA_def_property_ui_text(prop, "Active Dash Segment Index", "Active index in the segment list");
3922 
3923  prop = RNA_def_property(srna, "dash_offset", PROP_INT, PROP_NONE);
3925  prop,
3926  "Offset",
3927  "Offset into each stroke before the beginning of the dashed segment generation");
3928  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3929 
3930  /* Common properties. */
3931 
3932  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
3933  RNA_def_property_string_sdna(prop, NULL, "layername");
3934  RNA_def_property_ui_text(prop, "Layer", "Layer name");
3935  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3936 
3937  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
3939  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
3940  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3941 
3942  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
3943  RNA_def_property_int_sdna(prop, NULL, "pass_index");
3944  RNA_def_property_range(prop, 0, 100);
3945  RNA_def_property_ui_text(prop, "Pass", "Pass index");
3946  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3947 
3948  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
3950  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
3951  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3952 
3953  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
3955  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
3956  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3957 
3958  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
3960  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
3961  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3962 
3963  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
3964  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
3965  RNA_def_property_range(prop, 0, 100);
3966  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
3967  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3968 
3969  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
3971  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
3972  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
3973 
3975 }
3976 
3978 {
3979  StructRNA *srna;
3980  PropertyRNA *prop;
3981 
3982  srna = RNA_def_struct(brna, "ShrinkwrapGpencilModifier", "GpencilModifier");
3984  "Shrinkwrap Modifier",
3985  "Shrink wrapping modifier to shrink wrap and object to a target");
3986  RNA_def_struct_sdna(srna, "ShrinkwrapGpencilModifierData");
3987  RNA_def_struct_ui_icon(srna, ICON_MOD_SHRINKWRAP);
3988 
3990 
3991  prop = RNA_def_property(srna, "wrap_method", PROP_ENUM, PROP_NONE);
3992  RNA_def_property_enum_sdna(prop, NULL, "shrink_type");
3994  RNA_def_property_ui_text(prop, "Wrap Method", "");
3995  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
3996 
3997  prop = RNA_def_property(srna, "wrap_mode", PROP_ENUM, PROP_NONE);
3998  RNA_def_property_enum_sdna(prop, NULL, "shrink_mode");
4001  prop, "Snap Mode", "Select how vertices are constrained to the target surface");
4002  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
4003 
4004  prop = RNA_def_property(srna, "cull_face", PROP_ENUM, PROP_NONE);
4005  RNA_def_property_enum_sdna(prop, NULL, "shrink_opts");
4008  "rna_ShrinkwrapGpencilModifier_face_cull_get",
4009  "rna_ShrinkwrapGpencilModifier_face_cull_set",
4010  NULL);
4012  prop,
4013  "Face Cull",
4014  "Stop vertices from projecting to a face on the target when facing towards/away");
4015  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4016 
4017  prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
4018  RNA_def_property_ui_text(prop, "Target", "Mesh target to shrink to");
4020  prop, NULL, "rna_ShrinkwrapGpencilModifier_target_set", NULL, "rna_Mesh_object_poll");
4022  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
4023 
4024  prop = RNA_def_property(srna, "auxiliary_target", PROP_POINTER, PROP_NONE);
4025  RNA_def_property_pointer_sdna(prop, NULL, "aux_target");
4026  RNA_def_property_ui_text(prop, "Auxiliary Target", "Additional mesh target to shrink to");
4028  prop, NULL, "rna_ShrinkwrapGpencilModifier_aux_target_set", NULL, "rna_Mesh_object_poll");
4030  RNA_def_property_update(prop, 0, "rna_GpencilModifier_dependency_update");
4031 
4032  prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_DISTANCE);
4033  RNA_def_property_float_sdna(prop, NULL, "keep_dist");
4034  RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
4035  RNA_def_property_ui_range(prop, -100, 100, 1, 2);
4036  RNA_def_property_ui_text(prop, "Offset", "Distance to keep from the target");
4037  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4038 
4039  prop = RNA_def_property(srna, "project_limit", PROP_FLOAT, PROP_DISTANCE);
4040  RNA_def_property_float_sdna(prop, NULL, "proj_limit");
4041  RNA_def_property_range(prop, 0.0, FLT_MAX);
4042  RNA_def_property_ui_range(prop, 0, 100, 1, 2);
4044  prop, "Project Limit", "Limit the distance used for projection (zero disables)");
4045  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4046 
4047  prop = RNA_def_property(srna, "use_project_x", PROP_BOOLEAN, PROP_NONE);
4049  RNA_def_property_ui_text(prop, "X", "");
4050  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4051 
4052  prop = RNA_def_property(srna, "use_project_y", PROP_BOOLEAN, PROP_NONE);
4054  RNA_def_property_ui_text(prop, "Y", "");
4055  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4056 
4057  prop = RNA_def_property(srna, "use_project_z", PROP_BOOLEAN, PROP_NONE);
4059  RNA_def_property_ui_text(prop, "Z", "");
4060  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4061 
4062  prop = RNA_def_property(srna, "subsurf_levels", PROP_INT, PROP_NONE);
4063  RNA_def_property_int_sdna(prop, NULL, "subsurf_levels");
4064  RNA_def_property_range(prop, 0, 6);
4065  RNA_def_property_ui_range(prop, 0, 6, 1, -1);
4067  prop,
4068  "Subdivision Levels",
4069  "Number of subdivisions that must be performed before extracting vertices' "
4070  "positions and normals");
4071  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4072 
4073  prop = RNA_def_property(srna, "use_negative_direction", PROP_BOOLEAN, PROP_NONE);
4076  prop, "Negative", "Allow vertices to move in the negative direction of axis");
4077  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4078 
4079  prop = RNA_def_property(srna, "use_positive_direction", PROP_BOOLEAN, PROP_NONE);
4082  prop, "Positive", "Allow vertices to move in the positive direction of axis");
4083  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4084 
4085  prop = RNA_def_property(srna, "use_invert_cull", PROP_BOOLEAN, PROP_NONE);
4088  prop, "Invert Cull", "When projecting in the negative direction invert the face cull mode");
4089  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4090 
4091  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
4092  RNA_def_property_string_sdna(prop, NULL, "layername");
4093  RNA_def_property_ui_text(prop, "Layer", "Layer name");
4094  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4095 
4096  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
4099  NULL,
4100  "rna_ShrinkwrapGpencilModifier_material_set",
4101  NULL,
4102  "rna_GpencilModifier_material_poll");
4103  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
4104  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4105 
4106  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
4107  RNA_def_property_string_sdna(prop, NULL, "vgname");
4108  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
4109  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ShrinkwrapGpencilModifier_vgname_set");
4110  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4111 
4112  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
4113  RNA_def_property_int_sdna(prop, NULL, "pass_index");
4114  RNA_def_property_range(prop, 0, 100);
4115  RNA_def_property_ui_text(prop, "Pass", "Pass index");
4116  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4117 
4118  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
4120  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
4121  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4122 
4123  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
4125  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
4126  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4127 
4128  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
4130  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
4131  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4132 
4133  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
4135  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
4136  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4137 
4138  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
4139  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
4140  RNA_def_property_range(prop, 0, 100);
4141  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
4142  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4143 
4144  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
4146  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
4147  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4148 
4149  prop = RNA_def_property(srna, "smooth_factor", PROP_FLOAT, PROP_FACTOR);
4150  RNA_def_property_float_sdna(prop, NULL, "smooth_factor");
4151  RNA_def_property_range(prop, 0, 1);
4152  RNA_def_property_ui_text(prop, "Smooth Factor", "Amount of smoothing to apply");
4153  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4154 
4155  prop = RNA_def_property(srna, "smooth_step", PROP_INT, PROP_NONE);
4156  RNA_def_property_int_sdna(prop, NULL, "smooth_step");
4157  RNA_def_property_range(prop, 1, 10);
4159  prop, "Step", "Number of times to apply smooth (high numbers can reduce FPS)");
4160  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4161 
4163 }
4164 
4166 {
4167  StructRNA *srna;
4168  PropertyRNA *prop;
4169 
4170  srna = RNA_def_struct(brna, "EnvelopeGpencilModifier", "GpencilModifier");
4171  RNA_def_struct_ui_text(srna, "Envelope Modifier", "Envelope stroke effect modifier");
4172  RNA_def_struct_sdna(srna, "EnvelopeGpencilModifierData");
4173  RNA_def_struct_ui_icon(srna, ICON_MOD_SKIN);
4174 
4176 
4177  prop = RNA_def_property(srna, "layer", PROP_STRING, PROP_NONE);
4178  RNA_def_property_string_sdna(prop, NULL, "layername");
4179  RNA_def_property_ui_text(prop, "Layer", "Layer name");
4180  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4181 
4182  prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
4185  NULL,
4186  "rna_EnvelopeGpencilModifier_material_set",
4187  NULL,
4188  "rna_GpencilModifier_material_poll");
4189  RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
4190  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4191 
4192  prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
4193  RNA_def_property_string_sdna(prop, NULL, "vgname");
4194  RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
4195  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_EnvelopeGpencilModifier_vgname_set");
4196  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4197 
4198  prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
4199  RNA_def_property_int_sdna(prop, NULL, "pass_index");
4200  RNA_def_property_range(prop, 0, 100);
4201  RNA_def_property_ui_text(prop, "Pass", "Pass index");
4202  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4203 
4204  prop = RNA_def_property(srna, "spread", PROP_INT, PROP_NONE);
4205  RNA_def_property_int_sdna(prop, NULL, "spread");
4206  RNA_def_property_range(prop, 1, INT_MAX);
4208  prop, "Spread Length", "The number of points to skip to create straight segments");
4209  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4210 
4211  prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
4212  RNA_def_property_enum_sdna(prop, NULL, "mode");
4214  RNA_def_property_ui_text(prop, "Mode", "Algorithm to use for generating the envelope");
4215  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4216 
4217  prop = RNA_def_property(srna, "mat_nr", PROP_INT, PROP_NONE);
4218  RNA_def_property_int_sdna(prop, NULL, "mat_nr");
4219  RNA_def_property_range(prop, -1, INT16_MAX);
4220  RNA_def_property_ui_text(prop, "Material Index", "The material to use for the new strokes");
4221  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4222 
4223  prop = RNA_def_property(srna, "thickness", PROP_FLOAT, PROP_FACTOR);
4224  RNA_def_property_float_sdna(prop, NULL, "thickness");
4225  RNA_def_property_range(prop, 0, FLT_MAX);
4226  RNA_def_property_ui_range(prop, 0, 1, 10, 3);
4227  RNA_def_property_ui_text(prop, "Thickness", "Multiplier for the thickness of the new strokes");
4228  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4229 
4230  prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_FACTOR);
4231  RNA_def_property_float_sdna(prop, NULL, "strength");
4232  RNA_def_property_range(prop, 0, FLT_MAX);
4233  RNA_def_property_ui_range(prop, 0, 1, 10, 3);
4234  RNA_def_property_ui_text(prop, "Strength", "Multiplier for the strength of the new strokes");
4235  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4236 
4237  prop = RNA_def_property(srna, "skip", PROP_INT, PROP_NONE);
4238  RNA_def_property_int_sdna(prop, NULL, "skip");
4239  RNA_def_property_range(prop, 0, INT_MAX);
4241  prop, "Skip Segments", "The number of generated segments to skip to reduce complexity");
4242  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4243 
4244  prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
4246  RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
4247  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4248 
4249  prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
4251  RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
4252  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4253 
4254  prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
4256  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
4257  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4258 
4259  prop = RNA_def_property(srna, "invert_vertex", PROP_BOOLEAN, PROP_NONE);
4261  RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
4262  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4263 
4264  prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
4265  RNA_def_property_int_sdna(prop, NULL, "layer_pass");
4266  RNA_def_property_range(prop, 0, 100);
4267  RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
4268  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4269 
4270  prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
4272  RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
4273  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4274 
4276 }
4277 
4279 {
4280  StructRNA *srna;
4281  PropertyRNA *prop;
4282 
4283  /* data */
4284  srna = RNA_def_struct(brna, "GpencilModifier", NULL);
4285  RNA_def_struct_ui_text(srna, "GpencilModifier", "Modifier affecting the Grease Pencil object");
4286  RNA_def_struct_refine_func(srna, "rna_GpencilModifier_refine");
4287  RNA_def_struct_path_func(srna, "rna_GpencilModifier_path");
4288  RNA_def_struct_sdna(srna, "GpencilModifierData");
4289 
4290  /* strings */
4291  prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
4292  RNA_def_property_string_funcs(prop, NULL, NULL, "rna_GpencilModifier_name_set");
4293  RNA_def_property_ui_text(prop, "Name", "Modifier name");
4295  RNA_def_struct_name_property(srna, prop);
4296 
4297  /* enums */
4298  prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
4300  RNA_def_property_enum_sdna(prop, NULL, "type");
4302  RNA_def_property_ui_text(prop, "Type", "");
4303 
4304  /* flags */
4305  prop = RNA_def_property(srna, "show_viewport", PROP_BOOLEAN, PROP_NONE);
4307  RNA_def_property_ui_text(prop, "Realtime", "Display modifier in viewport");
4310  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4311  RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_ON, 1);
4312 
4313  prop = RNA_def_property(srna, "show_render", PROP_BOOLEAN, PROP_NONE);
4316  RNA_def_property_ui_text(prop, "Render", "Use modifier during render");
4317  RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_ON, 1);
4319 
4320  prop = RNA_def_property(srna, "show_in_editmode", PROP_BOOLEAN, PROP_NONE);
4322  RNA_def_property_ui_text(prop, "Edit Mode", "Display modifier in Edit mode");
4323  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
4324  RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0);
4325 
4326  prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
4328  RNA_def_property_boolean_sdna(prop, NULL, "ui_expand_flag", 0);
4330  RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface");
4331  RNA_def_property_ui_icon(prop, ICON_DISCLOSURE_TRI_RIGHT, 1);
4332 
4333  prop = RNA_def_boolean(srna,
4334  "is_override_data",
4335  false,
4336  "Override Modifier",
4337  "In a local override object, whether this modifier comes from the linked "
4338  "reference object, or is local to the override");
4342 
4343  /* types */
4369 }
4370 
4371 #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:1287
int BKE_gpencil_object_material_index_get(struct Object *ob, struct Material *ma)
Definition: gpencil.c:2199
bool BKE_gpencil_modifier_unique_name(struct ListBase *modifiers, struct GpencilModifierData *gmd)
void id_lib_extern(struct ID *id)
Definition: lib_id.c:237
General operations, lookup, etc. for blender objects.
void BKE_object_modifier_gpencil_hook_reset(struct Object *ob, struct HookGpencilModifierData *hmd)
Definition: object.cc:1343
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
#define BLI_assert(a)
Definition: BLI_assert.h:46
#define M_PI
Definition: BLI_math_base.h:20
#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
#define SNPRINTF(dst, format,...)
Definition: BLI_string.h:485
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
Definition: string.c:64
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL()
Definition: string.c:250
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL(1
bool BLI_uniquename_cb(UniquenameCheckCallback unique_check, void *arg, const char *defname, char delim, char *name, size_t name_len)
Definition: string_utils.c:233
#define UNUSED(x)
#define MAX2(a, b)
#define MIN2(a, b)
#define STREQ(a, b)
#define BLT_I18NCONTEXT_ID_CURVE_LEGACY
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:791
@ ARM_DEF_VGROUP
@ ARM_DEF_QUATERNION
@ ARM_DEF_INVERT_VGROUP
@ ARM_DEF_ENVELOPE
@ GPPAINT_MODE_STROKE
@ GPPAINT_MODE_FILL
@ GPPAINT_MODE_BOTH
@ GP_LENGTH_INVERT_MATERIAL
@ GP_LENGTH_INVERT_CURVATURE
@ GP_LENGTH_INVERT_LAYER
@ GP_LENGTH_USE_CURVATURE
@ GP_LENGTH_INVERT_LAYERPASS
@ LRT_GPENCIL_MATERIAL_MASK_ENABLE
@ LRT_GPENCIL_INTERSECTION_MATCH
@ LRT_GPENCIL_MATERIAL_MASK_MATCH
@ 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_SHRINK
@ GP_BUILD_TRANSITION_VANISH
@ GP_BUILD_TRANSITION_GROW
@ GP_WEIGHT_INVERT_VGROUP
@ GP_WEIGHT_INVERT_OUTPUT
@ GP_WEIGHT_INVERT_MATERIAL
@ GP_WEIGHT_INVERT_LAYERPASS
@ GP_WEIGHT_MULTIPLY_DATA
@ GP_WEIGHT_INVERT_LAYER
@ GP_BUILD_MODE_SEQUENTIAL
@ GP_BUILD_MODE_ADDITIVE
@ GP_BUILD_MODE_CONCURRENT
@ GP_ENVELOPE_INVERT_LAYERPASS
@ GP_ENVELOPE_INVERT_LAYER
@ GP_ENVELOPE_INVERT_VGROUP
@ GP_ENVELOPE_INVERT_MATERIAL
@ 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
@ LRT_SILHOUETTE_FILTER_NONE
@ LRT_SILHOUETTE_FILTER_GROUP
@ LRT_SILHOUETTE_FILTER_INDIVIDUAL
@ GP_COLOR_INVERT_LAYERPASS
@ GP_COLOR_INVERT_MATERIAL
@ 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_COLLECTION
@ LRT_GPENCIL_INVERT_SILHOUETTE_FILTER
@ LRT_GPENCIL_OFFSET_TOWARDS_CUSTOM_CAMERA
@ GP_BUILD_TIMEALIGN_START
@ GP_BUILD_TIMEALIGN_END
@ GP_OPACITY_WEIGHT_FACTOR
@ GP_OPACITY_INVERT_LAYER
@ GP_OPACITY_INVERT_VGROUP
@ GP_OPACITY_CUSTOM_CURVE
@ GP_OPACITY_INVERT_MATERIAL
@ GP_OPACITY_INVERT_PASS
@ GP_OPACITY_INVERT_LAYERPASS
@ LRT_SHADOW_FILTER_ILLUMINATED_ENCLOSED_SHAPES
@ LRT_SHADOW_FILTER_ILLUMINATED
@ LRT_SHADOW_FILTER_SHADED
@ GP_THICK_WEIGHT_FACTOR
@ 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_UNIFORM_RANDOM_SCALE
@ 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_DASH_INVERT_LAYERPASS
@ GP_DASH_INVERT_MATERIAL
@ eGpencilModifierFlag_OverrideLibrary_Local
@ GP_MODIFY_COLOR_STROKE
@ GP_MODIFY_COLOR_HARDNESS
@ GP_NOISE_RANDOM_KEYFRAME
@ GP_SHRINKWRAP_INVERT_LAYER
@ GP_SHRINKWRAP_INVERT_LAYERPASS
@ GP_SHRINKWRAP_INVERT_PASS
@ GP_SHRINKWRAP_INVERT_MATERIAL
@ GP_TEX_INVERT_LAYERPASS
@ GP_TEX_INVERT_MATERIAL
@ eGpencilModifierType_Dash
@ eGpencilModifierType_Array
@ eGpencilModifierType_Noise
@ eGpencilModifierType_Mirror
@ eGpencilModifierType_Color
@ eGpencilModifierType_Multiply
@ eGpencilModifierType_Texture
@ eGpencilModifierType_Subdiv
@ eGpencilModifierType_Length
@ eGpencilModifierType_Lattice
@ eGpencilModifierType_Opacity
@ eGpencilModifierType_Hook
@ eGpencilModifierType_Simplify
@ eGpencilModifierType_Shrinkwrap
@ eGpencilModifierType_WeightProximity
@ eGpencilModifierType_Armature
@ eGpencilModifierType_WeightAngle
@ eGpencilModifierType_Lineart
@ eGpencilModifierType_None
@ eGpencilModifierType_Smooth
@ eGpencilModifierType_Tint
@ eGpencilModifierType_Envelope
@ 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_PROJECTED_SHADOW
@ LRT_EDGE_FLAG_LOOSE
@ LRT_EDGE_FLAG_INTERSECTION
@ LRT_EDGE_FLAG_LIGHT_CONTOUR
@ LRT_EDGE_FLAG_CONTOUR
@ LRT_EDGE_FLAG_EDGE_MARK
@ LRT_GPENCIL_INVERT_SOURCE_VGROUP
@ LRT_EVERYTHING_AS_CONTOUR
@ LRT_USE_CREASE_ON_SMOOTH_SURFACES
@ LRT_ALLOW_OVERLAP_EDGE_TYPES
@ LRT_FILTER_FACE_MARK
@ LRT_USE_IMAGE_BOUNDARY_TRIMMING
@ LRT_USE_CUSTOM_CAMERA
@ LRT_INTERSECTION_AS_CONTOUR
@ LRT_ALLOW_OVERLAPPING_EDGES
@ LRT_CHAIN_LOOSE_EDGES
@ LRT_GPENCIL_MATCH_OUTPUT_VGROUP
@ LRT_ALLOW_DUPLI_OBJECTS
@ LRT_FILTER_FACE_MARK_INVERT
@ LRT_USE_BACK_FACE_CULLING
@ LRT_LOOSE_AS_CONTOUR
@ LRT_CHAIN_GEOMETRY_SPACE
@ LRT_USE_CREASE_ON_SHARP_EDGES
@ LRT_FILTER_FACE_MARK_KEEP_CONTOUR
@ LRT_ALLOW_CLIPPING_BOUNDARIES
@ LRT_FILTER_FACE_MARK_BOUNDARIES
@ LRT_CHAIN_PRESERVE_DETAILS
#define MOD_SHRINKWRAP_CULL_TARGET_MASK
@ MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR
@ MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR
@ MOD_SHRINKWRAP_INVERT_VGROUP
@ MOD_SHRINKWRAP_INVERT_CULL_TARGET
@ MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS
@ MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS
@ MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS
Object is a sort of wrapper for general info.
@ OB_LATTICE
@ OB_EMPTY
@ OB_ARMATURE
@ OB_MESH
#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 Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Texture
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its and Z components Generates normals with round corners and may slow down renders Vector Displace the surface along an arbitrary direction White Noise
@ PROP_SCALE_CUBIC
Definition: RNA_types.h:108
@ PROP_FLOAT
Definition: RNA_types.h:61
@ PROP_BOOLEAN
Definition: RNA_types.h:59
@ PROP_ENUM
Definition: RNA_types.h:63
@ PROP_INT
Definition: RNA_types.h:60
@ PROP_STRING
Definition: RNA_types.h:62
@ PROP_POINTER
Definition: RNA_types.h:64
@ PROP_COLLECTION
Definition: RNA_types.h:65
#define RNA_TRANSLATION_PREC_DEFAULT
Definition: RNA_types.h:117
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
Definition: RNA_types.h:312
@ PROP_ANIMATABLE
Definition: RNA_types.h:202
@ PROP_EDITABLE
Definition: RNA_types.h:189
@ PROP_LIB_EXCEPTION
Definition: RNA_types.h:195
@ PROP_NO_DEG_UPDATE
Definition: RNA_types.h:301
@ PROP_ID_SELF_CHECK
Definition: RNA_types.h:232
#define RNA_ENUM_ITEM_HEADING(name, description)
Definition: RNA_types.h:477
@ PROP_TIME
Definition: RNA_types.h:146
@ PROP_MATRIX
Definition: RNA_types.h:158
@ PROP_XYZ
Definition: RNA_types.h:162
@ PROP_DISTANCE
Definition: RNA_types.h:149
@ PROP_COLOR
Definition: RNA_types.h:153
@ PROP_ANGLE
Definition: RNA_types.h:145
@ PROP_EULER
Definition: RNA_types.h:159
@ PROP_COORDS
Definition: RNA_types.h:167
@ PROP_NONE
Definition: RNA_types.h:126
@ PROP_FACTOR
Definition: RNA_types.h:144
@ PROP_TRANSLATION
Definition: RNA_types.h:154
@ PROP_UNSIGNED
Definition: RNA_types.h:142
#define NC_SCENE
Definition: WM_types.h:328
#define ND_MODIFIER
Definition: WM_types.h:411
#define ND_TRANSFORM
Definition: WM_types.h:405
#define NA_RENAME
Definition: WM_types.h:527
#define NC_OBJECT
Definition: WM_types.h:329
Scene scene
static bool dash_segment_name_exists_fn(void *arg, const char *name)
static const EnumPropertyItem mode_items[]
Definition: paint_mask.c:59
void rna_iterator_array_begin(CollectionPropertyIterator *iter, void *ptr, int itemsize, int length, bool free_ptr, IteratorSkipFunc skip)
Definition: rna_access.c:4781
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
Definition: rna_define.c:1148
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2740
void RNA_define_lib_overridable(const bool make_overridable)
Definition: rna_define.c:742
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
Definition: rna_define.c:1193
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
Definition: rna_define.c:3493
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
Definition: rna_define.c:2236
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
Definition: rna_define.c:3285
void RNA_def_property_float_default(PropertyRNA *prop, float value)
Definition: rna_define.c:2022
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
Definition: rna_define.c:3126
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
Definition: rna_define.c:1645
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2695
void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive)
Definition: rna_define.c:1653
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
Definition: rna_define.c:3420
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
Definition: rna_define.c:1237
void RNA_def_property_multi_array(PropertyRNA *prop, int dimension, const int length[])
Definition: rna_define.c:1598
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
Definition: rna_define.c:1872
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
Definition: rna_define.c:1048
void RNA_def_property_array(PropertyRNA *prop, int length)
Definition: rna_define.c:1539
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
Definition: rna_define.c:1737
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
Definition: rna_define.c:1772
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
Definition: rna_define.c:2769
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
Definition: rna_define.c:2900
const int rna_matrix_dimsize_4x4[]
Definition: rna_define.c:1595
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
Definition: rna_define.c:3224
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
Definition: rna_define.c:1257
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2669
void RNA_def_struct_name_property(struct StructRNA *srna, struct PropertyRNA *prop)
Definition: rna_define.c:1103
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
Definition: rna_define.c:1495
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:3385
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
Definition: rna_define.c:1028
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2601
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
Definition: rna_define.c:3028
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
Definition: rna_define.c:1245
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
Definition: rna_define.c:2848
void RNA_def_property_ui_scale_type(PropertyRNA *prop, PropertyScaleType ui_scale_type)
Definition: rna_define.c:1715
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
Definition: rna_define.c:1490
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2493
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
Definition: rna_define.c:1664
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
Definition: rna_define.c:2343
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
Definition: rna_define.c:2327
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
Definition: rna_define.c:1503
static const EnumPropertyItem gpencil_tint_type_items[]
static void rna_def_modifier_gpencilshrinkwrap(BlenderRNA *brna)
static void rna_def_modifier_gpencilsimplify(BlenderRNA *brna)
static void rna_def_modifier_gpencilhook(BlenderRNA *brna)
static void rna_def_modifier_gpencilweight_angle(BlenderRNA *brna)
static void rna_def_modifier_gpenciltexture(BlenderRNA *brna)
static const EnumPropertyItem gpencil_envelope_mode_items[]
static const EnumPropertyItem modifier_noise_random_mode_items[]
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 void rna_def_modifier_gpencilweight_proximity(BlenderRNA *brna)
static const EnumPropertyItem rna_enum_time_mode_items[]
static void rna_def_modifier_gpencillength(BlenderRNA *brna)
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_gpencilenvelope(BlenderRNA *brna)
static const EnumPropertyItem gpencil_length_mode_items[]
static void rna_def_modifier_gpencildash(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[]
const EnumPropertyItem rna_enum_shrinkwrap_face_cull_items[]
Definition: rna_modifier.c:404
const EnumPropertyItem rna_enum_shrinkwrap_type_items[]
Definition: rna_modifier.c:379
const EnumPropertyItem rna_enum_modifier_shrinkwrap_mode_items[]
Definition: rna_modifier.c:347
static const EnumPropertyItem space_items[]
#define min(a, b)
Definition: sort.c:35
#define INT16_MAX
Definition: stdint.h:135
DashGpencilModifierSegment * segments
struct DashGpencilModifierData * dmd
Definition: DNA_ID.h:368
Definition: BKE_main.h:121
ListBase greasepencil_modifiers
Definition: msgfmt.c:165
void * data
Definition: RNA_types.h:38
struct ID * owner_id
Definition: RNA_types.h:36
float max
#define N_(msgid)
void WM_main_add_notifier(unsigned int type, void *reference)
PointerRNA * ptr
Definition: wm_files.c:3480