Blender V4.3
BKE_attribute.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2006 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10#pragma once
11
12#include <string>
13
14#include "BLI_string_ref.hh"
15#include "BLI_sys_types.h"
16
18
19namespace blender::bke {
20enum class AttrDomain : int8_t;
21class AttributeAccessor;
22} // namespace blender::bke
23struct CustomData;
24struct CustomDataLayer;
25struct ID;
26struct ReportList;
27struct Mesh;
28struct PointCloud;
29struct Curves;
30struct GreasePencil;
32
43
51
54 void *ptr_ = nullptr;
55
56 public:
58 AttributeOwner(AttributeOwnerType type, void *ptr) : type_(type), ptr_(ptr){};
59
60 static AttributeOwner from_id(ID *id);
61
63 bool is_valid() const;
64
65 Mesh *get_mesh() const;
67 Curves *get_curves() const;
70};
71
72#define ATTR_DOMAIN_AS_MASK(domain) ((AttrDomainMask)((1 << (int)(domain))))
73
74/* All domains that support color attributes. */
75#define ATTR_DOMAIN_MASK_COLOR \
76 ((AttrDomainMask)((ATTR_DOMAIN_MASK_POINT | ATTR_DOMAIN_MASK_CORNER)))
77
78/* Attributes. */
79
84 const char *name,
85 eCustomDataType type,
87 struct ReportList *reports);
88bool BKE_attribute_remove(AttributeOwner &owner, const char *name, struct ReportList *reports);
89
94 const char *name,
95 struct ReportList *reports);
96
98 const char *name,
99 eCustomDataType type,
101
102const struct CustomDataLayer *BKE_attribute_search(const AttributeOwner &owner,
103 const char *name,
104 eCustomDataMask type,
105 AttrDomainMask domain_mask);
106
108 const char *name,
109 eCustomDataMask type,
110 AttrDomainMask domain_mask);
111
113 const struct CustomDataLayer *layer);
114int BKE_attribute_domain_size(const AttributeOwner &owner, int domain);
116bool BKE_attribute_required(const AttributeOwner &owner, const char *name);
118 const char *old_name,
119 const char *new_name,
120 struct ReportList *reports);
121
123 AttrDomainMask domain_mask,
124 eCustomDataMask mask);
125
127void BKE_attributes_active_set(AttributeOwner &owner, const char *name);
130
132 struct CustomDataLayer *layers);
134 int lookup_index,
135 AttrDomainMask domain_mask,
136 eCustomDataMask layer_mask);
137
140 const CustomDataLayer *layer,
141 AttrDomainMask domain_mask,
142 eCustomDataMask layer_mask);
143
144const char *BKE_id_attributes_active_color_name(const struct ID *id);
145const char *BKE_id_attributes_default_color_name(const struct ID *id);
146void BKE_id_attributes_active_color_set(struct ID *id, const char *name);
148void BKE_id_attributes_default_color_set(struct ID *id, const char *name);
149
150const struct CustomDataLayer *BKE_id_attributes_color_find(const struct ID *id, const char *name);
151bool BKE_color_attribute_supported(const struct Mesh &mesh, const blender::StringRef name);
152
153std::string BKE_attribute_calc_unique_name(const AttributeOwner &owner,
154 const blender::StringRef name);
155
156const char *BKE_uv_map_vert_select_name_get(const char *uv_map_name, char *buffer);
157const char *BKE_uv_map_edge_select_name_get(const char *uv_map_name, char *buffer);
158const char *BKE_uv_map_pin_name_get(const char *uv_map_name, char *buffer);
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)
Definition attribute.cc:669
int BKE_attribute_to_index(const AttributeOwner &owner, const CustomDataLayer *layer, AttrDomainMask domain_mask, eCustomDataMask layer_mask)
Definition attribute.cc:911
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)
Definition attribute.cc:994
void BKE_id_attributes_active_color_set(struct ID *id, const char *name)
Definition attribute.cc:965
std::string BKE_attribute_calc_unique_name(const AttributeOwner &owner, const blender::StringRef name)
Definition attribute.cc:359
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)
bool BKE_color_attribute_supported(const struct Mesh &mesh, const blender::StringRef name)
blender::bke::AttrDomain BKE_attribute_domain(const AttributeOwner &owner, const struct CustomDataLayer *layer)
CustomData * BKE_attributes_iterator_next_domain(AttributeOwner &owner, struct CustomDataLayer *layers)
Definition attribute.cc:854
int BKE_attribute_domain_size(const AttributeOwner &owner, int domain)
Definition attribute.cc:730
CustomDataLayer * BKE_attribute_from_index(AttributeOwner &owner, int lookup_index, AttrDomainMask domain_mask, eCustomDataMask layer_mask)
Definition attribute.cc:878
AttrDomainMask
@ ATTR_DOMAIN_MASK_GREASE_PENCIL_LAYER
@ ATTR_DOMAIN_MASK_POINT
@ ATTR_DOMAIN_MASK_EDGE
@ ATTR_DOMAIN_MASK_ALL
@ ATTR_DOMAIN_MASK_CORNER
@ ATTR_DOMAIN_MASK_CURVE
@ ATTR_DOMAIN_MASK_FACE
struct CustomDataLayer * BKE_attribute_duplicate(AttributeOwner &owner, const char *name, struct ReportList *reports)
Definition attribute.cc:432
struct CustomDataLayer * BKE_attribute_find(const AttributeOwner &owner, const char *name, eCustomDataType type, blender::bke::AttrDomain domain)
int * BKE_attributes_active_index_p(AttributeOwner &owner)
Definition attribute.cc:832
AttributeOwnerType
void BKE_id_attributes_active_color_clear(struct ID *id)
Definition attribute.cc:981
bool BKE_attribute_rename(AttributeOwner &owner, const char *old_name, const char *new_name, struct ReportList *reports)
Definition attribute.cc:253
int BKE_attribute_data_length(AttributeOwner &owner, struct CustomDataLayer *layer)
Definition attribute.cc:736
bool BKE_attribute_remove(AttributeOwner &owner, const char *name, struct ReportList *reports)
Definition attribute.cc:501
void BKE_attributes_active_set(AttributeOwner &owner, const char *name)
Definition attribute.cc:817
const char * BKE_uv_map_pin_name_get(const char *uv_map_name, char *buffer)
struct CustomDataLayer * BKE_attributes_active_get(AttributeOwner &owner)
Definition attribute.cc:781
int BKE_attributes_length(const AttributeOwner &owner, AttrDomainMask domain_mask, eCustomDataMask mask)
Definition attribute.cc:690
bool BKE_attribute_required(const AttributeOwner &owner, const char *name)
Definition attribute.cc:764
const char * BKE_uv_map_vert_select_name_get(const char *uv_map_name, char *buffer)
const char * BKE_uv_map_edge_select_name_get(const char *uv_map_name, char *buffer)
void BKE_attributes_active_clear(AttributeOwner &owner)
Definition attribute.cc:827
const struct CustomDataLayer * BKE_attribute_search(const AttributeOwner &owner, const char *name, eCustomDataMask type, AttrDomainMask domain_mask)
Definition attribute.cc:636
#define ENUM_OPERATORS(_type, _max)
AttributeOwnerType type() const
Definition attribute.cc:62
AttributeOwner(AttributeOwnerType type, void *ptr)
static AttributeOwner from_id(ID *id)
Definition attribute.cc:43
bool is_valid() const
Definition attribute.cc:67
Mesh * get_mesh() const
Definition attribute.cc:72
GreasePencil * get_grease_pencil() const
Definition attribute.cc:93
PointCloud * get_pointcloud() const
Definition attribute.cc:79
Curves * get_curves() const
Definition attribute.cc:86
GreasePencilDrawing * get_grease_pencil_drawing() const
Definition attribute.cc:100
signed char int8_t
Definition stdint.h:75
Definition DNA_ID.h:413
PointerRNA * ptr
Definition wm_files.cc:4126