Blender  V3.3
Classes | Namespaces | Macros | Functions | Variables
customdata.cc File Reference
#include "MEM_guardedalloc.h"
#include "DNA_ID.h"
#include "DNA_customdata_types.h"
#include "DNA_meshdata_types.h"
#include "BLI_bitmap.h"
#include "BLI_color.hh"
#include "BLI_endian_switch.h"
#include "BLI_index_range.hh"
#include "BLI_math.h"
#include "BLI_math_color_blend.h"
#include "BLI_math_vector.hh"
#include "BLI_mempool.h"
#include "BLI_path_util.h"
#include "BLI_span.hh"
#include "BLI_string.h"
#include "BLI_string_ref.hh"
#include "BLI_string_utils.h"
#include "BLI_utildefines.h"
#include "BLI_dynstr.h"
#include "BLT_translation.h"
#include "BKE_anonymous_attribute.h"
#include "BKE_customdata.h"
#include "BKE_customdata_file.h"
#include "BKE_deform.h"
#include "BKE_main.h"
#include "BKE_mesh_mapping.h"
#include "BKE_mesh_remap.h"
#include "BKE_multires.h"
#include "BKE_subsurf.h"
#include "BLO_read_write.h"
#include "bmesh.h"
#include "CLG_log.h"
#include "data_transfer_intern.h"

Go to the source code of this file.

Classes

struct  LayerTypeInfo
 
struct  CustomDataUniqueCheckData
 

Namespaces

 blender
 
 blender::bke
 

Macros

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

Functions

 BLI_STATIC_ASSERT (ARRAY_SIZE(((CustomData *) nullptr) ->typemap)==CD_NUMTYPES, "size mismatch")
 
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, int count)
 
static void layerFree_mdeformvert (void *data, int count, int size)
 
static void layerCopy_bmesh_elem_py_ptr (const void *UNUSED(source), void *dest, int count)
 
void bpy_bm_generic_invalidate (struct BPy_BMGeneric *UNUSED(self))
 
static void layerFree_bmesh_elem_py_ptr (void *data, int count, int size)
 
static void layerInterp_mdeformvert (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
Callbacks for (#vec3f, #CD_NORMAL)
static void layerInterp_normal (const void **sources, const float *weights, const float *UNUSED(sub_weights), 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, int count)
 
static void layerInterp_tface (const void **sources, const float *weights, const float *sub_weights, int count, void *dest)
 
static void layerSwap_tface (void *data, const int *corner_indices)
 
static void layerDefault_tface (void *data, int count)
 
static int layerMaxNum_tface ()
 
Callbacks for (#MFloatProperty, #CD_PROP_FLOAT)
static void layerCopy_propFloat (const void *source, void *dest, int count)
 
static void layerInterp_propFloat (const void **sources, const float *weights, const float *UNUSED(sub_weights), 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 layerCopy_propInt (const void *source, void *dest, int count)
 
static void layerInterp_propInt (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
Callbacks for (#MStringProperty, #CD_PROP_STRING)
static void layerCopy_propString (const void *source, void *dest, int count)
 
Callbacks for (#OrigSpaceFace, #CD_ORIGSPACE)
static void layerCopy_origspace_face (const void *source, void *dest, int count)
 
static void layerInterp_origspace_face (const void **sources, const float *weights, const float *sub_weights, int count, void *dest)
 
static void layerSwap_origspace_face (void *data, const int *corner_indices)
 
static void layerDefault_origspace_face (void *data, 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, int count)
 
static void layerFree_mdisps (void *data, int count, int UNUSED(size))
 
static bool layerRead_mdisps (CDataFile *cdf, void *data, int count)
 
static bool layerWrite_mdisps (CDataFile *cdf, const void *data, int count)
 
static size_t layerFilesize_mdisps (CDataFile *UNUSED(cdf), const void *data, int count)
 
Callbacks for (<tt>float</tt>, #CD_PAINT_MASK)
static void layerInterp_paint_mask (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
Callbacks for (#GridPaintMask, #CD_GRID_PAINT_MASK)
static void layerCopy_grid_paint_mask (const void *source, void *dest, int count)
 
static void layerFree_grid_paint_mask (void *data, int count, int UNUSED(size))
 
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, 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, int count)
 
static void layerInterp_mloopcol (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
Callbacks for (#MLoopUV, #CD_MLOOPUV)
static void layerCopyValue_mloopuv (const void *source, void *dest, const int mixmode, const float mixfactor)
 
static bool layerEqual_mloopuv (const void *data1, const void *data2)
 
static void layerMultiply_mloopuv (void *data, float fac)
 
static void layerInitMinMax_mloopuv (void *vmin, void *vmax)
 
static void layerDoMinMax_mloopuv (const void *data, void *vmin, void *vmax)
 
static void layerAdd_mloopuv (void *data1, const void *data2)
 
static void layerInterp_mloopuv (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
static bool layerValidate_mloopuv (void *data, const uint totitems, const bool do_fixes)
 
static void layerCopyValue_mloop_origspace (const void *source, void *dest, const int UNUSED(mixmode), const float UNUSED(mixfactor))
 
static bool layerEqual_mloop_origspace (const void *data1, const void *data2)
 
static void layerMultiply_mloop_origspace (void *data, 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 *UNUSED(sub_weights), int count, void *dest)
 
static void layerInterp_mcol (const void **sources, const float *weights, const float *sub_weights, int count, void *dest)
 
static void layerSwap_mcol (void *data, const int *corner_indices)
 
static void layerDefault_mcol (void *data, int count)
 
static void layerDefault_origindex (void *data, int count)
 
static void layerInterp_bweight (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
static void layerInterp_shapekey (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
Callbacks for (#MVertSkin, #CD_MVERT_SKIN)
static void layerDefault_mvert_skin (void *data, int count)
 
static void layerCopy_mvert_skin (const void *source, void *dest, int count)
 
static void layerInterp_mvert_skin (const void **sources, const float *weights, const float *UNUSED(sub_weights), 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 (<tt>int</tt>, #CD_FACEMAP)
static void layerDefault_fmap (void *data, int count)
 
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, 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, int count)
 
static void layerInterp_propcol (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
Callbacks for (#vec3f, #CD_PROP_FLOAT3)
static void layerInterp_propfloat3 (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
static void layerMultiply_propfloat3 (void *data, 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 *UNUSED(sub_weights), int count, void *dest)
 
static void layerMultiply_propfloat2 (void *data, float fac)
 
static void layerAdd_propfloat2 (void *data1, const void *data2)
 
static bool layerValidate_propfloat2 (void *data, const uint totitems, const bool do_fixes)
 
External Files
static void customdata_external_filename (char filepath[FILE_MAX], ID *id, CustomDataExternal *external)
 
void CustomData_external_reload (CustomData *data, ID *UNUSED(id), eCustomDataMask mask, int totelem)
 
void CustomData_external_read (CustomData *data, ID *id, eCustomDataMask mask, int totelem)
 
void CustomData_external_write (CustomData *data, ID *id, eCustomDataMask mask, int totelem, int free)
 
void CustomData_external_add (CustomData *data, ID *UNUSED(id), int type, int UNUSED(totelem), const char *filepath)
 
void CustomData_external_remove (CustomData *data, ID *id, int type, int totelem)
 
bool CustomData_external_test (CustomData *data, int 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 write_mdisps (BlendWriter *writer, int count, const MDisps *mdlist, int external)
 
static void write_grid_paint_mask (BlendWriter *writer, int count, const GridPaintMask *grid_paint_mask)
 
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, int count, MDisps *mdisps, int external)
 
static void blend_read_paint_mask (BlendDataReader *reader, int count, GridPaintMask *grid_paint_mask)
 
void CustomData_blend_read (BlendDataReader *reader, CustomData *data, int count)
 
Custom Data Debugging
void CustomData_debug_info_from_layers (const CustomData *data, const char *indent, DynStr *dynstr)
 
Custom Data C++ API
const blender::CPPTypeblender::bke::custom_data_type_to_cpp_type (const eCustomDataType type)
 
eCustomDataType blender::bke::cpp_type_to_custom_data_type (const blender::CPPType &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, int type, eCDAllocType alloctype, void *layerdata, int totelem, const char *name)
 
void CustomData_update_typemap (CustomData *data)
 
static bool customdata_typemap_is_valid (const CustomData *data)
 
bool CustomData_merge (const CustomData *source, CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, int totelem)
 
void CustomData_realloc (CustomData *data, int totelem)
 
void CustomData_copy (const CustomData *source, CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, int totelem)
 
static void customData_free_layer__internal (CustomDataLayer *layer, int totelem)
 
static void CustomData_external_free (CustomData *data)
 
void CustomData_reset (CustomData *data)
 
void CustomData_free (CustomData *data, int totelem)
 
void CustomData_free_typemask (CustomData *data, int totelem, eCustomDataMask mask)
 
static int CustomData_get_layer_index__notypemap (const CustomData *data, int type)
 
int CustomData_get_layer_index (const CustomData *data, int type)
 
int CustomData_get_layer_index_n (const CustomData *data, int type, int n)
 
int CustomData_get_named_layer_index (const CustomData *data, int type, const char *name)
 
int CustomData_get_active_layer_index (const CustomData *data, int type)
 
int CustomData_get_render_layer_index (const CustomData *data, int type)
 
int CustomData_get_clone_layer_index (const CustomData *data, int type)
 
int CustomData_get_stencil_layer_index (const CustomData *data, int type)
 
int CustomData_get_named_layer (const CustomData *data, int type, const char *name)
 
int CustomData_get_active_layer (const CustomData *data, int type)
 
int CustomData_get_render_layer (const CustomData *data, int type)
 
int CustomData_get_clone_layer (const CustomData *data, int type)
 
int CustomData_get_stencil_layer (const CustomData *data, int type)
 
const char * CustomData_get_active_layer_name (const CustomData *data, const int type)
 
void CustomData_set_layer_active (CustomData *data, int type, int n)
 
void CustomData_set_layer_render (CustomData *data, int type, int n)
 
void CustomData_set_layer_clone (CustomData *data, int type, int n)
 
void CustomData_set_layer_stencil (CustomData *data, int type, int n)
 
void CustomData_set_layer_active_index (CustomData *data, int type, int n)
 
void CustomData_set_layer_render_index (CustomData *data, int type, int n)
 
void CustomData_set_layer_clone_index (CustomData *data, int type, int n)
 
void CustomData_set_layer_stencil_index (CustomData *data, int type, int n)
 
void CustomData_set_layer_flag (CustomData *data, int type, int flag)
 
void CustomData_clear_layer_flag (CustomData *data, int type, int flag)
 
static bool customData_resize (CustomData *data, int amount)
 
voidCustomData_add_layer (CustomData *data, int type, eCDAllocType alloctype, void *layerdata, int totelem)
 
voidCustomData_add_layer_named (CustomData *data, int type, eCDAllocType alloctype, void *layerdata, int totelem, const char *name)
 
voidCustomData_add_layer_anonymous (CustomData *data, int type, eCDAllocType alloctype, void *layerdata, int totelem, const AnonymousAttributeID *anonymous_id)
 
bool CustomData_free_layer (CustomData *data, int type, int totelem, int index)
 
bool CustomData_free_layer_named (CustomData *data, const char *name, const int totelem)
 
bool CustomData_free_layer_active (CustomData *data, int type, int totelem)
 
void CustomData_free_layers (CustomData *data, int type, int totelem)
 
bool CustomData_has_layer (const CustomData *data, int type)
 
int CustomData_number_of_layers (const CustomData *data, int type)
 
int CustomData_number_of_layers_typemask (const CustomData *data, eCustomDataMask mask)
 
static voidcustomData_duplicate_referenced_layer_index (CustomData *data, const int layer_index, const int totelem)
 
voidCustomData_duplicate_referenced_layer (CustomData *data, const int type, const int totelem)
 
voidCustomData_duplicate_referenced_layer_n (CustomData *data, const int type, const int n, const int totelem)
 
voidCustomData_duplicate_referenced_layer_named (CustomData *data, const int type, const char *name, const int totelem)
 
voidCustomData_duplicate_referenced_layer_anonymous (CustomData *data, const int UNUSED(type), const AnonymousAttributeID *anonymous_id, const int totelem)
 
void CustomData_duplicate_referenced_layers (CustomData *data, int totelem)
 
bool CustomData_is_referenced_layer (CustomData *data, int type)
 
void CustomData_free_temporary (CustomData *data, int totelem)
 
void CustomData_set_only_copy (const CustomData *data, eCustomDataMask mask)
 
void CustomData_copy_elements (int type, void *src_data_ofs, void *dst_data_ofs, int count)
 
void CustomData_copy_data_layer (const CustomData *source, CustomData *dest, int src_layer_index, int dst_layer_index, int src_index, int dst_index, int count)
 
void CustomData_copy_data_named (const CustomData *source, CustomData *dest, int source_index, int dest_index, int count)
 
void CustomData_copy_data (const CustomData *source, CustomData *dest, int source_index, int dest_index, int count)
 
void CustomData_copy_layer_type_data (const CustomData *source, CustomData *destination, int type, int source_index, int destination_index, int count)
 
void CustomData_free_elem (CustomData *data, int index, 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, int index, const int *corner_indices)
 
void CustomData_swap (CustomData *data, const int index_a, const int index_b)
 
voidCustomData_get (const CustomData *data, int index, int type)
 
voidCustomData_get_n (const CustomData *data, int type, int index, int n)
 
voidCustomData_get_layer (const CustomData *data, int type)
 
voidCustomData_get_layer_n (const CustomData *data, int type, int n)
 
voidCustomData_get_layer_named (const CustomData *data, int type, const char *name)
 
int CustomData_get_offset (const CustomData *data, int type)
 
int CustomData_get_offset_named (const CustomData *data, int type, const char *name)
 
int CustomData_get_n_offset (const CustomData *data, int type, int n)
 
bool CustomData_set_layer_name (const CustomData *data, int type, int n, const char *name)
 
const char * CustomData_get_layer_name (const CustomData *data, int type, int n)
 
voidCustomData_set_layer (const CustomData *data, int type, void *ptr)
 
voidCustomData_set_layer_n (const CustomData *data, int type, int n, void *ptr)
 
void CustomData_set (const CustomData *data, int index, int type, const void *source)
 
void CustomData_bmesh_update_active_layers (CustomData *fdata, CustomData *ldata)
 
void CustomData_bmesh_init_pool (CustomData *data, int totelem, const char htype)
 
bool CustomData_bmesh_merge (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)
 
static void CustomData_bmesh_alloc_block (CustomData *data, void **block)
 
void CustomData_bmesh_free_block_data_exclude_by_type (CustomData *data, void *block, const eCustomDataMask mask_exclude)
 
static void CustomData_bmesh_set_default_n (CustomData *data, void **block, int n)
 
void CustomData_bmesh_set_default (CustomData *data, void **block)
 
void CustomData_bmesh_copy_data_exclude_by_type (const CustomData *source, CustomData *dest, void *src_block, void **dest_block, const eCustomDataMask mask_exclude)
 
void CustomData_bmesh_copy_data (const CustomData *source, CustomData *dest, void *src_block, void **dest_block)
 
voidCustomData_bmesh_get (const CustomData *data, void *block, int type)
 
voidCustomData_bmesh_get_n (const CustomData *data, void *block, int type, int n)
 
voidCustomData_bmesh_get_layer_n (const CustomData *data, void *block, int n)
 
bool CustomData_layer_has_math (const CustomData *data, int layer_n)
 
bool CustomData_layer_has_interp (const CustomData *data, 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)
 
bool CustomData_has_referenced (const CustomData *data)
 
void CustomData_data_copy_value (int type, const void *source, void *dest)
 
void CustomData_data_mix_value (int type, const void *source, void *dest, const int mixmode, const float mixfactor)
 
bool CustomData_data_equals (int type, const void *data1, const void *data2)
 
void CustomData_data_initminmax (int type, void *min, void *max)
 
void CustomData_data_dominmax (int type, const void *data, void *min, void *max)
 
void CustomData_data_multiply (int type, void *data, float fac)
 
void CustomData_data_add (int type, void *data1, const void *data2)
 
void CustomData_bmesh_set (const CustomData *data, void *block, int type, const void *source)
 
void CustomData_bmesh_set_n (CustomData *data, void *block, int type, int n, const void *source)
 
void CustomData_bmesh_set_layer_n (CustomData *data, void *block, 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)
 
void CustomData_to_bmesh_block (const CustomData *source, CustomData *dest, int src_index, void **dest_block, bool use_default_init)
 
void CustomData_from_bmesh_block (const CustomData *source, CustomData *dest, void *src_block, int dest_index)
 
void CustomData_file_write_info (int type, const char **r_struct_name, int *r_struct_num)
 
void CustomData_blend_write_prepare (CustomData &data, Vector< CustomDataLayer, 16 > &layers_to_write)
 
int CustomData_sizeof (int type)
 
const char * CustomData_layertype_name (int type)
 
bool CustomData_layertype_is_singleton (int type)
 
bool CustomData_layertype_is_dynamic (int type)
 
int CustomData_layertype_layers_max (const int type)
 
static bool cd_layer_find_dupe (CustomData *data, const char *name, int type, int index)
 
static bool customdata_unique_check (void *arg, const char *name)
 
void CustomData_set_layer_unique_name (CustomData *data, int index)
 
void CustomData_validate_layer_name (const CustomData *data, int type, const char *name, char *outname)
 
bool CustomData_verify_versions (CustomData *data, 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)
 
void CustomData_layers__print (CustomData *data)
 

Callbacks for (<tt>bool</tt>, #CD_PROP_BOOL)

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 void layerInterp_propbool (const void **sources, const float *weights, const float *UNUSED(sub_weights), int count, void *dest)
 
static const LayerTypeInfolayerType_getInfo (int type)
 
static const char * layerType_getName (int type)
 
void customData_mask_layers__print (const CustomData_MeshMasks *mask)
 

Detailed Description

Implementation of CustomData.

BKE_customdata.h 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
SyclQueue void void size_t num_bytes void

◆ CUSTOMDATA_GROW

#define CUSTOMDATA_GROW   5

Definition at line 66 of file customdata.cc.

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 14 of file customdata.cc.

◆ SOURCE_BUF_SIZE

#define SOURCE_BUF_SIZE   100

Definition at line 3221 of file customdata.cc.

Function Documentation

◆ blend_read_mdisps()

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

◆ blend_read_paint_mask()

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

Definition at line 5201 of file customdata.cc.

References BLO_read_data_address, count, and GridPaintMask::data.

Referenced by CustomData_blend_read().

◆ BLI_STATIC_ASSERT()

BLI_STATIC_ASSERT ( ARRAY_SIZE(((CustomData *) nullptr) ->typemap = =CD_NUMTYPES,
"size mismatch"   
)

◆ bpy_bm_generic_invalidate()

void bpy_bm_generic_invalidate ( struct BPy_BMGeneric UNUSEDself)

Definition at line 237 of file customdata.cc.

Referenced by BM_mesh_free(), and layerFree_bmesh_elem_py_ptr().

◆ cd_layer_find_dupe()

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

◆ check_bit_flag()

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

Definition at line 4820 of file customdata.cc.

References data.

Referenced by customdata_data_transfer_interp_generic().

◆ copy_bit_flag()

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

Definition at line 4789 of file customdata.cc.

References COPY_BIT_FLAG, and src.

Referenced by customdata_data_transfer_interp_generic().

◆ CustomData_add_layer()

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

Adds a data layer of the given type to the CustomData object, optionally backed by an external data array. the different allocation types are defined above. returns the data of the layer.

Definition at line 2776 of file customdata.cc.

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

Referenced by blender::bke::add_builtin_type_custom_data_layer_from_init(), add_orco_mesh(), BKE_mesh_calc_edges(), BKE_mesh_calc_edges_legacy(), BKE_mesh_calc_edges_tessface(), BKE_mesh_ensure_facemap_customdata(), BKE_mesh_ensure_skin_customdata(), BKE_mesh_from_metaball(), BKE_mesh_from_pointcloud(), BKE_mesh_nomain_to_mesh(), BKE_mesh_orco_ensure(), BKE_mesh_remap_calc_loops_from_mesh(), BKE_mesh_remesh_reproject_paint_mask(), BKE_object_defgroup_data_create(), BKE_remesh_reproject_sculpt_face_sets(), BKE_sculpt_color_layer_create_if_needed(), BKE_sculpt_face_sets_ensure_from_base_mesh_visibility(), BKE_sculpt_mask_layers_ensure(), BM_data_layer_add(), BM_mesh_bm_from_me(), BM_mesh_bm_to_me(), BM_mesh_bm_to_me_for_eval(), ccgDM_get_edge_data_layer(), ccgDM_get_poly_data_layer(), ccgDM_get_vert_data_layer(), CDDM_copy(), convert_mfaces_to_mpolys(), copy_ccg_data(), customdata_version_242(), data_transfer_dtdata_type_postprocess(), data_transfer_dtdata_type_preprocess(), data_transfer_layersmapping_cdlayers(), data_transfer_layersmapping_cdlayers_multisrc_to_dst(), data_transfer_layersmapping_vgroups(), data_transfer_layersmapping_vgroups_multisrc_to_dst(), deformVerts(), DM_DupPolys(), dm_getEdgeArray(), dm_getLoopArray(), dm_getPolyArray(), dm_getVertArray(), dynamicPaint_Modifier_apply(), ED_mesh_join_objects_exec(), ED_object_facemap_face_add(), ED_object_modifier_convert_psys_to_mesh(), editbmesh_calc_modifiers(), ensure_corner_normal_layer(), ensure_orig_index_layer(), Freestyle::BlenderStrokeRenderer::GenerateStrokeMesh(), hair_create_input_mesh(), mesh_add_edges(), mesh_add_loops(), mesh_add_polys(), mesh_add_verts(), mesh_calc_modifiers(), mesh_customdata_custom_splitnormals_add_exec(), mesh_ensure_cdlayers_primary(), mesh_set_custom_normals(), mesh_tessface_calc(), MOD_solidify_extrude_modifyMesh(), modifier_skin_armature_create(), modifyGeometry(), modifyMesh(), 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(), normalEditModifier_do(), blender::io::alembic::read_generated_coordinates(), blender::io::alembic::read_vertex_creases(), SCULPT_dynamic_topology_disable_ex(), sculpt_face_sets_ensure(), skin_set_orig_indices(), and blender::io::stl::STLMeshHelper::to_mesh().

◆ customData_add_layer__internal()

static CustomDataLayer * customData_add_layer__internal ( CustomData data,
int  type,
eCDAllocType  alloctype,
void layerdata,
int  totelem,
const char *  name 
)
static

◆ CustomData_add_layer_anonymous()

void* CustomData_add_layer_anonymous ( CustomData data,
int  type,
eCDAllocType  alloctype,
void layerdata,
int  totelem,
const AnonymousAttributeID anonymous_id 
)

◆ CustomData_add_layer_named()

void* CustomData_add_layer_named ( struct CustomData data,
int  type,
eCDAllocType  alloctype,
void layer,
int  totelem,
const char *  name 
)

◆ CustomData_blend_read()

void CustomData_blend_read ( BlendDataReader reader,
CustomData data,
int  count 
)

◆ CustomData_blend_write()

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

◆ CustomData_blend_write_prepare()

void CustomData_blend_write_prepare ( CustomData data,
Vector< CustomDataLayer, 16 > &  layers_to_write 
)

◆ CustomData_bmesh_alloc_block()

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

◆ CustomData_bmesh_copy_data()

void CustomData_bmesh_copy_data ( const CustomData source,
CustomData dest,
void src_block,
void **  dest_block 
)

Definition at line 3830 of file customdata.cc.

References CustomData_bmesh_copy_data_exclude_by_type(), and dest.

Referenced by CustomData_bmesh_merge().

◆ CustomData_bmesh_copy_data_exclude_by_type()

void CustomData_bmesh_copy_data_exclude_by_type ( const CustomData source,
CustomData dest,
void src_block,
void **  dest_block,
const eCustomDataMask  mask_exclude 
)

◆ CustomData_bmesh_free_block()

void CustomData_bmesh_free_block ( CustomData data,
void **  block 
)

◆ CustomData_bmesh_free_block_data()

void CustomData_bmesh_free_block_data ( struct CustomData data,
void block 
)

◆ CustomData_bmesh_free_block_data_exclude_by_type()

void CustomData_bmesh_free_block_data_exclude_by_type ( struct CustomData data,
void block,
eCustomDataMask  mask_exclude 
)

◆ CustomData_bmesh_get()

void* CustomData_bmesh_get ( const CustomData data,
void block,
int  type 
)

Definition at line 3838 of file customdata.cc.

References CustomData_get_active_layer_index(), data, POINTER_OFFSET, and type.

Referenced by CustomData_bmesh_set().

◆ CustomData_bmesh_get_layer_n()

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

Definition at line 3860 of file customdata.cc.

References data, and POINTER_OFFSET.

Referenced by CustomData_bmesh_set_layer_n().

◆ CustomData_bmesh_get_n()

void* CustomData_bmesh_get_n ( const CustomData data,
void block,
int  type,
int  n 
)

Definition at line 3849 of file customdata.cc.

References CustomData_get_layer_index(), data, POINTER_OFFSET, and type.

Referenced by CustomData_bmesh_set_n().

◆ CustomData_bmesh_has_free()

bool CustomData_bmesh_has_free ( const CustomData data)

Definition at line 3904 of file customdata.cc.

References CD_FLAG_NOFREE, data, LayerTypeInfo::free, and layerType_getInfo().

◆ CustomData_bmesh_init_pool()

void CustomData_bmesh_init_pool ( CustomData data,
int  totelem,
const char  htype 
)

◆ CustomData_bmesh_interp()

void CustomData_bmesh_interp ( CustomData data,
const void **  src_blocks,
const float weights,
const float sub_weights,
int  count,
void dst_block 
)

◆ CustomData_bmesh_interp_n()

void CustomData_bmesh_interp_n ( struct CustomData data,
const void **  src_blocks,
const float weights,
const float sub_weights,
int  count,
void dst_block_ofs,
int  n 
)
Note
src_blocks_ofs & dst_block_ofs must be pointers to the data, offset by layer->offset already.

Definition at line 4071 of file customdata.cc.

References BLI_assert, count, data, LayerTypeInfo::interp, layerType_getInfo(), and CustomDataLayer::type.

Referenced by bm_edge_collapse_loop_customdata(), bm_vert_loop_groups_data_layer_merge__single(), bm_vert_loop_groups_data_layer_merge_weights__single(), and CustomData_bmesh_interp().

◆ CustomData_bmesh_merge()

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

◆ CustomData_bmesh_set()

void CustomData_bmesh_set ( const CustomData data,
void block,
int  type,
const void source 
)

◆ CustomData_bmesh_set_default()

void CustomData_bmesh_set_default ( CustomData data,
void **  block 
)

◆ CustomData_bmesh_set_default_n()

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

◆ CustomData_bmesh_set_layer_n()

void CustomData_bmesh_set_layer_n ( struct CustomData data,
void block,
int  n,
const void source 
)

Sets the data of the block at physical layer n. no real type checking is performed.

Definition at line 4054 of file customdata.cc.

References LayerTypeInfo::copy, CustomData_bmesh_get_layer_n(), data, dest, layerType_getInfo(), and LayerTypeInfo::size.

◆ CustomData_bmesh_set_n()

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

◆ CustomData_bmesh_update_active_layers()

void CustomData_bmesh_update_active_layers ( CustomData fdata,
CustomData ldata 
)

◆ CustomData_clear_layer_flag()

void CustomData_clear_layer_flag ( CustomData data,
int  type,
int  flag 
)

Definition at line 2635 of file customdata.cc.

References data, and type.

Referenced by mesh_wrapper_ensure_subdivision(), modifyMesh(), and triangulate_mesh().

◆ CustomData_copy()

void CustomData_copy ( const CustomData source,
CustomData dest,
eCustomDataMask  mask,
eCDAllocType  alloctype,
int  totelem 
)

◆ CustomData_copy_data()

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

◆ CustomData_copy_data_layer()

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

◆ CustomData_copy_data_named()

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

◆ CustomData_copy_elements()

void CustomData_copy_elements ( int  type,
void src_data_ofs,
void dst_data_ofs,
int  count 
)

◆ CustomData_copy_layer_type_data()

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

◆ CustomData_data_add()

void CustomData_data_add ( int  type,
void data1,
const void data2 
)

◆ CustomData_data_copy_value()

void CustomData_data_copy_value ( int  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 3939 of file customdata.cc.

References CDT_MIX_NOMIX, LayerTypeInfo::copyvalue, dest, layerType_getInfo(), LayerTypeInfo::size, and type.

Referenced by bm_loop_customdata_merge(), bmo_average_vert_facedata_exec(), and bmo_collapsecon_do_layer().

◆ CustomData_data_dominmax()

void CustomData_data_dominmax ( int  type,
const void data,
void min,
void max 
)

◆ CustomData_data_equals()

bool CustomData_data_equals ( int  type,
const void data1,
const void data2 
)

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

Definition at line 3973 of file customdata.cc.

References data1, data2, LayerTypeInfo::equal, layerType_getInfo(), LayerTypeInfo::size, and type.

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

◆ CustomData_data_initminmax()

void CustomData_data_initminmax ( int  type,
void min,
void max 
)

◆ CustomData_data_mix_value()

void CustomData_data_mix_value ( int  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 3955 of file customdata.cc.

References LayerTypeInfo::copyvalue, dest, layerType_getInfo(), LayerTypeInfo::size, and type.

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

◆ CustomData_data_multiply()

void CustomData_data_multiply ( int  type,
void data,
float  fac 
)

◆ CustomData_data_transfer()

void CustomData_data_transfer ( const MeshPairRemap me_remap,
const CustomDataTransferLayerMap laymap 
)

◆ customdata_data_transfer_interp_generic()

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 
)
static

◆ 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_duplicate_referenced_layer()

void* CustomData_duplicate_referenced_layer ( struct CustomData data,
int  type,
int  totelem 
)

◆ CustomData_duplicate_referenced_layer_anonymous()

void* CustomData_duplicate_referenced_layer_anonymous ( CustomData data,
const int   UNUSEDtype,
const AnonymousAttributeID anonymous_id,
const int  totelem 
)

◆ customData_duplicate_referenced_layer_index()

static void* customData_duplicate_referenced_layer_index ( CustomData data,
const int  layer_index,
const int  totelem 
)
static

◆ CustomData_duplicate_referenced_layer_n()

void* CustomData_duplicate_referenced_layer_n ( CustomData data,
const int  type,
const int  n,
const int  totelem 
)

◆ CustomData_duplicate_referenced_layer_named()

void* CustomData_duplicate_referenced_layer_named ( CustomData data,
const int  type,
const char *  name,
const int  totelem 
)

◆ CustomData_duplicate_referenced_layers()

void CustomData_duplicate_referenced_layers ( CustomData data,
int  totelem 
)

Duplicate all the layers with flag NOFREE, and remove the flag from duplicated layers.

Definition at line 3020 of file customdata.cc.

References customData_duplicate_referenced_layer_index(), data, and CustomDataLayer::data.

Referenced by BKE_mesh_split_faces(), blender::nodes::node_geo_extrude_mesh_cc::expand_mesh(), and blender::bke::CurvesGeometry::reverse_curves().

◆ CustomData_external_add()

void CustomData_external_add ( CustomData data,
ID UNUSEDid,
int  type,
int   UNUSEDtotelem,
const char *  filepath 
)

◆ customdata_external_filename()

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

◆ CustomData_external_free()

static void CustomData_external_free ( CustomData data)
static

Definition at line 2359 of file customdata.cc.

References data, and MEM_freeN.

Referenced by CustomData_free(), and CustomData_free_typemask().

◆ CustomData_external_read()

void CustomData_external_read ( CustomData data,
ID id,
eCustomDataMask  mask,
int  totelem 
)

◆ CustomData_external_reload()

void CustomData_external_reload ( CustomData data,
ID UNUSEDid,
eCustomDataMask  mask,
int  totelem 
)

◆ CustomData_external_remove()

void CustomData_external_remove ( CustomData data,
ID id,
int  type,
int  totelem 
)

◆ CustomData_external_test()

bool CustomData_external_test ( CustomData data,
int  type 
)

◆ CustomData_external_write()

void CustomData_external_write ( CustomData data,
ID id,
eCustomDataMask  mask,
int  totelem,
int  free 
)

◆ CustomData_file_write_info()

void CustomData_file_write_info ( int  type,
const char **  r_struct_name,
int *  r_struct_num 
)

◆ CustomData_free()

void CustomData_free ( struct CustomData data,
int  totelem 
)

◆ CustomData_free_elem()

void CustomData_free_elem ( struct CustomData data,
int  index,
int  count 
)

◆ CustomData_free_layer()

bool CustomData_free_layer ( struct CustomData data,
int  type,
int  totelem,
int  index 
)

◆ customData_free_layer__internal()

static void customData_free_layer__internal ( CustomDataLayer layer,
int  totelem 
)
static

◆ CustomData_free_layer_active()

bool CustomData_free_layer_active ( struct CustomData data,
int  type,
int  totelem 
)

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 2895 of file customdata.cc.

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

Referenced by BKE_object_defgroup_remove_all_ex(), blo_do_versions_250(), BM_data_layer_free(), modifier_skin_customdata_delete(), multires_customdata_delete(), and object_defgroup_remove_common().

◆ CustomData_free_layer_named()

bool CustomData_free_layer_named ( CustomData data,
const char *  name,
const int  totelem 
)

◆ CustomData_free_layers()

void CustomData_free_layers ( struct CustomData data,
int  type,
int  totelem 
)

◆ CustomData_free_temporary()

void CustomData_free_temporary ( struct CustomData data,
int  totelem 
)

◆ CustomData_free_typemask()

void CustomData_free_typemask ( struct CustomData data,
int  totelem,
eCustomDataMask  mask 
)

Same as above, but only frees layers which matches the given mask.

Definition at line 2387 of file customdata.cc.

References CD_TYPE_AS_MASK, CustomData_external_free(), customData_free_layer__internal(), CustomData_reset(), data, mask(), MEM_freeN, and CustomDataLayer::type.

Referenced by BKE_mesh_nomain_to_mesh().

◆ CustomData_from_bmesh_block()

void CustomData_from_bmesh_block ( const CustomData source,
CustomData dest,
void src_block,
int  dest_index 
)

◆ CustomData_get()

void* CustomData_get ( const CustomData data,
int  index,
int  type 
)

◆ CustomData_get_active_layer()

int CustomData_get_active_layer ( const CustomData data,
int  type 
)

Definition at line 2507 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

Referenced by CustomData_bmesh_update_active_layers().

◆ CustomData_get_active_layer_index()

int CustomData_get_active_layer_index ( const CustomData data,
int  type 
)

◆ CustomData_get_active_layer_name()

const char* CustomData_get_active_layer_name ( const CustomData data,
const int  type 
)

Definition at line 2535 of file customdata.cc.

References CustomData_get_active_layer_index(), data, and type.

◆ CustomData_get_clone_layer()

int CustomData_get_clone_layer ( const CustomData data,
int  type 
)

Definition at line 2521 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

Referenced by CustomData_bmesh_update_active_layers().

◆ CustomData_get_clone_layer_index()

int CustomData_get_clone_layer_index ( const CustomData data,
int  type 
)

Definition at line 2482 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

◆ CustomData_get_layer()

void* CustomData_get_layer ( const CustomData data,
int  type 
)

Definition at line 3376 of file customdata.cc.

References CustomData_get_active_layer_index(), data, and type.

Referenced by CustomData_debug_info_from_layers().

◆ CustomData_get_layer_index()

int CustomData_get_layer_index ( const CustomData data,
int  type 
)

◆ CustomData_get_layer_index__notypemap()

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

Definition at line 2422 of file customdata.cc.

References data, and type.

Referenced by CustomData_free_layer().

◆ CustomData_get_layer_index_n()

int CustomData_get_layer_index_n ( const CustomData data,
int  type,
int  n 
)

◆ CustomData_get_layer_n()

void* CustomData_get_layer_n ( const CustomData data,
int  type,
int  n 
)

Definition at line 3387 of file customdata.cc.

References CustomData_get_layer_index_n(), data, and type.

◆ CustomData_get_layer_name()

const char* CustomData_get_layer_name ( const CustomData data,
int  type,
int  n 
)

Definition at line 3455 of file customdata.cc.

References CustomData_get_layer_index_n(), data, and type.

◆ CustomData_get_layer_named()

void* CustomData_get_layer_named ( const CustomData data,
int  type,
const char *  name 
)

Definition at line 3398 of file customdata.cc.

References CustomData_get_named_layer_index(), data, and type.

◆ CustomData_get_n()

void* CustomData_get_n ( const CustomData data,
int  type,
int  index,
int  n 
)

◆ CustomData_get_n_offset()

int CustomData_get_n_offset ( const CustomData data,
int  type,
int  n 
)

Definition at line 3430 of file customdata.cc.

References CustomData_get_layer_index_n(), data, and type.

◆ CustomData_get_named_layer()

int CustomData_get_named_layer ( const CustomData data,
int  type,
const char *  name 
)

◆ CustomData_get_named_layer_index()

int CustomData_get_named_layer_index ( const CustomData data,
int  type,
const char *  name 
)

◆ CustomData_get_offset()

int CustomData_get_offset ( const CustomData data,
int  type 
)

Definition at line 3408 of file customdata.cc.

References CustomData_get_active_layer_index(), data, and type.

◆ CustomData_get_offset_named()

int CustomData_get_offset_named ( const CustomData data,
int  type,
const char *  name 
)

Definition at line 3419 of file customdata.cc.

References CustomData_get_named_layer_index(), data, and type.

Referenced by bake_targets_output_vertex_colors().

◆ CustomData_get_render_layer()

int CustomData_get_render_layer ( const CustomData data,
int  type 
)

Definition at line 2514 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

Referenced by CustomData_bmesh_update_active_layers().

◆ CustomData_get_render_layer_index()

int CustomData_get_render_layer_index ( const CustomData data,
int  type 
)

Definition at line 2475 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

◆ CustomData_get_stencil_layer()

int CustomData_get_stencil_layer ( const CustomData data,
int  type 
)

Definition at line 2528 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

Referenced by CustomData_bmesh_update_active_layers().

◆ CustomData_get_stencil_layer_index()

int CustomData_get_stencil_layer_index ( const CustomData data,
int  type 
)

Definition at line 2489 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

◆ CustomData_has_interp()

bool CustomData_has_interp ( const CustomData data)

Definition at line 3917 of file customdata.cc.

References CustomData_layer_has_interp(), and data.

◆ CustomData_has_layer()

bool CustomData_has_layer ( const CustomData data,
int  type 
)

◆ CustomData_has_math()

bool CustomData_has_math ( const CustomData data)

Definition at line 3892 of file customdata.cc.

References CustomData_layer_has_math(), and data.

◆ CustomData_has_referenced()

bool CustomData_has_referenced ( const CustomData data)

Definition at line 3929 of file customdata.cc.

References CD_FLAG_NOFREE, and data.

◆ 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 
)

◆ CustomData_is_referenced_layer()

bool CustomData_is_referenced_layer ( CustomData data,
int  type 
)

◆ CustomData_layer_ensure_data_exists()

static bool CustomData_layer_ensure_data_exists ( CustomDataLayer layer,
size_t  count 
)
static

◆ CustomData_layer_has_interp()

bool CustomData_layer_has_interp ( const CustomData data,
int  layer_n 
)

Definition at line 3881 of file customdata.cc.

References data, LayerTypeInfo::interp, and layerType_getInfo().

Referenced by CustomData_has_interp().

◆ CustomData_layer_has_math()

bool CustomData_layer_has_math ( const CustomData data,
int  layer_n 
)

◆ CustomData_layer_validate()

bool CustomData_layer_validate ( struct 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 4468 of file customdata.cc.

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

Referenced by mesh_validate_customdata().

◆ CustomData_layers__print()

void CustomData_layers__print ( CustomData data)

◆ CustomData_layertype_is_dynamic()

bool CustomData_layertype_is_dynamic ( int  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 4286 of file customdata.cc.

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

Referenced by um_arraystore_cd_compact().

◆ CustomData_layertype_is_singleton()

bool CustomData_layertype_is_singleton ( int  type)

◆ CustomData_layertype_layers_max()

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

Definition at line 4293 of file customdata.cc.

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

Referenced by CustomData_merge().

◆ CustomData_layertype_name()

const char* CustomData_layertype_name ( int  type)

Get the name of a layer type.

Definition at line 4275 of file customdata.cc.

References layerType_getName(), and type.

Referenced by CustomData_debug_info_from_layers(), and CustomData_layers__print().

◆ customData_mask_layers__print()

void customData_mask_layers__print ( const CustomData_MeshMasks mask)

Definition at line 2140 of file customdata.cc.

References CD_NUMTYPES, CD_TYPE_AS_MASK, layerType_getName(), mask(), and PRIx64.

◆ CustomData_merge()

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

◆ CustomData_MeshMasks_are_matching()

bool CustomData_MeshMasks_are_matching ( const CustomData_MeshMasks mask_ref,
const CustomData_MeshMasks mask_required 
)

◆ CustomData_MeshMasks_update()

void CustomData_MeshMasks_update ( CustomData_MeshMasks mask_dst,
const CustomData_MeshMasks mask_src 
)

◆ CustomData_number_of_layers()

int CustomData_number_of_layers ( const CustomData data,
int  type 
)

Definition at line 2917 of file customdata.cc.

References data, and type.

◆ CustomData_number_of_layers_typemask()

int CustomData_number_of_layers_typemask ( const CustomData data,
eCustomDataMask  mask 
)

Definition at line 2930 of file customdata.cc.

References CD_TYPE_AS_MASK, data, and mask().

Referenced by CustomData_bmesh_merge().

◆ CustomData_realloc()

void CustomData_realloc ( struct CustomData data,
int  totelem 
)

Reallocate custom data to a new element count. Only affects on data layers which are owned by the CustomData itself, referenced data is kept unchanged,

Note
Take care of referenced layers by yourself!

Definition at line 2307 of file customdata.cc.

References BLI_assert, CD_FLAG_NOFREE, data, CustomDataLayer::data, CustomDataLayer::flag, layerType_getInfo(), MEM_recallocN, LayerTypeInfo::size, and CustomDataLayer::type.

Referenced by BKE_mesh_split_faces(), BKE_pointcloud_from_mesh(), BKE_pointcloud_new_nomain(), blender::nodes::node_geo_extrude_mesh_cc::expand_mesh(), pointcloud_random(), blender::bke::CustomDataAttributes::reallocate(), and blender::bke::CurvesGeometry::resize().

◆ CustomData_reset()

void CustomData_reset ( struct CustomData data)

◆ customData_resize()

static bool customData_resize ( CustomData data,
int  amount 
)
static

◆ CustomData_set()

void CustomData_set ( const CustomData data,
int  index,
int  type,
const void source 
)

◆ CustomData_set_layer()

void* CustomData_set_layer ( const CustomData data,
int  type,
void ptr 
)

Definition at line 3462 of file customdata.cc.

References CustomData_get_active_layer_index(), data, ptr, and type.

◆ CustomData_set_layer_active()

void CustomData_set_layer_active ( struct CustomData data,
int  type,
int  n 
)

◆ CustomData_set_layer_active_index()

void CustomData_set_layer_active_index ( struct CustomData data,
int  type,
int  n 
)

◆ CustomData_set_layer_clone()

void CustomData_set_layer_clone ( CustomData data,
int  type,
int  n 
)

◆ CustomData_set_layer_clone_index()

void CustomData_set_layer_clone_index ( CustomData data,
int  type,
int  n 
)

Definition at line 2602 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

◆ CustomData_set_layer_flag()

void CustomData_set_layer_flag ( struct CustomData data,
int  type,
int  flag 
)

◆ CustomData_set_layer_n()

void* CustomData_set_layer_n ( const CustomData data,
int  type,
int  n,
void ptr 
)

Definition at line 3476 of file customdata.cc.

References CustomData_get_layer_index_n(), data, ptr, and type.

◆ CustomData_set_layer_name()

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

Definition at line 3441 of file customdata.cc.

References BLI_strncpy(), CustomData_get_layer_index_n(), data, and type.

◆ CustomData_set_layer_render()

void CustomData_set_layer_render ( CustomData data,
int  type,
int  n 
)

◆ CustomData_set_layer_render_index()

void CustomData_set_layer_render_index ( CustomData data,
int  type,
int  n 
)

◆ CustomData_set_layer_stencil()

void CustomData_set_layer_stencil ( CustomData data,
int  type,
int  n 
)

◆ CustomData_set_layer_stencil_index()

void CustomData_set_layer_stencil_index ( CustomData data,
int  type,
int  n 
)

Definition at line 2614 of file customdata.cc.

References BLI_assert, customdata_typemap_is_valid(), data, and type.

◆ CustomData_set_layer_unique_name()

void CustomData_set_layer_unique_name ( struct CustomData data,
int  index 
)

◆ CustomData_set_only_copy()

void CustomData_set_only_copy ( const CustomData data,
eCustomDataMask  mask 
)

Definition at line 3073 of file customdata.cc.

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

◆ CustomData_sizeof()

int CustomData_sizeof ( int  type)

◆ CustomData_swap()

void CustomData_swap ( struct CustomData data,
int  index_a,
int  index_b 
)

Swap two items of given custom data, in all available layers.

Definition at line 3319 of file customdata.cc.

References data, layerType_getInfo(), MEM_freeN, MEM_mallocN, POINTER_OFFSET, size(), and LayerTypeInfo::size.

Referenced by BKE_mesh_polygon_flip_ex().

◆ CustomData_swap_corners()

void CustomData_swap_corners ( struct 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 3306 of file customdata.cc.

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

Referenced by BKE_mesh_mface_index_validate().

◆ CustomData_to_bmesh_block()

void CustomData_to_bmesh_block ( const CustomData source,
CustomData dest,
int  src_index,
void **  dest_block,
bool  use_default_init 
)

◆ customdata_typemap_is_valid()

static bool customdata_typemap_is_valid ( const CustomData data)
static

◆ customdata_unique_check()

static bool customdata_unique_check ( void arg,
const char *  name 
)
static

◆ customData_update_offsets()

static void customData_update_offsets ( CustomData data)
static

◆ CustomData_update_typemap()

void CustomData_update_typemap ( CustomData data)

◆ CustomData_validate_layer_name()

void CustomData_validate_layer_name ( const CustomData data,
int  type,
const char *  name,
char *  outname 
)

◆ CustomData_verify_versions()

bool CustomData_verify_versions ( struct 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 4388 of file customdata.cc.

References CD_CREASE, CD_FACEMAP, CD_NUMTYPES, CD_PAINT_MASK, CD_SCULPT_FACE_SETS, CLOG_WARN, data, LayerTypeInfo::defaultname, ELEM, layerType_getInfo(), LOG, LayerTypeInfo::structnum, and CustomDataLayer::type.

Referenced by CustomData_blend_read().

◆ layerAdd_mloop_origspace()

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

Definition at line 1132 of file customdata.cc.

References add_v2_v2(), data1, data2, and OrigSpaceLoop::uv.

◆ layerAdd_mloopcol()

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

Definition at line 880 of file customdata.cc.

References MLoopCol::a, MLoopCol::b, data1, data2, MLoopCol::g, and MLoopCol::r.

◆ layerAdd_mloopuv()

static void layerAdd_mloopuv ( void data1,
const void data2 
)
static

Definition at line 1038 of file customdata.cc.

References add_v2_v2(), data1, data2, and MLoopUV::uv.

◆ layerAdd_propcol()

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

Definition at line 1432 of file customdata.cc.

References add_v4_v4(), MPropCol::color, data1, and data2.

◆ layerAdd_propfloat2()

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

Definition at line 1563 of file customdata.cc.

References data1, data2, vec2f::x, and vec2f::y.

◆ layerAdd_propfloat3()

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

Definition at line 1511 of file customdata.cc.

References data1, data2, vec3f::x, vec3f::y, and vec3f::z.

◆ layerCopy_bmesh_elem_py_ptr()

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

Definition at line 226 of file customdata.cc.

References count, dest, POINTER_OFFSET, ptr, and size().

◆ layerCopy_grid_paint_mask()

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

Definition at line 765 of file customdata.cc.

References count, data, dest, GridPaintMask::level, and MEM_dupallocN.

◆ layerCopy_mdeformvert()

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

◆ layerCopy_mdisps()

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

Definition at line 655 of file customdata.cc.

References count, dest, MDisps::level, MEM_dupallocN, and MDisps::totdisp.

◆ layerCopy_mvert_skin()

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

Definition at line 1298 of file customdata.cc.

References count, and dest.

◆ layerCopy_origspace_face()

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

Definition at line 561 of file customdata.cc.

References count, and dest.

◆ layerCopy_propFloat()

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

Definition at line 480 of file customdata.cc.

References count, and dest.

◆ layerCopy_propInt()

static void layerCopy_propInt ( const void source,
void dest,
int  count 
)
static

Definition at line 523 of file customdata.cc.

References count, and dest.

◆ layerCopy_propString()

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

Definition at line 550 of file customdata.cc.

References count, and dest.

◆ layerCopy_tface()

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

Definition at line 409 of file customdata.cc.

References count, and dest.

◆ layerCopyValue_mloop_origspace()

static void layerCopyValue_mloop_origspace ( const void source,
void dest,
const int   UNUSEDmixmode,
const float   UNUSEDmixfactor 
)
static

Definition at line 1089 of file customdata.cc.

References copy_v2_v2(), dest, and OrigSpaceLoop::uv.

◆ layerCopyValue_mloopcol()

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

◆ layerCopyValue_mloopuv()

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

Definition at line 987 of file customdata.cc.

References CDT_MIX_NOMIX, copy_v2_v2(), dest, interp_v2_v2v2(), and MLoopUV::uv.

◆ layerCopyValue_normal()

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

◆ layerCopyValue_propcol()

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

◆ layerDefault_fmap()

static void layerDefault_fmap ( void data,
int  count 
)
static

Definition at line 1350 of file customdata.cc.

References count, and data.

◆ layerDefault_mcol()

static void layerDefault_mcol ( void data,
int  count 
)
static

Definition at line 1220 of file customdata.cc.

References count, and data.

◆ layerDefault_mloopcol()

static void layerDefault_mloopcol ( void data,
int  count 
)
static

Definition at line 939 of file customdata.cc.

References count, and data.

◆ layerDefault_mvert_skin()

static void layerDefault_mvert_skin ( void data,
int  count 
)
static

Definition at line 1288 of file customdata.cc.

References copy_v3_fl(), count, data, and MVertSkin::flag.

◆ layerDefault_origindex()

static void layerDefault_origindex ( void data,
int  count 
)
static

Definition at line 1230 of file customdata.cc.

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

◆ layerDefault_origspace_face()

static void layerDefault_origspace_face ( void data,
int  count 
)
static

Definition at line 609 of file customdata.cc.

References count, and data.

◆ layerDefault_propcol()

static void layerDefault_propcol ( void data,
int  count 
)
static

Definition at line 1456 of file customdata.cc.

References MPropCol::color, color, copy_v4_v4(), count, and data.

◆ layerDefault_tface()

static void layerDefault_tface ( void data,
int  count 
)
static

Definition at line 459 of file customdata.cc.

References count, and data.

◆ layerDoMinMax_mloop_origspace()

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

Definition at line 1123 of file customdata.cc.

References data, max, min, minmax_v2v2_v2(), and OrigSpaceLoop::uv.

◆ layerDoMinMax_mloopcol()

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

Definition at line 891 of file customdata.cc.

References MLoopCol::a, MLoopCol::b, data, MLoopCol::g, max, min, and MLoopCol::r.

◆ layerDoMinMax_mloopuv()

static void layerDoMinMax_mloopuv ( const void data,
void vmin,
void vmax 
)
static

Definition at line 1029 of file customdata.cc.

References data, max, min, minmax_v2v2_v2(), and MLoopUV::uv.

◆ layerDoMinMax_propcol()

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

Definition at line 1439 of file customdata.cc.

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

◆ layerEqual_mloop_origspace()

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

Definition at line 1100 of file customdata.cc.

References data1, data2, len_squared_v2v2(), and OrigSpaceLoop::uv.

◆ layerEqual_mloopcol()

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

◆ layerEqual_mloopuv()

static bool layerEqual_mloopuv ( const void data1,
const void data2 
)
static

Definition at line 1006 of file customdata.cc.

References data1, data2, len_squared_v2v2(), and MLoopUV::uv.

◆ layerEqual_propcol()

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

Definition at line 1412 of file customdata.cc.

References Freestyle::c, MPropCol::color, data1, and data2.

◆ layerFilesize_mdisps()

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

Definition at line 726 of file customdata.cc.

References count, data, and size().

◆ layerFree_bmesh_elem_py_ptr()

static void layerFree_bmesh_elem_py_ptr ( void data,
int  count,
int  size 
)
static

Definition at line 243 of file customdata.cc.

References bpy_bm_generic_invalidate(), count, data, POINTER_OFFSET, ptr, and size().

◆ layerFree_grid_paint_mask()

static void layerFree_grid_paint_mask ( void data,
int  count,
int   UNUSEDsize 
)
static

Definition at line 782 of file customdata.cc.

References count, data, GridPaintMask::level, and MEM_SAFE_FREE.

◆ layerFree_mdeformvert()

static void layerFree_mdeformvert ( void data,
int  count,
int  size 
)
static

◆ layerFree_mdisps()

static void layerFree_mdisps ( void data,
int  count,
int   UNUSEDsize 
)
static

Definition at line 676 of file customdata.cc.

References count, data, and MEM_freeN.

◆ layerInitMinMax_mloop_origspace()

static void layerInitMinMax_mloop_origspace ( void vmin,
void vmax 
)
static

Definition at line 1115 of file customdata.cc.

References INIT_MINMAX2, max, and min.

◆ layerInitMinMax_mloopcol()

static void layerInitMinMax_mloopcol ( void vmin,
void vmax 
)
static

Definition at line 923 of file customdata.cc.

References max, and min.

◆ layerInitMinMax_mloopuv()

static void layerInitMinMax_mloopuv ( void vmin,
void vmax 
)
static

Definition at line 1021 of file customdata.cc.

References INIT_MINMAX2, max, and min.

◆ layerInitMinMax_propcol()

static void layerInitMinMax_propcol ( void vmin,
void vmax 
)
static

Definition at line 1447 of file customdata.cc.

References copy_v4_fl(), max, and min.

◆ layerInterp_bweight()

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

Definition at line 1235 of file customdata.cc.

References count, and dest.

◆ layerInterp_mcol()

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

◆ layerInterp_mdeformvert()

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

◆ layerInterp_mloop_origspace()

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

Definition at line 1140 of file customdata.cc.

References copy_v2_v2(), count, dest, madd_v2_v2fl(), src, and zero_v2().

◆ layerInterp_mloopcol()

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

◆ layerInterp_mloopuv()

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

Definition at line 1046 of file customdata.cc.

References copy_v2_v2(), count, dest, madd_v2_v2fl(), src, and zero_v2().

◆ layerInterp_mvert_skin()

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

◆ layerInterp_normal()

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

Definition at line 347 of file customdata.cc.

References count, dest, madd_v3_v3fl(), and normalize_v3_v3().

◆ layerInterp_origspace_face()

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

Definition at line 571 of file customdata.cc.

References count, dest, madd_v2_v2fl(), src, and OrigSpaceFace::uv.

◆ layerInterp_paint_mask()

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

Definition at line 744 of file customdata.cc.

References count, dest, mask(), and src.

◆ layerInterp_propbool()

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

Definition at line 1592 of file customdata.cc.

References count, dest, result, and src.

◆ layerInterp_propcol()

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

Definition at line 1466 of file customdata.cc.

References col, MPropCol::color, copy_v4_v4(), count, dest, madd_v4_v4fl(), and src.

◆ layerInterp_propFloat()

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

Definition at line 485 of file customdata.cc.

References count, dest, result, and src.

◆ layerInterp_propfloat2()

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

Definition at line 1541 of file customdata.cc.

References copy_v2_v2(), count, dest, madd_v2_v2fl(), result, and src.

◆ layerInterp_propfloat3()

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

Definition at line 1488 of file customdata.cc.

References copy_v3_v3(), count, dest, madd_v3_v3fl(), result, and src.

◆ layerInterp_propInt()

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

Definition at line 528 of file customdata.cc.

References count, dest, result, and src.

◆ layerInterp_shapekey()

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

Definition at line 1258 of file customdata.cc.

References copy_v3_v3(), count, dest, madd_v3_v3fl(), and zero_v3().

◆ layerInterp_tface()

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

Definition at line 418 of file customdata.cc.

References count, dest, madd_v2_v2fl(), src, and MTFace::uv.

◆ layerMaxNum_tface()

static int layerMaxNum_tface ( )
static

Definition at line 469 of file customdata.cc.

References MAX_MTFACE.

◆ layerMultiply_mloop_origspace()

static void layerMultiply_mloop_origspace ( void data,
float  fac 
)
static

Definition at line 1108 of file customdata.cc.

References data, mul_v2_fl(), and OrigSpaceLoop::uv.

◆ layerMultiply_mloopcol()

static void layerMultiply_mloopcol ( void data,
float  fac 
)
static

Definition at line 870 of file customdata.cc.

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

◆ layerMultiply_mloopuv()

static void layerMultiply_mloopuv ( void data,
float  fac 
)
static

Definition at line 1014 of file customdata.cc.

References data, mul_v2_fl(), and MLoopUV::uv.

◆ layerMultiply_propcol()

static void layerMultiply_propcol ( void data,
float  fac 
)
static

Definition at line 1426 of file customdata.cc.

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

◆ layerMultiply_propfloat2()

static void layerMultiply_propfloat2 ( void data,
float  fac 
)
static

Definition at line 1556 of file customdata.cc.

References data, vec2f::x, and vec2f::y.

◆ layerMultiply_propfloat3()

static void layerMultiply_propfloat3 ( void data,
float  fac 
)
static

Definition at line 1503 of file customdata.cc.

References data, vec3f::x, vec3f::y, and vec3f::z.

◆ layerRead_mdisps()

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

Definition at line 694 of file customdata.cc.

References cdf_read_data(), CLOG_ERROR, count, data, float(), LOG, and MEM_calloc_arrayN.

◆ layerSwap_flnor()

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

Definition at line 1331 of file customdata.cc.

References copy_v3_v3_short(), and data.

◆ layerSwap_mcol()

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

Definition at line 1208 of file customdata.cc.

References col, and data.

◆ layerSwap_mdisps()

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

◆ layerSwap_origspace_face()

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

Definition at line 598 of file customdata.cc.

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

◆ layerSwap_tface()

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

Definition at line 446 of file customdata.cc.

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

◆ layerType_getInfo()

static const LayerTypeInfo* layerType_getInfo ( int  type)
static

Definition at line 2122 of file customdata.cc.

References CD_NUMTYPES, LAYERTYPEINFO, and type.

Referenced by CustomData_add_layer(), customData_add_layer__internal(), CustomData_bmesh_copy_data_exclude_by_type(), CustomData_bmesh_free_block(), CustomData_bmesh_free_block_data(), CustomData_bmesh_free_block_data_exclude_by_type(), CustomData_bmesh_has_free(), CustomData_bmesh_interp(), CustomData_bmesh_interp_n(), CustomData_bmesh_set(), CustomData_bmesh_set_default_n(), CustomData_bmesh_set_layer_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_transfer(), customdata_data_transfer_interp_generic(), customdata_data_transfer_interp_normal_normals(), customData_duplicate_referenced_layer_index(), CustomData_external_read(), CustomData_external_reload(), CustomData_external_write(), CustomData_file_write_info(), CustomData_free_elem(), customData_free_layer__internal(), CustomData_from_bmesh_block(), CustomData_get(), CustomData_get_n(), 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(), CustomData_set_layer_unique_name(), CustomData_sizeof(), CustomData_swap(), CustomData_swap_corners(), CustomData_to_bmesh_block(), customData_update_offsets(), and CustomData_verify_versions().

◆ layerType_getName()

static const char* layerType_getName ( int  type)
static

◆ layerValidate_mloopuv()

static bool layerValidate_mloopuv ( void data,
const uint  totitems,
const bool  do_fixes 
)
static

Definition at line 1071 of file customdata.cc.

References data, is_finite_v2(), MLoopUV::uv, and zero_v2().

◆ layerValidate_propFloat()

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

Definition at line 500 of file customdata.cc.

References data, MFloatProperty::f, and CCL_NAMESPACE_BEGIN::isfinite().

◆ layerValidate_propfloat2()

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

Definition at line 1571 of file customdata.cc.

References data, and CCL_NAMESPACE_BEGIN::isfinite().

◆ layerValidate_propfloat3()

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

Definition at line 1520 of file customdata.cc.

References data, and CCL_NAMESPACE_BEGIN::isfinite().

◆ layerWrite_mdisps()

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

Definition at line 712 of file customdata.cc.

References cdf_write_data(), CLOG_ERROR, count, data, and LOG.

◆ write_grid_paint_mask()

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

◆ write_mdisps()

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

Variable Documentation

◆ CD_MASK_BAREMESH

const CustomData_MeshMasks CD_MASK_BAREMESH
Initial value:
= {
0,
}
#define CD_MASK_MLOOP
#define CD_MASK_BWEIGHT
#define CD_MASK_MEDGE
#define CD_MASK_MPOLY
#define CD_MASK_MVERT
#define CD_MASK_FACEMAP

Definition at line 2051 of file customdata.cc.

Referenced by add_verts_to_dgroups(), BKE_crazyspace_get_first_deform_matrices_editbmesh(), BKE_crazyspace_get_mapped_editverts(), BKE_editmesh_vert_coords_alloc(), BKE_multires_create_mesh(), BKE_object_data_transfer_ex(), BKE_object_data_transfer_layout(), BKE_object_handle_data_update(), bvh_get_mesh(), dt_layers_select_src_itemf(), ED_mesh_pick_vert(), ED_mesh_shapes_join_objects_exec(), ED_view3d_screen_datamask(), editbmesh_calc_modifiers(), knifeproject_poly_from_object(), mesh_foreachScreenEdge(), mesh_foreachScreenEdge_clip_bb_segment(), mesh_foreachScreenFace(), mesh_foreachScreenVert(), meshobject_foreachScreenVert(), modifier_skin_armature_create(), multires_modifier_update_mdisps(), multires_reshape_create_subdiv(), multiresbake_create_hiresdm(), multiresbake_create_loresdm(), multiresModifier_reshapeFromObject(), object_force_modifier_update_for_bind(), paint_sample_color(), particle_intersect_mesh(), pointdensity_cache_object(), and vgroup_fix().

◆ 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_SCULPT_FACE_SETS
#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_CUSTOMLOOPNORMAL
#define CD_MASK_CREASE
#define CD_MASK_SHAPEKEY
#define CD_MASK_MLOOPUV
#define CD_MASK_MDISPS
#define CD_MASK_FREESTYLE_EDGE
#define CD_MASK_PAINT_MASK

Definition at line 2090 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

const CustomData_MeshMasks CD_MASK_DERIVEDMESH

◆ CD_MASK_EVERYTHING

const CustomData_MeshMasks CD_MASK_EVERYTHING
Initial value:
= {
}
#define CD_MASK_BM_ELEM_PYPTR
#define CD_MASK_NORMAL
#define CD_MASK_MCOL
#define CD_MASK_TESSLOOPNORMAL
#define CD_MASK_MTFACE
#define CD_MASK_MFACE
#define CD_MASK_MLOOPTANGENT

Definition at line 2101 of file customdata.cc.

Referenced by BKE_mesh_new_nomain_from_template(), blender::io::obj::MeshFromGeometry::create_mesh(), geometry_extract_apply(), loop_interpolation_init(), blender::io::alembic::AbcMeshReader::readObjectData(), blender::io::alembic::AbcSubDReader::readObjectData(), subdiv_mesh_topology_info(), and vertex_interpolation_init().

◆ CD_MASK_MESH

const CustomData_MeshMasks CD_MASK_MESH

◆ LAYERTYPEINFO

const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES]
static

Definition at line 1607 of file customdata.cc.

Referenced by layerType_getInfo().

◆ LAYERTYPENAMES

const char* LAYERTYPENAMES[CD_NUMTYPES]
static

Definition at line 1994 of file customdata.cc.

Referenced by layerType_getName().

◆ LOG

CLG_LogRef LOG = {"bke.customdata"}
static