Blender  V3.3
BKE_customdata.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2006 Blender Foundation. All rights reserved. */
3 
9 #pragma once
10 
11 #include "BLI_sys_types.h"
12 #include "BLI_utildefines.h"
13 #ifdef __cplusplus
14 # include "BLI_span.hh"
15 # include "BLI_vector.hh"
16 #endif
17 
18 #include "DNA_customdata_types.h"
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
25 struct BMesh;
26 struct BlendDataReader;
27 struct BlendWriter;
28 struct CustomData;
30 struct ID;
32 
33 /* A data type large enough to hold 1 element from any custom-data layer type. */
34 typedef struct {
35  unsigned char data[64];
36 } CDBlockBytes;
37 
44 
45 /* for ORIGINDEX layer type, indicates no original index for this element */
46 #define ORIGINDEX_NONE -1
47 
48 /* initializes a CustomData object with the same layer setup as source and
49  * memory space for totelem elements. mask must be an array of length
50  * CD_NUMTYPES elements, that indicate if a layer can be copied. */
51 
53 typedef enum eCDAllocType {
55  CD_ASSIGN = 0,
57  CD_CALLOC = 1,
65 
66 #define CD_TYPE_AS_MASK(_type) (eCustomDataMask)((eCustomDataMask)1 << (eCustomDataMask)(_type))
67 
69 
70 typedef void (*cd_interp)(
71  const void **sources, const float *weights, const float *sub_weights, int count, void *dest);
72 typedef void (*cd_copy)(const void *source, void *dest, int count);
73 typedef bool (*cd_validate)(void *item, uint totitems, bool do_fixes);
74 
79  const CustomData_MeshMasks *mask_src);
84  const CustomData_MeshMasks *mask_required);
85 
90 bool CustomData_layer_has_math(const struct CustomData *data, int layer_n);
91 bool CustomData_layer_has_interp(const struct CustomData *data, int layer_n);
92 
96 bool CustomData_has_math(const struct CustomData *data);
102 
107 
113 void CustomData_data_copy_value(int type, const void *source, void *dest);
114 
120  int type, const void *source, void *dest, int mixmode, float mixfactor);
121 
127 bool CustomData_data_equals(int type, const void *data1, const void *data2);
128 void CustomData_data_initminmax(int type, void *min, void *max);
129 void CustomData_data_dominmax(int type, const void *data, void *min, void *max);
130 void CustomData_data_multiply(int type, void *data, float fac);
131 void CustomData_data_add(int type, void *data1, const void *data2);
132 
138 void CustomData_copy(const struct CustomData *source,
139  struct CustomData *dest,
141  eCDAllocType alloctype,
142  int totelem);
143 
144 /* BMESH_TODO, not really a public function but readfile.c needs it */
146 
151 bool CustomData_merge(const struct CustomData *source,
152  struct CustomData *dest,
154  eCDAllocType alloctype,
155  int totelem);
156 
164 void CustomData_realloc(struct CustomData *data, int totelem);
165 
171 bool CustomData_bmesh_merge(const struct CustomData *source,
172  struct CustomData *dest,
174  eCDAllocType alloctype,
175  struct BMesh *bm,
176  char htype);
177 
181 void CustomData_reset(struct CustomData *data);
182 
186 void CustomData_free(struct CustomData *data, int totelem);
187 
191 void CustomData_free_typemask(struct CustomData *data, int totelem, eCustomDataMask mask);
192 
196 void CustomData_free_temporary(struct CustomData *data, int totelem);
197 
204  struct CustomData *data, int type, eCDAllocType alloctype, void *layer, int totelem);
209  int type,
210  eCDAllocType alloctype,
211  void *layer,
212  int totelem,
213  const char *name);
215  int type,
216  eCDAllocType alloctype,
217  void *layer,
218  int totelem,
219  const struct AnonymousAttributeID *anonymous_id);
220 
227 bool CustomData_free_layer(struct CustomData *data, int type, int totelem, int index);
228 bool CustomData_free_layer_named(struct CustomData *data, const char *name, const int totelem);
229 
236 bool CustomData_free_layer_active(struct CustomData *data, int type, int totelem);
237 
241 void CustomData_free_layers(struct CustomData *data, int type, int totelem);
242 
246 bool CustomData_has_layer(const struct CustomData *data, int type);
247 
253 
258 void *CustomData_duplicate_referenced_layer(struct CustomData *data, int type, int totelem);
260  int type,
261  int n,
262  int totelem);
264  int type,
265  const char *name,
266  int totelem);
268  CustomData *data, int type, const struct AnonymousAttributeID *anonymous_id, int totelem);
270 
275 
281 
287 void CustomData_copy_data(const struct CustomData *source,
288  struct CustomData *dest,
289  int source_index,
290  int dest_index,
291  int count);
292 void CustomData_copy_data_layer(const CustomData *source,
293  CustomData *dest,
294  int src_layer_index,
295  int dst_layer_index,
296  int src_index,
297  int dst_index,
298  int count);
299 void CustomData_copy_data_named(const struct CustomData *source,
300  struct CustomData *dest,
301  int source_index,
302  int dest_index,
303  int count);
304 void CustomData_copy_elements(int type, void *src_data_ofs, void *dst_data_ofs, int count);
305 void CustomData_bmesh_copy_data(const struct CustomData *source,
306  struct CustomData *dest,
307  void *src_block,
308  void **dest_block);
310  struct CustomData *dest,
311  void *src_block,
312  void **dest_block,
313  eCustomDataMask mask_exclude);
314 
318 void CustomData_copy_layer_type_data(const struct CustomData *source,
319  struct CustomData *destination,
320  int type,
321  int source_index,
322  int destination_index,
323  int count);
324 
328 void CustomData_free_elem(struct CustomData *data, int index, int count);
329 
342 void CustomData_interp(const struct CustomData *source,
343  struct CustomData *dest,
344  const int *src_indices,
345  const float *weights,
346  const float *sub_weights,
347  int count,
348  int dest_index);
354  const void **src_blocks,
355  const float *weights,
356  const float *sub_weights,
357  int count,
358  void *dst_block_ofs,
359  int n);
361  const void **src_blocks,
362  const float *weights,
363  const float *sub_weights,
364  int count,
365  void *dst_block);
366 
374 void CustomData_swap_corners(struct CustomData *data, int index, const int *corner_indices);
375 
379 void CustomData_swap(struct CustomData *data, int index_a, int index_b);
380 
385 void *CustomData_get(const struct CustomData *data, int index, int type);
386 void *CustomData_get_n(const struct CustomData *data, int type, int index, int n);
387 
388 /* BMesh Custom Data Functions.
389  * Should replace edit-mesh ones with these as well, due to more efficient memory alloc. */
390 
391 void *CustomData_bmesh_get(const struct CustomData *data, void *block, int type);
392 void *CustomData_bmesh_get_n(const struct CustomData *data, void *block, int type, int n);
393 
398 void *CustomData_bmesh_get_layer_n(const struct CustomData *data, void *block, int n);
399 
400 bool CustomData_set_layer_name(const struct CustomData *data, int type, int n, const char *name);
401 const char *CustomData_get_layer_name(const struct CustomData *data, int type, int n);
402 
407 void *CustomData_get_layer(const struct CustomData *data, int type);
408 void *CustomData_get_layer_n(const struct CustomData *data, int type, int n);
409 void *CustomData_get_layer_named(const struct CustomData *data, int type, const char *name);
410 int CustomData_get_offset(const struct CustomData *data, int type);
411 int CustomData_get_offset_named(const CustomData *data, int type, const char *name);
412 int CustomData_get_n_offset(const struct CustomData *data, int type, int n);
413 
415 int CustomData_get_layer_index_n(const struct CustomData *data, int type, int n);
416 int CustomData_get_named_layer_index(const struct CustomData *data, int type, const char *name);
421 int CustomData_get_named_layer(const struct CustomData *data, int type, const char *name);
426 
431 const char *CustomData_get_active_layer_name(const struct CustomData *data, int type);
432 
437 void CustomData_set(const struct CustomData *data, int index, int type, const void *source);
438 
440  void *block,
441  int type,
442  const void *source);
443 
445  struct CustomData *data, void *block, int type, int n, const void *source);
450 void CustomData_bmesh_set_layer_n(struct CustomData *data, void *block, int n, const void *source);
451 
456 void *CustomData_set_layer(const struct CustomData *data, int type, void *ptr);
457 void *CustomData_set_layer_n(const struct CustomData *data, int type, int n, void *ptr);
458 
462 void CustomData_set_layer_active(struct CustomData *data, int type, int n);
463 void CustomData_set_layer_render(struct CustomData *data, int type, int n);
464 void CustomData_set_layer_clone(struct CustomData *data, int type, int n);
465 void CustomData_set_layer_stencil(struct CustomData *data, int type, int n);
466 
471 void CustomData_set_layer_active_index(struct CustomData *data, int type, int n);
472 void CustomData_set_layer_render_index(struct CustomData *data, int type, int n);
473 void CustomData_set_layer_clone_index(struct CustomData *data, int type, int n);
474 void CustomData_set_layer_stencil_index(struct CustomData *data, int type, int n);
475 
479 void CustomData_set_layer_flag(struct CustomData *data, int type, int flag);
480 void CustomData_clear_layer_flag(struct CustomData *data, int type, int flag);
481 
482 void CustomData_bmesh_set_default(struct CustomData *data, void **block);
483 void CustomData_bmesh_free_block(struct CustomData *data, void **block);
487 void CustomData_bmesh_free_block_data(struct CustomData *data, void *block);
492  void *block,
493  eCustomDataMask mask_exclude);
494 
503 void CustomData_to_bmesh_block(const struct CustomData *source,
504  struct CustomData *dest,
505  int src_index,
506  void **dest_block,
507  bool use_default_init);
508 void CustomData_from_bmesh_block(const struct CustomData *source,
509  struct CustomData *dest,
510  void *src_block,
511  int dest_index);
512 
516 void CustomData_file_write_info(int type, const char **r_struct_name, int *r_struct_num);
517 int CustomData_sizeof(int type);
518 
522 const char *CustomData_layertype_name(int type);
537 
541 void CustomData_set_layer_unique_name(struct CustomData *data, int index);
542 
544  int type,
545  const char *name,
546  char *outname);
547 
552 bool CustomData_verify_versions(struct CustomData *data, int index);
553 
554 /* BMesh specific custom-data stuff. */
555 
556 void CustomData_bmesh_update_active_layers(struct CustomData *fdata, struct CustomData *ldata);
557 void CustomData_bmesh_init_pool(struct CustomData *data, int totelem, char htype);
558 
565 bool CustomData_layer_validate(struct CustomDataLayer *layer, uint totitems, bool do_fixes);
567 
568 /* External file storage */
569 
571  struct CustomData *data, struct ID *id, int type, int totelem, const char *filepath);
572 void CustomData_external_remove(struct CustomData *data, struct ID *id, int type, int totelem);
573 bool CustomData_external_test(struct CustomData *data, int type);
574 
576  struct CustomData *data, struct ID *id, eCustomDataMask mask, int totelem, int free);
578  struct ID *id,
580  int totelem);
582  struct ID *id,
584  int totelem);
585 
586 /* Mesh-to-mesh transfer data. */
587 
589 struct MeshPairRemap;
590 
592  void *dest,
593  const void **sources,
594  const float *weights,
595  int count,
596  float mix_factor);
597 
601 enum {
602  CD_FAKE = 1 << 8,
603 
604  /* Vertices. */
605  CD_FAKE_MDEFORMVERT = CD_FAKE | CD_MDEFORMVERT, /* *sigh* due to how vgroups are stored :(. */
607  CD_SHAPEKEY, /* Not available as real CD layer in non-bmesh context. */
608 
609  /* Edges. */
610  CD_FAKE_SEAM = CD_FAKE | 100, /* UV seam flag for edges. */
611  CD_FAKE_CREASE = CD_FAKE | CD_CREASE, /* *sigh*. */
612 
613  /* Multiple types of mesh elements... */
614  CD_FAKE_BWEIGHT = CD_FAKE | CD_BWEIGHT, /* *sigh*. */
615  CD_FAKE_UV = CD_FAKE |
616  CD_MLOOPUV, /* UV flag, because we handle both loop's UVs and poly's textures. */
617 
619  CD_CUSTOMLOOPNORMAL, /* Because we play with clnor and temp lnor layers here. */
620 
621  CD_FAKE_SHARP = CD_FAKE | 200, /* Sharp flag for edges, smooth flag for faces. */
622 };
623 
624 enum {
625  ME_VERT = 1 << 0,
626  ME_EDGE = 1 << 1,
627  ME_POLY = 1 << 2,
628  ME_LOOP = 1 << 3,
629 };
630 
634 enum {
635  CDT_MIX_NOMIX = -1, /* Special case, only used because we abuse 'copy' CD callback. */
643  /* Etc. */
644 };
645 
648 
650  int mix_mode;
651  float mix_factor;
653  const float *mix_weights;
654 
656  const void *data_src;
658  void *data_dst;
664  size_t elem_size;
665 
667  size_t data_size;
669  size_t data_offset;
672 
674  void *interp_data;
675 
678 
682 void CustomData_data_transfer(const struct MeshPairRemap *me_remap,
683  const CustomDataTransferLayerMap *laymap);
684 
685 /* .blend file I/O */
686 
687 #ifdef __cplusplus
688 
700  blender::Vector<CustomDataLayer, 16> &layers_to_write);
701 
706  CustomData *data,
707  blender::Span<CustomDataLayer> layers_to_write,
708  int count,
709  eCustomDataMask cddata_mask,
710  ID *id);
711 
712 #endif
713 
714 void CustomData_blend_read(struct BlendDataReader *reader, struct CustomData *data, int count);
715 
716 #ifndef NDEBUG
717 struct DynStr;
720  const char *indent,
721  struct DynStr *dynstr);
722 #endif /* NDEBUG */
723 
724 #ifdef __cplusplus
725 }
726 #endif
727 
728 #ifdef __cplusplus
729 # include "BLI_cpp_type.hh"
730 
731 namespace blender::bke {
734 } // namespace blender::bke
735 #endif
bool CustomData_free_layer_named(struct CustomData *data, const char *name, const int totelem)
Definition: customdata.cc:2883
const CustomData_MeshMasks CD_MASK_EVERYTHING
Definition: customdata.cc:2101
bool CustomData_merge(const struct CustomData *source, struct CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, int totelem)
int CustomData_get_active_layer_index(const struct CustomData *data, int type)
void CustomData_copy_data_named(const struct CustomData *source, struct CustomData *dest, int source_index, int dest_index, int count)
bool CustomData_layer_validate(struct CustomDataLayer *layer, uint totitems, bool do_fixes)
Definition: customdata.cc:4468
bool CustomData_has_math(const struct CustomData *data)
void CustomData_set_layer_stencil_index(struct CustomData *data, int type, int n)
Definition: customdata.cc:2614
void CustomData_free(struct CustomData *data, int totelem)
Definition: customdata.cc:2373
void CustomData_blend_read(struct BlendDataReader *reader, struct CustomData *data, int count)
Definition: customdata.cc:5215
const char * CustomData_get_layer_name(const struct CustomData *data, int type, int n)
void CustomData_copy_layer_type_data(const struct CustomData *source, struct CustomData *destination, int type, int source_index, int destination_index, int count)
bool CustomData_free_layer_active(struct CustomData *data, int type, int totelem)
Definition: customdata.cc:2895
int CustomData_number_of_layers(const struct CustomData *data, int type)
const CustomData_MeshMasks CD_MASK_BAREMESH_ORIGINDEX
Definition: customdata.cc:2058
void * CustomData_set_layer_n(const struct CustomData *data, int type, int n, void *ptr)
int CustomData_layertype_layers_max(int type)
Definition: customdata.cc:4293
int CustomData_get_clone_layer(const struct CustomData *data, int type)
bool CustomData_free_layer(struct CustomData *data, int type, int totelem, int index)
Definition: customdata.cc:2831
void CustomData_set_layer_active(struct CustomData *data, int type, int n)
Definition: customdata.cc:2542
eCDAllocType
@ CD_REFERENCE
@ CD_ASSIGN
@ CD_CALLOC
@ CD_DUPLICATE
@ CD_DEFAULT
void CustomData_external_write(struct CustomData *data, struct ID *id, eCustomDataMask mask, int totelem, int free)
Definition: customdata.cc:4620
void CustomData_bmesh_free_block_data_exclude_by_type(struct CustomData *data, void *block, eCustomDataMask mask_exclude)
Definition: customdata.cc:3722
void * CustomData_duplicate_referenced_layer_anonymous(CustomData *data, int type, const struct AnonymousAttributeID *anonymous_id, int totelem)
void CustomData_from_bmesh_block(const struct CustomData *source, struct CustomData *dest, void *src_block, int dest_index)
void CustomData_clear_layer_flag(struct CustomData *data, int type, int flag)
Definition: customdata.cc:2635
void CustomData_external_add(struct CustomData *data, struct ID *id, int type, int totelem, const char *filepath)
@ ME_VERT
@ ME_POLY
@ ME_LOOP
@ ME_EDGE
bool CustomData_layer_has_interp(const struct CustomData *data, int layer_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)
Definition: customdata.cc:4071
void CustomData_copy(const struct CustomData *source, struct CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, int totelem)
int CustomData_get_render_layer_index(const struct CustomData *data, int type)
void CustomData_free_layers(struct CustomData *data, int type, int totelem)
Definition: customdata.cc:2904
int CustomData_get_stencil_layer_index(const struct CustomData *data, int type)
bool CustomData_has_layer(const struct CustomData *data, int type)
bool CustomData_layertype_is_singleton(int type)
Definition: customdata.cc:4280
void CustomData_MeshMasks_update(CustomData_MeshMasks *mask_dst, const CustomData_MeshMasks *mask_src)
Definition: customdata.cc:77
int CustomData_get_named_layer_index(const struct CustomData *data, int type, const char *name)
void CustomData_set_layer_render_index(struct CustomData *data, int type, int n)
Definition: customdata.cc:2590
void CustomData_set_layer_unique_name(struct CustomData *data, int index)
Definition: customdata.cc:4343
bool CustomData_data_equals(int type, const void *data1, const void *data2)
Definition: customdata.cc:3973
void * CustomData_set_layer(const struct CustomData *data, int type, void *ptr)
int CustomData_get_layer_index_n(const struct CustomData *data, int type, int n)
void CustomData_debug_info_from_layers(const struct CustomData *data, const char *indent, struct DynStr *dynstr)
void(* cd_datatransfer_interp)(const struct CustomDataTransferLayerMap *laymap, void *dest, const void **sources, const float *weights, int count, float mix_factor)
void CustomData_data_transfer(const struct MeshPairRemap *me_remap, const CustomDataTransferLayerMap *laymap)
int CustomData_get_offset_named(const CustomData *data, int type, const char *name)
Definition: customdata.cc:3419
void * CustomData_duplicate_referenced_layer_named(struct CustomData *data, int type, const char *name, int totelem)
Definition: customdata.cc:2995
bool CustomData_MeshMasks_are_matching(const CustomData_MeshMasks *mask_ref, const CustomData_MeshMasks *mask_required)
Definition: customdata.cc:87
void * CustomData_add_layer_named(struct CustomData *data, int type, eCDAllocType alloctype, void *layer, int totelem, const char *name)
Definition: customdata.cc:2792
void CustomData_data_add(int type, void *data1, const void *data2)
Definition: customdata.cc:4011
bool CustomData_has_referenced(const struct CustomData *data)
void CustomData_set_layer_clone(struct CustomData *data, int type, int n)
Definition: customdata.cc:2560
const char * CustomData_get_active_layer_name(const struct CustomData *data, int type)
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)
Definition: customdata.cc:3094
const CustomData_MeshMasks CD_MASK_BAREMESH
Definition: customdata.cc:2051
void CustomData_external_reload(struct CustomData *data, struct ID *id, eCustomDataMask mask, int totelem)
int CustomData_get_active_layer(const struct CustomData *data, int type)
void CustomData_bmesh_update_active_layers(struct CustomData *fdata, struct CustomData *ldata)
Definition: customdata.cc:3508
void CustomData_interp(const struct CustomData *source, struct CustomData *dest, const int *src_indices, const float *weights, const float *sub_weights, int count, int dest_index)
void * CustomData_get_layer_named(const struct CustomData *data, int type, const char *name)
bool CustomData_layertype_is_dynamic(int type)
Definition: customdata.cc:4286
int CustomData_get_stencil_layer(const struct CustomData *data, int type)
struct CustomDataTransferLayerMap CustomDataTransferLayerMap
bool CustomData_is_referenced_layer(struct CustomData *data, int type)
Definition: customdata.cc:3028
uint64_t eCustomDataMask
void CustomData_set_layer_render(struct CustomData *data, int type, int n)
Definition: customdata.cc:2551
void * CustomData_get_n(const struct CustomData *data, int type, int index, int n)
void CustomData_set(const struct CustomData *data, int index, int type, const void *source)
void CustomData_set_only_copy(const struct CustomData *data, eCustomDataMask mask)
void CustomData_data_copy_value(int type, const void *source, void *dest)
Definition: customdata.cc:3939
void CustomData_bmesh_init_pool(struct CustomData *data, int totelem, char htype)
Definition: customdata.cc:3541
void CustomData_bmesh_set_n(struct CustomData *data, void *block, int type, int n, const void *source)
Definition: customdata.cc:4037
void CustomData_layers__print(struct CustomData *data)
Definition: customdata.cc:4488
const CustomData_MeshMasks CD_MASK_BMESH
Definition: customdata.cc:2090
void CustomData_bmesh_set_default(struct CustomData *data, void **block)
Definition: customdata.cc:3756
void CustomData_data_multiply(int type, void *data, float fac)
Definition: customdata.cc:4002
const char * CustomData_layertype_name(int type)
Definition: customdata.cc:4275
void CustomData_set_layer_clone_index(struct CustomData *data, int type, int n)
Definition: customdata.cc:2602
void * CustomData_get_layer_n(const struct CustomData *data, int type, int n)
void CustomData_bmesh_copy_data(const struct CustomData *source, struct CustomData *dest, void *src_block, void **dest_block)
int CustomData_get_layer_index(const struct CustomData *data, int type)
bool(* cd_validate)(void *item, uint totitems, bool do_fixes)
void CustomData_data_initminmax(int type, void *min, void *max)
Definition: customdata.cc:3984
@ CD_FAKE_UV
@ CD_FAKE_LNOR
@ CD_FAKE_CREASE
@ CD_FAKE
@ CD_FAKE_SHARP
@ CD_FAKE_BWEIGHT
@ CD_FAKE_MDEFORMVERT
@ CD_FAKE_SHAPEKEY
@ CD_FAKE_SEAM
void * CustomData_get_layer(const struct CustomData *data, int type)
int CustomData_sizeof(int type)
Definition: customdata.cc:4268
void * CustomData_bmesh_get_layer_n(const struct CustomData *data, void *block, int n)
void CustomData_bmesh_free_block_data(struct CustomData *data, void *block)
Definition: customdata.cc:3689
void CustomData_file_write_info(int type, const char **r_struct_name, int *r_struct_num)
Definition: customdata.cc:4245
int CustomData_get_clone_layer_index(const struct CustomData *data, int type)
bool CustomData_external_test(struct CustomData *data, int type)
Definition: customdata.cc:4772
@ CDT_MIX_SUB
@ CDT_MIX_REPLACE_BELOW_THRESHOLD
@ CDT_MIX_REPLACE_ABOVE_THRESHOLD
@ CDT_MIX_ADD
@ CDT_MIX_MUL
@ CDT_MIX_TRANSFER
@ CDT_MIX_MIX
@ CDT_MIX_NOMIX
int CustomData_get_named_layer(const struct CustomData *data, int type, const char *name)
void CustomData_free_temporary(struct CustomData *data, int totelem)
Definition: customdata.cc:3041
void * CustomData_bmesh_get(const struct CustomData *data, void *block, int type)
void CustomData_set_layer_active_index(struct CustomData *data, int type, int n)
Definition: customdata.cc:2578
void * CustomData_add_layer(struct CustomData *data, int type, eCDAllocType alloctype, void *layer, int totelem)
Definition: customdata.cc:2776
int CustomData_get_n_offset(const struct CustomData *data, int type, int n)
void CustomData_set_layer_flag(struct CustomData *data, int type, int flag)
Definition: customdata.cc:2626
bool CustomData_has_interp(const struct CustomData *data)
void CustomData_external_read(struct CustomData *data, struct ID *id, eCustomDataMask mask, int totelem)
Definition: customdata.cc:4547
const CustomData_MeshMasks CD_MASK_DERIVEDMESH
Definition: customdata.cc:2077
void * CustomData_add_layer_anonymous(struct CustomData *data, int type, eCDAllocType alloctype, void *layer, int totelem, const struct AnonymousAttributeID *anonymous_id)
bool CustomData_layer_has_math(const struct CustomData *data, int layer_n)
void CustomData_free_elem(struct CustomData *data, int index, int count)
Definition: customdata.cc:3206
void CustomData_realloc(struct CustomData *data, int totelem)
Definition: customdata.cc:2307
void * CustomData_get(const struct CustomData *data, int index, int type)
void(* cd_copy)(const void *source, void *dest, int count)
void * CustomData_duplicate_referenced_layer(struct CustomData *data, int type, int totelem)
Definition: customdata.cc:2976
void CustomData_copy_elements(int type, void *src_data_ofs, void *dst_data_ofs, int count)
Definition: customdata.cc:3082
void CustomData_swap_corners(struct CustomData *data, int index, const int *corner_indices)
Definition: customdata.cc:3306
void CustomData_duplicate_referenced_layers(CustomData *data, int totelem)
Definition: customdata.cc:3020
void CustomData_data_dominmax(int type, const void *data, void *min, void *max)
Definition: customdata.cc:3993
void CustomData_data_mix_value(int type, const void *source, void *dest, int mixmode, float mixfactor)
Definition: customdata.cc:3955
void CustomData_set_layer_stencil(struct CustomData *data, int type, int n)
Definition: customdata.cc:2569
bool CustomData_set_layer_name(const struct CustomData *data, int type, int n, const char *name)
void CustomData_external_remove(struct CustomData *data, struct ID *id, int type, int totelem)
Definition: customdata.cc:4748
void CustomData_swap(struct CustomData *data, int index_a, int index_b)
Definition: customdata.cc:3319
void(* cd_interp)(const void **sources, const float *weights, const float *sub_weights, int count, void *dest)
void * CustomData_duplicate_referenced_layer_n(struct CustomData *data, int type, int n, int totelem)
Definition: customdata.cc:2984
void CustomData_bmesh_set_layer_n(struct CustomData *data, void *block, int n, const void *source)
Definition: customdata.cc:4054
void CustomData_copy_data(const struct CustomData *source, struct CustomData *dest, int source_index, int dest_index, int count)
bool CustomData_bmesh_has_free(const struct CustomData *data)
int CustomData_get_offset(const struct CustomData *data, int type)
const CustomData_MeshMasks CD_MASK_MESH
Definition: customdata.cc:2065
void CustomData_bmesh_interp(struct CustomData *data, const void **src_blocks, const float *weights, const float *sub_weights, int count, void *dst_block)
Definition: customdata.cc:4088
bool CustomData_bmesh_merge(const struct CustomData *source, struct CustomData *dest, eCustomDataMask mask, eCDAllocType alloctype, struct BMesh *bm, char htype)
void CustomData_free_typemask(struct CustomData *data, int totelem, eCustomDataMask mask)
Definition: customdata.cc:2387
int CustomData_number_of_layers_typemask(const struct CustomData *data, eCustomDataMask mask)
void CustomData_bmesh_set(const struct CustomData *data, void *block, int type, const void *source)
void customData_mask_layers__print(const struct CustomData_MeshMasks *mask)
void CustomData_validate_layer_name(const struct CustomData *data, int type, const char *name, char *outname)
void CustomData_bmesh_free_block(struct CustomData *data, void **block)
Definition: customdata.cc:3665
void CustomData_reset(struct CustomData *data)
Definition: customdata.cc:2367
void CustomData_update_typemap(struct CustomData *data)
Definition: customdata.cc:2193
void CustomData_bmesh_copy_data_exclude_by_type(const struct CustomData *source, struct CustomData *dest, void *src_block, void **dest_block, eCustomDataMask mask_exclude)
void * CustomData_bmesh_get_n(const struct CustomData *data, void *block, int type, int n)
int CustomData_get_render_layer(const struct CustomData *data, int type)
void CustomData_to_bmesh_block(const struct CustomData *source, struct CustomData *dest, int src_index, void **dest_block, bool use_default_init)
bool CustomData_verify_versions(struct CustomData *data, int index)
Definition: customdata.cc:4388
void BLI_kdtree_nd_() free(KDTree *tree)
Definition: kdtree_impl.h:102
unsigned int uint
Definition: BLI_sys_types.h:67
eCustomDataType
@ CD_CUSTOMLOOPNORMAL
@ CD_MDEFORMVERT
@ CD_SHAPEKEY
@ CD_BWEIGHT
@ CD_MLOOPUV
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
ATTR_WARN_UNUSED_RESULT BMesh * bm
void CustomData_blend_write(BlendWriter *writer, CustomData *data, Span< CustomDataLayer > layers_to_write, int count, eCustomDataMask cddata_mask, ID *id)
Definition: customdata.cc:5108
void CustomData_blend_write_prepare(CustomData &data, Vector< CustomDataLayer, 16 > &layers_to_write)
Definition: customdata.cc:4253
SyclQueue void void size_t num_bytes void
SyclQueue void * dest
static const float data2[18 *GP_PRIM_DATABUF_SIZE]
static const float data1[33 *GP_PRIM_DATABUF_SIZE]
int count
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
Definition: math_float4.h:513
const blender::CPPType * custom_data_type_to_cpp_type(const eCustomDataType type)
Definition: customdata.cc:5312
eCustomDataType cpp_type_to_custom_data_type(const blender::CPPType &type)
Definition: customdata.cc:5337
#define min(a, b)
Definition: sort.c:35
unsigned __int64 uint64_t
Definition: stdint.h:90
struct CustomDataTransferLayerMap * next
struct CustomDataTransferLayerMap * prev
cd_datatransfer_interp interp
Definition: DNA_ID.h:368
float max
PointerRNA * ptr
Definition: wm_files.c:3480