47#define UV_PINNED_NAME "pn"
60#define BMUVOFFSETS_NONE {-1, -1}
75#define ORIGINDEX_NONE -1
94 return eCustomDataMask(1) << eCustomDataMask(type);
99using cd_interp = void (*)(
const void **sources,
const float *weights,
int count,
void *dest);
146 eCustomDataType type,
const void *source,
void *dest,
int mixmode,
float mixfactor);
169 eCustomDataMask
mask,
180 eCustomDataMask
mask,
194 eCustomDataMask
mask,
202 eCustomDataMask
mask,
223 eCustomDataMask
mask,
234 eCustomDataMask
mask);
349 const void *src_data,
393 eCustomDataMask mask_exclude = 0);
401 const void *src_block,
411 int destination_index,
432 const int *src_indices,
433 const float *weights,
441 const void **src_blocks,
442 const float *weights,
447 CustomData *
data,
const void **src_blocks,
const float *weights,
int count,
void *dst_block);
660 const void **sources,
661 const float *weights,
738 eCustomDataMask cddata_mask,
void CustomData_data_set_default_value(eCustomDataType type, void *elem)
void CustomData_debug_info_from_layers(const CustomData *data, const char *indent, DynStr *dynstr)
void CustomData_blend_write_prepare(CustomData &data, blender::bke::AttrDomain domain, int domain_size, blender::Vector< CustomDataLayer, 16 > &layers_to_write, blender::bke::AttributeStorage::BlendWriteData &write_data)
void CustomData_count_memory(const CustomData &data, int totelem, blender::MemoryCounter &memory)
int CustomData_sizeof(eCustomDataType type)
const CustomData_MeshMasks CD_MASK_EVERYTHING
void CustomData_realloc(CustomData *data, int old_size, int new_size, eCDAllocType alloctype=CD_CONSTRUCT)
void * CustomData_get_n_for_write(CustomData *data, eCustomDataType type, int index, int n, int totelem)
int CustomData_get_offset(const CustomData *data, eCustomDataType type)
const char * CustomData_layertype_name(eCustomDataType type)
void * CustomData_get_layer_named_for_write(CustomData *data, eCustomDataType type, blender::StringRef name, int totelem)
int CustomData_get_layer_index_n(const CustomData *data, eCustomDataType type, int n)
void CustomData_set_only_copy(const CustomData *data, eCustomDataMask mask)
int CustomData_get_clone_layer(const CustomData *data, eCustomDataType type)
const void * CustomData_get_layer_n(const CustomData *data, eCustomDataType type, int n)
int CustomData_get_named_layer(const CustomData *data, eCustomDataType type, blender::StringRef name)
bool CustomData_bmesh_merge_layout(const CustomData *source, CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, BMesh *bm, char htype)
void CustomData_set_layer_render_index(CustomData *data, eCustomDataType type, int n)
const void * CustomData_get_layer(const CustomData *data, eCustomDataType type)
void(*)(const void **sources, const float *weights, int count, void *dest) cd_interp
void CustomData_external_remove(CustomData *data, ID *id, eCustomDataType type, int totelem)
const CustomData_MeshMasks CD_MASK_BAREMESH_ORIGINDEX
int CustomData_get_named_layer_index_notype(const CustomData *data, blender::StringRef name)
int CustomData_number_of_anonymous_layers(const CustomData *data, eCustomDataType type)
bool CustomData_layer_has_interp(const CustomData *data, int layer_n)
void CustomData_set_layer_flag(CustomData *data, eCustomDataType type, int flag)
int CustomData_get_n_offset(const CustomData *data, eCustomDataType type, int n)
bool CustomData_layer_is_anonymous(const CustomData *data, eCustomDataType type, int n)
void CustomData_external_read(CustomData *data, ID *id, eCustomDataMask mask, int totelem)
eCustomDataMask CD_TYPE_AS_MASK(eCustomDataType type)
void CustomData_bmesh_free_block(CustomData *data, void **block)
const void * CustomData_get_layer_named(const CustomData *data, eCustomDataType type, blender::StringRef name)
void * CustomData_add_layer_named(CustomData *data, eCustomDataType type, eCDAllocType alloctype, int totelem, blender::StringRef name)
BMCustomDataCopyMap CustomData_bmesh_copy_map_calc(const CustomData &src, const CustomData &dst, eCustomDataMask mask_exclude=0)
void CustomData_validate_layer_name(const CustomData *data, eCustomDataType type, blender::StringRef name, char *outname)
void CustomData_data_initminmax(eCustomDataType type, void *min, void *max)
int CustomData_number_of_layers_typemask(const CustomData *data, eCustomDataMask mask)
void CustomData_MeshMasks_update(CustomData_MeshMasks *mask_dst, const CustomData_MeshMasks *mask_src)
void CustomData_bmesh_init_pool(CustomData *data, int totelem, char htype)
void CustomData_set_layer_render(CustomData *data, eCustomDataType type, int n)
void * CustomData_bmesh_get_n(const CustomData *data, void *block, eCustomDataType type, int n)
bool CustomData_free_layer(CustomData *data, eCustomDataType type, int index)
int CustomData_get_stencil_layer(const CustomData *data, eCustomDataType type)
void(*)(void *data, int count) cd_set_default_value
void customData_mask_layers__print(const CustomData_MeshMasks *mask)
void CustomData_reset(CustomData *data)
int CustomData_get_named_layer_index(const CustomData *data, eCustomDataType type, blender::StringRef name)
bool CustomData_has_layer_named(const CustomData *data, eCustomDataType type, blender::StringRef name)
bool CustomData_layer_has_math(const CustomData *data, int layer_n)
bool CustomData_set_layer_name(CustomData *data, eCustomDataType type, int n, blender::StringRef name)
const char * CustomData_get_layer_name(const CustomData *data, eCustomDataType type, int n)
bool CustomData_MeshMasks_are_matching(const CustomData_MeshMasks *mask_ref, const CustomData_MeshMasks *mask_required)
int CustomData_get_offset_named(const CustomData *data, eCustomDataType type, blender::StringRef name)
void * CustomData_bmesh_get(const CustomData *data, void *block, eCustomDataType type)
void CustomData_blend_write(BlendWriter *writer, CustomData *data, blender::Span< CustomDataLayer > layers_to_write, int count, eCustomDataMask cddata_mask, ID *id)
void CustomData_copy_data_layer(const CustomData *source, CustomData *dest, int src_layer_index, int dst_layer_index, int src_index, int dst_index, int count)
bool CustomData_has_interp(const CustomData *data)
void(*)(const CustomDataTransferLayerMap *laymap, void *dest, const void **sources, const float *weights, int count, float mix_factor) cd_datatransfer_interp
const CustomData_MeshMasks CD_MASK_BAREMESH
int CustomData_get_stencil_layer_index(const CustomData *data, eCustomDataType type)
bool CustomData_layertype_is_dynamic(eCustomDataType type)
void CustomData_free(CustomData *data)
int CustomData_get_layer_index(const CustomData *data, eCustomDataType type)
void CustomData_set_layer_clone_index(CustomData *data, eCustomDataType type, int n)
void CustomData_init_from(const CustomData *source, CustomData *dest, eCustomDataMask mask, int totelem)
void CustomData_set_layer_clone(CustomData *data, eCustomDataType type, int n)
void(*)(void *data, int count) cd_free
bool CustomData_merge(const CustomData *source, CustomData *dest, eCustomDataMask mask, int totelem)
void CustomData_free_layers(CustomData *data, eCustomDataType type)
bool CustomData_verify_versions(CustomData *data, int index)
bool CustomData_layer_validate(CustomDataLayer *layer, uint totitems, bool do_fixes)
void CustomData_data_copy_value(eCustomDataType type, const void *source, void *dest)
const CustomData_MeshMasks CD_MASK_BMESH
void CustomData_update_typemap(CustomData *data)
void CustomData_external_add(CustomData *data, ID *id, eCustomDataType type, int totelem, const char *filepath)
void CustomData_blend_read(BlendDataReader *reader, CustomData *data, int count)
void CustomData_copy_elements(eCustomDataType type, const void *src_data, void *dst_data, int count)
void CustomData_bmesh_set_default(CustomData *data, void **block)
void CustomData_bmesh_set_n(CustomData *data, void *block, eCustomDataType type, int n, const void *source)
void CustomData_set_layer_active_index(CustomData *data, eCustomDataType type, int n)
void CustomData_copy_layer_type_data(const CustomData *source, CustomData *destination, eCustomDataType type, int source_index, int destination_index, int count)
void CustomData_bmesh_copy_block(CustomData &data, void *src_block, void **dst_block)
void(*)(const void *source, void *dest, int count) cd_copy
const char * CustomData_get_render_layer_name(const CustomData *data, eCustomDataType type)
void CustomData_bmesh_interp_n(CustomData *data, const void **src_blocks, const float *weights, int count, void *dst_block_ofs, int n)
int CustomData_layertype_layers_max(eCustomDataType type)
void CustomData_data_dominmax(eCustomDataType type, const void *data, void *min, void *max)
void CustomData_interp(const CustomData *source, CustomData *dest, const int *src_indices, const float *weights, int count, int dest_index)
bool(*)(void *item, uint totitems, bool do_fixes) cd_validate
void CustomData_init_layout_from(const CustomData *source, CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, int totelem)
void CustomData_data_transfer(const MeshPairRemap *me_remap, const CustomDataTransferLayerMap *laymap)
int CustomData_get_active_layer(const CustomData *data, eCustomDataType type)
int CustomData_name_maxncpy_calc(blender::StringRef name)
void * CustomData_get_layer_for_write(CustomData *data, eCustomDataType type, int totelem)
void CustomData_data_multiply(eCustomDataType type, void *data, float fac)
CustomData CustomData_shallow_copy_remove_non_bmesh_attributes(const CustomData *src, eCustomDataMask mask)
void CustomData_set_layer_unique_name(CustomData *data, int index)
bool CustomData_bmesh_has_free(const CustomData *data)
void CustomData_free_elem(CustomData *data, int index, int count)
const void * CustomData_add_layer_with_data(CustomData *data, eCustomDataType type, void *layer_data, int totelem, const blender::ImplicitSharingInfo *sharing_info)
void CustomData_copy_data(const CustomData *source, CustomData *dest, int source_index, int dest_index, int count)
void CustomData_ensure_data_is_mutable(CustomDataLayer *layer, int totelem)
bool CustomData_has_layer(const CustomData *data, eCustomDataType type)
size_t CustomData_get_elem_size(const CustomDataLayer *layer)
void CustomData_ensure_layers_are_mutable(CustomData *data, int totelem)
void * CustomData_add_layer(CustomData *data, eCustomDataType type, eCDAllocType alloctype, int totelem)
bool CustomData_layertype_is_singleton(eCustomDataType type)
const CustomData_MeshMasks CD_MASK_DERIVEDMESH
bool CustomData_data_equals(eCustomDataType type, const void *data1, const void *data2)
bool CustomData_merge_layout(const CustomData *source, CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, int totelem)
int CustomData_get_active_layer_index(const CustomData *data, eCustomDataType type)
const char * CustomData_get_active_layer_name(const CustomData *data, eCustomDataType type)
int CustomData_get_render_layer(const CustomData *data, eCustomDataType type)
void CustomData_external_write(CustomData *data, ID *id, eCustomDataMask mask, int totelem, int free)
const void * CustomData_add_layer_named_with_data(CustomData *data, eCustomDataType type, void *layer_data, int totelem, blender::StringRef name, const blender::ImplicitSharingInfo *sharing_info)
void CustomData_external_reload(CustomData *data, ID *id, eCustomDataMask mask, int totelem)
void CustomData_data_add(eCustomDataType type, void *data1, const void *data2)
int CustomData_number_of_layers(const CustomData *data, eCustomDataType type)
bool CustomData_free_layer_named(CustomData *data, blender::StringRef name)
bool CustomData_external_test(CustomData *data, eCustomDataType type)
int CustomData_get_render_layer_index(const CustomData *data, eCustomDataType type)
bool CustomData_has_math(const CustomData *data)
void CustomData_bmesh_alloc_block(CustomData *data, void **block)
void CustomData_set_layer_active(CustomData *data, eCustomDataType type, int n)
bool CustomData_free_layer_active(CustomData *data, eCustomDataType type)
void * CustomData_get_layer_n_for_write(CustomData *data, eCustomDataType type, int n, int totelem)
void CustomData_data_mix_value(eCustomDataType type, const void *source, void *dest, int mixmode, float mixfactor)
void * CustomData_bmesh_get_layer_n(const CustomData *data, void *block, int n)
const CustomData_MeshMasks CD_MASK_MESH
void CustomData_bmesh_free_block_data(CustomData *data, void *block)
void CustomData_bmesh_interp(CustomData *data, const void **src_blocks, const float *weights, int count, void *dst_block)
void * CustomData_get_for_write(CustomData *data, int index, eCustomDataType type, int totelem)
int CustomData_get_clone_layer_index(const CustomData *data, eCustomDataType type)
void CustomData_set_layer_stencil(CustomData *data, eCustomDataType type, int n)
void CustomData_swap_corners(CustomData *data, int index, const int *corner_indices)
void BLI_kdtree_nd_ free(KDTree *tree)
BMesh const char void * data
unsigned long long int uint64_t
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
std::optional< VolumeGridType > custom_data_type_to_volume_grid_type(eCustomDataType type)
std::optional< eCustomDataType > volume_grid_type_to_custom_data_type(VolumeGridType type)
blender::Vector< Free > free
blender::Vector< TrivialCopy > trivial_copies
blender::Vector< TrivialDefault > trivial_defaults
blender::Vector< Default > defaults
blender::Vector< Copy > copies
CustomDataTransferLayerMap * prev
const float * mix_weights
CustomDataTransferLayerMap * next
cd_datatransfer_interp interp