38 {
CD_PROP_FLOAT3,
"FLOAT_VECTOR", 0,
"Vector",
"3D vector with floating-point values"},
39 {
CD_PROP_COLOR,
"FLOAT_COLOR", 0,
"Color",
"RGBA color with 32-bit floating-point values"},
44 "RGBA color with 8-bit positive integer values"},
46 {
CD_PROP_BOOL,
"BOOLEAN", 0,
"Boolean",
"True or false"},
47 {
CD_PROP_FLOAT2,
"FLOAT2", 0,
"2D Vector",
"2D vector with floating-point values"},
48 {
CD_PROP_INT8,
"INT8", 0,
"8-Bit Integer",
"Smaller integer with a range from -128 to 127"},
49 {
CD_PROP_INT32_2D,
"INT32_2D", 0,
"2D Integer Vector",
"32-bit signed integer vector"},
50 {
CD_PROP_QUATERNION,
"QUATERNION", 0,
"Quaternion",
"Floating point quaternion rotation"},
52 {0,
nullptr, 0,
nullptr,
nullptr},
56 {
CD_PROP_COLOR,
"FLOAT_COLOR", 0,
"Color",
"RGBA color 32-bit floating-point values"},
61 "RGBA color with 8-bit positive integer values"},
62 {0,
nullptr, 0,
nullptr,
nullptr}};
68 {
CD_PROP_FLOAT3,
"FLOAT_VECTOR", 0,
"Vector",
"3D vector with floating-point values"},
69 {
CD_PROP_COLOR,
"FLOAT_COLOR", 0,
"Color",
"RGBA color with 32-bit floating-point values"},
74 "RGBA color with 8-bit positive integer values"},
76 {
CD_PROP_BOOL,
"BOOLEAN", 0,
"Boolean",
"True or false"},
77 {
CD_PROP_FLOAT2,
"FLOAT2", 0,
"2D Vector",
"2D vector with floating-point values"},
78 {
CD_PROP_FLOAT2,
"FLOAT2", 0,
"2D Vector",
"2D vector with floating-point values"},
79 {
CD_PROP_INT32_2D,
"INT32_2D", 0,
"2D Integer Vector",
"32-bit signed integer vector"},
80 {
CD_PROP_QUATERNION,
"QUATERNION", 0,
"Quaternion",
"Floating point quaternion rotation"},
82 {0,
nullptr, 0,
nullptr,
nullptr},
88 {
int(AttrDomain::Point),
"POINT", 0,
"Point",
"Attribute on point"},
89 {
int(AttrDomain::Edge),
"EDGE", 0,
"Edge",
"Attribute on mesh edge"},
90 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
91 {
int(AttrDomain::Corner),
"CORNER", 0,
"Face Corner",
"Attribute on mesh face corner"},
94 {
int(AttrDomain::Curve),
"CURVE", 0,
"Spline",
"Attribute on spline"},
95 {
int(AttrDomain::Instance),
"INSTANCE", 0,
"Instance",
"Attribute on instance"},
96 {
int(AttrDomain::Layer),
"LAYER", 0,
"Layer",
"Attribute on Grease Pencil layer"},
97 {0,
nullptr, 0,
nullptr,
nullptr},
101 {
int(AttrDomain::Point),
"POINT", 0,
"Point",
"Attribute on point"},
102 {
int(AttrDomain::Edge),
"EDGE", 0,
"Edge",
"Attribute on mesh edge"},
103 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
104 {
int(AttrDomain::Corner),
"CORNER", 0,
"Face Corner",
"Attribute on mesh face corner"},
105 {0,
nullptr, 0,
nullptr,
nullptr},
109 {
int(AttrDomain::Point),
"POINT", 0,
"Point",
"Attribute on point"},
110 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
111 {
int(AttrDomain::Corner),
"CORNER", 0,
"Face Corner",
"Attribute on mesh face corner"},
112 {0,
nullptr, 0,
nullptr,
nullptr},
116 {
int(AttrDomain::Point),
"POINT", 0,
"Point",
"Attribute on point"},
117 {
int(AttrDomain::Edge),
"EDGE", 0,
"Edge",
"Attribute on mesh edge"},
118 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
119 {0,
nullptr, 0,
nullptr,
nullptr},
123 {
int(AttrDomain::Point),
"POINT", 0,
"Point",
"Attribute on point"},
124 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
125 {
int(AttrDomain::Curve),
"CURVE", 0,
"Spline",
"Attribute on spline"},
126 {0,
nullptr, 0,
nullptr,
nullptr},
130 {
int(AttrDomain::Point),
"POINT", 0,
"Point",
"Attribute on point"},
131 {
int(AttrDomain::Edge),
"EDGE", 0,
"Edge",
"Attribute on mesh edge"},
132 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
133 {
int(AttrDomain::Curve),
"CURVE", 0,
"Spline",
"Attribute on spline"},
134 {0,
nullptr, 0,
nullptr,
nullptr},
138 {
int(AttrDomain::Edge),
"EDGE", 0,
"Edge",
"Attribute on mesh edge"},
139 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
140 {0,
nullptr, 0,
nullptr,
nullptr},
144 {
int(AttrDomain::Point),
"POINT", 0,
"Point",
"Attribute on point"},
145 {
int(AttrDomain::Edge),
"EDGE", 0,
"Edge",
"Attribute on mesh edge"},
146 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
147 {
int(AttrDomain::Curve),
"CURVE", 0,
"Spline",
"Attribute on spline"},
148 {
int(AttrDomain::Instance),
"INSTANCE", 0,
"Instance",
"Attribute on instance"},
149 {
int(AttrDomain::Layer),
"LAYER", 0,
"Layer",
"Attribute on Grease Pencil layer"},
150 {0,
nullptr, 0,
nullptr,
nullptr},
154 {
int(AttrDomain::Auto),
"AUTO", 0,
"Auto",
""},
155 {
int(AttrDomain::Point),
"POINT", 0,
"Point",
"Attribute on point"},
156 {
int(AttrDomain::Edge),
"EDGE", 0,
"Edge",
"Attribute on mesh edge"},
157 {
int(AttrDomain::Face),
"FACE", 0,
"Face",
"Attribute on mesh faces"},
158 {
int(AttrDomain::Corner),
"CORNER", 0,
"Face Corner",
"Attribute on mesh face corner"},
159 {
int(AttrDomain::Curve),
"CURVE", 0,
"Spline",
"Attribute on spline"},
160 {
int(AttrDomain::Instance),
"INSTANCE", 0,
"Instance",
"Attribute on instance"},
161 {
int(AttrDomain::Layer),
"LAYER", 0,
"Layer",
"Attribute on Grease Pencil layer"},
162 {0,
nullptr, 0,
nullptr,
nullptr},
166 {
int(AttrDomain::Point),
"POINT", 0,
"Vertex",
""},
167 {
int(AttrDomain::Corner),
"CORNER", 0,
"Face Corner",
""},
168 {0,
nullptr, 0,
nullptr,
nullptr}};
171 {
int(AttrDomain::Point),
"POINT", 0,
"Control Point",
""},
172 {
int(AttrDomain::Curve),
"CURVE", 0,
"Curve",
""},
173 {0,
nullptr, 0,
nullptr,
nullptr}};
177# include <fmt/format.h>
197 for (
int i = 0; i < layers_data->
totlayer; i++) {
198 if (&layers_data->
layers[i] == layer) {
207 for (
int i = 0; i < curve_data->
totlayer; i++) {
208 if (&curve_data->
layers[i] == layer) {
213 for (
int i = 0; i < point_data->
totlayer; i++) {
214 if (&point_data->
layers[i] == layer) {
228 if (
ptr->
type == &RNA_GreasePencilDrawing) {
234static std::optional<std::string> rna_Attribute_path(
const PointerRNA *
ptr)
237 char layer_name_esc[
sizeof(layer->name) * 2];
238 BLI_str_escape(layer_name_esc, layer->name,
sizeof(layer_name_esc));
239 return fmt::format(
"attributes[\"{}\"]", layer_name_esc);
246 return &RNA_FloatAttribute;
248 return &RNA_IntAttribute;
250 return &RNA_FloatVectorAttribute;
252 return &RNA_FloatColorAttribute;
254 return &RNA_ByteColorAttribute;
256 return &RNA_StringAttribute;
258 return &RNA_BoolAttribute;
260 return &RNA_Float2Attribute;
262 return &RNA_ByteIntAttribute;
264 return &RNA_Int2Attribute;
266 return &RNA_QuaternionAttribute;
268 return &RNA_Float4x4Attribute;
280static void rna_Attribute_name_set(
PointerRNA *
ptr,
const char *value)
287static int rna_Attribute_name_editable(
const PointerRNA *
ptr,
const char **r_info)
292 *r_info =
N_(
"Cannot modify name of required geometry attribute");
306 bool include_instances,
314 int(AttrDomain::Point),
"POINT", 0,
N_(
"Vertex"),
N_(
"Attribute per point/vertex")};
320 !
ELEM(domain_item->
value,
int(AttrDomain::Point)))
325 !
ELEM(domain_item->
value,
int(AttrDomain::Point),
int(AttrDomain::Curve)))
330 ELEM(domain_item->
value,
int(AttrDomain::Curve)))
335 !
ELEM(domain_item->
value,
int(AttrDomain::Layer)))
339 if (!include_instances && domain_item->
value ==
int(AttrDomain::Instance)) {
419static void rna_ByteColorAttributeValue_color_get(
PointerRNA *
ptr,
float *values)
425static void rna_ByteColorAttributeValue_color_set(
PointerRNA *
ptr,
const float *values)
431static void rna_ByteColorAttributeValue_color_srgb_get(
PointerRNA *
ptr,
float *values)
434 values[0] =
col->r / 255.0f;
435 values[1] =
col->g / 255.0f;
436 values[2] =
col->b / 255.0f;
437 values[3] =
col->a / 255.0f;
440static void rna_ByteColorAttributeValue_color_srgb_set(
PointerRNA *
ptr,
const float *values)
449static void rna_FloatColorAttributeValue_color_srgb_get(
PointerRNA *
ptr,
float *values)
455static void rna_FloatColorAttributeValue_color_srgb_set(
PointerRNA *
ptr,
const float *values)
463static void rna_StringAttributeValue_s_get(
PointerRNA *
ptr,
char *value)
466 const int len = std::min<int>(mstring->
s_len,
sizeof(mstring->
s) - 1);
467 memcpy(value, mstring->
s,
len);
475 const int len = std::min<int>(mstring->
s_len,
sizeof(mstring->
s) - 1);
479static void rna_StringAttributeValue_s_set(
PointerRNA *
ptr,
const char *value)
486 memcpy(mstring->
s, value, mstring->
s_len);
492 ID *
id,
ReportList *reports,
const char *name,
const int type,
const int domain)
504 if (!mesh->active_color_attribute) {
507 if (!mesh->default_color_attribute) {
508 mesh->default_color_attribute =
BLI_strdup(layer->name);
561 iter->internal.
array.length;
563 if (customdata ==
nullptr) {
568 }
while (!iter->
valid);
575 rna_AttributeGroup_next_domain(owner, iter, rna_Attributes_layer_skip);
584 rna_AttributeGroup_next_domain(owner, iter, rna_Attributes_layer_skip);
593 if (type ==
nullptr) {
603 rna_AttributeGroup_next_domain(owner, iter, rna_Attributes_noncolor_layer_skip);
612 rna_AttributeGroup_next_domain(owner, iter, rna_Attributes_noncolor_layer_skip);
621 if (type ==
nullptr) {
639static int rna_AttributeGroupID_active_index_get(
PointerRNA *
ptr)
651 return attribute_ptr;
668static void rna_AttributeGroupID_active_index_set(
PointerRNA *
ptr,
int value)
674static void rna_AttributeGroupID_active_index_range(
687 rna_Attribute_update_data(bmain, scene,
ptr);
690static void rna_AttributeGroup_update_active_color(
Main * ,
703static int rna_AttributeGroupID_domain_size(
ID *
id,
const int domain)
719 return attribute_ptr;
722static void rna_AttributeGroupMesh_active_color_set(
PointerRNA *
ptr,
736static int rna_AttributeGroupMesh_active_color_index_get(
PointerRNA *
ptr)
748static void rna_AttributeGroupMesh_active_color_index_set(
PointerRNA *
ptr,
int value)
755 fprintf(stderr,
"%s: error setting active color index to %d\n", __func__, value);
762static void rna_AttributeGroupMesh_active_color_index_range(
773static int rna_AttributeGroupMesh_render_color_index_get(
PointerRNA *
ptr)
782static void rna_AttributeGroupMesh_render_color_index_set(
PointerRNA *
ptr,
int value)
789 fprintf(stderr,
"%s: error setting render color index to %d\n", __func__, value);
796static void rna_AttributeGroupMesh_render_color_index_range(
807static void rna_AttributeGroupMesh_default_color_name_get(
PointerRNA *
ptr,
char *value)
818static int rna_AttributeGroupMesh_default_color_name_length(
PointerRNA *
ptr)
822 return name ? strlen(name) : 0;
825static void rna_AttributeGroupMesh_default_color_name_set(
PointerRNA *
ptr,
const char *value)
832 mesh->default_color_attribute =
BLI_strdup(value);
837static void rna_AttributeGroupMesh_active_color_name_get(
PointerRNA *
ptr,
char *value)
848static int rna_AttributeGroupMesh_active_color_name_length(
PointerRNA *
ptr)
852 return name ? strlen(name) : 0;
855static void rna_AttributeGroupMesh_active_color_name_set(
PointerRNA *
ptr,
const char *value)
862 mesh->active_color_attribute =
BLI_strdup(value);
867static PointerRNA rna_AttributeGroupGreasePencilDrawing_new(
ID *grease_pencil_id,
889static void rna_AttributeGroupGreasePencilDrawing_remove(
ID *grease_pencil_id,
910 return attribute_ptr;
913static void rna_AttributeGroupGreasePencilDrawing_active_set(
PointerRNA *
ptr,
928static bool rna_AttributeGroupGreasePencilDrawing_active_poll(
PointerRNA *
ptr,
936static int rna_AttributeGroupGreasePencilDrawing_active_index_get(
PointerRNA *
ptr)
943static void rna_AttributeGroupGreasePencilDrawing_active_index_set(
PointerRNA *
ptr,
int value)
950static void rna_AttributeGroupGreasePencilDrawing_active_index_range(
979 srna,
"Float Attribute",
"Geometry attribute that stores floating-point values");
985 "rna_Attribute_data_begin",
986 "rna_iterator_array_next",
987 "rna_iterator_array_end",
988 "rna_iterator_array_get",
989 "rna_Attribute_data_length",
998 srna,
"Float Attribute Value",
"Floating-point value in geometry attribute");
1010 srna =
RNA_def_struct(brna,
"FloatVectorAttribute",
"Attribute");
1013 srna,
"Float Vector Attribute",
"Geometry attribute that stores floating-point 3D vectors");
1019 "rna_Attribute_data_begin",
1020 "rna_iterator_array_next",
1021 "rna_iterator_array_end",
1022 "rna_iterator_array_get",
1023 "rna_Attribute_data_length",
1030 srna =
RNA_def_struct(brna,
"FloatVectorAttributeValue",
nullptr);
1033 srna,
"Float Vector Attribute Value",
"Vector value in geometry attribute");
1051 "Float Color Attribute",
1052 "Geometry attribute that stores RGBA colors as floating-point values "
1053 "using 32-bits per channel");
1059 "rna_Attribute_data_begin",
1060 "rna_iterator_array_next",
1061 "rna_iterator_array_end",
1062 "rna_iterator_array_get",
1063 "rna_Attribute_data_length",
1070 srna =
RNA_def_struct(brna,
"FloatColorAttributeValue",
nullptr);
1085 "rna_FloatColorAttributeValue_color_srgb_get",
1086 "rna_FloatColorAttributeValue_color_srgb_set",
1100 "Byte Color Attribute",
1101 "Geometry attribute that stores RGBA colors as positive integer values "
1102 "using 8-bits per channel");
1108 "rna_Attribute_data_begin",
1109 "rna_iterator_array_next",
1110 "rna_iterator_array_end",
1111 "rna_iterator_array_get",
1112 "rna_Attribute_data_length",
1127 "rna_ByteColorAttributeValue_color_get",
1128 "rna_ByteColorAttributeValue_color_set",
1137 "rna_ByteColorAttributeValue_color_srgb_get",
1138 "rna_ByteColorAttributeValue_color_srgb_set",
1152 srna,
"Integer Attribute",
"Geometry attribute that stores integer values");
1158 "rna_Attribute_data_begin",
1159 "rna_iterator_array_next",
1160 "rna_iterator_array_end",
1161 "rna_iterator_array_get",
1162 "rna_Attribute_data_length",
1189 "rna_Attribute_data_begin",
1190 "rna_iterator_array_next",
1191 "rna_iterator_array_end",
1192 "rna_iterator_array_get",
1193 "rna_Attribute_data_length",
1205 "rna_StringAttributeValue_s_get",
1206 "rna_StringAttributeValue_s_length",
1207 "rna_StringAttributeValue_s_set");
1224 "rna_Attribute_data_begin",
1225 "rna_iterator_array_next",
1226 "rna_iterator_array_end",
1227 "rna_iterator_array_get",
1228 "rna_Attribute_data_length",
1249 srna,
"8-bit Integer Attribute",
"Geometry attribute that stores 8-bit integers");
1255 "rna_Attribute_data_begin",
1256 "rna_iterator_array_next",
1257 "rna_iterator_array_end",
1258 "rna_iterator_array_get",
1259 "rna_Attribute_data_length",
1268 srna,
"8-bit Integer Attribute Value",
"8-bit value in geometry attribute");
1281 srna,
"2D Integer Vector Attribute",
"Geometry attribute that stores 2D integer vectors");
1287 "rna_Attribute_data_begin",
1288 "rna_iterator_array_next",
1289 "rna_iterator_array_end",
1290 "rna_iterator_array_get",
1291 "rna_Attribute_data_length",
1300 srna,
"2D Integer Vector Attribute Value",
"2D value in geometry attribute");
1322 "rna_Attribute_data_begin",
1323 "rna_iterator_array_next",
1324 "rna_iterator_array_end",
1325 "rna_iterator_array_get",
1326 "rna_Attribute_data_length",
1332 srna =
RNA_def_struct(brna,
"QuaternionAttributeValue",
nullptr);
1335 srna,
"Quaternion Attribute Value",
"Rotation value in geometry attribute");
1352 srna,
"4x4 Matrix Attribute",
"Geometry attribute that stores a 4 by 4 float matrix");
1358 "rna_Attribute_data_begin",
1359 "rna_iterator_array_next",
1360 "rna_iterator_array_end",
1361 "rna_iterator_array_get",
1362 "rna_Attribute_data_length",
1388 srna,
"Float2 Attribute",
"Geometry attribute that stores floating-point 2D vectors");
1394 "rna_Attribute_data_begin",
1395 "rna_iterator_array_next",
1396 "rna_iterator_array_end",
1397 "rna_iterator_array_get",
1398 "rna_Attribute_data_length",
1443 prop,
"rna_Attribute_domain_get",
nullptr,
"rna_Attribute_domain_itemf");
1450 prop,
"Is Internal",
"The attribute is meant for internal use by Blender");
1483 parm =
RNA_def_string(func,
"name",
"Attribute", 0,
"Name",
"Name of geometry attribute");
1493 int(AttrDomain::Point),
1495 "Type of element that attribute is stored on");
1498 parm =
RNA_def_pointer(func,
"attribute",
"Attribute",
"",
"New geometry attribute");
1505 parm =
RNA_def_pointer(func,
"attribute",
"Attribute",
"",
"Geometry Attribute");
1514 "rna_AttributeGroupID_active_get",
1515 "rna_AttributeGroupID_active_set",
1523 prop,
"Active Attribute Index",
"Active attribute index or -1 when none are active");
1527 "rna_AttributeGroupID_active_index_get",
1528 "rna_AttributeGroupID_active_index_set",
1529 "rna_AttributeGroupID_active_index_range");
1533 func =
RNA_def_function(srna,
"domain_size",
"rna_AttributeGroupID_domain_size");
1538 int(AttrDomain::Point),
1540 "Type of element that attribute is stored on");
1542 parm =
RNA_def_int(func,
"size", 0, 0, INT_MAX,
"Size",
"Size of the domain", 0, INT_MAX);
1563 "rna_AttributeGroupMesh_active_color_get",
1564 "rna_AttributeGroupMesh_active_color_set",
1574 "rna_AttributeGroupMesh_active_color_index_get",
1575 "rna_AttributeGroupMesh_active_color_index_set",
1576 "rna_AttributeGroupMesh_active_color_index_range");
1581 "Active Render Color Index",
1582 "The index of the color attribute used as a fallback for rendering");
1585 "rna_AttributeGroupMesh_render_color_index_get",
1586 "rna_AttributeGroupMesh_render_color_index_set",
1587 "rna_AttributeGroupMesh_render_color_index_range");
1593 "rna_AttributeGroupMesh_default_color_name_get",
1594 "rna_AttributeGroupMesh_default_color_name_length",
1595 "rna_AttributeGroupMesh_default_color_name_set");
1598 "Default Color Attribute",
1599 "The name of the default color attribute used as a fallback for rendering");
1604 "rna_AttributeGroupMesh_active_color_name_get",
1605 "rna_AttributeGroupMesh_active_color_name_length",
1606 "rna_AttributeGroupMesh_active_color_name_set");
1608 "Active Color Attribute",
1609 "The name of the active color attribute for display and editing");
1616 srna =
RNA_def_struct(brna,
"AttributeGroupPointCloud",
nullptr);
1638 srna =
RNA_def_struct(brna,
"AttributeGroupGreasePencil",
nullptr);
1652 srna =
RNA_def_struct(brna,
"AttributeGroupGreasePencilDrawing",
nullptr);
1657 func =
RNA_def_function(srna,
"new",
"rna_AttributeGroupGreasePencilDrawing_new");
1660 parm =
RNA_def_string(func,
"name",
"Attribute", 0,
"Name",
"Name of geometry attribute");
1670 int(AttrDomain::Point),
1672 "Type of element that attribute is stored on");
1675 parm =
RNA_def_pointer(func,
"attribute",
"Attribute",
"",
"New geometry attribute");
1679 func =
RNA_def_function(srna,
"remove",
"rna_AttributeGroupGreasePencilDrawing_remove");
1682 parm =
RNA_def_pointer(func,
"attribute",
"Attribute",
"",
"Geometry Attribute");
1691 "rna_AttributeGroupGreasePencilDrawing_active_get",
1692 "rna_AttributeGroupGreasePencilDrawing_active_set",
1694 "rna_AttributeGroupGreasePencilDrawing_active_poll");
1700 prop,
"Active Attribute Index",
"Active attribute index or -1 when none are active");
1704 "rna_AttributeGroupGreasePencilDrawing_active_index_get",
1705 "rna_AttributeGroupGreasePencilDrawing_active_index_set",
1706 "rna_AttributeGroupGreasePencilDrawing_active_index_range");
1711 srna,
"domain_size",
"rna_AttributeGroupGreasePencilDrawing_domain_size");
1716 int(AttrDomain::Point),
1718 "Type of element that attribute is stored on");
1720 parm =
RNA_def_int(func,
"size", 0, 0, INT_MAX,
"Size",
"Size of the domain", 0, INT_MAX);
1731 "rna_AttributeGroup_iterator_begin",
1732 "rna_AttributeGroup_iterator_next",
1733 "rna_iterator_array_end",
1734 "rna_AttributeGroup_iterator_get",
1735 "rna_AttributeGroup_length",
1761 "rna_AttributeGroup_color_iterator_begin",
1762 "rna_AttributeGroup_color_iterator_next",
1763 "rna_iterator_array_end",
1764 "rna_AttributeGroup_color_iterator_get",
1765 "rna_AttributeGroup_color_length",
const char * BKE_id_attributes_default_color_name(const struct ID *id)
struct CustomDataLayer * BKE_attribute_search_for_write(AttributeOwner &owner, const char *name, eCustomDataMask type, AttrDomainMask domain_mask)
int BKE_attribute_to_index(const AttributeOwner &owner, const CustomDataLayer *layer, AttrDomainMask domain_mask, eCustomDataMask layer_mask)
const struct CustomDataLayer * BKE_id_attributes_color_find(const struct ID *id, const char *name)
void BKE_id_attributes_default_color_set(struct ID *id, const char *name)
void BKE_id_attributes_active_color_set(struct ID *id, const char *name)
struct CustomDataLayer * BKE_attribute_new(AttributeOwner &owner, const char *name, eCustomDataType type, blender::bke::AttrDomain domain, struct ReportList *reports)
const char * BKE_id_attributes_active_color_name(const struct ID *id)
blender::bke::AttrDomain BKE_attribute_domain(const AttributeOwner &owner, const struct CustomDataLayer *layer)
CustomData * BKE_attributes_iterator_next_domain(AttributeOwner &owner, struct CustomDataLayer *layers)
int BKE_attribute_domain_size(const AttributeOwner &owner, int domain)
CustomDataLayer * BKE_attribute_from_index(AttributeOwner &owner, int lookup_index, AttrDomainMask domain_mask, eCustomDataMask layer_mask)
int * BKE_attributes_active_index_p(AttributeOwner &owner)
void BKE_id_attributes_active_color_clear(struct ID *id)
bool BKE_attribute_rename(AttributeOwner &owner, const char *old_name, const char *new_name, struct ReportList *reports)
int BKE_attribute_data_length(AttributeOwner &owner, struct CustomDataLayer *layer)
bool BKE_attribute_remove(AttributeOwner &owner, const char *name, struct ReportList *reports)
void BKE_attributes_active_set(AttributeOwner &owner, const char *name)
#define ATTR_DOMAIN_MASK_COLOR
#define ATTR_DOMAIN_AS_MASK(domain)
struct CustomDataLayer * BKE_attributes_active_get(AttributeOwner &owner)
int BKE_attributes_length(const AttributeOwner &owner, AttrDomainMask domain_mask, eCustomDataMask mask)
bool BKE_attribute_required(const AttributeOwner &owner, const char *name)
void BKE_attributes_active_clear(AttributeOwner &owner)
const struct CustomDataLayer * BKE_attribute_search(const AttributeOwner &owner, const char *name, eCustomDataMask type, AttrDomainMask domain_mask)
CustomData interface, see also DNA_customdata_types.h.
void CustomData_ensure_data_is_mutable(CustomDataLayer *layer, int totelem)
size_t CustomData_get_elem_size(const CustomDataLayer *layer)
#define CD_TYPE_AS_MASK(_type)
MINLINE unsigned char round_fl_to_uchar_clamp(float a)
MINLINE void srgb_to_linearrgb_uchar4(float linear[4], const unsigned char srgb[4])
MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
MINLINE void linearrgb_to_srgb_uchar4(unsigned char srgb[4], const float linear[4])
MINLINE void linearrgb_to_srgb_v4(float srgb[4], const float linear[4])
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
int char char int int int int size_t BLI_strnlen(const char *str, size_t maxlen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
void DEG_id_tag_update(ID *id, unsigned int flags)
#define CD_MASK_COLOR_ALL
#define MAX_CUSTOMDATA_LAYER_NAME_NO_PREFIX
#define RNA_POINTER_INVALIDATE(ptr)
const EnumPropertyItem * rna_enum_attribute_domain_itemf(const AttributeOwner &owner, bool include_instances, bool *r_free)
constexpr PointerRNA PointerRNA_NULL
AttributeOwnerType type() const
static AttributeOwner from_id(ID *id)
GreasePencilDrawing * get_grease_pencil_drawing() const
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
bool allow_procedural_attribute_access(StringRef attribute_name)
uint32_t struct_size(Span< shader::ShaderCreateInfo::PushConst > push_constants)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, void *ptr, int itemsize, int length, bool free_ptr, IteratorSkipFunc skip)
void * rna_iterator_array_get(CollectionPropertyIterator *iter)
PointerRNA rna_pointer_inherit_refine(const PointerRNA *ptr, StructRNA *type, void *data)
void rna_iterator_array_next(CollectionPropertyIterator *iter)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
static void rna_def_attribute_float4x4(BlenderRNA *brna)
static void rna_def_attribute_group_id_common(StructRNA *srna)
const EnumPropertyItem rna_enum_attribute_domain_only_mesh_items[]
static void rna_def_attribute_int8(BlenderRNA *brna)
const EnumPropertyItem rna_enum_color_attribute_domain_items[]
static void rna_def_attribute_bool(BlenderRNA *brna)
static void rna_def_attribute(BlenderRNA *brna)
const EnumPropertyItem rna_enum_attribute_domain_with_auto_items[]
static void rna_def_attribute_quaternion(BlenderRNA *brna)
static void rna_def_attribute_group_grease_pencil(BlenderRNA *brna)
static void rna_def_attribute_group_mesh(BlenderRNA *brna)
const EnumPropertyItem rna_enum_attribute_domain_only_mesh_no_corner_items[]
static void rna_def_attribute_int2(BlenderRNA *brna)
const EnumPropertyItem rna_enum_attribute_domain_point_edge_face_curve_items[]
const EnumPropertyItem rna_enum_attribute_domain_edge_face_items[]
const EnumPropertyItem rna_enum_attribute_curves_domain_items[]
const EnumPropertyItem rna_enum_attribute_domain_point_face_curve_items[]
static void rna_def_attribute_float_vector(BlenderRNA *brna)
static void rna_def_attribute_group_grease_pencil_drawing(BlenderRNA *brna)
const EnumPropertyItem rna_enum_attribute_domain_only_mesh_no_edge_items[]
static void rna_def_attribute_float_color(BlenderRNA *brna)
static void rna_def_attribute_float(BlenderRNA *brna)
const EnumPropertyItem rna_enum_attribute_domain_items[]
static void rna_def_attribute_group_point_cloud(BlenderRNA *brna)
static void rna_def_attribute_int(BlenderRNA *brna)
static void rna_def_attribute_byte_color(BlenderRNA *brna)
void RNA_def_attribute(BlenderRNA *brna)
static void rna_def_attribute_float2(BlenderRNA *brna)
void rna_def_attributes_common(StructRNA *srna, const AttributeOwnerType type)
const EnumPropertyItem rna_enum_attribute_domain_without_corner_items[]
const EnumPropertyItem rna_enum_attribute_type_items[]
static void rna_def_attribute_group_curves(BlenderRNA *brna)
const EnumPropertyItem rna_enum_attribute_type_with_auto_items[]
const EnumPropertyItem rna_enum_color_attribute_type_items[]
static void rna_def_attribute_string(BlenderRNA *brna)
void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
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_function_return(FunctionRNA *func, PropertyRNA *ret)
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_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[])
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_string_maxlength(PropertyRNA *prop, int maxlength)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
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_editable_func(PropertyRNA *prop, const char *editable)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_function_flag(FunctionRNA *func, int flag)
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_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
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_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void rna_AttributeGroup_iterator_next(CollectionPropertyIterator *iter)
void rna_AttributeGroup_color_iterator_next(CollectionPropertyIterator *iter)
int rna_AttributeGroup_length(PointerRNA *ptr)
int rna_AttributeGroup_color_length(PointerRNA *ptr)
PointerRNA rna_AttributeGroup_color_iterator_get(CollectionPropertyIterator *iter)
void rna_AttributeGroup_iterator_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
void rna_AttributeGroup_color_iterator_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
PointerRNA rna_AttributeGroup_iterator_get(CollectionPropertyIterator *iter)
union CollectionPropertyIterator::@1329 internal
char * active_color_attribute
void WM_main_add_notifier(uint type, void *reference)