28 "Display strokes using Grease Pencil layer order and stroke order to define depth"},
33 "Display strokes using real 3D position in 3D space"},
34 {0,
nullptr, 0,
nullptr,
nullptr},
39# include <fmt/format.h>
71 grease_pencil->autolock_inactive_layers();
74 for (
Layer *layer : grease_pencil->layers_for_write()) {
75 layer->set_locked(
false);
79 rna_grease_pencil_update(
nullptr,
nullptr,
ptr);
93 return drawing->wrap().user_count();
96static int rna_GreasePencilDrawing_curve_offset_data_length(
PointerRNA *
ptr)
108 drawing->
geometry.wrap().offsets_for_write().data(),
115static bool rna_GreasePencilDrawing_curve_offset_data_lookup_int(
PointerRNA *
ptr,
124 *
ptr, &RNA_IntAttributeValue, &drawing->
geometry.wrap().offsets_for_write()[index], *r_ptr);
136 (
void *)sorted_keys.
data(),
151 &RNA_GreasePencilFrame,
155static int rna_GreasePencilLayer_frames_length(
PointerRNA *
ptr)
159 return layer.
frames().size();
166 if (index < 0 || index >= layer.
sorted_keys().size()) {
172 &RNA_GreasePencilFrame,
178static std::pair<int, const blender::bke::greasepencil::Layer *> find_layer_of_frame(
182 for (
const Layer *layer : grease_pencil.layers()) {
183 for (
const auto &[key, frame] : layer->
frames().items()) {
184 if (&frame == &find_frame) {
185 return {int(key), layer};
192static std::pair<int, blender::bke::greasepencil::Layer *> find_layer_of_frame(
196 for (
Layer *layer : grease_pencil.layers_for_write()) {
197 for (
const auto &[key, frame] : layer->
frames().items()) {
198 if (&frame == &find_frame) {
199 return {int(key), layer};
211 if (frame_to_find.is_end()) {
217 auto [frame_number, this_layer] = find_layer_of_frame(grease_pencil, frame_to_find);
218 if (this_layer ==
nullptr) {
222 const Drawing *drawing = grease_pencil.get_drawing_at(*this_layer, frame_number);
224 *
ptr, &RNA_GreasePencilDrawing,
static_cast<void *
>(
const_cast<Drawing *
>(drawing)));
227static void rna_Frame_drawing_set(
PointerRNA *frame_ptr,
232 GreasePencil &grease_pencil = *rna_grease_pencil(frame_ptr);
240 auto [frame_number, this_layer] = find_layer_of_frame(grease_pencil, frame_to_find);
244 Drawing *dst_drawing = grease_pencil.get_drawing_at(*this_layer, frame_number);
245 if (dst_drawing ==
nullptr) {
249 if (src_drawing ==
nullptr) {
254 *dst_drawing = *src_drawing;
266 auto [frame_number, this_layer] = find_layer_of_frame(grease_pencil, frame_to_find);
272static void rna_grease_pencil_layer_mask_name_get(
PointerRNA *
ptr,
char *dst)
276 if (
mask->layer_name !=
nullptr) {
277 strcpy(dst,
mask->layer_name);
284static int rna_grease_pencil_layer_mask_name_length(
PointerRNA *
ptr)
288 if (
mask->layer_name !=
nullptr) {
289 return strlen(
mask->layer_name);
294static void rna_grease_pencil_layer_mask_name_set(
PointerRNA *
ptr,
const char *value)
300 const std::string oldname(
mask->layer_name);
302 grease_pencil->rename_node(*
G_MAIN, *node, value);
306static int rna_grease_pencil_active_mask_index_get(
PointerRNA *
ptr)
312static void rna_grease_pencil_active_mask_index_set(
PointerRNA *
ptr,
int value)
318static void rna_grease_pencil_active_mask_index_range(
328 if (!node.
name().is_empty()) {
329 strcpy(dst, node.
name().c_str());
338 if (!node.
name().is_empty()) {
339 return node.
name().size();
349 const size_t name_length = node.
name().size();
350 std::string name_esc(name_length * 2,
'\0');
352 return fmt::format(
"{}[\"{}\"]", prefix, name_esc.c_str());
358 switch (node->
type) {
360 return &RNA_GreasePencilLayer;
362 return &RNA_GreasePencilLayerGroup;
369static void rna_GreasePencilTreeNode_name_get(
PointerRNA *
ptr,
char *value)
372 tree_node_name_get(node->wrap(), value);
375static int rna_GreasePencilTreeNode_name_length(
PointerRNA *
ptr)
378 return tree_node_name_length(node->wrap());
381static void rna_GreasePencilTreeNode_name_set(
PointerRNA *
ptr,
const char *value)
386 grease_pencil->rename_node(*
G_MAIN, node->wrap(), value);
398 *
ptr, &RNA_GreasePencilLayerGroup,
static_cast<void *
>(node->
parent));
429 &RNA_GreasePencilLayer,
433static int rna_iterator_grease_pencil_layers_length(
PointerRNA *
ptr)
436 return grease_pencil->layers().size();
439static std::optional<std::string> rna_GreasePencilLayer_path(
const PointerRNA *
ptr)
442 return tree_node_name_path(layer->wrap().as_node(),
"layers");
445static int rna_GreasePencilLayer_pass_index_get(
PointerRNA *
ptr)
451 const int layer_idx = *grease_pencil.get_layer_index(layer);
453 const VArray layer_passes = *grease_pencil.attributes().lookup_or_default<
int>(
455 return layer_passes[layer_idx];
458static void rna_GreasePencilLayer_pass_index_set(
PointerRNA *
ptr,
int value)
464 const int layer_idx = *grease_pencil.get_layer_index(layer);
467 grease_pencil.attributes_for_write().lookup_or_add_for_write_span<
int>(
470 layer_passes.span[layer_idx] = std::max(0, value);
471 layer_passes.finish();
486static void rna_GreasePencilLayer_bone_set(
PointerRNA *
ptr,
const char *value)
494static void rna_GreasePencilLayer_tint_color_get(
PointerRNA *
ptr,
float *values)
500 const int layer_idx = *grease_pencil.get_layer_index(layer);
507static void rna_GreasePencilLayer_tint_color_set(
PointerRNA *
ptr,
const float *values)
513 const int layer_idx = *grease_pencil.get_layer_index(layer);
516 grease_pencil.attributes_for_write().lookup_or_add_for_write_span<
ColorGeometry4f>(
520 ColorGeometry4f(0.0f, 0.0f, 0.0f, 0.0f), grease_pencil.layers().size()))))
522 copy_v3_v3(tint_colors.span[layer_idx], values);
523 tint_colors.finish();
527static float rna_GreasePencilLayer_tint_factor_get(
PointerRNA *
ptr)
533 const int layer_idx = *grease_pencil.get_layer_index(layer);
537 return tint_colors[layer_idx][3];
540static void rna_GreasePencilLayer_tint_factor_set(
PointerRNA *
ptr,
const float value)
546 const int layer_idx = *grease_pencil.get_layer_index(layer);
549 grease_pencil.attributes_for_write().lookup_or_add_for_write_span<
ColorGeometry4f>(
553 ColorGeometry4f(0.0f, 0.0f, 0.0f, 0.0f), grease_pencil.layers().size()))))
555 tint_colors.span[layer_idx][3] = value;
556 tint_colors.finish();
560static float rna_GreasePencilLayer_radius_offset_get(
PointerRNA *
ptr)
566 const int layer_idx = *grease_pencil.get_layer_index(layer);
568 const VArray radius_offsets = *grease_pencil.attributes().lookup_or_default<
float>(
570 return radius_offsets[layer_idx];
573static void rna_GreasePencilLayer_radius_offset_set(
PointerRNA *
ptr,
const float value)
579 const int layer_idx = *grease_pencil.get_layer_index(layer);
582 grease_pencil.attributes_for_write().lookup_or_add_for_write_span<
float>(
588 radius_offsets.span[layer_idx] = value;
589 radius_offsets.finish();
593static void rna_GreasePencilLayer_matrix_local_get(
PointerRNA *
ptr,
float *values)
600static void rna_GreasePencilLayer_matrix_parent_inverse_get(
PointerRNA *
ptr,
float *values)
610 if (grease_pencil->has_active_layer()) {
612 *
ptr, &RNA_GreasePencilLayer,
static_cast<void *
>(grease_pencil->get_active_layer()));
617static void rna_GreasePencil_active_layer_set(
PointerRNA *
ptr,
629 if (grease_pencil->has_active_group()) {
631 *
ptr, &RNA_GreasePencilLayerGroup,
static_cast<void *
>(grease_pencil->get_active_group()));
636static void rna_GreasePencil_active_group_set(
PointerRNA *
ptr,
644 grease_pencil->set_active_node(node);
649static std::optional<std::string> rna_GreasePencilLayerGroup_path(
const PointerRNA *
ptr)
652 return tree_node_name_path(group->wrap().as_node(),
"layer_groups");
655static void rna_GreasePencilLayerGroup_is_expanded_set(
PointerRNA *
ptr,
const bool value)
658 group->wrap().set_expanded(value);
689 &RNA_GreasePencilLayerGroup,
693static int rna_iterator_grease_pencil_layer_groups_length(
PointerRNA *
ptr)
696 return grease_pencil->layer_groups().size();
706static void rna_group_color_tag_set(
PointerRNA *
ptr,
int value)
723 {0,
nullptr, 0,
nullptr,
nullptr}};
749 "rna_GreasePencilDrawing_curve_offset_data_begin",
750 "rna_iterator_array_next",
751 "rna_iterator_array_end",
752 "rna_iterator_array_get",
753 "rna_GreasePencilDrawing_curve_offset_data_length",
754 "rna_GreasePencilDrawing_curve_offset_data_lookup_int",
759 prop,
"Curve Offsets",
"Offset indices of the first point of each curve");
776 ICON_KEYTYPE_KEYFRAME_VEC,
778 "Normal keyframe, e.g. for key poses"},
781 ICON_KEYTYPE_BREAKDOWN_VEC,
783 "A breakdown pose, e.g. for transitions between key poses"},
786 ICON_KEYTYPE_MOVING_HOLD_VEC,
788 "A keyframe that is part of a moving hold"},
791 ICON_KEYTYPE_EXTREME_VEC,
793 "An 'extreme' pose, or some other purpose as needed"},
796 ICON_KEYTYPE_JITTER_VEC,
798 "A filler or baked keyframe for keying on ones, or some other purpose as needed"},
801 ICON_KEYTYPE_GENERATED_VEC,
803 "A key generated automatically by a tool, not manually created"},
804 {0,
nullptr, 0,
nullptr,
nullptr},
815 prop,
"rna_Frame_drawing_get",
"rna_Frame_drawing_set",
nullptr,
nullptr);
871 "rna_grease_pencil_layer_mask_name_get",
872 "rna_grease_pencil_layer_mask_name_length",
873 "rna_grease_pencil_layer_mask_name_set");
900 srna,
"Grease Pencil Mask Layers",
"Collection of Grease Pencil masking layers");
905 "rna_grease_pencil_active_mask_index_get",
906 "rna_grease_pencil_active_mask_index_set",
907 "rna_grease_pencil_active_mask_index_range");
918 srna,
"Tree Node",
"Grease Pencil node in the layer tree. Either a layer or a group");
926 "rna_GreasePencilTreeNode_name_get",
927 "rna_GreasePencilTreeNode_name_length",
928 "rna_GreasePencilTreeNode_name_set");
958 prop,
"Onion Skinning",
"Display onion skins before and after the current frame");
968 "The visibility of drawings in this tree node is affected by the layers in the masks list");
991 prop,
"Previous Node",
"The layer tree node before (i.e. below) this one");
999 prop,
"rna_GreasePencilTreeNode_parent_layer_group_get",
nullptr,
nullptr,
nullptr);
1010 static const float scale_defaults[3] = {1.0f, 1.0f, 1.0f};
1019 {0,
nullptr, 0,
nullptr,
nullptr}};
1021 srna =
RNA_def_struct(brna,
"GreasePencilLayer",
"GreasePencilTreeNode");
1031 "rna_GreasePencilLayer_frames_begin",
1032 "rna_iterator_array_next",
1033 "rna_iterator_array_end",
1034 "rna_GreasePencilLayer_frames_get",
1035 "rna_GreasePencilLayer_frames_length",
1036 "rna_GreasePencilLayer_frames_lookup_int",
1067 "rna_GreasePencilLayer_tint_color_get",
1068 "rna_GreasePencilLayer_tint_color_set",
1077 "rna_GreasePencilLayer_tint_factor_get",
1078 "rna_GreasePencilLayer_tint_factor_set",
1087 "rna_GreasePencilLayer_radius_offset_get",
1088 "rna_GreasePencilLayer_radius_offset_set",
1098 prop,
"Use Lights",
"Enable the use of lights on stroke and fill materials");
1105 "rna_GreasePencilLayer_pass_index_get",
1106 "rna_GreasePencilLayer_pass_index_set",
1113 prop,
nullptr,
"rna_GreasePencilLayer_parent_set",
nullptr,
nullptr);
1125 "Name of parent bone. Only used when the parent object is an armature.");
1155 "Only include Layer in this View Layer render output (leave blank to include always)");
1161 prop,
"Use Masks in Render",
"Include the mask layers when rendering the view-layer");
1175 prop,
"Ignore Material Locking",
"Allow editing strokes even if they use locked materials");
1190 prop,
"Inverse Parent Matrix",
"Inverse of layer's parent transformation matrix");
1192 prop,
"rna_GreasePencilLayer_matrix_parent_inverse_get",
nullptr,
nullptr);
1210 "rna_GreasePencil_active_layer_get",
1211 "rna_GreasePencil_active_layer_set",
1231 {0,
nullptr, 0,
nullptr,
nullptr},
1239 srna =
RNA_def_struct(brna,
"GreasePencilLayerGroup",
"GreasePencilTreeNode");
1266 srna =
RNA_def_struct(brna,
"GreasePencilv3LayerGroup",
nullptr);
1273 "rna_GreasePencil_active_group_get",
1274 "rna_GreasePencil_active_group_set",
1293 "Frames in absolute range of the scene frame"},
1298 "Frames in relative range of the Grease Pencil keyframes"},
1300 {0,
nullptr, 0,
nullptr,
nullptr},
1307 ICON_KEYTYPE_KEYFRAME_VEC,
1309 "Normal keyframe, e.g. for key poses"},
1312 ICON_KEYTYPE_BREAKDOWN_VEC,
1314 "A breakdown pose, e.g. for transitions between key poses"},
1317 ICON_KEYTYPE_MOVING_HOLD_VEC,
1319 "A keyframe that is part of a moving hold"},
1322 ICON_KEYTYPE_EXTREME_VEC,
1324 "An 'extreme' pose, or some other purpose as needed"},
1327 ICON_KEYTYPE_JITTER_VEC,
1329 "A filler or baked keyframe for keying on ones, or some other purpose as needed"},
1332 ICON_KEYTYPE_GENERATED_VEC,
1334 "A key generated automatically by a tool, not manually created"},
1335 {0,
nullptr, 0,
nullptr,
nullptr},
1344 "Maximum number of frames to show before current frame "
1345 "(0 = don't show any frames before current)");
1354 "Maximum number of frames to show after current frame "
1355 "(0 = don't show any frames after current)");
1373 "rna_grease_pencil_update");
1383 "rna_grease_pencil_update");
1405 prop,
"Fade",
"Display onion keyframes with a fade in color transparency");
1413 prop,
"Show Start Frame",
"Display onion keyframes for looping animations");
1454 "rna_IDMaterials_assign_int");
1460 "rna_iterator_grease_pencil_layers_begin",
1461 "rna_iterator_grease_pencil_layers_next",
1463 "rna_iterator_grease_pencil_layers_get",
1464 "rna_iterator_grease_pencil_layers_length",
1475 "rna_iterator_grease_pencil_layer_groups_begin",
1476 "rna_iterator_grease_pencil_layer_groups_next",
1478 "rna_iterator_grease_pencil_layer_groups_get",
1479 "rna_iterator_grease_pencil_layer_groups_length",
1491 "Automatically lock all layers except the active one to avoid accidental changes");
1500 "Stroke Depth Order",
1501 "Defines how the strokes are ordered in 3D space (for objects not displayed 'In Front')");
Generic geometry attributes built on CustomData.
Low-level operations for curves.
Low-level operations for grease pencil.
#define BLI_assert_unreachable()
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
MINLINE void copy_v3_v3(float r[3], const float a[3])
size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
#define BLT_I18NCONTEXT_ID_GPENCIL
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ GP_LAYER_BLEND_HARDLIGHT
@ GP_LAYER_BLEND_MULTIPLY
@ GP_LAYER_BLEND_SUBTRACT
@ GP_ONION_SKINNING_MODE_ABSOLUTE
@ GP_ONION_SKINNING_MODE_SELECTED
@ GP_ONION_SKINNING_MODE_RELATIVE
@ GP_LAYER_TREE_NODE_EXPANDED
@ GP_LAYER_TREE_NODE_IGNORE_LOCKED_MATERIALS
@ GP_LAYER_TREE_NODE_LOCKED
@ GP_LAYER_TREE_NODE_MUTE
@ GP_LAYER_TREE_NODE_HIDE
@ GP_LAYER_TREE_NODE_SELECT
@ GP_LAYER_TREE_NODE_HIDE_ONION_SKINNING
@ GP_LAYER_TREE_NODE_USE_LIGHTS
@ GP_LAYER_TREE_NODE_HIDE_MASKS
@ GP_LAYER_TREE_NODE_DISABLE_MASKS_IN_VIEWLAYER
@ GREASE_PENCIL_AUTOLOCK_LAYERS
@ GREASE_PENCIL_STROKE_ORDER_3D
@ GP_ONION_SKINNING_USE_FADE
@ GP_ONION_SKINNING_SHOW_LOOP
@ GP_ONION_SKINNING_USE_CUSTOM_COLORS
@ GP_ONION_SKINNING_FILTER_KEYTYPE_MOVEHOLD
@ GP_ONION_SKINNING_FILTER_KEYTYPE_JITTER
@ GP_ONION_SKINNING_FILTER_KEYTYPE_KEYFRAME
@ GP_ONION_SKINNING_FILTER_KEYTYPE_BREAKDOWN
@ GP_ONION_SKINNING_FILTER_KEYTYPE_EXTREME
#define GREASE_PENCIL_ONION_SKINNING_FILTER_ALL
#define RNA_TRANSLATION_PREC_DEFAULT
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
@ PROPOVERRIDE_NO_COMPARISON
const Map< FramesMapKeyT, GreasePencilFrame > & frames() const
Span< FramesMapKeyT > sorted_keys() const
static VArray from_single(T value, const int64_t size)
constexpr bool contains(int64_t value) const
constexpr const T * data() const
constexpr int64_t size() const
constexpr IndexRange index_range() const
constexpr bool is_empty() const
StringRefNull parent_bone_name() const
float4x4 local_transform() const
float4x4 parent_inverse() const
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
bool grease_pencil_layer_parent_set(bke::greasepencil::Layer &layer, Object *parent, StringRefNull bone, const bool keep_transform)
float wrap(float value, float max, float min)
ColorSceneLinear4f< eAlpha::Premultiplied > ColorGeometry4f
const PointerRNA PointerRNA_NULL
void * rna_iterator_array_get(CollectionPropertyIterator *iter)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, void *data, size_t itemsize, int64_t length, bool free_ptr, IteratorSkipFunc skip)
void rna_pointer_create_with_ancestors(const PointerRNA &parent, StructRNA *type, void *data, PointerRNA &r_ptr)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
PointerRNA RNA_pointer_create_with_parent(const PointerRNA &parent, StructRNA *type, void *data)
void rna_def_animdata_common(StructRNA *srna)
void rna_def_attributes_common(StructRNA *srna, const AttributeOwnerType type)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
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)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_property_multi_array(PropertyRNA *prop, int dimension, const int length[])
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
const int rna_matrix_dimsize_4x4[]
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_struct_ui_icon(StructRNA *srna, int icon)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_float_array_default(PropertyRNA *prop, const float *array)
void RNA_def_property_boolean_negative_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
static void rna_def_grease_pencil_frame(BlenderRNA *brna)
const EnumPropertyItem rna_enum_stroke_depth_order_items[]
const EnumPropertyItem enum_layergroup_color_items[]
static void rna_def_grease_pencil_tree_node(BlenderRNA *brna)
static void rna_def_grease_pencil_data(BlenderRNA *brna)
static void rna_def_grease_pencil_drawing(BlenderRNA *brna)
static void rna_def_grease_pencil_layer_group(BlenderRNA *brna)
static void rna_def_grease_pencil_layer_masks(BlenderRNA *brna, PropertyRNA *cprop)
static void rna_def_grease_pencil_layer_mask(BlenderRNA *brna)
void RNA_def_grease_pencil(BlenderRNA *brna)
static void rna_def_grease_pencil_onion_skinning(StructRNA *srna)
static void rna_def_grease_pencil_layer_groups(BlenderRNA *brna, PropertyRNA *cprop)
static void rna_def_grease_pencil_frames(BlenderRNA *brna, PropertyRNA *cprop)
static void rna_def_grease_pencil_layer(BlenderRNA *brna)
static void rna_def_grease_pencil_layers(BlenderRNA *brna, PropertyRNA *cprop)
void RNA_api_grease_pencil_drawing(StructRNA *srna)
void RNA_api_grease_pencil_frames(StructRNA *srna)
void RNA_api_grease_pencil_layer(StructRNA *srna)
void RNA_api_grease_pencil_layers(StructRNA *srna)
void RNA_api_grease_pencil_layer_groups(StructRNA *srna)
union CollectionPropertyIterator::@220100362304005352221007113371015217044252346141 internal
struct GreasePencilLayerTreeGroup * parent
GreasePencilLayerTreeGroup * root_group_ptr
const T * base_ptr() const
void WM_main_add_notifier(uint type, void *reference)