Blender  V3.3
DNA_gpencil_modifier_types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
7 #pragma once
8 
9 #include "DNA_defs.h"
10 #include "DNA_listBase.h"
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 struct LatticeDeformData;
17 struct ShrinkwrapTreeData;
18 
19 /* WARNING ALERT! TYPEDEF VALUES ARE WRITTEN IN FILES! SO DO NOT CHANGE!
20  * (ONLY ADD NEW ITEMS AT THE END)
21  */
22 
23 typedef enum GpencilModifierType {
50  /* Keep last. */
53 
54 typedef enum GpencilModifierMode {
59  eGpencilModifierMode_Expanded_DEPRECATED = (1 << 3),
60 #endif
63 
64 typedef enum {
65  /* This modifier has been inserted in local override, and hence can be fully edited. */
68 
69 typedef struct GpencilModifierData {
71 
72  int type, mode;
73  char _pad0[4];
74  short flag;
75  /* An "expand" bit for each of the modifier's (sub)panels (uiPanelDataExpansion). */
78  char name[64];
79 
80  char *error;
82 
83 typedef struct NoiseGpencilModifierData {
86  struct Material *material;
88  char layername[64];
90  char materialname[64] DNA_DEPRECATED;
92  char vgname[64];
96  int flag;
98  float factor;
101  float factor_uvs;
103  float noise_scale;
105  short noise_mode;
106  char _pad[2];
108  int step;
112  int seed;
115 
116 typedef enum eNoiseGpencil_Flag {
118  GP_NOISE_MOD_LOCATION = (1 << 1), /* Deprecated (only for versioning). */
119  GP_NOISE_MOD_STRENGTH = (1 << 2), /* Deprecated (only for versioning). */
120  GP_NOISE_MOD_THICKNESS = (1 << 3), /* Deprecated (only for versioning). */
126  GP_NOISE_MOD_UV = (1 << 9), /* Deprecated (only for versioning). */
130 
135 
141  char layername[64];
143  char materialname[64] DNA_DEPRECATED;
147  int flag;
149  int level;
153  short type;
154  char _pad[6];
156 
157 typedef enum eSubdivGpencil_Flag {
163 
164 typedef enum eSubdivGpencil_Type {
168 
169 typedef struct ThickGpencilModifierData {
174  char layername[64];
176  char materialname[64] DNA_DEPRECATED;
178  char vgname[64];
182  int flag;
189  char _pad[4];
192 
193 typedef enum eThickGpencil_Flag {
198  GP_THICK_NORMALIZE = (1 << 4),
203 
204 typedef struct TimeGpencilModifierData {
207  char layername[64];
211  int flag;
212  int offset;
214  float frame_scale;
215  int mode;
217  int sfra, efra;
218  char _pad[4];
220 
221 typedef enum eTimeGpencil_Flag {
223  GP_TIME_KEEP_LOOP = (1 << 1),
227 
228 typedef enum eTimeGpencil_Mode {
234 
241 
246 
247 typedef struct ColorGpencilModifierData {
252  char layername[64];
254  char materialname[64] DNA_DEPRECATED;
258  int flag;
260  float hsv[3];
263  char _pad[3];
266 
267  char _pad1[4];
270 
271 typedef enum eColorGpencil_Flag {
278 
284  char layername[64];
286  char materialname[64] DNA_DEPRECATED;
288  char vgname[64];
292  int flag;
294  float factor;
297  char _pad[3];
300 
301  float hardeness;
304 
305 typedef enum eOpacityGpencil_Flag {
315 
316 typedef struct ArrayGpencilModifierData {
318  struct Object *object;
322  int count;
324  int flag;
326  float offset[3];
328  float shift[3];
330  float rnd_offset[3];
332  float rnd_rot[3];
334  float rnd_scale[3];
335  char _pad[4];
337  int seed;
338 
342  char layername[64];
344  char materialname[64] DNA_DEPRECATED;
346  int mat_rpl;
350 
351 typedef enum eArrayGpencil_Flag {
361 
362 typedef struct BuildGpencilModifierData {
366 
368  char layername[64];
370 
372  char materialname[64] DNA_DEPRECATED;
373 
376 
381  float start_frame;
382  float end_frame;
383 
385  float start_delay;
387  float length;
388 
390  short flag;
391 
393  short mode;
395  short transition;
396 
402 
404  struct Object *object;
405 
408 
410  float fade_fac;
412  char target_vgname[64];
417 
418 typedef enum eBuildGpencil_Mode {
419  /* Strokes are shown one by one until all have appeared */
421  /* All strokes start at the same time */
423  /* Only the new strokes are built */
426 
428  /* Show in forward order */
430  /* Hide in reverse order */
432  /* Hide in forward order */
435 
437  /* All strokes start at same time */
439  /* All strokes end at same time */
441 
442  /* TODO: Random Offsets, Stretch-to-Fill */
444 
445 typedef enum eBuildGpencil_Flag {
446  /* Restrict modifier to particular layer/passes? */
449 
450  /* Restrict modifier to only operating between the nominated frames */
453 
454  /* Use a percentage instead of frame number to evaluate strokes. */
458 
461  struct Object *object;
465  char layername[64];
467  char materialname[64] DNA_DEPRECATED;
469  char vgname[64];
473  int flag;
474  float strength;
480 
481 typedef enum eLatticeGpencil_Flag {
488 
494  char layername[64];
498  int flag;
508  int seed;
510  int step;
512  int mode;
513  char _pad[4];
514  /* Curvature parameters. */
517  float max_angle;
519 
520 typedef enum eLengthGpencil_Flag {
529 
530 typedef enum eLengthGpencil_Type {
534 
536  char name[64];
537  /* For path reference. */
539  int dash;
540  int gap;
541  float radius;
542  float opacity;
543  int mat_nr;
544  int flag;
546 
547 typedef struct DashGpencilModifierData {
552  char layername[64];
556  int flag;
559 
561 
565 
567 
568 typedef enum eDashGpencil_Flag {
573  GP_DASH_USE_CYCLIC = (1 << 7),
575 
578  struct Object *object;
582  char layername[64];
584  char materialname[64] DNA_DEPRECATED;
588  int flag;
591  char _pad[4];
593 
594 typedef enum eMirrorGpencil_Flag {
597  GP_MIRROR_CLIPPING = (1 << 2),
598  GP_MIRROR_AXIS_X = (1 << 3),
599  GP_MIRROR_AXIS_Y = (1 << 4),
600  GP_MIRROR_AXIS_Z = (1 << 5),
604 
605 typedef struct HookGpencilModifierData {
607 
608  struct Object *object;
612  char subtarget[64];
614  char layername[64];
616  char materialname[64] DNA_DEPRECATED;
618  char vgname[64];
623  char _pad[4];
624 
625  int flag;
628  char _pad1[3];
630  float parentinv[4][4];
632  float cent[3];
634  float falloff;
635  float force;
638 
639 typedef enum eHookGpencil_Flag {
647 
648 typedef enum eHookGpencil_Falloff {
659 
665  char layername[64];
667  char materialname[64] DNA_DEPRECATED;
671  int flag;
673  float factor;
675  short mode;
677  short step;
681  float length;
685  float distance;
687 
688 typedef enum eSimplifyGpencil_Flag {
694 
695 typedef enum eSimplifyGpencil_Mode {
696  /* Keep only one vertex every n vertices */
698  /* Use RDP algorithm */
700  /* Sample the stroke using a fixed length */
702  /* Sample the stroke doing vertex merge */
705 
711  char layername[64];
713  char materialname[64] DNA_DEPRECATED;
715  char vgname[64];
719  int flag;
720  float loc[3];
721  float rot[3];
722  float scale[3];
724  float rnd_offset[3];
726  float rnd_rot[3];
728  float rnd_scale[3];
730  int seed;
734 
735 typedef enum eOffsetGpencil_Flag {
743 
749  char layername[64];
751  char materialname[64] DNA_DEPRECATED;
753  char vgname[64];
757  int flag;
759  float factor;
761  int step;
764 
765  char _pad1[4];
768 
769 typedef enum eSmoothGpencil_Flag {
776  GP_SMOOTH_MOD_UV = (1 << 6),
782 
787  int _pad;
788  struct Object *object;
792  char vgname[64];
793 
795 
801  char layername[64];
803  char materialname[64] DNA_DEPRECATED;
807  int flag;
810 
811  int flags;
812 
814  float distance;
815  /* -1:inner 0:middle 1:outer */
816  float offset;
817 
821 
823 
824 typedef enum eMultiplyGpencil_Flag {
825  /* GP_MULTIPLY_ENABLE_ANGLE_SPLITTING = (1 << 1), Deprecated. */
828 
829 typedef struct TintGpencilModifierData {
831 
832  struct Object *object;
836  char layername[64];
838  char materialname[64] DNA_DEPRECATED;
840  char vgname[64];
846  int flag;
848  int mode;
849 
850  float factor;
851  float radius;
853  float rgb[3];
855  int type;
856 
858 
861 
862 typedef enum eTintGpencil_Type {
866 
867 typedef enum eTintGpencil_Flag {
876 
882  char layername[64];
884  char materialname[64] DNA_DEPRECATED;
886  char vgname[64];
890  int flag;
892  float uv_offset;
893  float uv_scale;
895  float fill_offset[2];
896  float fill_scale;
900  short fit_method;
901  short mode;
904  char _pad[4];
906 
907 typedef enum eTextureGpencil_Flag {
909  GP_TEX_INVERT_PASS = (1 << 1),
914 
915 /* Texture->fit_method */
916 typedef enum eTextureGpencil_Fit {
920 
921 /* Texture->mode */
922 typedef enum eTextureGpencil_Mode {
923  STROKE = 0,
924  FILL = 1,
927 
931  char target_vgname[64];
935  char layername[64];
937  char vgname[64];
941  int flag;
943  float min_weight;
947  float dist_start;
948  float dist_end;
949 
951  struct Object *object;
953 
957  char target_vgname[64];
961  char layername[64];
963  char vgname[64];
967  int flag;
969  float min_weight;
973  short axis;
975  short space;
977  float angle;
979 
980 typedef enum eWeightGpencil_Flag {
989 
990 typedef enum eGpencilModifierSpace {
994 
1000 
1002  /* These options need to be ordered in this way because those latter options requires line art to
1003  run a few extra stages. Having those values set up this way will allow
1004  #BKE_gpencil_get_lineart_modifier_limits() to find out maximum stages needed in multiple
1005  cached line art modifiers. */
1011 
1017 
1018 /* This enum is for modifier internal state only. */
1020  /* These two moved to #eLineartMainFlags to keep consistent with flag variable purpose. */
1021  /* LRT_GPENCIL_INVERT_SOURCE_VGROUP = (1 << 0), */
1022  /* LRT_GPENCIL_MATCH_OUTPUT_VGROUP = (1 << 1), */
1023  LRT_GPENCIL_BINARY_WEIGHTS = (1 << 2) /* Deprecated, this is removed for lack of use case. */,
1030 
1037 
1038 struct LineartCache;
1039 
1040 struct LineartCache;
1041 
1044 
1045  uint16_t edge_types; /* line type enable flags, bits in eLineartEdgeFlag */
1046 
1049 
1052  short level_end;
1053 
1056 
1059 
1061  char target_layer[64];
1062 
1068  char vgname[64];
1069 
1070  /* Camera focal length is divided by (1 + over-scan), before calculation, which give a wider FOV,
1071  * this doesn't change coordinates range internally (-1, 1), but makes the calculated frame
1072  * bigger than actual output. This is for the easier shifting calculation. A value of 0.5 means
1073  * the "internal" focal length become 2/3 of the actual camera. */
1074  float overscan;
1075 
1076  /* Values for point light and directional (sun) light. */
1077  /* For point light, fov always gonna be 120 deg horizontal, with 3 "cameras" covering 360 deg. */
1082 
1083  float opacity;
1084  short thickness;
1085 
1086  unsigned char mask_switches; /* #eLineartGpencilMaskSwitches */
1087  unsigned char material_mask_bits;
1088  unsigned char intersection_mask;
1089 
1090  unsigned char shadow_selection;
1091  unsigned char silhouette_selection;
1092  char _pad[1];
1093 
1096 
1099 
1102 
1103  /* CPU mode */
1105 
1106  /* eLineartMainFlags, for one time calculation. */
1108 
1109  /* #eLineArtGPencilModifierFlags, modifier internal state. */
1110  int flags;
1111 
1112  /* Move strokes towards camera to avoid clipping while preserve depth for the viewport. */
1114 
1115  /* Runtime data. */
1116 
1117  /* Because we can potentially only compute features lines once per modifier stack (Use Cache), we
1118  * need to have these override values to ensure that we have the data we need is computed and
1119  * stored in the cache. */
1125 
1126  char _pad2[6];
1127 
1129  /* Keep a pointer to the render buffer so we can call destroy from ModifierData. */
1131 
1133 
1137  struct Object *target;
1143  char layername[64];
1145  char vgname[64];
1149  int flag;
1153  float keep_dist;
1161  float proj_limit;
1164 
1169  char _pad[6];
1174 
1178 
1184  /* Keep next bit as is to be equals to mesh modifier flag to reuse functions. */
1187 
1193  char layername[64];
1195  char vgname[64];
1199  int flag;
1200  int mode;
1202  int mat_nr;
1204  float thickness;
1206  float strength;
1208  int skip;
1211  /* Length of the envelope effect. */
1212  int spread;
1213 
1214  char _pad[4];
1216 
1224 
1225 /* Texture->mode */
1231 
1232 #ifdef __cplusplus
1233 }
1234 #endif
typedef float(TangentPoint)[2]
@ 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
struct SimplifyGpencilModifierData SimplifyGpencilModifierData
struct OffsetGpencilModifierData OffsetGpencilModifierData
struct BuildGpencilModifierData BuildGpencilModifierData
struct EnvelopeGpencilModifierData EnvelopeGpencilModifierData
@ GP_SUBDIV_INVERT_MATERIAL
@ GP_SUBDIV_INVERT_LAYERPASS
@ GP_SUBDIV_INVERT_LAYER
@ eGpencilModifierMode_Render
@ eGpencilModifierMode_Editmode
@ eGpencilModifierMode_Virtual
@ eGpencilModifierMode_Realtime
struct ShrinkwrapGpencilModifierData ShrinkwrapGpencilModifierData
@ 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
struct SmoothGpencilModifierData SmoothGpencilModifierData
@ 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
struct ArmatureGpencilModifierData ArmatureGpencilModifierData
@ GP_ENVELOPE_INVERT_LAYERPASS
@ GP_ENVELOPE_INVERT_LAYER
@ GP_ENVELOPE_INVERT_VGROUP
@ GP_ENVELOPE_INVERT_MATERIAL
struct SubdivGpencilModifierData SubdivGpencilModifierData
struct GpencilModifierData GpencilModifierData
@ GP_SIMPLIFY_INVERT_LAYER
@ GP_SIMPLIFY_INVERT_PASS
@ GP_SIMPLIFY_INVERT_MATERIAL
@ GP_SIMPLIFY_INVERT_LAYERPASS
struct DashGpencilModifierData DashGpencilModifierData
struct TextureGpencilModifierData TextureGpencilModifierData
struct TintGpencilModifierData TintGpencilModifierData
@ GP_HOOK_INVERT_MATERIAL
@ GP_HOOK_INVERT_LAYERPASS
@ GP_TIME_INVERT_LAYERPASS
eLineartGpencilModifierSilhouetteFilter
@ LRT_SILHOUETTE_FILTER_NONE
@ LRT_SILHOUETTE_FILTER_GROUP
@ LRT_SILHOUETTE_FILTER_INDIVIDUAL
@ GP_COLOR_INVERT_LAYERPASS
@ GP_COLOR_INVERT_MATERIAL
struct DashGpencilModifierSegment DashGpencilModifierSegment
struct MirrorGpencilModifierData MirrorGpencilModifierData
@ 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_BINARY_WEIGHTS
@ 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
eLineartGpencilModifierShadowFilter
@ 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
struct LatticeGpencilModifierData LatticeGpencilModifierData
@ GP_TEX_CONSTANT_LENGTH
eLineartGpencilModifierSource
struct ColorGpencilModifierData ColorGpencilModifierData
@ eGPHook_Falloff_InvSquare
@ eGPHook_Falloff_Smooth
@ eGPHook_Falloff_Linear
@ eGPHook_Falloff_Sphere
struct LineartGpencilModifierData LineartGpencilModifierData
struct WeightAngleGpencilModifierData WeightAngleGpencilModifierData
struct OpacityGpencilModifierData OpacityGpencilModifierData
struct HookGpencilModifierData HookGpencilModifierData
@ 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_OPACITY_MODE_STRENGTH
@ GP_OPACITY_MODE_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
struct MultiplyGpencilModifierData MultiplyGpencilModifierData
@ eGpencilModifierFlag_OverrideLibrary_Local
struct ThickGpencilModifierData ThickGpencilModifierData
@ GP_MODIFY_COLOR_STROKE
@ GP_MODIFY_COLOR_HARDNESS
struct LengthGpencilModifierData LengthGpencilModifierData
@ GP_NOISE_RANDOM_KEYFRAME
@ GP_SHRINKWRAP_INVERT_LAYER
@ GP_SHRINKWRAP_INVERT_VGROUP
@ 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
struct ArrayGpencilModifierData ArrayGpencilModifierData
struct TimeGpencilModifierData TimeGpencilModifierData
@ GP_NOISE_INVERT_VGROUP
@ GP_NOISE_INVERT_MATERIAL
@ GP_NOISE_MOD_THICKNESS
@ GP_NOISE_INVERT_LAYERPASS
struct WeightProxGpencilModifierData WeightProxGpencilModifierData
struct NoiseGpencilModifierData NoiseGpencilModifierData
These structs are the foundation for all linked lists in the library system.
#define DNA_DEPRECATED_ALLOW
Definition: action.c:16
unsigned short uint16_t
Definition: stdint.h:79
char materialname[64] DNA_DEPRECATED
char materialname[64] DNA_DEPRECATED
char materialname[64] DNA_DEPRECATED
struct CurveMapping * curve_intensity
DashGpencilModifierSegment * segments
struct DashGpencilModifierData * dmd
struct GpencilModifierData * next
struct GpencilModifierData * prev
char materialname[64] DNA_DEPRECATED
struct LatticeDeformData * cache_data
struct CurveMapping * curve_intensity
char materialname[64] DNA_DEPRECATED
struct ShrinkwrapTreeData * cache_data
struct CurveMapping * curve_thickness
char materialname[64] DNA_DEPRECATED
struct CurveMapping * curve_intensity
char materialname[64] DNA_DEPRECATED