69 std::optional<blender::bke::MutableAttributeAccessor>
get_accessor()
const;
78#define ATTR_DOMAIN_AS_MASK(domain) ((AttrDomainMask)((1 << (int)(domain))))
81#define ATTR_DOMAIN_MASK_COLOR \
82 ((AttrDomainMask)((ATTR_DOMAIN_MASK_POINT | ATTR_DOMAIN_MASK_CORNER)))
112 eCustomDataMask
type,
117 eCustomDataMask
type,
132 eCustomDataMask
mask);
144 eCustomDataMask layer_mask);
150 eCustomDataMask layer_mask);
void BKE_id_attributes_default_color_set(struct ID *id, std::optional< blender::StringRef > name)
struct CustomDataLayer * BKE_attribute_new(AttributeOwner &owner, blender::StringRef name, eCustomDataType type, blender::bke::AttrDomain domain, struct ReportList *reports)
std::optional< blender::StringRefNull > BKE_attributes_active_name_get(AttributeOwner &owner)
int BKE_attribute_to_index(const AttributeOwner &owner, const CustomDataLayer *layer, AttrDomainMask domain_mask, eCustomDataMask layer_mask)
blender::StringRef BKE_uv_map_pin_name_get(blender::StringRef uv_map_name, char *buffer)
struct CustomDataLayer * BKE_attribute_search_for_write(AttributeOwner &owner, blender::StringRef name, eCustomDataMask type, AttrDomainMask domain_mask)
std::string BKE_attribute_calc_unique_name(const AttributeOwner &owner, blender::StringRef name)
blender::bke::AttrDomain BKE_attribute_domain(const AttributeOwner &owner, const struct CustomDataLayer *layer)
struct CustomDataLayer * BKE_attribute_find(const AttributeOwner &owner, blender::StringRef name, eCustomDataType type, blender::bke::AttrDomain domain)
CustomData * BKE_attributes_iterator_next_domain(AttributeOwner &owner, struct CustomDataLayer *layers)
int BKE_attribute_domain_size(const AttributeOwner &owner, int domain)
std::optional< blender::StringRef > BKE_id_attributes_default_color_name(const struct ID *id)
CustomDataLayer * BKE_attribute_from_index(AttributeOwner &owner, int lookup_index, AttrDomainMask domain_mask, eCustomDataMask layer_mask)
bool BKE_attribute_remove(AttributeOwner &owner, blender::StringRef name, struct ReportList *reports)
void BKE_attributes_active_set(AttributeOwner &owner, blender::StringRef name)
@ ATTR_DOMAIN_MASK_GREASE_PENCIL_LAYER
@ ATTR_DOMAIN_MASK_CORNER
const struct CustomDataLayer * BKE_attribute_search(const AttributeOwner &owner, blender::StringRef name, eCustomDataMask type, AttrDomainMask domain_mask)
const struct CustomDataLayer * BKE_id_attributes_color_find(const struct ID *id, blender::StringRef name)
int * BKE_attributes_active_index_p(AttributeOwner &owner)
void BKE_id_attributes_active_color_clear(struct ID *id)
bool BKE_attribute_required(const AttributeOwner &owner, blender::StringRef name)
int BKE_attribute_data_length(AttributeOwner &owner, struct CustomDataLayer *layer)
std::optional< blender::StringRef > BKE_id_attributes_active_color_name(const struct ID *id)
bool BKE_color_attribute_supported(const struct Mesh &mesh, blender::StringRef name)
struct CustomDataLayer * BKE_attribute_duplicate(AttributeOwner &owner, blender::StringRef name, struct ReportList *reports)
bool BKE_attribute_rename(AttributeOwner &owner, blender::StringRef old_name, blender::StringRef new_name, struct ReportList *reports)
int BKE_attributes_length(const AttributeOwner &owner, AttrDomainMask domain_mask, eCustomDataMask mask)
void BKE_id_attributes_active_color_set(struct ID *id, std::optional< blender::StringRef > name)
void BKE_attributes_active_clear(AttributeOwner &owner)
#define ENUM_OPERATORS(_type, _max)
AttributeOwnerType type() const
AttributeOwner(AttributeOwnerType type, void *ptr)
std::optional< blender::bke::MutableAttributeAccessor > get_accessor() const
static AttributeOwner from_id(ID *id)
GreasePencil * get_grease_pencil() const
PointCloud * get_pointcloud() const
Curves * get_curves() const
GreasePencilDrawing * get_grease_pencil_drawing() const
blender::bke::AttributeStorage * get_storage() const
ccl_device_inline float2 mask(const MaskType mask, const float2 a)