Blender V4.5
customdata.cc File Reference
#include <algorithm>
#include "MEM_guardedalloc.h"
#include "DNA_ID.h"
#include "DNA_customdata_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_modifier_enums.h"
#include "BLI_bit_vector.hh"
#include "BLI_bitmap.h"
#include "BLI_index_range.hh"
#include "BLI_math_color_blend.h"
#include "BLI_math_quaternion_types.hh"
#include "BLI_math_vector.hh"
#include "BLI_memory_counter.hh"
#include "BLI_mempool.h"
#include "BLI_path_utils.hh"
#include "BLI_resource_scope.hh"
#include "BLI_set.hh"
#include "BLI_span.hh"
#include "BLI_string.h"
#include "BLI_string_ref.hh"
#include "BLI_string_utf8.h"
#include "BLI_string_utils.hh"
#include "BLI_utildefines.h"
#include "BLI_dynstr.h"
#include "BLT_translation.hh"
#include "BKE_anonymous_attribute_id.hh"
#include "BKE_attribute_legacy_convert.hh"
#include "BKE_attribute_math.hh"
#include "BKE_attribute_storage.hh"
#include "BKE_customdata.hh"
#include "BKE_customdata_file.h"
#include "BKE_deform.hh"
#include "BKE_library.hh"
#include "BKE_main.hh"
#include "BKE_mesh_remap.hh"
#include "BKE_multires.hh"
#include "BKE_subsurf.hh"
#include "BLO_read_write.hh"
#include "bmesh.hh"
#include "CLG_log.h"
#include "data_transfer_intern.hh"

Go to the source code of this file.

Classes

struct  LayerTypeInfo
class  CustomDataLayerImplicitSharing
class  ImplicitSharingInfo
class  Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >

Namespaces

namespace  blender
namespace  blender::bke

Macros

#define DNA_DEPRECATED_ALLOW
#define CUSTOMDATA_GROW   5
#define COPY_BIT_FLAG(_type, _dst, _src, _f)

Typedefs

using float2

Functions

 BLI_STATIC_ASSERT (BOUNDED_ARRAY_TYPE_SIZE< decltype(CustomData::typemap)>()==CD_NUMTYPES, "size mismatch")
size_t CustomData_get_elem_size (const CustomDataLayer *layer)
void CustomData_count_memory (const CustomData &data, const int totelem, blender::MemoryCounter &memory)
Mesh Mask Utilities
void CustomData_MeshMasks_update (CustomData_MeshMasks *mask_dst, const CustomData_MeshMasks *mask_src)
bool CustomData_MeshMasks_are_matching (const CustomData_MeshMasks *mask_ref, const CustomData_MeshMasks *mask_required)
Callbacks for (#MDeformVert, #CD_MDEFORMVERT)
static void layerCopy_mdeformvert (const void *source, void *dest, const int count)
static void layerFree_mdeformvert (void *data, const int count)
static void layerInterp_mdeformvert (const void **sources, const float *weights, const float *, const int count, void *dest)
static void layerConstruct_mdeformvert (void *data, const int count)
Callbacks for (#vec3f, #CD_NORMAL)
static void layerInterp_normal (const void **sources, const float *weights, const float *, const int count, void *dest)
static void layerCopyValue_normal (const void *source, void *dest, const int mixmode, const float mixfactor)
Callbacks for (#MTFace, #CD_MTFACE)
static void layerCopy_tface (const void *source, void *dest, const int count)
static void layerInterp_tface (const void **sources, const float *weights, const float *sub_weights, const int count, void *dest)
static void layerSwap_tface (void *data, const int *corner_indices)
static void layerDefault_tface (void *data, const int count)
static int layerMaxNum_tface ()
Callbacks for (#MFloatProperty, #CD_PROP_FLOAT)
static void layerCopy_propFloat (const void *source, void *dest, const int count)
static void layerInterp_propFloat (const void **sources, const float *weights, const float *, const int count, void *dest)
static bool layerValidate_propFloat (void *data, const uint totitems, const bool do_fixes)
Callbacks for (#MIntProperty, #CD_PROP_INT32)
static void layerInterp_propInt (const void **sources, const float *weights, const float *, const int count, void *dest)
Callbacks for (#MStringProperty, #CD_PROP_STRING)
static void layerCopy_propString (const void *source, void *dest, const int count)
Callbacks for (#OrigSpaceFace, #CD_ORIGSPACE)
static void layerCopy_origspace_face (const void *source, void *dest, const int count)
static void layerInterp_origspace_face (const void **sources, const float *weights, const float *sub_weights, const int count, void *dest)
static void layerSwap_origspace_face (void *data, const int *corner_indices)
static void layerDefault_origspace_face (void *data, const int count)
Callbacks for (#MDisps, #CD_MDISPS)
static void layerSwap_mdisps (void *data, const int *ci)
static void layerCopy_mdisps (const void *source, void *dest, const int count)
static void layerFree_mdisps (void *data, const int count)
static void layerConstruct_mdisps (void *data, const int count)
static bool layerRead_mdisps (CDataFile *cdf, void *data, const int count)
static bool layerWrite_mdisps (CDataFile *cdf, const void *data, const int count)
static size_t layerFilesize_mdisps (CDataFile *, const void *data, const int count)
Callbacks for (#CD_BM_ELEM_PYPTR)
static void layerCopy_bmesh_elem_py_ptr (const void *, void *dest, const int count)
void bpy_bm_generic_invalidate (struct BPy_BMGeneric *)
static void layerFree_bmesh_elem_py_ptr (void *data, const int count)
Callbacks for (#GridPaintMask, #CD_GRID_PAINT_MASK)
static void layerCopy_grid_paint_mask (const void *source, void *dest, const int count)
static void layerFree_grid_paint_mask (void *data, const int count)
static void layerConstruct_grid_paint_mask (void *data, const int count)
Callbacks for (#MLoopCol, #CD_PROP_BYTE_COLOR)
static void layerCopyValue_mloopcol (const void *source, void *dest, const int mixmode, const float mixfactor)
static bool layerEqual_mloopcol (const void *data1, const void *data2)
static void layerMultiply_mloopcol (void *data, const float fac)
static void layerAdd_mloopcol (void *data1, const void *data2)
static void layerDoMinMax_mloopcol (const void *data, void *vmin, void *vmax)
static void layerInitMinMax_mloopcol (void *vmin, void *vmax)
static void layerDefault_mloopcol (void *data, const int count)
static void layerInterp_mloopcol (const void **sources, const float *weights, const float *, int count, void *dest)
Callbacks for #OrigSpaceLoop
static void layerCopyValue_mloop_origspace (const void *source, void *dest, const int, const float)
static bool layerEqual_mloop_origspace (const void *data1, const void *data2)
static void layerMultiply_mloop_origspace (void *data, const float fac)
static void layerInitMinMax_mloop_origspace (void *vmin, void *vmax)
static void layerDoMinMax_mloop_origspace (const void *data, void *vmin, void *vmax)
static void layerAdd_mloop_origspace (void *data1, const void *data2)
static void layerInterp_mloop_origspace (const void **sources, const float *weights, const float *, int count, void *dest)
static void layerInterp_mcol (const void **sources, const float *weights, const float *sub_weights, const int count, void *dest)
static void layerSwap_mcol (void *data, const int *corner_indices)
static void layerDefault_mcol (void *data, const int count)
static void layerDefault_origindex (void *data, const int count)
static void layerInterp_shapekey (const void **sources, const float *weights, const float *, int count, void *dest)
Callbacks for (#MVertSkin, #CD_MVERT_SKIN)
static void layerDefault_mvert_skin (void *data, const int count)
static void layerCopy_mvert_skin (const void *source, void *dest, const int count)
static void layerInterp_mvert_skin (const void **sources, const float *weights, const float *, int count, void *dest)
Callbacks for (<tt>short[4][3]</tt>, #CD_TESSLOOPNORMAL)
static void layerSwap_flnor (void *data, const int *corner_indices)
Callbacks for (#MPropCol, #CD_PROP_COLOR)
static void layerCopyValue_propcol (const void *source, void *dest, const int mixmode, const float mixfactor)
static bool layerEqual_propcol (const void *data1, const void *data2)
static void layerMultiply_propcol (void *data, const float fac)
static void layerAdd_propcol (void *data1, const void *data2)
static void layerDoMinMax_propcol (const void *data, void *vmin, void *vmax)
static void layerInitMinMax_propcol (void *vmin, void *vmax)
static void layerDefault_propcol (void *data, const int count)
static void layerInterp_propcol (const void **sources, const float *weights, const float *, int count, void *dest)
Callbacks for (#vec3f, #CD_PROP_FLOAT3)
static void layerInterp_propfloat3 (const void **sources, const float *weights, const float *, int count, void *dest)
static void layerMultiply_propfloat3 (void *data, const float fac)
static void layerAdd_propfloat3 (void *data1, const void *data2)
static bool layerValidate_propfloat3 (void *data, const uint totitems, const bool do_fixes)
Callbacks for (#vec2f, #CD_PROP_FLOAT2)
static void layerInterp_propfloat2 (const void **sources, const float *weights, const float *, int count, void *dest)
static void layerMultiply_propfloat2 (void *data, const float fac)
static void layerAdd_propfloat2 (void *data1, const void *data2)
static bool layerValidate_propfloat2 (void *data, const uint totitems, const bool do_fixes)
static bool layerEqual_propfloat2 (const void *data1, const void *data2)
static void layerInitMinMax_propfloat2 (void *vmin, void *vmax)
static void layerDoMinMax_propfloat2 (const void *data, void *vmin, void *vmax)
static void layerCopyValue_propfloat2 (const void *source, void *dest, const int mixmode, const float mixfactor)
Callbacks for (<tt>bool</tt>, #CD_PROP_BOOL)
static void layerInterp_propbool (const void **sources, const float *weights, const float *, int count, void *dest)
Callbacks for (#math::Quaternion, #CD_PROP_QUATERNION)
static void layerDefault_propquaternion (void *data, const int count)
static void layerInterp_propquaternion (const void **sources, const float *weights, const float *, int count, void *dest)
Callbacks for (#math::Quaternion, #CD_PROP_FLOAT4X4)
static void layerDefault_propfloat4x4 (void *data, const int count)
External Files
static void customdata_external_filename (char filepath[FILE_MAX], ID *id, CustomDataExternal *external)
void CustomData_external_reload (CustomData *data, ID *, eCustomDataMask mask, int totelem)
void CustomData_external_read (CustomData *data, ID *id, eCustomDataMask mask, const int totelem)
void CustomData_external_write (CustomData *data, ID *id, eCustomDataMask mask, const int totelem, const int free)
void CustomData_external_add (CustomData *data, ID *, const eCustomDataType type, const int, const char *filepath)
void CustomData_external_remove (CustomData *data, ID *id, const eCustomDataType type, const int totelem)
bool CustomData_external_test (CustomData *data, const eCustomDataType type)
Mesh-to-Mesh Data Transfer
static void copy_bit_flag (void *dst, const void *src, const size_t data_size, const uint64_t flag)
static bool check_bit_flag (const void *data, const size_t data_size, const uint64_t flag)
static void customdata_data_transfer_interp_generic (const CustomDataTransferLayerMap *laymap, void *data_dst, const void **sources, const float *weights, const int count, const float mix_factor)
void customdata_data_transfer_interp_normal_normals (const CustomDataTransferLayerMap *laymap, void *data_dst, const void **sources, const float *weights, const int count, const float mix_factor)
void CustomData_data_transfer (const MeshPairRemap *me_remap, const CustomDataTransferLayerMap *laymap)
Custom Data IO
static void get_type_file_write_info (const eCustomDataType type, const char **r_struct_name, int *r_struct_num)
void CustomData_blend_write_prepare (CustomData &data, const blender::bke::AttrDomain domain, const int domain_size, Vector< CustomDataLayer, 16 > &layers_to_write, blender::bke::AttributeStorage::BlendWriteData &write_data)
static void write_mdisps (BlendWriter *writer, const int count, const MDisps *mdlist, const int external)
static void write_grid_paint_mask (BlendWriter *writer, int count, const GridPaintMask *grid_paint_mask)
static void blend_write_layer_data (BlendWriter *writer, const CustomDataLayer &layer, const int count)
void CustomData_blend_write (BlendWriter *writer, CustomData *data, Span< CustomDataLayer > layers_to_write, int count, eCustomDataMask cddata_mask, ID *id)
static void blend_read_mdisps (BlendDataReader *reader, const int count, MDisps *mdisps, const int external)
static void blend_read_paint_mask (BlendDataReader *reader, int count, GridPaintMask *grid_paint_mask)
static void blend_read_layer_data (BlendDataReader *reader, CustomDataLayer &layer, const int count)
void CustomData_blend_read (BlendDataReader *reader, CustomData *data, const int count)
Custom Data Debugging
void CustomData_debug_info_from_layers (const CustomData *data, const char *indent, DynStr *dynstr)
Custom Data C++ API
std::optional< VolumeGridTypeblender::bke::custom_data_type_to_volume_grid_type (eCustomDataType type)
std::optional< eCustomDataTypeblender::bke::volume_grid_type_to_custom_data_type (VolumeGridType type)

Variables

static CLG_LogRef LOG = {"bke.customdata"}

CustomData Functions

#define SOURCE_BUF_SIZE   100
static void customData_update_offsets (CustomData *data)
static CustomDataLayercustomData_add_layer__internal (CustomData *data, eCustomDataType type, std::optional< eCDAllocType > alloctype, void *layer_data_to_assign, const ImplicitSharingInfo *sharing_info_to_assign, int totelem, const StringRef name)
void CustomData_update_typemap (CustomData *data)
static bool customdata_typemap_is_valid (const CustomData *data)
static void * copy_layer_data (const eCustomDataType type, const void *data, const int totelem)
static void free_layer_data (const eCustomDataType type, const void *data, const int totelem)
static bool customdata_merge_internal (const CustomData *source, CustomData *dest, const eCustomDataMask mask, const std::optional< eCDAllocType > alloctype, const int totelem)
bool CustomData_merge (const CustomData *source, CustomData *dest, eCustomDataMask mask, int totelem)
bool CustomData_merge_layout (const CustomData *source, CustomData *dest, const eCustomDataMask mask, const eCDAllocType alloctype, const int totelem)
CustomData CustomData_shallow_copy_remove_non_bmesh_attributes (const CustomData *src, const eCustomDataMask mask)
static const ImplicitSharingInfomake_implicit_sharing_info_for_layer (const eCustomDataType type, const void *data, const int totelem)
static void ensure_layer_data_is_mutable (CustomDataLayer &layer, const int totelem)
static bool layer_is_mutable (CustomDataLayer &layer)
void CustomData_ensure_data_is_mutable (CustomDataLayer *layer, const int totelem)
void CustomData_ensure_layers_are_mutable (CustomData *data, int totelem)
void CustomData_realloc (CustomData *data, const int old_size, const int new_size, const eCDAllocType alloctype)
void CustomData_init_from (const CustomData *source, CustomData *dest, eCustomDataMask mask, int totelem)
void CustomData_init_layout_from (const CustomData *source, CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, int totelem)
static void customData_free_layer__internal (CustomDataLayer *layer)
static void CustomData_external_free (CustomData *data)
void CustomData_reset (CustomData *data)
void CustomData_free (CustomData *data)
static int CustomData_get_layer_index__notypemap (const CustomData *data, const eCustomDataType type)
int CustomData_get_layer_index (const CustomData *data, const eCustomDataType type)
int CustomData_get_layer_index_n (const CustomData *data, const eCustomDataType type, const int n)
int CustomData_get_named_layer_index (const CustomData *data, const eCustomDataType type, const StringRef name)
int CustomData_get_named_layer_index_notype (const CustomData *data, const StringRef name)
int CustomData_get_active_layer_index (const CustomData *data, const eCustomDataType type)
int CustomData_get_render_layer_index (const CustomData *data, const eCustomDataType type)
int CustomData_get_clone_layer_index (const CustomData *data, const eCustomDataType type)
int CustomData_get_stencil_layer_index (const CustomData *data, const eCustomDataType type)
int CustomData_get_named_layer (const CustomData *data, const eCustomDataType type, const StringRef name)
int CustomData_get_active_layer (const CustomData *data, const eCustomDataType type)
int CustomData_get_render_layer (const CustomData *data, const eCustomDataType type)
int CustomData_get_clone_layer (const CustomData *data, const eCustomDataType type)
int CustomData_get_stencil_layer (const CustomData *data, const eCustomDataType type)
const char * CustomData_get_active_layer_name (const CustomData *data, const eCustomDataType type)
const char * CustomData_get_render_layer_name (const CustomData *data, const eCustomDataType type)
void CustomData_set_layer_active (CustomData *data, const eCustomDataType type, const int n)
void CustomData_set_layer_render (CustomData *data, const eCustomDataType type, const int n)
void CustomData_set_layer_clone (CustomData *data, const eCustomDataType type, const int n)
void CustomData_set_layer_stencil (CustomData *data, const eCustomDataType type, const int n)
void CustomData_set_layer_active_index (CustomData *data, const eCustomDataType type, const int n)
void CustomData_set_layer_render_index (CustomData *data, const eCustomDataType type, const int n)
void CustomData_set_layer_clone_index (CustomData *data, const eCustomDataType type, const int n)
void CustomData_set_layer_flag (CustomData *data, const eCustomDataType type, const int flag)
bool CustomData_layer_is_anonymous (const CustomData *data, eCustomDataType type, int n)
static void customData_resize (CustomData *data, const int grow_amount)
void * CustomData_add_layer (CustomData *data, const eCustomDataType type, eCDAllocType alloctype, const int totelem)
const void * CustomData_add_layer_with_data (CustomData *data, const eCustomDataType type, void *layer_data, const int totelem, const ImplicitSharingInfo *sharing_info)
void * CustomData_add_layer_named (CustomData *data, const eCustomDataType type, const eCDAllocType alloctype, const int totelem, const StringRef name)
const void * CustomData_add_layer_named_with_data (CustomData *data, eCustomDataType type, void *layer_data, int totelem, const StringRef name, const ImplicitSharingInfo *sharing_info)
bool CustomData_free_layer (CustomData *data, const eCustomDataType type, const int index)
bool CustomData_free_layer_named (CustomData *data, const StringRef name)
bool CustomData_free_layer_active (CustomData *data, const eCustomDataType type)
void CustomData_free_layers (CustomData *data, const eCustomDataType type)
bool CustomData_has_layer_named (const CustomData *data, const eCustomDataType type, const StringRef name)
bool CustomData_has_layer (const CustomData *data, const eCustomDataType type)
int CustomData_number_of_layers (const CustomData *data, const eCustomDataType type)
int CustomData_number_of_anonymous_layers (const CustomData *data, const eCustomDataType type)
int CustomData_number_of_layers_typemask (const CustomData *data, const eCustomDataMask mask)
void CustomData_set_only_copy (const CustomData *data, const eCustomDataMask mask)
void CustomData_copy_elements (const eCustomDataType type, void *src_data_ofs, void *dst_data_ofs, const int count)
void CustomData_copy_data_layer (const CustomData *source, CustomData *dest, const int src_layer_index, const int dst_layer_index, const int src_index, const int dst_index, const int count)
void CustomData_copy_data_named (const CustomData *source, CustomData *dest, const int source_index, const int dest_index, const int count)
void CustomData_copy_data (const CustomData *source, CustomData *dest, const int source_index, const int dest_index, const int count)
void CustomData_copy_layer_type_data (const CustomData *source, CustomData *destination, const eCustomDataType type, int source_index, int destination_index, int count)
void CustomData_free_elem (CustomData *data, const int index, const int count)
void CustomData_interp (const CustomData *source, CustomData *dest, const int *src_indices, const float *weights, const float *sub_weights, int count, int dest_index)
void CustomData_swap_corners (CustomData *data, const int index, const int *corner_indices)
void * CustomData_get_for_write (CustomData *data, const int index, const eCustomDataType type, int totelem)
void * CustomData_get_n_for_write (CustomData *data, const eCustomDataType type, const int index, const int n, int totelem)
const void * CustomData_get_layer (const CustomData *data, const eCustomDataType type)
void * CustomData_get_layer_for_write (CustomData *data, const eCustomDataType type, const int totelem)
const void * CustomData_get_layer_n (const CustomData *data, const eCustomDataType type, const int n)
void * CustomData_get_layer_n_for_write (CustomData *data, const eCustomDataType type, const int n, const int totelem)
const void * CustomData_get_layer_named (const CustomData *data, const eCustomDataType type, const StringRef name)
void * CustomData_get_layer_named_for_write (CustomData *data, const eCustomDataType type, const StringRef name, const int totelem)
int CustomData_get_offset (const CustomData *data, const eCustomDataType type)
int CustomData_get_n_offset (const CustomData *data, const eCustomDataType type, const int n)
int CustomData_get_offset_named (const CustomData *data, const eCustomDataType type, const StringRef name)
bool CustomData_set_layer_name (CustomData *data, const eCustomDataType type, const int n, const StringRef name)
const char * CustomData_get_layer_name (const CustomData *data, const eCustomDataType type, const int n)
void CustomData_bmesh_init_pool (CustomData *data, const int totelem, const char htype)
bool CustomData_bmesh_merge_layout (const CustomData *source, CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, BMesh *bm, const char htype)
void CustomData_bmesh_free_block (CustomData *data, void **block)
void CustomData_bmesh_free_block_data (CustomData *data, void *block)
void CustomData_bmesh_alloc_block (CustomData *data, void **block)
void CustomData_data_set_default_value (const eCustomDataType type, void *elem)
static void CustomData_bmesh_set_default_n (CustomData *data, void **block, const int n)
void CustomData_bmesh_set_default (CustomData *data, void **block)
BMCustomDataCopyMap CustomData_bmesh_copy_map_calc (const CustomData &src, const CustomData &dst, const eCustomDataMask mask_exclude)
void CustomData_bmesh_copy_block (CustomData &dst_data, const BMCustomDataCopyMap &copy_map, const void *src_block, void **dst_block)
void CustomData_bmesh_copy_block (CustomData &data, void *src_block, void **dst_block)
void * CustomData_bmesh_get (const CustomData *data, void *block, const eCustomDataType type)
void * CustomData_bmesh_get_n (const CustomData *data, void *block, const eCustomDataType type, const int n)
void * CustomData_bmesh_get_layer_n (const CustomData *data, void *block, const int n)
bool CustomData_layer_has_math (const CustomData *data, const int layer_n)
bool CustomData_layer_has_interp (const CustomData *data, const int layer_n)
bool CustomData_has_math (const CustomData *data)
bool CustomData_bmesh_has_free (const CustomData *data)
bool CustomData_has_interp (const CustomData *data)
void CustomData_data_copy_value (const eCustomDataType type, const void *source, void *dest)
void CustomData_data_mix_value (const eCustomDataType type, const void *source, void *dest, const int mixmode, const float mixfactor)
bool CustomData_data_equals (const eCustomDataType type, const void *data1, const void *data2)
void CustomData_data_initminmax (const eCustomDataType type, void *min, void *max)
void CustomData_data_dominmax (const eCustomDataType type, const void *data, void *min, void *max)
void CustomData_data_multiply (const eCustomDataType type, void *data, const float fac)
void CustomData_data_add (const eCustomDataType type, void *data1, const void *data2)
void CustomData_bmesh_set_n (CustomData *data, void *block, const eCustomDataType type, const int n, const void *source)
void CustomData_bmesh_interp_n (CustomData *data, const void **src_blocks_ofs, const float *weights, const float *sub_weights, int count, void *dst_block_ofs, int n)
void CustomData_bmesh_interp (CustomData *data, const void **src_blocks, const float *weights, const float *sub_weights, int count, void *dst_block)
int CustomData_sizeof (const eCustomDataType type)
const char * CustomData_layertype_name (const eCustomDataType type)
bool CustomData_layertype_is_singleton (const eCustomDataType type)
bool CustomData_layertype_is_dynamic (const eCustomDataType type)
int CustomData_layertype_layers_max (const eCustomDataType type)
static bool cd_layer_find_dupe (CustomData *data, const StringRef name, const eCustomDataType type, const int index)
int CustomData_name_maxncpy_calc (const blender::StringRef name)
void CustomData_set_layer_unique_name (CustomData *data, const int index)
void CustomData_validate_layer_name (const CustomData *data, const eCustomDataType type, const StringRef name, char *outname)
bool CustomData_verify_versions (CustomData *data, const int index)
static bool CustomData_layer_ensure_data_exists (CustomDataLayer *layer, size_t count)
bool CustomData_layer_validate (CustomDataLayer *layer, const uint totitems, const bool do_fixes)

Layer Type Information (#LAYERTYPEINFO)

static const LayerTypeInfo LAYERTYPEINFO [CD_NUMTYPES]
static const char * LAYERTYPENAMES [CD_NUMTYPES]
const CustomData_MeshMasks CD_MASK_BAREMESH
const CustomData_MeshMasks CD_MASK_BAREMESH_ORIGINDEX
const CustomData_MeshMasks CD_MASK_MESH
const CustomData_MeshMasks CD_MASK_DERIVEDMESH
const CustomData_MeshMasks CD_MASK_BMESH
const CustomData_MeshMasks CD_MASK_EVERYTHING
static const LayerTypeInfolayerType_getInfo (const eCustomDataType type)
static const char * layerType_getName (const eCustomDataType type)
void customData_mask_layers__print (const CustomData_MeshMasks *mask)

Detailed Description

Implementation of CustomData.

BKE_customdata.hh contains the function prototypes for this file.

Definition in file customdata.cc.

Macro Definition Documentation

◆ COPY_BIT_FLAG

#define COPY_BIT_FLAG ( _type,
_dst,
_src,
_f )
Value:
{ \
const _type _val = *((_type *)(_src)) & (_type)(_f); \
*((_type *)(_dst)) &= ~(_type)(_f); \
*((_type *)(_dst)) |= _val; \
} \
(void)0

Referenced by copy_bit_flag().

◆ CUSTOMDATA_GROW

#define CUSTOMDATA_GROW   5

Definition at line 82 of file customdata.cc.

Referenced by customData_add_layer__internal(), and CustomData_free_layer().

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 17 of file customdata.cc.

◆ SOURCE_BUF_SIZE

#define SOURCE_BUF_SIZE   100

Definition at line 3492 of file customdata.cc.

Referenced by CustomData_bmesh_interp(), and CustomData_interp().

Typedef Documentation

◆ float2

Definition at line 618 of file BLI_math_vector_types.hh.

Function Documentation

◆ blend_read_layer_data()

◆ blend_read_mdisps()

void blend_read_mdisps ( BlendDataReader * reader,
const int count,
MDisps * mdisps,
const int external )
static

◆ blend_read_paint_mask()

void blend_read_paint_mask ( BlendDataReader * reader,
int count,
GridPaintMask * grid_paint_mask )
static

◆ blend_write_layer_data()

◆ BLI_STATIC_ASSERT()

BLI_STATIC_ASSERT ( BOUNDED_ARRAY_TYPE_SIZE< decltypeCustomData::typemap)>( = =CD_NUMTYPES,
"size mismatch"  )

◆ bpy_bm_generic_invalidate()

◆ cd_layer_find_dupe()

bool cd_layer_find_dupe ( CustomData * data,
const StringRef name,
const eCustomDataType type,
const int index )
static

◆ check_bit_flag()

bool check_bit_flag ( const void * data,
const size_t data_size,
const uint64_t flag )
static

Definition at line 4861 of file customdata.cc.

References check_bit_flag(), and data.

Referenced by check_bit_flag(), and customdata_data_transfer_interp_generic().

◆ copy_bit_flag()

void copy_bit_flag ( void * dst,
const void * src,
const size_t data_size,
const uint64_t flag )
static

Definition at line 4830 of file customdata.cc.

References COPY_BIT_FLAG, and copy_bit_flag().

Referenced by copy_bit_flag(), and customdata_data_transfer_interp_generic().

◆ copy_layer_data()

void * copy_layer_data ( const eCustomDataType type,
const void * data,
const int totelem )
static

◆ CustomData_add_layer()

void * CustomData_add_layer ( CustomData * data,
eCustomDataType type,
eCDAllocType alloctype,
int totelem )

Adds a layer of the given type to the CustomData object. The new layer is initialized based on the given alloctype.

Returns
The layer data.

Definition at line 3130 of file customdata.cc.

References CustomData_add_layer(), customData_add_layer__internal(), CustomData_update_typemap(), CustomDataLayer::data, data, LayerTypeInfo::defaultname, and layerType_getInfo().

Referenced by BKE_mesh_calc_edges_tessface(), BKE_mesh_ensure_skin_customdata(), BKE_mesh_legacy_bevel_weight_to_layers(), BKE_mesh_legacy_edge_crease_to_layers(), BKE_mesh_new_nomain_from_template_ex(), BKE_mesh_orco_ensure(), BKE_sculpt_mask_layers_ensure(), BM_data_layer_add(), BM_mesh_bm_from_me(), ccgDM_get_edge_data_layer(), ccgDM_get_poly_data_layer(), ccgDM_get_vert_data_layer(), convert_mfaces_to_mpolys(), copy_ccg_data(), CustomData_add_layer(), customdata_version_242(), data_transfer_layersmapping_cdlayers(), data_transfer_layersmapping_cdlayers_multisrc_to_dst(), data_transfer_layersmapping_generate(), data_transfer_layersmapping_vgroups(), data_transfer_layersmapping_vgroups_multisrc_to_dst(), deform_verts(), blender::bke::CurvesGeometry::deform_verts_for_write(), dynamicPaint_Modifier_apply(), blender::bke::editbmesh_calc_modifiers(), ensure_orig_index_layer(), blender::bke::mesh_calc_modifiers(), blender::geometry::mesh_triangulate(), mesh_wrapper_ensure_subdivision(), blender::ed::object::modifier_skin_armature_create(), modify_mesh(), modify_mesh(), modify_mesh(), blender::modifyGeometry(), multires_create_grids_in_unsubdivided_base_mesh(), multires_ensure_external_read(), multires_subdivide_create_tangent_displacement_linear_grids(), multiresModifier_disp_run(), multiresModifier_subdivide_to_level(), blender::bke::orco_coord_layer_ensure(), blender::io::alembic::read_generated_coordinates(), sculpt_multires_modifier_get(), skin_set_orig_indices(), and triangulate_mesh().

◆ customData_add_layer__internal()

◆ CustomData_add_layer_named()

void * CustomData_add_layer_named ( CustomData * data,
eCustomDataType type,
eCDAllocType alloctype,
int totelem,
blender::StringRef name )

Same as CustomData_add_layer but accepts a name.

Definition at line 3167 of file customdata.cc.

References customData_add_layer__internal(), CustomData_add_layer_named(), CustomData_update_typemap(), CustomDataLayer::data, and data.

Referenced by blender::io::alembic::add_customdata_cb(), blender::bke::add_generic_custom_data_layer(), add_mface_layers(), BKE_editmesh_loop_tangent_calc(), BKE_mesh_add_loop_tangent_named_layer_for_uv(), BKE_mesh_calc_edges_tessface(), BKE_mesh_calc_loop_tangent_ex(), BKE_mesh_legacy_convert_edges_to_generic(), BKE_mesh_legacy_convert_loops_to_corners(), BKE_mesh_legacy_convert_verts_to_positions(), BM_data_layer_add_named(), BM_mesh_bm_from_me(), BM_mesh_copy_init_customdata_all_layers(), blender::bm_to_mesh_edges(), blender::bm_to_mesh_loops(), blender::bm_to_mesh_verts(), convert_mfaces_to_mpolys(), CustomData_add_layer_named(), CustomData_to_bmeshpoly(), data_transfer_layersmapping_cdlayers(), data_transfer_layersmapping_cdlayers_multisrc_to_dst(), data_transfer_layersmapping_generate(), dm_getCornerEdgeArray(), dm_getCornerVertArray(), dm_getEdgeArray(), dm_getVertArray(), dynamicPaint_Modifier_apply(), ED_mesh_join_objects_exec(), ED_mesh_uv_add(), ensure_corner_boolean_attribute(), Freestyle::BlenderStrokeRenderer::GenerateStrokeMesh(), blender::bke::get_mutable_attribute(), blender::bke::greasepencil::get_mutable_attribute(), get_mutable_attribute(), join_mesh_single(), mesh_add_edges(), mesh_add_loops(), mesh_add_verts(), MOD_solidify_extrude_modifyMesh(), MOD_solidify_nonmanifold_modifyMesh(), multires_unsubdivide_add_original_index_datalayers(), blender::bke::Instances::reference_handles_for_write(), and blender::bke::Instances::transforms_for_write().

◆ CustomData_add_layer_named_with_data()

◆ CustomData_add_layer_with_data()

const void * CustomData_add_layer_with_data ( CustomData * data,
eCustomDataType type,
void * layer_data,
int totelem,
const blender::ImplicitSharingInfo * sharing_info )

Adds a layer of the given type to the CustomData object. The new layer takes ownership of the passed in layer_data. If a ImplicitSharingInfo is passed in, its user count is increased.

Definition at line 3148 of file customdata.cc.

References customData_add_layer__internal(), CustomData_add_layer_with_data(), CustomData_update_typemap(), CustomDataLayer::data, data, LayerTypeInfo::defaultname, and layerType_getInfo().

Referenced by blender::ed::object::add_shapekey_layers(), BKE_mesh_calc_edges_legacy(), CustomData_add_layer_with_data(), customdata_version_242(), and mesh_tessface_calc().

◆ CustomData_blend_read()

◆ CustomData_blend_write()

void CustomData_blend_write ( BlendWriter * writer,
CustomData * data,
blender::Span< CustomDataLayer > layers_to_write,
int count,
eCustomDataMask cddata_mask,
ID * id )

◆ CustomData_blend_write_prepare()

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 )

Prepare given custom data for file writing.

Parameters
dataThe custom-data to tweak for .blend file writing (modified in place).
layers_to_writeA reduced set of layers to be written to file.
write_dataAttributeStorage data to write, to support the option for writing the new format even when it isn't used at runtime.
Warning
This function invalidates the custom data struct by changing the layer counts and the #layers pointer, and by invalidating the type map. It expects to work on a shallow copy of the struct.

Definition at line 5123 of file customdata.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::bke::Array, blender::bke::attribute_name_is_anonymous(), blender::bke::AttributeStorage::BlendWriteData::attributes, CD_FLAG_NOCOPY, blender::ResourceScope::construct(), blender::bke::custom_data_type_to_attr_type(), CustomData_blend_write_prepare(), Attribute::data, AttributeArray::data, data, Attribute::data_type, Attribute::domain, Attribute::name, blender::bke::AttributeStorage::BlendWriteData::scope, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), Span< T >::Span(), Attribute::storage_type, and U.

Referenced by CustomData_blend_write_prepare(), and mesh_blend_write().

◆ CustomData_bmesh_alloc_block()

void CustomData_bmesh_alloc_block ( CustomData * data,
void ** block )

◆ CustomData_bmesh_copy_block() [1/2]

◆ CustomData_bmesh_copy_block() [2/2]

◆ CustomData_bmesh_copy_map_calc()

◆ CustomData_bmesh_free_block()

◆ CustomData_bmesh_free_block_data()

void CustomData_bmesh_free_block_data ( CustomData * data,
void * block )

Same as CustomData_bmesh_free_block but zero the memory rather than freeing.

Definition at line 3890 of file customdata.cc.

References CustomData_bmesh_free_block_data(), data, LayerTypeInfo::free, i, layerType_getInfo(), and POINTER_OFFSET.

Referenced by bmo_inset_region_exec(), and CustomData_bmesh_free_block_data().

◆ CustomData_bmesh_get()

◆ CustomData_bmesh_get_layer_n()

void * CustomData_bmesh_get_layer_n ( const CustomData * data,
void * block,
int n )

Gets from the layer at physical index n,

Note
doesn't check type.

Definition at line 4074 of file customdata.cc.

References CustomData_bmesh_get_layer_n(), data, and POINTER_OFFSET.

Referenced by CustomData_bmesh_get_layer_n(), EDBM_verts_mirror_cache_clear(), and EDBM_verts_mirror_get().

◆ CustomData_bmesh_get_n()

◆ CustomData_bmesh_has_free()

bool CustomData_bmesh_has_free ( const CustomData * data)

A non bmesh version would have to check layer->data.

Definition at line 4119 of file customdata.cc.

References CustomData_bmesh_has_free(), data, LayerTypeInfo::free, i, and layerType_getInfo().

Referenced by BM_mesh_data_free(), and CustomData_bmesh_has_free().

◆ CustomData_bmesh_init_pool()

◆ CustomData_bmesh_interp()

◆ CustomData_bmesh_interp_n()

void CustomData_bmesh_interp_n ( CustomData * data,
const void ** src_blocks,
const float * weights,
const float * sub_weights,
int count,
void * dst_block_ofs,
int n )

◆ CustomData_bmesh_merge_layout()

bool CustomData_bmesh_merge_layout ( const CustomData * source,
CustomData * dest,
eCustomDataMask mask,
eCDAllocType alloctype,
BMesh * bm,
char htype )

◆ CustomData_bmesh_set_default()

void CustomData_bmesh_set_default ( CustomData * data,
void ** block )

◆ CustomData_bmesh_set_default_n()

void CustomData_bmesh_set_default_n ( CustomData * data,
void ** block,
const int n )
static

◆ CustomData_bmesh_set_n()

void CustomData_bmesh_set_n ( CustomData * data,
void * block,
const eCustomDataType type,
const int n,
const void * source )

◆ CustomData_copy_data()

void CustomData_copy_data ( const CustomData * source,
CustomData * dest,
int source_index,
int dest_index,
int count )

Copies data from one CustomData object to another objects need not be compatible, each source layer is copied to the first dest layer of correct type (if there is none, the layer is skipped).

NOTE: It's expected that the destination layers are mutable (CustomData_ensure_layers_are_mutable). These copy-functions could ensure that internally, but that would cause additional overhead when copying few elements at a time. It would also be necessary to pass the total size of the destination layers as parameter if to make them mutable though. In most cases, these functions are used right after creating a new geometry, in which case there are no shared layers anyway.

Definition at line 3419 of file customdata.cc.

References CustomData_copy_data(), CustomData_copy_data_layer(), CustomData::layers, CustomData::totlayer, and CustomDataLayer::type.

Referenced by add_interp_verts_copy_edges_to_new_mesh(), add_interpolated_faces_to_new_mesh(), arrayModifier_doArray(), BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), BKE_mesh_strip_loose_faces(), copy_masked_edges_to_new_mesh(), copy_masked_faces_to_new_mesh(), copy_masked_verts_to_new_mesh(), blender::geometry::create_merged_mesh(), CustomData_copy_data(), blender::geometry::customdata_weld(), cutEdges(), DM_copy_vert_data(), explodeMesh(), get_dface(), blender::ed::greasepencil::join_object_with_active(), blender::bke::subdiv::loop_interpolation_from_corner(), blender::geometry::merge_customdata_all(), mesh_add_edges(), mesh_add_faces(), mesh_add_loops(), mesh_add_verts(), mesh_merge_transform(), mesh_strip_edges(), MOD_solidify_extrude_modifyMesh(), MOD_solidify_nonmanifold_modifyMesh(), modify_mesh(), modify_mesh(), modify_mesh(), blender::geometry::reorder_customdata(), reorder_customdata(), blender::geometry::reorder_customdata_groups(), set_ccgdm_all_geometry(), shrink_customdata(), strip_loose_faces_corners(), blender::bke::subdiv::subdiv_copy_edge_data(), blender::bke::subdiv::subdiv_mesh_face(), blender::bke::subdiv::subdiv_vertex_data_copy(), subdivide_base(), and blender::bke::subdiv::vertex_interpolation_from_corner().

◆ CustomData_copy_data_layer()

void CustomData_copy_data_layer ( const CustomData * source,
CustomData * dest,
const int src_layer_index,
const int dst_layer_index,
const int src_index,
const int dst_index,
const int count )

◆ CustomData_copy_data_named()

void CustomData_copy_data_named ( const CustomData * source,
CustomData * dest,
const int source_index,
const int dest_index,
const int count )

◆ CustomData_copy_elements()

void CustomData_copy_elements ( const eCustomDataType type,
void * src_data_ofs,
void * dst_data_ofs,
const int count )

◆ CustomData_copy_layer_type_data()

void CustomData_copy_layer_type_data ( const CustomData * source,
CustomData * destination,
eCustomDataType type,
int source_index,
int destination_index,
int count )

◆ CustomData_count_memory()

◆ CustomData_data_add()

◆ CustomData_data_copy_value()

void CustomData_data_copy_value ( eCustomDataType type,
const void * source,
void * dest )

Copies the "value" (e.g. mloopuv UV or mloopcol colors) from one block to another, while not overwriting anything else (e.g. flags). probably only implemented for mloopuv/mloopcol, for now.

Definition at line 4142 of file customdata.cc.

References LayerTypeInfo::copy, CustomData_data_copy_value(), layerType_getInfo(), and LayerTypeInfo::size.

Referenced by bm_loop_customdata_merge(), blender::bmesh_block_copy_to_mesh_attributes(), bmo_average_vert_facedata_exec(), bmo_collapsecon_do_layer(), CustomData_data_copy_value(), and mesh_attributes_copy_to_bmesh_block().

◆ CustomData_data_dominmax()

void CustomData_data_dominmax ( const eCustomDataType type,
const void * data,
void * min,
void * max )

◆ CustomData_data_equals()

bool CustomData_data_equals ( eCustomDataType type,
const void * data1,
const void * data2 )

Compares if data1 is equal to data2. type is a valid CustomData type enum (e.g. CD_PROP_FLOAT). the layer type's equal function is used to compare the data, if it exists, otherwise #memcmp is used.

Definition at line 4179 of file customdata.cc.

References CustomData_data_equals(), LayerTypeInfo::equal, layerType_getInfo(), and LayerTypeInfo::size.

Referenced by bm_edge_collapse_loop_customdata(), BM_edge_is_contiguous_loop_cd(), bm_loop_customdata_merge(), bm_loop_walk_data(), bmw_UVEdgeWalker_step(), contig_ldata_across_loops(), and CustomData_data_equals().

◆ CustomData_data_initminmax()

void CustomData_data_initminmax ( const eCustomDataType type,
void * min,
void * max )

◆ CustomData_data_mix_value()

void CustomData_data_mix_value ( eCustomDataType type,
const void * source,
void * dest,
int mixmode,
float mixfactor )

Mixes the "value" (e.g. mloopuv UV or mloopcol colors) from one block into another, while not overwriting anything else (e.g. flags).

Definition at line 4158 of file customdata.cc.

References LayerTypeInfo::copyvalue, CustomData_data_mix_value(), layerType_getInfo(), and LayerTypeInfo::size.

Referenced by bm_loop_customdata_merge(), CustomData_data_mix_value(), customdata_data_transfer_interp_generic(), and customdata_data_transfer_interp_normal_normals().

◆ CustomData_data_multiply()

◆ CustomData_data_set_default_value()

◆ CustomData_data_transfer()

◆ customdata_data_transfer_interp_generic()

◆ customdata_data_transfer_interp_normal_normals()

void customdata_data_transfer_interp_normal_normals ( const CustomDataTransferLayerMap * laymap,
void * data_dst,
const void ** sources,
const float * weights,
int count,
float mix_factor )

◆ CustomData_debug_info_from_layers()

void CustomData_debug_info_from_layers ( const CustomData * data,
const char * indent,
DynStr * dynstr )

◆ CustomData_ensure_data_is_mutable()

void CustomData_ensure_data_is_mutable ( CustomDataLayer * layer,
int totelem )

Custom data layers can be shared through implicit sharing (BLI_implicit_sharing.h). This function makes sure that the layer is unshared if it was shared, which makes it mutable.

Definition at line 2583 of file customdata.cc.

References CustomData_ensure_data_is_mutable(), and ensure_layer_data_is_mutable().

Referenced by BKE_attribute_search_for_write(), and CustomData_ensure_data_is_mutable().

◆ CustomData_ensure_layers_are_mutable()

◆ CustomData_external_add()

◆ customdata_external_filename()

void customdata_external_filename ( char filepath[FILE_MAX],
ID * id,
CustomDataExternal * external )
static

◆ CustomData_external_free()

void CustomData_external_free ( CustomData * data)
static

Definition at line 2696 of file customdata.cc.

References CustomData_external_free(), data, and MEM_freeN().

Referenced by CustomData_external_free(), and CustomData_free().

◆ CustomData_external_read()

◆ CustomData_external_reload()

◆ CustomData_external_remove()

◆ CustomData_external_test()

◆ CustomData_external_write()

◆ CustomData_free()

void CustomData_free ( CustomData * data)

Frees data associated with a CustomData object (doesn't free the object itself, though).

Definition at line 2710 of file customdata.cc.

References CustomData_external_free(), CustomData_free(), customData_free_layer__internal(), CustomData_reset(), data, i, and MEM_freeN().

Referenced by BKE_grease_pencil_nomain_to_grease_pencil(), BKE_mesh_calc_edges_tessface(), BKE_mesh_legacy_convert_polys_to_offsets(), BKE_pointcloud_nomain_to_pointcloud(), BM_mesh_data_free(), convert_mfaces_to_mpolys(), CustomData_free(), DM_release(), blender::draw::extract_tangents(), blender::draw::extract_tangents_subdiv(), blender::ed::sculpt_paint::undo::geometry_free_data(), grease_pencil_free_data(), blender::bke::subdiv::loop_interpolation_end(), mesh_add_edges(), mesh_add_faces(), mesh_add_loops(), mesh_add_verts(), blender::bke::mesh_calc_edges(), mesh_clear_geometry(), mesh_free_data(), mesh_tessface_calc(), mesh_tessface_clear_intern(), pointcloud_free_data(), blender::geometry::reorder_customdata(), reorder_customdata(), blender::geometry::reorder_customdata_groups(), shrink_customdata(), blender::ed::pointcloud::undo::step_decode(), blender::ed::pointcloud::undo::step_free(), blender::ed::geometry::store_result_geometry(), blender::bke::subdiv::subdiv_mesh_context_free(), blender::bke::subdiv::subdiv_mesh_topology_info(), blender::bke::subdiv::vertex_interpolation_end(), blender::bke::CurvesGeometry::~CurvesGeometry(), blender::bke::greasepencil::tests::GreasePencilHelper::~GreasePencilHelper(), blender::bke::Instances::~Instances(), and blender::ed::greasepencil::undo::StepObject::~StepObject().

◆ CustomData_free_elem()

◆ CustomData_free_layer()

◆ customData_free_layer__internal()

void customData_free_layer__internal ( CustomDataLayer * layer)
static

◆ CustomData_free_layer_active()

bool CustomData_free_layer_active ( CustomData * data,
eCustomDataType type )

Frees the layer index with the give type. returns 1 on success, 0 if no layer with the given type is found.

In edit-mode, use #EDBM_data_layer_free instead of this function.

Definition at line 3264 of file customdata.cc.

References CustomData_free_layer(), CustomData_free_layer_active(), CustomData_get_active_layer_index(), and data.

Referenced by BKE_object_defgroup_remove_all_ex(), blo_do_versions_250(), BM_data_layer_free(), CustomData_free_layer_active(), blender::ed::object::modifier_skin_customdata_delete(), multires_customdata_delete(), and object_defgroup_remove_common().

◆ CustomData_free_layer_named()

◆ CustomData_free_layers()

◆ CustomData_get_active_layer()

◆ CustomData_get_active_layer_index()

◆ CustomData_get_active_layer_name()

◆ CustomData_get_clone_layer()

◆ CustomData_get_clone_layer_index()

int CustomData_get_clone_layer_index ( const CustomData * data,
const eCustomDataType type )

◆ CustomData_get_elem_size()

◆ CustomData_get_for_write()

void * CustomData_get_for_write ( CustomData * data,
int index,
eCustomDataType type,
int totelem )

Retrieve a pointer to an element of the active layer of the given type, chosen by the index, if it exists.

Definition at line 3589 of file customdata.cc.

References BLI_assert, CustomData_get_for_write(), CustomData_get_layer_for_write(), data, layerType_getInfo(), and POINTER_OFFSET.

Referenced by bm_corners_to_loops_ex(), CustomData_get_for_write(), join_mesh_single(), psys_face_mat(), and psys_get_dupli_texture().

◆ CustomData_get_layer()

const void * CustomData_get_layer ( const CustomData * data,
eCustomDataType type )

Retrieve the data array of the active layer of the given type, if it exists. Return null otherwise.

Definition at line 3614 of file customdata.cc.

References CustomData_get_active_layer_index(), CustomData_get_layer(), and data.

Referenced by blender::ed::object::bake_targets_populate_pixels_color_attributes(), base_skin(), BKE_mesh_calc_edges_legacy(), BKE_mesh_calc_loop_tangents(), BKE_mesh_convert_mfaces_to_mpolys(), BKE_mesh_do_versions_cd_flag_init(), BKE_mesh_do_versions_convert_mfaces_to_mpolys(), BKE_mesh_foreach_mapped_edge(), BKE_mesh_foreach_mapped_face_center(), BKE_mesh_foreach_mapped_loop(), BKE_mesh_foreach_mapped_subdiv_face_center(), BKE_mesh_foreach_mapped_vert(), BKE_mesh_legacy_convert_edges_to_generic(), BKE_mesh_legacy_convert_loops_to_corners(), BKE_mesh_legacy_convert_mpoly_to_material_indices(), BKE_mesh_legacy_convert_polys_to_offsets(), BKE_mesh_legacy_convert_verts_to_positions(), BKE_mesh_legacy_sharp_faces_from_flags(), BKE_mesh_new_nomain_from_template_ex(), BKE_object_as_kdtree(), BKE_object_data_transfer_ex(), BKE_subdiv_ccg_mask_init_from_paint(), blo_do_versions_280(), blo_do_versions_290(), blo_do_versions_300(), blender::ed::spreadsheet::build_mesh_debug_columns(), blender::ed::spreadsheet::calc_mesh_selection_mask(), blender::ed::spreadsheet::calc_mesh_selection_mask_faces(), cdDM_from_mesh_ex(), cloth_from_object(), construct_param_handle_subsurfed(), contarget_get_mesh_mat(), convert_mfaces_to_mpolys(), create_mesh(), CustomData_debug_info_from_layers(), CustomData_get_layer(), data_transfer_layersmapping_cdlayers(), data_transfer_layersmapping_vgroups(), blender::bke::CurvesGeometry::deform_verts(), deformVerts_do(), blender::bke::subdiv::displacement_init_data(), blender::draw::DRW_mesh_batch_cache_create_requested(), ED_mesh_pick_face_vert(), ED_mesh_uv_add(), ED_operator_uvmap_mesh(), blender::bke::editbmesh_calc_modifiers(), blender::draw::extract_orco(), blender::draw::extract_tan_init_common(), final_skin(), get_levels_from_disps(), get_particle_uv(), get_vertex_group(), give_parvert(), imapaint_pick_uv(), Freestyle::BlenderFileLoader::insertShapeNode(), join_mesh_single(), lattice_deform_coords_impl(), make_duplis_faces(), make_duplis_verts(), mask_init_data(), mesh_calc_tri_tessface(), mesh_get_x_mirror_faces(), mesh_loops_to_tessdata(), blender::draw::mesh_render_data_create(), blender::geometry::mesh_triangulate(), multires_apply_smat(), multires_ensure_external_read(), multires_output_hidden_to_ccgdm(), multiresModifier_set_levels_from_disps(), paintface_flush_flags(), paintvert_flush_flags(), blender::draw::particle_calculate_parent_mcol(), blender::draw::particle_calculate_parent_uvs(), blender::draw::particle_interpolate_children_mcol(), blender::draw::particle_interpolate_children_uvs(), particle_intersect_mesh(), PE_mirror_x(), pointdensity_cache_vertex_weight(), proj_paint_face_lookup_init(), proj_paint_layer_clone_init(), project_paint_begin(), project_paint_clone_face_skip(), project_paint_prepare_all_faces(), psys_calc_dmcache(), psys_face_mat(), psys_map_index_on_dm(), psys_particle_dm_face_lookup(), psys_particle_on_dm(), psys_thread_context_init_distribute(), RE_bake_pixels_populate(), recalc_emitter_field(), remap_hair_emitter(), sculpt_multires_modifier_get(), set_ccgdm_all_geometry(), subdivide_base(), blender::ed::curves::convert_to_particle_system::try_convert_single_object(), weightvg_do_mask(), blender::io::hydra::HairData::write_curves(), and blender::io::alembic::write_generated_coordinates().

◆ CustomData_get_layer_for_write()

void * CustomData_get_layer_for_write ( CustomData * data,
const eCustomDataType type,
const int totelem )

Definition at line 3624 of file customdata.cc.

References CustomData_get_active_layer_index(), CustomData_get_layer_for_write(), CustomDataLayer::data, data, and ensure_layer_data_is_mutable().

Referenced by BKE_mesh_calc_edges_legacy(), BKE_mesh_calc_edges_tessface(), BKE_mesh_is_valid(), BKE_mesh_runtime_is_valid(), BKE_mesh_validate(), blo_do_versions_250(), blo_do_versions_290(), blo_update_defaults_scene(), context_init_grid_pointers(), createFacepa(), CustomData_get_for_write(), CustomData_get_layer_for_write(), cutEdges(), data_transfer_dtdata_type_postprocess(), data_transfer_layersmapping_cdlayers(), data_transfer_layersmapping_generate(), data_transfer_layersmapping_vgroups(), deform_verts(), blender::bke::CurvesGeometry::deform_verts_for_write(), distribute_children_exec(), distribute_from_faces_exec(), distribute_from_verts_exec(), distribute_from_volume_exec(), distribute_grid(), DM_get_edge_data_layer(), DM_get_loop_data_layer(), DM_get_poly_data_layer(), DM_get_vert_data_layer(), dynamicPaint_Modifier_apply(), ensure_displacement_grids(), ensure_mask_grids(), explodeMesh(), get_dface(), blender::nodes::node_geo_extrude_mesh_cc::get_orig_index_layer(), get_particle_uv(), blender::bke::mesh_calc_modifiers(), blender::bke::mesh_flip_faces(), blender::bke::mesh_init_origspace(), mesh_merge_transform(), mesh_wrapper_ensure_subdivision(), MOD_solidify_extrude_modifyMesh(), MOD_solidify_nonmanifold_modifyMesh(), blender::ed::object::modifier_skin_armature_create(), modify_mesh(), modify_mesh(), modify_mesh(), multires_apply_uniform_scale(), multires_del_higher(), multires_modifier_update_hidden(), multires_set_tot_mdisps(), multires_subdivide_create_object_space_linear_grids(), multires_topology_changed(), multiresModifier_del_levels(), multiresModifier_disp_run(), blender::bke::orco_coord_layer_ensure(), blender::geometry::propagate_edge_attributes(), blender::geometry::propagate_vert_attributes(), psys_face_mat(), psys_interpolate_value_from_verts(), psys_map_index_on_dm(), psys_particle_dm_face_lookup(), psys_particle_on_dm(), psys_thread_context_init_distribute(), blender::io::alembic::read_generated_coordinates(), blender::bke::subdiv::subdiv_mesh_ctx_cache_custom_data_layers(), subdivide_base(), and triangulate_mesh().

◆ CustomData_get_layer_index()

◆ CustomData_get_layer_index__notypemap()

int CustomData_get_layer_index__notypemap ( const CustomData * data,
const eCustomDataType type )
static

◆ CustomData_get_layer_index_n()

◆ CustomData_get_layer_n()

◆ CustomData_get_layer_n_for_write()

◆ CustomData_get_layer_name()

◆ CustomData_get_layer_named()

const void * CustomData_get_layer_named ( const CustomData * data,
eCustomDataType type,
blender::StringRef name )

◆ CustomData_get_layer_named_for_write()

◆ CustomData_get_n_for_write()

void * CustomData_get_n_for_write ( CustomData * data,
eCustomDataType type,
int index,
int n,
int totelem )

Retrieve a pointer to an element of the nth layer of the given type, chosen by the index, if it exists.

Definition at line 3602 of file customdata.cc.

References BLI_assert, CustomData_get_layer_n_for_write(), CustomData_get_n_for_write(), data, layerType_getInfo(), and POINTER_OFFSET.

Referenced by bm_corners_to_loops_ex(), and CustomData_get_n_for_write().

◆ CustomData_get_n_offset()

◆ CustomData_get_named_layer()

◆ CustomData_get_named_layer_index()

◆ CustomData_get_named_layer_index_notype()

int CustomData_get_named_layer_index_notype ( const CustomData * data,
const StringRef name )

◆ CustomData_get_offset()

int CustomData_get_offset ( const CustomData * data,
const eCustomDataType type )

Definition at line 3685 of file customdata.cc.

References CustomData_get_active_layer_index(), CustomData_get_offset(), and data.

Referenced by armature_deform_coords_impl(), BKE_object_defgroup_clear(), BM_custom_loop_normals_from_vector_layer(), BM_custom_loop_normals_to_vector_layer(), BM_edge_split(), BM_face_interp_multires(), BM_face_multires_bounds_smooth(), BM_face_normal_flip(), BM_face_split(), BM_face_triangulate(), BM_faces_join(), BM_faces_join_pair(), BM_loop_interp_multires(), BM_mesh_bm_from_me(), BM_mesh_calc_uvs_cube(), BM_mesh_remap(), BM_mesh_wireframe(), bm_to_mesh_shape(), bm_to_mesh_vertex_map(), BM_uv_vert_map_create(), BMD_mesh_bm_create(), bmo_create_circle_exec(), bmo_create_cone_exec(), bmo_create_cube_exec(), bmo_create_grid_exec(), bmo_create_icosphere_exec(), bmo_create_monkey_exec(), bmo_create_uvsphere_exec(), bmo_poke_exec(), bmo_reverse_faces_exec(), bmo_reverse_uvs_exec(), bmo_rotate_uvs_exec(), bmo_subd_init_shape_info(), bmo_transform_exec(), blender::draw::compute_area_ratio(), construct_param_handle(), construct_param_handle_multi(), correct_uv_aspect(), correct_uv_aspect_per_face(), curve_deform_coords_impl(), CustomData_get_offset(), deformVerts_do(), ED_mesh_active_dvert_get_em(), edbm_decimate_exec(), edbm_select_ungrouped_exec(), edbm_select_ungrouped_poll(), blender::draw::extract_face_dots_uv_bm(), blender::draw::extract_skin_roots(), blender::draw::extract_uv_stretch_angle_bm(), blender::draw::extract_weights_bm(), blender::ed::object::get_vert_def_nr(), get_weights_array(), lattice_deform_coords_impl(), blender::geometry::boolean::mesh_bm_concat(), blender::ed::transform::mesh_customdatacorrect_init_container_generic(), blender::draw::mesh_render_data_create(), object_defgroup_remove_edit_mode(), blender::ed::object::return_editmesh_vgroup(), select_linked_delimit_begin(), similar_vert_select_exec(), blender::ed::object::skin_root_mark_exec(), stitch_process_data(), uv_copy_exec(), uv_find_nearest_face_ex(), uv_find_nearest_loop_from_edge(), uv_find_nearest_loop_from_vert(), uv_from_view_exec(), uv_paste_exec(), uv_sculpt_stroke_apply(), uv_select_overlap(), v3d_editvertex_buts(), blender::ed::object::vgroup_assign_verts(), blender::ed::object::vgroup_copy_active_to_sel(), blender::ed::object::vgroup_copy_active_to_sel_single(), blender::ed::object::vgroup_do_remap(), blender::ed::object::vgroup_mirror(), blender::ed::object::vgroup_normalize_active_vertex(), blender::ed::object::vgroup_parray_alloc(), blender::ed::object::vgroup_select_verts(), and blender::ed::object::vgroup_vert_active_mirror().

◆ CustomData_get_offset_named()

int CustomData_get_offset_named ( const CustomData * data,
const eCustomDataType type,
const StringRef name )

Definition at line 3704 of file customdata.cc.

References CustomData_get_named_layer_index(), CustomData_get_offset_named(), and data.

Referenced by blender::ed::sculpt_paint::expand::any_nonzero_mask(), blender::ed::sculpt_paint::cloth::apply_filter_forces_bmesh(), blender::ed::sculpt_paint::mask::apply_mask_from_settings(), blender::ed::object::bake_targets_output_vertex_colors(), bevel_harden_normals(), BKE_pbvh_bmesh_after_stroke(), BM_custom_loop_normals_from_vector_layer(), BM_custom_loop_normals_to_vector_layer(), bm_lnorspace_ensure_from_free_normals(), BM_lnorspace_err(), BM_lnorspace_rebuild(), BM_lnorspacearr_store(), BM_log_all_added(), BM_log_before_all_removed(), bm_log_faces_restore(), bm_log_vert_values_swap(), bm_log_verts_restore(), bm_log_verts_unmake(), BM_loop_normal_editdata_array_init(), BM_mesh_wireframe(), BM_uv_map_offsets_from_layer(), blender::ed::sculpt_paint::undo::bmesh_push(), blender::bke::pbvh::bmesh_update_topology(), bmo_bevel_exec(), blender::ed::sculpt_paint::pose::calc_average_face_set_center(), blender::ed::sculpt_paint::filter::calc_relax_face_sets_filter(), blender::ed::sculpt_paint::filter::calc_relax_filter(), blender::ed::sculpt_paint::auto_mask::calc_vert_factors(), blender::ed::transform::createTransEdge(), blender::ed::transform::createTransMeshVertCData(), CustomData_bmesh_copy_map_calc(), CustomData_get_offset_named(), blender::ed::sculpt_paint::brushes::do_mask_brush(), blender::ed::sculpt_paint::brushes::do_smooth_mask_brush(), blender::ed::sculpt_paint::mask::duplicate_mask(), edbm_average_normals_exec(), edbm_set_normals_from_faces_exec(), blender::ed::sculpt_paint::face_set::ensure_face_sets_bmesh(), blender::draw::extract_sculpt_data(), blender::ed::sculpt_paint::fill_factor_from_hide_and_mask(), blender::ed::sculpt_paint::mask::fill_mask_bmesh(), blender::ed::sculpt_paint::face_set::find_next_available_id(), blender::bke::pbvh::Tree::from_bmesh(), blender::ed::sculpt_paint::mask::gather_mask_bmesh(), geometry_extract_tag_face_set(), geometry_extract_tag_masked_faces(), blender::ed::sculpt_paint::mask::gesture_apply_for_symmetry_pass(), blender::ed::sculpt_paint::pose::ik_chain_init_face_sets_bmesh(), blender::ed::sculpt_paint::pose::ik_chain_init_face_sets_fk_bmesh(), blender::ed::sculpt_paint::auto_mask::init_boundary_masking_bmesh(), blender::ed::sculpt_paint::boundary::init_falloff_bmesh(), blender::ed::sculpt_paint::expand::init_from_face_set_boundary(), blender::ed::sculpt_paint::mask::invert_mask_bmesh(), blender::draw::mesh_render_data_create(), blender::draw::mesh_render_data_update_corner_normals(), modify_mesh(), mouse_mesh_shortest_path_edge(), mouse_mesh_shortest_path_face(), mouse_mesh_shortest_path_vert(), multires_unsubdivide_extract_grids(), normals_split(), blender::ed::sculpt_paint::hide::partialvis_masked_update_bmesh(), blender::ed::sculpt_paint::undo::restore_mask_from_undo_step(), blender::ed::sculpt_paint::mask::scatter_mask_bmesh(), blender::ed::sculpt_paint::mask::sculpt_mask_filter_exec(), blender::ed::sculpt_paint::mask::sculpt_mask_init_exec(), similar_edge_select_exec(), similar_vert_select_exec(), slice_paint_mask(), blender::draw::pbvh::update_face_sets_bmesh(), blender::ed::sculpt_paint::expand::update_for_vert(), blender::bke::pbvh::update_mask_bmesh(), blender::draw::pbvh::update_masks_bmesh(), v3d_editvertex_buts(), and blender::ed::sculpt_paint::expand::write_mask_data().

◆ CustomData_get_render_layer()

◆ CustomData_get_render_layer_index()

◆ CustomData_get_render_layer_name()

◆ CustomData_get_stencil_layer()

◆ CustomData_get_stencil_layer_index()

int CustomData_get_stencil_layer_index ( const CustomData * data,
const eCustomDataType type )

◆ CustomData_has_interp()

bool CustomData_has_interp ( const CustomData * data)

◆ CustomData_has_layer()

bool CustomData_has_layer ( const CustomData * data,
eCustomDataType type )

Returns true if a layer with the specified type exists.

Definition at line 3288 of file customdata.cc.

References CustomData_get_layer_index(), CustomData_has_layer(), and data.

Referenced by blender::ed::spreadsheet::add_mesh_debug_column_names(), blender::ed::object::bake(), BKE_main_mesh_legacy_convert_auto_smooth(), BKE_mesh_ensure_skin_customdata(), BKE_mesh_legacy_bevel_weight_to_layers(), BKE_mesh_legacy_convert_mpoly_to_material_indices(), BKE_mesh_legacy_convert_uvs_to_generic(), BKE_mesh_legacy_edge_crease_to_layers(), BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), BKE_mesh_nomain_to_mesh(), BKE_mesh_orco_ensure(), BKE_sculpt_mask_layers_ensure(), BKE_view_layer_filter_edit_mesh_has_uvs(), blo_do_versions_280(), blo_update_defaults_scene(), bm_corners_to_loops_ex(), BM_custom_loop_normals_to_vector_layer(), BM_mesh_bm_from_me(), bmesh_edit_begin(), bmesh_edit_end(), bmo_extrude_edge_only_exec(), bmo_extrude_face_region_exec(), bmo_extrude_vert_indiv_exec(), bpy_bmesh_dealloc(), bpy_bmlayercollection_new(), cdDM_from_mesh_ex(), contarget_get_mesh_mat(), blender::ed::object::convert_mesh_to_mesh(), copy_ccg_data(), blender::ed::transform::createTransMeshSkin(), blender::draw::curves_sub_pass_setup_implementation(), customData_add_layer__internal(), CustomData_bmesh_do_versions_update_active_layers(), CustomData_debug_info_from_layers(), CustomData_has_layer(), blender::bke::subdiv::displacement_attach_from_multires(), dynamicPaint_createUVSurface(), ED_mesh_uv_add(), ED_mesh_uv_loop_reset_ex(), EDBM_uv_check(), EDBM_vert_color_check(), edgetag_ensure_cd_flag(), blender::bke::editbmesh_calc_modifiers(), ensure_orig_index_layer(), GeometryExporter::export_key_mesh(), give_parvert(), math_layer_info_init(), blender::bke::mesh_calc_modifiers(), mesh_customdata_clear_exec__internal(), mesh_customdata_mask_clear_poll(), mesh_customdata_skin_state(), blender::ed::transform::mesh_customdatacorrect_create_impl(), mesh_loops_to_tessdata(), blender::geometry::mesh_triangulate(), MOD_get_texture_coords(), modify_mesh(), modify_mesh(), modify_mesh(), modify_mesh(), modify_mesh(), blender::modifyGeometry(), multires_ccg_settings_init(), multires_create_grids_in_unsubdivided_base_mesh(), multires_customdata_delete(), multires_modifier_update_mdisps(), multires_subdivide_create_tangent_displacement_linear_grids(), blender::ed::object::multiresbake_check(), multiresModifier_disp_run(), multiresModifier_subdivide_to_level(), blender::workbench::ObjectState::ObjectState(), GeometryExporter::operator()(), paint_sample_color(), paintface_minmax(), blender::draw::particle_batch_cache_ensure_pos_and_seg(), blender::draw::particle_batch_cache_ensure_procedural_strand_data(), proj_paint_state_mesh_eval_init(), blender::io::alembic::read_generated_coordinates(), select_linked_delimit_validate(), shape_itemf(), shape_propagate(), similar_edge_select_exec(), similar_face_select_exec(), blender::ed::object::skin_armature_create_exec(), blender::ed::object::skin_loose_mark_clear_exec(), blender::ed::object::skin_radii_equalize_exec(), update_active_fdata_layers(), uvedit_ensure_uvs(), uvedit_unwrap(), blender::ed::object::vgroup_assign_verts(), and blender::io::alembic::write_custom_data().

◆ CustomData_has_layer_named()

◆ CustomData_has_math()

◆ CustomData_init_from()

void CustomData_init_from ( const CustomData * source,
CustomData * dest,
eCustomDataMask mask,
int totelem )

Initializes a CustomData object with the same layer setup as source. mask is a bit-field where (mask & (1 << (layer type))) indicates if a layer should be copied or not. Data layers using implicit-sharing will not actually be copied but will be shared between source and destination.

Warning
Does not free or release any internal resources in dest CustomData, code must call CustomData_free first if needed.

Definition at line 2657 of file customdata.cc.

References CustomData_init_from(), CustomData_merge(), CustomData_reset(), CustomData::external, mask(), and MEM_dupallocN().

Referenced by BKE_grease_pencil_nomain_to_grease_pencil(), BKE_mesh_nomain_to_mesh(), BKE_pointcloud_nomain_to_pointcloud(), blender::bke::curves::copy_only_curve_domain(), blender::bke::CurvesGeometry::CurvesGeometry(), CustomData_init_from(), grease_pencil_copy_data(), blender::bke::Instances::Instances(), mesh_copy_data(), pointcloud_copy_data(), blender::ed::sculpt_paint::undo::restore_geometry_data(), blender::ed::pointcloud::undo::step_decode(), blender::ed::sculpt_paint::undo::store_geometry_data(), and blender::bke::subdiv::subdiv_mesh_topology_info().

◆ CustomData_init_layout_from()

◆ CustomData_interp()

void CustomData_interp ( const CustomData * source,
CustomData * dest,
const int * src_indices,
const float * weights,
const float * sub_weights,
int count,
int dest_index )

Interpolate given custom data source items into a single destination one.

Parameters
src_indicesIndices of every source items to interpolate into the destination one.
weightsThe weight to apply to each source value individually. If NULL, they will be averaged.
sub_weightsThe weights of sub-items, only used to affect each corners of a tessellated face data (should always be and array of four values).
countThe number of source items to interpolate.
dest_indexIndex of the destination item, in which to put the result of the interpolation.

Definition at line 3494 of file customdata.cc.

References copy_vn_fl(), CustomData_interp(), CustomDataLayer::data, ELEM, LayerTypeInfo::interp, CustomData::layers, layerType_getInfo(), MEM_freeN(), MEM_malloc_arrayN(), POINTER_OFFSET, LayerTypeInfo::size, SOURCE_BUF_SIZE, CustomData::totlayer, and CustomDataLayer::type.

Referenced by add_interp_verts_copy_edges_to_new_mesh(), add_interpolated_faces_to_new_mesh(), CustomData_interp(), blender::geometry::customdata_weld(), DM_interp_vert_data(), blender::bke::subdiv::loop_interpolation_from_corner(), blender::bke::subdiv::loop_interpolation_init(), set_ccgdm_all_geometry(), blender::bke::subdiv::subdiv_interpolate_corner_data(), blender::bke::subdiv::subdiv_mesh_vertex_of_loose_edge_interpolate(), blender::bke::subdiv::subdiv_vertex_data_interpolate(), blender::bke::subdiv::vertex_interpolation_from_corner(), and blender::bke::subdiv::vertex_interpolation_init().

◆ CustomData_layer_ensure_data_exists()

◆ CustomData_layer_has_interp()

bool CustomData_layer_has_interp ( const CustomData * data,
const int layer_n )

◆ CustomData_layer_has_math()

◆ CustomData_layer_is_anonymous()

◆ CustomData_layer_validate()

bool CustomData_layer_validate ( CustomDataLayer * layer,
uint totitems,
bool do_fixes )

Validate and fix data of layer, if possible (needs relevant callback in layer's type to be defined).

Returns
True if some errors were found.

Definition at line 4528 of file customdata.cc.

References BLI_assert, CustomData_layer_ensure_data_exists(), CustomData_layer_validate(), CustomDataLayer::data, layerType_getInfo(), CustomDataLayer::type, and LayerTypeInfo::validate.

Referenced by CustomData_layer_validate(), and mesh_validate_customdata().

◆ CustomData_layertype_is_dynamic()

bool CustomData_layertype_is_dynamic ( eCustomDataType type)

Has dynamically allocated members. This is useful to know if operations such as #memcmp are valid when comparing data from two layers.

Definition at line 4330 of file customdata.cc.

References CustomData_layertype_is_dynamic(), LayerTypeInfo::free, and layerType_getInfo().

Referenced by CustomData_layertype_is_dynamic(), and um_arraystore_cd_compact().

◆ CustomData_layertype_is_singleton()

◆ CustomData_layertype_layers_max()

int CustomData_layertype_layers_max ( eCustomDataType type)
Returns
Maximum number of layers of given type, -1 means 'no limit'.

Definition at line 4337 of file customdata.cc.

References CustomData_layertype_layers_max(), LayerTypeInfo::defaultname, LayerTypeInfo::layers_max, and layerType_getInfo().

Referenced by CustomData_layertype_layers_max(), and customdata_merge_internal().

◆ CustomData_layertype_name()

const char * CustomData_layertype_name ( eCustomDataType type)

Get the name of a layer type.

Definition at line 4319 of file customdata.cc.

References CustomData_layertype_name(), and layerType_getName().

Referenced by CustomData_debug_info_from_layers(), and CustomData_layertype_name().

◆ customData_mask_layers__print()

void customData_mask_layers__print ( const CustomData_MeshMasks * mask)

◆ CustomData_merge()

bool CustomData_merge ( const CustomData * source,
CustomData * dest,
eCustomDataMask mask,
int totelem )

Copies all layers from source to destination that don't exist there yet.

Definition at line 2470 of file customdata.cc.

References CustomData_merge(), customdata_merge_internal(), and mask().

Referenced by cdDM_from_mesh_ex(), CustomData_init_from(), CustomData_merge(), and blender::geometry::mesh_triangulate().

◆ customdata_merge_internal()

◆ CustomData_merge_layout()

bool CustomData_merge_layout ( const CustomData * source,
CustomData * dest,
eCustomDataMask mask,
eCDAllocType alloctype,
int totelem )

Copies all layers from source to destination that don't exist there yet. The layer data is not copied. Instead the newly created layers are initialized using the given alloctype.

Definition at line 2478 of file customdata.cc.

References customdata_merge_internal(), CustomData_merge_layout(), and mask().

Referenced by BM_mesh_bm_to_me_compact(), BM_mesh_copy_init_customdata_from_mesh_array(), CustomData_bmesh_merge_layout(), CustomData_init_layout_from(), CustomData_merge_layout(), join_mesh_single(), and blender::ed::greasepencil::join_object_with_active().

◆ CustomData_MeshMasks_are_matching()

bool CustomData_MeshMasks_are_matching ( const CustomData_MeshMasks * mask_ref,
const CustomData_MeshMasks * mask_required )

◆ CustomData_MeshMasks_update()

◆ CustomData_name_maxncpy_calc()

int CustomData_name_maxncpy_calc ( blender::StringRef name)

◆ CustomData_number_of_anonymous_layers()

int CustomData_number_of_anonymous_layers ( const CustomData * data,
const eCustomDataType type )

◆ CustomData_number_of_layers()

int CustomData_number_of_layers ( const CustomData * data,
eCustomDataType type )

Returns the number of layers with this type.

Definition at line 3293 of file customdata.cc.

References CustomData_number_of_layers(), data, and i.

Referenced by InstanceWriter::add_material_bindings(), arrayModifier_doArray(), bc_get_active_uvlayer_name(), bc_get_uvlayer_name(), bevel_merge_uvs(), BKE_editmesh_loop_tangent_calc(), BKE_mesh_calc_loop_tangent_ex(), BKE_mesh_calc_loop_tangent_step_0(), BKE_mesh_legacy_convert_uvs_to_generic(), BKE_mesh_merge_customdata_for_apply_modifier(), BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), BKE_mesh_validate_all_customdata(), bm_edge_delimit_cdata(), blender::bm_face_loop_table_build(), BM_mesh_bm_from_me(), BM_mesh_decimate_dissolve_ex(), BM_uv_map_attr_select_and_pin_ensure(), bmo_mirror_exec(), bmo_subd_init_shape_info(), bmo_transform_exec(), bpy_bmlayercollection_items(), bpy_bmlayercollection_keys(), bpy_bmlayercollection_length(), bpy_bmlayercollection_new(), bpy_bmlayercollection_values(), convert_mfaces_to_mpolys(), GeometryExporter::create_mesh_primitive_list(), GeometryExporter::createTexcoordsSource(), GeometryExporter::createVertexColorSource(), customdata_merge_internal(), CustomData_number_of_layers(), CustomData_set_layer_active(), CustomData_set_layer_active_index(), CustomData_set_layer_clone(), CustomData_set_layer_clone_index(), CustomData_set_layer_render(), CustomData_set_layer_render_index(), CustomData_set_layer_stencil(), cutEdges(), data_transfer_layersmapping_cdlayers(), data_transfer_layersmapping_cdlayers_multisrc_to_dst(), determine_uv_vert_connectivity(), blender::ed::object::dt_add_vcol_layers(), blender::ed::object::dt_layers_select_src_itemf(), ED_mesh_uv_add(), ED_mesh_uv_ensure(), ED_paint_proj_mesh_data_check(), edbm_blend_from_shape_exec(), blender::bke::subdiv::eval_refine_from_mesh(), blender::bke::flip_custom_data_type(), blender::bke::subdiv::get_num_uv_layers(), getActiveUVLayerName(), mesh_ensure_tessellation_customdata(), mesh_loops_to_tessdata(), mesh_validate_customdata(), modify_mesh(), move_shapekey_layers_to_keyblocks(), blender::draw::particle_batch_cache_ensure_pos_and_seg(), blender::draw::particle_batch_cache_ensure_procedural_strand_data(), set_ccgdm_all_geometry(), shape_propagate(), skin_smooth_hulls(), blender::bke::subdiv::subdiv_mesh_ctx_cache_uv_layers(), uv_vert_map_init(), and blender::io::alembic::write_custom_data().

◆ CustomData_number_of_layers_typemask()

int CustomData_number_of_layers_typemask ( const CustomData * data,
const eCustomDataMask mask )

◆ CustomData_realloc()

◆ CustomData_reset()

◆ customData_resize()

void customData_resize ( CustomData * data,
const int grow_amount )
static

◆ CustomData_set_layer_active()

◆ CustomData_set_layer_active_index()

◆ CustomData_set_layer_clone()

◆ CustomData_set_layer_clone_index()

void CustomData_set_layer_clone_index ( CustomData * data,
const eCustomDataType type,
const int n )

◆ CustomData_set_layer_flag()

void CustomData_set_layer_flag ( CustomData * data,
eCustomDataType type,
int flag )

Adds flag to the layer flags.

Definition at line 2983 of file customdata.cc.

References CustomData_set_layer_flag(), data, and i.

Referenced by BM_custom_loop_normals_to_vector_layer(), CustomData_set_layer_flag(), dm_getEdgeArray(), and dm_getVertArray().

◆ CustomData_set_layer_name()

bool CustomData_set_layer_name ( CustomData * data,
const eCustomDataType type,
const int n,
const StringRef name )

◆ CustomData_set_layer_render()

◆ CustomData_set_layer_render_index()

◆ CustomData_set_layer_stencil()

◆ CustomData_set_layer_unique_name()

◆ CustomData_set_only_copy()

void CustomData_set_only_copy ( const CustomData * data,
eCustomDataMask mask )

Set the CD_FLAG_NOCOPY flag in custom data layers where the mask is zero for the layer type, so only layer types specified by the mask will be copied

Definition at line 3334 of file customdata.cc.

References CD_FLAG_NOCOPY, CD_TYPE_AS_MASK, CustomData_set_only_copy(), data, i, and mask().

Referenced by CustomData_set_only_copy(), DM_set_only_copy(), blender::bke::mesh_set_only_copy(), and blender::ed::object::multiresbake_create_hiresdm().

◆ CustomData_shallow_copy_remove_non_bmesh_attributes()

◆ CustomData_sizeof()

◆ CustomData_swap_corners()

void CustomData_swap_corners ( CustomData * data,
int index,
const int * corner_indices )

Swap data inside each item, for all layers. This only applies to item types that may store several sub-item data (e.g. corner data [UVs, VCol, ...] of tessellated faces).

Parameters
corner_indicesA mapping 'new_index -> old_index' of sub-item data.

Definition at line 3576 of file customdata.cc.

References CustomData_swap_corners(), data, i, layerType_getInfo(), POINTER_OFFSET, LayerTypeInfo::size, and LayerTypeInfo::swap.

Referenced by BKE_mesh_mface_index_validate(), and CustomData_swap_corners().

◆ customdata_typemap_is_valid()

◆ customData_update_offsets()

◆ CustomData_update_typemap()

◆ CustomData_validate_layer_name()

◆ CustomData_verify_versions()

bool CustomData_verify_versions ( CustomData * data,
int index )

For file reading compatibility, returns false if the layer was freed, only after this test passes, layer->data should be assigned.

Definition at line 4445 of file customdata.cc.

References CD_NUMTYPES, CLOG_WARN, CustomData_verify_versions(), data, LayerTypeInfo::defaultname, ELEM, i, layerType_getInfo(), LOG, LayerTypeInfo::structnum, and CustomDataLayer::type.

Referenced by CustomData_blend_read(), and CustomData_verify_versions().

◆ ensure_layer_data_is_mutable()

◆ free_layer_data()

void free_layer_data ( const eCustomDataType type,
const void * data,
const int totelem )
static

Definition at line 2369 of file customdata.cc.

References data, LayerTypeInfo::free, free_layer_data(), layerType_getInfo(), and MEM_freeN().

Referenced by free_layer_data().

◆ get_type_file_write_info()

void get_type_file_write_info ( const eCustomDataType type,
const char ** r_struct_name,
int * r_struct_num )
static

◆ layer_is_mutable()

bool layer_is_mutable ( CustomDataLayer & layer)
static

◆ layerAdd_mloop_origspace()

void layerAdd_mloop_origspace ( void * data1,
const void * data2 )
static

Definition at line 1025 of file customdata.cc.

References add_v2_v2(), layerAdd_mloop_origspace(), and OrigSpaceLoop::uv.

Referenced by layerAdd_mloop_origspace().

◆ layerAdd_mloopcol()

void layerAdd_mloopcol ( void * data1,
const void * data2 )
static

Definition at line 890 of file customdata.cc.

References MLoopCol::a, MLoopCol::b, MLoopCol::g, layerAdd_mloopcol(), and MLoopCol::r.

Referenced by layerAdd_mloopcol().

◆ layerAdd_propcol()

void layerAdd_propcol ( void * data1,
const void * data2 )
static

Definition at line 1290 of file customdata.cc.

References add_v4_v4(), MPropCol::color, and layerAdd_propcol().

Referenced by layerAdd_propcol().

◆ layerAdd_propfloat2()

void layerAdd_propfloat2 ( void * data1,
const void * data2 )
static

Definition at line 1421 of file customdata.cc.

References layerAdd_propfloat2(), vec2f::x, and vec2f::y.

Referenced by layerAdd_propfloat2().

◆ layerAdd_propfloat3()

void layerAdd_propfloat3 ( void * data1,
const void * data2 )
static

Definition at line 1369 of file customdata.cc.

References layerAdd_propfloat3(), vec3f::x, vec3f::y, and vec3f::z.

Referenced by layerAdd_propfloat3().

◆ layerConstruct_grid_paint_mask()

void layerConstruct_grid_paint_mask ( void * data,
const int count )
static

Definition at line 796 of file customdata.cc.

References data, and layerConstruct_grid_paint_mask().

Referenced by layerConstruct_grid_paint_mask().

◆ layerConstruct_mdeformvert()

void layerConstruct_mdeformvert ( void * data,
const int count )
static

Definition at line 330 of file customdata.cc.

References data, and layerConstruct_mdeformvert().

Referenced by layerConstruct_mdeformvert().

◆ layerConstruct_mdisps()

void layerConstruct_mdisps ( void * data,
const int count )
static

Definition at line 682 of file customdata.cc.

References data, and layerConstruct_mdisps().

Referenced by layerConstruct_mdisps().

◆ layerCopy_bmesh_elem_py_ptr()

void layerCopy_bmesh_elem_py_ptr ( const void * ,
void * dest,
const int count )
static

Definition at line 738 of file customdata.cc.

References i, layerCopy_bmesh_elem_py_ptr(), and POINTER_OFFSET.

Referenced by layerCopy_bmesh_elem_py_ptr().

◆ layerCopy_grid_paint_mask()

void layerCopy_grid_paint_mask ( const void * source,
void * dest,
const int count )
static

◆ layerCopy_mdeformvert()

void layerCopy_mdeformvert ( const void * source,
void * dest,
const int count )
static

◆ layerCopy_mdisps()

void layerCopy_mdisps ( const void * source,
void * dest,
const int count )
static

◆ layerCopy_mvert_skin()

void layerCopy_mvert_skin ( const void * source,
void * dest,
const int count )
static

Definition at line 1171 of file customdata.cc.

References layerCopy_mvert_skin().

Referenced by layerCopy_mvert_skin().

◆ layerCopy_origspace_face()

void layerCopy_origspace_face ( const void * source,
void * dest,
const int count )
static

Definition at line 554 of file customdata.cc.

References i, and layerCopy_origspace_face().

Referenced by layerCopy_origspace_face().

◆ layerCopy_propFloat()

void layerCopy_propFloat ( const void * source,
void * dest,
const int count )
static

Definition at line 478 of file customdata.cc.

References layerCopy_propFloat().

Referenced by layerCopy_propFloat().

◆ layerCopy_propString()

void layerCopy_propString ( const void * source,
void * dest,
const int count )
static

Definition at line 543 of file customdata.cc.

References layerCopy_propString().

Referenced by layerCopy_propString().

◆ layerCopy_tface()

void layerCopy_tface ( const void * source,
void * dest,
const int count )
static

Definition at line 404 of file customdata.cc.

References i, and layerCopy_tface().

Referenced by layerCopy_tface().

◆ layerCopyValue_mloop_origspace()

void layerCopyValue_mloop_origspace ( const void * source,
void * dest,
const int ,
const float  )
static

◆ layerCopyValue_mloopcol()

◆ layerCopyValue_normal()

void layerCopyValue_normal ( const void * source,
void * dest,
const int mixmode,
const float mixfactor )
static

◆ layerCopyValue_propcol()

◆ layerCopyValue_propfloat2()

void layerCopyValue_propfloat2 ( const void * source,
void * dest,
const int mixmode,
const float mixfactor )
static

◆ layerDefault_mcol()

void layerDefault_mcol ( void * data,
const int count )
static

Definition at line 1116 of file customdata.cc.

References data, i, and layerDefault_mcol().

Referenced by layerDefault_mcol().

◆ layerDefault_mloopcol()

void layerDefault_mloopcol ( void * data,
const int count )
static

Definition at line 933 of file customdata.cc.

References data, i, and layerDefault_mloopcol().

Referenced by layerDefault_mloopcol().

◆ layerDefault_mvert_skin()

void layerDefault_mvert_skin ( void * data,
const int count )
static

Definition at line 1161 of file customdata.cc.

References copy_v3_fl(), data, MVertSkin::flag, i, and layerDefault_mvert_skin().

Referenced by layerDefault_mvert_skin().

◆ layerDefault_origindex()

void layerDefault_origindex ( void * data,
const int count )
static

Definition at line 1126 of file customdata.cc.

References copy_vn_i(), data, layerDefault_origindex(), and ORIGINDEX_NONE.

Referenced by layerDefault_origindex().

◆ layerDefault_origspace_face()

void layerDefault_origspace_face ( void * data,
const int count )
static

Definition at line 605 of file customdata.cc.

References data, i, and layerDefault_origspace_face().

Referenced by layerDefault_origspace_face().

◆ layerDefault_propcol()

void layerDefault_propcol ( void * data,
const int count )
static

Definition at line 1314 of file customdata.cc.

References MPropCol::color, copy_v4_v4(), data, i, and layerDefault_propcol().

Referenced by layerDefault_propcol().

◆ layerDefault_propfloat4x4()

void layerDefault_propfloat4x4 ( void * data,
const int count )
static

◆ layerDefault_propquaternion()

void layerDefault_propquaternion ( void * data,
const int count )
static

◆ layerDefault_tface()

void layerDefault_tface ( void * data,
const int count )
static

Definition at line 457 of file customdata.cc.

References data, i, and layerDefault_tface().

Referenced by layerDefault_tface().

◆ layerDoMinMax_mloop_origspace()

void layerDoMinMax_mloop_origspace ( const void * data,
void * vmin,
void * vmax )
static

◆ layerDoMinMax_mloopcol()

void layerDoMinMax_mloopcol ( const void * data,
void * vmin,
void * vmax )
static

◆ layerDoMinMax_propcol()

void layerDoMinMax_propcol ( const void * data,
void * vmin,
void * vmax )
static

Definition at line 1297 of file customdata.cc.

References MPropCol::color, data, layerDoMinMax_propcol(), max, min, and minmax_v4v4_v4().

Referenced by layerDoMinMax_propcol().

◆ layerDoMinMax_propfloat2()

void layerDoMinMax_propfloat2 ( const void * data,
void * vmin,
void * vmax )
static

Definition at line 1458 of file customdata.cc.

References b, data, layerDoMinMax_propfloat2(), and blender::math::min_max().

Referenced by layerDoMinMax_propfloat2().

◆ layerEqual_mloop_origspace()

bool layerEqual_mloop_origspace ( const void * data1,
const void * data2 )
static

◆ layerEqual_mloopcol()

bool layerEqual_mloopcol ( const void * data1,
const void * data2 )
static

Definition at line 866 of file customdata.cc.

References MLoopCol::a, b, MLoopCol::b, MLoopCol::g, layerEqual_mloopcol(), and MLoopCol::r.

Referenced by layerEqual_mloopcol().

◆ layerEqual_propcol()

bool layerEqual_propcol ( const void * data1,
const void * data2 )
static

Definition at line 1270 of file customdata.cc.

References MPropCol::color, i, and layerEqual_propcol().

Referenced by layerEqual_propcol().

◆ layerEqual_propfloat2()

bool layerEqual_propfloat2 ( const void * data1,
const void * data2 )
static

Definition at line 1444 of file customdata.cc.

References b, blender::math::distance_squared(), and layerEqual_propfloat2().

Referenced by layerEqual_propfloat2().

◆ layerFilesize_mdisps()

size_t layerFilesize_mdisps ( CDataFile * ,
const void * data,
const int count )
static

Definition at line 719 of file customdata.cc.

References data, i, and layerFilesize_mdisps().

Referenced by layerFilesize_mdisps().

◆ layerFree_bmesh_elem_py_ptr()

void layerFree_bmesh_elem_py_ptr ( void * data,
const int count )
static

◆ layerFree_grid_paint_mask()

void layerFree_grid_paint_mask ( void * data,
const int count )
static

◆ layerFree_mdeformvert()

void layerFree_mdeformvert ( void * data,
const int count )
static

◆ layerFree_mdisps()

void layerFree_mdisps ( void * data,
const int count )
static

Definition at line 672 of file customdata.cc.

References data, layerFree_mdisps(), MEM_SAFE_FREE, and MutableSpan< T >::MutableSpan().

Referenced by layerFree_mdisps().

◆ layerInitMinMax_mloop_origspace()

void layerInitMinMax_mloop_origspace ( void * vmin,
void * vmax )
static

Definition at line 1008 of file customdata.cc.

References INIT_MINMAX2, layerInitMinMax_mloop_origspace(), max, and min.

Referenced by layerInitMinMax_mloop_origspace().

◆ layerInitMinMax_mloopcol()

void layerInitMinMax_mloopcol ( void * vmin,
void * vmax )
static

Definition at line 917 of file customdata.cc.

References layerInitMinMax_mloopcol(), max, and min.

Referenced by layerInitMinMax_mloopcol().

◆ layerInitMinMax_propcol()

void layerInitMinMax_propcol ( void * vmin,
void * vmax )
static

Definition at line 1305 of file customdata.cc.

References copy_v4_fl(), FLT_MAX, layerInitMinMax_propcol(), max, and min.

Referenced by layerInitMinMax_propcol().

◆ layerInitMinMax_propfloat2()

void layerInitMinMax_propfloat2 ( void * vmin,
void * vmax )
static

Definition at line 1451 of file customdata.cc.

References INIT_MINMAX2, layerInitMinMax_propfloat2(), max, and min.

Referenced by layerInitMinMax_propfloat2().

◆ layerInterp_mcol()

void layerInterp_mcol ( const void ** sources,
const float * weights,
const float * sub_weights,
const int count,
void * dest )
static

Definition at line 1053 of file customdata.cc.

References MCol::a, b, MCol::b, MCol::g, i, layerInterp_mcol(), MCol::r, round_fl_to_uchar_clamp(), and w().

Referenced by layerInterp_mcol().

◆ layerInterp_mdeformvert()

void layerInterp_mdeformvert ( const void ** sources,
const float * weights,
const float * ,
const int count,
void * dest )
static

◆ layerInterp_mloop_origspace()

void layerInterp_mloop_origspace ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

◆ layerInterp_mloopcol()

void layerInterp_mloopcol ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

◆ layerInterp_mvert_skin()

void layerInterp_mvert_skin ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

◆ layerInterp_normal()

void layerInterp_normal ( const void ** sources,
const float * weights,
const float * ,
const int count,
void * dest )
static

◆ layerInterp_origspace_face()

void layerInterp_origspace_face ( const void ** sources,
const float * weights,
const float * sub_weights,
const int count,
void * dest )
static

Definition at line 564 of file customdata.cc.

References i, layerInterp_origspace_face(), madd_v2_v2fl(), and OrigSpaceFace::uv.

Referenced by layerInterp_origspace_face().

◆ layerInterp_propbool()

void layerInterp_propbool ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

Definition at line 1490 of file customdata.cc.

References i, layerInterp_propbool(), and result.

Referenced by layerInterp_propbool().

◆ layerInterp_propcol()

void layerInterp_propcol ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

Definition at line 1324 of file customdata.cc.

References MPropCol::color, copy_v4_v4(), i, layerInterp_propcol(), and madd_v4_v4fl().

Referenced by layerInterp_propcol().

◆ layerInterp_propFloat()

void layerInterp_propFloat ( const void ** sources,
const float * weights,
const float * ,
const int count,
void * dest )
static

Definition at line 483 of file customdata.cc.

References i, layerInterp_propFloat(), and result.

Referenced by layerInterp_propFloat().

◆ layerInterp_propfloat2()

void layerInterp_propfloat2 ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

Definition at line 1399 of file customdata.cc.

References copy_v2_v2(), i, layerInterp_propfloat2(), madd_v2_v2fl(), result, and vec2f::x.

Referenced by layerInterp_propfloat2().

◆ layerInterp_propfloat3()

void layerInterp_propfloat3 ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

Definition at line 1346 of file customdata.cc.

References copy_v3_v3(), i, layerInterp_propfloat3(), madd_v3_v3fl(), result, and vec3f::x.

Referenced by layerInterp_propfloat3().

◆ layerInterp_propInt()

void layerInterp_propInt ( const void ** sources,
const float * weights,
const float * ,
const int count,
void * dest )
static

Definition at line 521 of file customdata.cc.

References i, IndexRange::IndexRange(), layerInterp_propInt(), result, and round.

Referenced by layerInterp_propInt().

◆ layerInterp_propquaternion()

void layerInterp_propquaternion ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

Definition at line 1517 of file customdata.cc.

References i, layerInterp_propquaternion(), and result.

Referenced by layerInterp_propquaternion().

◆ layerInterp_shapekey()

void layerInterp_shapekey ( const void ** sources,
const float * weights,
const float * ,
int count,
void * dest )
static

Definition at line 1131 of file customdata.cc.

References copy_v3_v3(), i, in, layerInterp_shapekey(), madd_v3_v3fl(), and zero_v3().

Referenced by layerInterp_shapekey().

◆ layerInterp_tface()

void layerInterp_tface ( const void ** sources,
const float * weights,
const float * sub_weights,
const int count,
void * dest )
static

Definition at line 413 of file customdata.cc.

References i, layerInterp_tface(), madd_v2_v2fl(), and MTFace::uv.

Referenced by layerInterp_tface().

◆ layerMaxNum_tface()

int layerMaxNum_tface ( )
static

Definition at line 467 of file customdata.cc.

References layerMaxNum_tface(), and MAX_MTFACE.

Referenced by layerMaxNum_tface().

◆ layerMultiply_mloop_origspace()

void layerMultiply_mloop_origspace ( void * data,
const float fac )
static

◆ layerMultiply_mloopcol()

void layerMultiply_mloopcol ( void * data,
const float fac )
static

◆ layerMultiply_propcol()

void layerMultiply_propcol ( void * data,
const float fac )
static

Definition at line 1284 of file customdata.cc.

References MPropCol::color, data, layerMultiply_propcol(), and mul_v4_fl().

Referenced by layerMultiply_propcol().

◆ layerMultiply_propfloat2()

void layerMultiply_propfloat2 ( void * data,
const float fac )
static

Definition at line 1414 of file customdata.cc.

References data, layerMultiply_propfloat2(), vec2f::x, and vec2f::y.

Referenced by layerMultiply_propfloat2().

◆ layerMultiply_propfloat3()

void layerMultiply_propfloat3 ( void * data,
const float fac )
static

Definition at line 1361 of file customdata.cc.

References data, layerMultiply_propfloat3(), vec3f::x, vec3f::y, and vec3f::z.

Referenced by layerMultiply_propfloat3().

◆ layerRead_mdisps()

bool layerRead_mdisps ( CDataFile * cdf,
void * data,
const int count )
static

Definition at line 687 of file customdata.cc.

References cdf_read_data(), CLOG_ERROR, data, MDisps::disps, i, layerRead_mdisps(), LOG, and MEM_calloc_arrayN().

Referenced by layerRead_mdisps().

◆ layerSwap_flnor()

void layerSwap_flnor ( void * data,
const int * corner_indices )
static

Definition at line 1204 of file customdata.cc.

References copy_v3_v3_short(), data, i, and layerSwap_flnor().

Referenced by layerSwap_flnor().

◆ layerSwap_mcol()

void layerSwap_mcol ( void * data,
const int * corner_indices )
static

Definition at line 1104 of file customdata.cc.

References data, and layerSwap_mcol().

Referenced by layerSwap_mcol().

◆ layerSwap_mdisps()

void layerSwap_mdisps ( void * data,
const int * ci )
static

◆ layerSwap_origspace_face()

void layerSwap_origspace_face ( void * data,
const int * corner_indices )
static

Definition at line 594 of file customdata.cc.

References copy_v2_v2(), data, layerSwap_origspace_face(), and OrigSpaceFace::uv.

Referenced by layerSwap_origspace_face().

◆ layerSwap_tface()

void layerSwap_tface ( void * data,
const int * corner_indices )
static

Definition at line 444 of file customdata.cc.

References copy_v2_v2(), data, layerSwap_tface(), and MTFace::uv.

Referenced by layerSwap_tface().

◆ layerType_getInfo()

const LayerTypeInfo * layerType_getInfo ( const eCustomDataType type)
static

Definition at line 2255 of file customdata.cc.

References CD_NUMTYPES, layerType_getInfo(), and LAYERTYPEINFO.

Referenced by copy_layer_data(), CustomData_add_layer(), customData_add_layer__internal(), CustomData_add_layer_with_data(), CustomData_bmesh_copy_block(), CustomData_bmesh_copy_map_calc(), CustomData_bmesh_free_block(), CustomData_bmesh_free_block_data(), CustomData_bmesh_has_free(), CustomData_bmesh_interp(), CustomData_bmesh_interp_n(), CustomData_bmesh_set_n(), CustomData_copy_data_layer(), CustomData_copy_elements(), CustomData_data_add(), CustomData_data_copy_value(), CustomData_data_dominmax(), CustomData_data_equals(), CustomData_data_initminmax(), CustomData_data_mix_value(), CustomData_data_multiply(), CustomData_data_set_default_value(), CustomData_data_transfer(), customdata_data_transfer_interp_generic(), customdata_data_transfer_interp_normal_normals(), CustomData_external_read(), CustomData_external_reload(), CustomData_external_write(), CustomData_free_elem(), CustomData_get_for_write(), CustomData_get_n_for_write(), CustomData_interp(), CustomData_layer_ensure_data_exists(), CustomData_layer_has_interp(), CustomData_layer_has_math(), CustomData_layer_validate(), CustomData_layertype_is_dynamic(), CustomData_layertype_is_singleton(), CustomData_layertype_layers_max(), CustomData_realloc(), CustomData_set_layer_unique_name(), CustomData_sizeof(), CustomData_swap_corners(), customData_update_offsets(), CustomData_verify_versions(), free_layer_data(), get_type_file_write_info(), and layerType_getInfo().

◆ layerType_getName()

◆ layerValidate_propFloat()

bool layerValidate_propFloat ( void * data,
const uint totitems,
const bool do_fixes )
static

Definition at line 498 of file customdata.cc.

References data, MFloatProperty::f, i, and layerValidate_propFloat().

Referenced by layerValidate_propFloat().

◆ layerValidate_propfloat2()

bool layerValidate_propfloat2 ( void * data,
const uint totitems,
const bool do_fixes )
static

Definition at line 1429 of file customdata.cc.

References data, i, and layerValidate_propfloat2().

Referenced by layerValidate_propfloat2().

◆ layerValidate_propfloat3()

bool layerValidate_propfloat3 ( void * data,
const uint totitems,
const bool do_fixes )
static

Definition at line 1378 of file customdata.cc.

References data, i, and layerValidate_propfloat3().

Referenced by layerValidate_propfloat3().

◆ layerWrite_mdisps()

bool layerWrite_mdisps ( CDataFile * cdf,
const void * data,
const int count )
static

Definition at line 705 of file customdata.cc.

References cdf_write_data(), CLOG_ERROR, data, i, layerWrite_mdisps(), and LOG.

Referenced by layerWrite_mdisps().

◆ make_implicit_sharing_info_for_layer()

const ImplicitSharingInfo * make_implicit_sharing_info_for_layer ( const eCustomDataType type,
const void * data,
const int totelem )
static

◆ write_grid_paint_mask()

void write_grid_paint_mask ( BlendWriter * writer,
int count,
const GridPaintMask * grid_paint_mask )
static

◆ write_mdisps()

void write_mdisps ( BlendWriter * writer,
const int count,
const MDisps * mdlist,
const int external )
static

Variable Documentation

◆ CD_MASK_BAREMESH

◆ CD_MASK_BAREMESH_ORIGINDEX

const CustomData_MeshMasks CD_MASK_BAREMESH_ORIGINDEX

◆ CD_MASK_BMESH

const CustomData_MeshMasks CD_MASK_BMESH
Initial value:
= {
0,
}
#define CD_MASK_MDEFORMVERT
#define CD_MASK_MVERT_SKIN
#define CD_MASK_PROP_ALL
#define CD_MASK_FREESTYLE_FACE
#define CD_MASK_SHAPE_KEYINDEX
#define CD_MASK_GRID_PAINT_MASK
#define CD_MASK_SHAPEKEY
#define CD_MASK_MDISPS
#define CD_MASK_FREESTYLE_EDGE

Definition at line 2229 of file customdata.cc.

Referenced by BM_mesh_bm_from_me(), BM_mesh_copy_init_customdata(), BM_mesh_copy_init_customdata_from_mesh_array(), and bpy_bmesh_from_object().

◆ CD_MASK_DERIVEDMESH

◆ CD_MASK_EVERYTHING

◆ CD_MASK_MESH

◆ LAYERTYPEINFO

const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES]
static

Definition at line 1553 of file customdata.cc.

Referenced by CustomData_get_elem_size(), and layerType_getInfo().

◆ LAYERTYPENAMES

const char* LAYERTYPENAMES[CD_NUMTYPES]
static

Definition at line 2136 of file customdata.cc.

Referenced by layerType_getName().

◆ LOG

CLG_LogRef LOG = {"bke.customdata"}
static

Definition at line 88 of file customdata.cc.