Blender  V3.3
DNA_customdata_types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 
10 #pragma once
11 
12 #include "DNA_defs.h"
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
19 
21 typedef struct CustomDataLayer {
23  int type;
25  int offset;
27  int flag;
29  int active;
37  int uid;
39  char name[64];
41  void *data;
50 
51 #define MAX_CUSTOMDATA_LAYER_NAME 64
52 
53 typedef struct CustomDataExternal {
55  char filepath[1024];
57 
63 typedef struct CustomData {
71  int typemap[52];
72  char _pad[4];
76  int totsize;
78  struct BLI_mempool *pool;
82 
84 typedef enum eCustomDataType {
85  /* Used by GLSL attributes in the cases when we need a delayed CD type
86  * assignment (in the cases when we don't know in advance which layer
87  * we are addressing).
88  */
90 
91  CD_MVERT = 0,
92 #ifdef DNA_DEPRECATED_ALLOW
93  CD_MSTICKY = 1, /* DEPRECATED */
94 #endif
96  CD_MEDGE = 3,
97  CD_MFACE = 4,
98  CD_MTFACE = 5,
99  CD_MCOL = 6,
106  CD_FACEMAP = 9, /* exclusive face group, each face can only be part of one */
110  CD_ORIGSPACE = 13, /* for modifier stack face location mapping */
111  CD_ORCO = 14, /* undeformed vertex coordinates, normalized to 0..1 range */
112 #ifdef DNA_DEPRECATED_ALLOW
113  CD_MTEXPOLY = 15, /* deprecated */
114 #endif
118  CD_MDISPS = 19,
119  CD_PREVIEW_MCOL = 20, /* for displaying weightpaint colors */
120  /* CD_ID_MCOL = 21, */
121  /* CD_TEXTURE_MLOOPCOL = 22, */ /* UNUSED */
123  /* CD_RECAST = 24, */ /* UNUSED */
124 
125  CD_MPOLY = 25,
126  CD_MLOOP = 26,
136  CD_CREASE = 30,
140 
150 
151  /* CD_LOCATION = 43, */ /* UNUSED */
152  /* CD_RADIUS = 44, */ /* UNUSED */
154  /* CD_HAIRMAPPING = 46, */ /* UNUSED, can be reused. */
155 
160 
162 
165 
166 /* Bits for eCustomDataMask */
167 #define CD_MASK_MVERT (1 << CD_MVERT)
168 // #define CD_MASK_MSTICKY (1 << CD_MSTICKY) /* DEPRECATED */
169 #define CD_MASK_MDEFORMVERT (1 << CD_MDEFORMVERT)
170 #define CD_MASK_MEDGE (1 << CD_MEDGE)
171 #define CD_MASK_MFACE (1 << CD_MFACE)
172 #define CD_MASK_MTFACE (1 << CD_MTFACE)
173 #define CD_MASK_MCOL (1 << CD_MCOL)
174 #define CD_MASK_ORIGINDEX (1 << CD_ORIGINDEX)
175 #define CD_MASK_NORMAL (1 << CD_NORMAL)
176 #define CD_MASK_FACEMAP (1 << CD_FACEMAP)
177 #define CD_MASK_PROP_FLOAT (1 << CD_PROP_FLOAT)
178 #define CD_MASK_PROP_INT32 (1 << CD_PROP_INT32)
179 #define CD_MASK_PROP_STRING (1 << CD_PROP_STRING)
180 #define CD_MASK_ORIGSPACE (1 << CD_ORIGSPACE)
181 #define CD_MASK_ORCO (1 << CD_ORCO)
182 // #define CD_MASK_MTEXPOLY (1 << CD_MTEXPOLY) /* DEPRECATED */
183 #define CD_MASK_MLOOPUV (1 << CD_MLOOPUV)
184 #define CD_MASK_PROP_BYTE_COLOR (1 << CD_PROP_BYTE_COLOR)
185 #define CD_MASK_TANGENT (1 << CD_TANGENT)
186 #define CD_MASK_MDISPS (1 << CD_MDISPS)
187 #define CD_MASK_PREVIEW_MCOL (1 << CD_PREVIEW_MCOL)
188 #define CD_MASK_CLOTH_ORCO (1 << CD_CLOTH_ORCO)
189 // #define CD_MASK_RECAST (1 << CD_RECAST) /* DEPRECATED */
190 
191 #define CD_MASK_MPOLY (1 << CD_MPOLY)
192 #define CD_MASK_MLOOP (1 << CD_MLOOP)
193 #define CD_MASK_SHAPE_KEYINDEX (1 << CD_SHAPE_KEYINDEX)
194 #define CD_MASK_SHAPEKEY (1 << CD_SHAPEKEY)
195 #define CD_MASK_BWEIGHT (1 << CD_BWEIGHT)
196 #define CD_MASK_CREASE (1 << CD_CREASE)
197 #define CD_MASK_ORIGSPACE_MLOOP (1LL << CD_ORIGSPACE_MLOOP)
198 #define CD_MASK_PREVIEW_MLOOPCOL (1LL << CD_PREVIEW_MLOOPCOL)
199 #define CD_MASK_BM_ELEM_PYPTR (1LL << CD_BM_ELEM_PYPTR)
200 
201 #define CD_MASK_PAINT_MASK (1LL << CD_PAINT_MASK)
202 #define CD_MASK_GRID_PAINT_MASK (1LL << CD_GRID_PAINT_MASK)
203 #define CD_MASK_MVERT_SKIN (1LL << CD_MVERT_SKIN)
204 #define CD_MASK_FREESTYLE_EDGE (1LL << CD_FREESTYLE_EDGE)
205 #define CD_MASK_FREESTYLE_FACE (1LL << CD_FREESTYLE_FACE)
206 #define CD_MASK_MLOOPTANGENT (1LL << CD_MLOOPTANGENT)
207 #define CD_MASK_TESSLOOPNORMAL (1LL << CD_TESSLOOPNORMAL)
208 #define CD_MASK_CUSTOMLOOPNORMAL (1LL << CD_CUSTOMLOOPNORMAL)
209 #define CD_MASK_SCULPT_FACE_SETS (1LL << CD_SCULPT_FACE_SETS)
210 #define CD_MASK_PROP_COLOR (1ULL << CD_PROP_COLOR)
211 #define CD_MASK_PROP_FLOAT3 (1ULL << CD_PROP_FLOAT3)
212 #define CD_MASK_PROP_FLOAT2 (1ULL << CD_PROP_FLOAT2)
213 #define CD_MASK_PROP_BOOL (1ULL << CD_PROP_BOOL)
214 #define CD_MASK_PROP_INT8 (1ULL << CD_PROP_INT8)
215 
216 #define CD_MASK_HAIRLENGTH (1ULL << CD_HAIRLENGTH)
217 
219 #define CD_MASK_MULTIRES_GRIDS (CD_MASK_MDISPS | CD_GRID_PAINT_MASK)
220 
221 /* All data layers. */
222 #define CD_MASK_ALL (~0LL)
223 
224 /* All generic attributes. */
225 #define CD_MASK_PROP_ALL \
226  (CD_MASK_PROP_FLOAT | CD_MASK_PROP_FLOAT2 | CD_MASK_PROP_FLOAT3 | CD_MASK_PROP_INT32 | \
227  CD_MASK_PROP_COLOR | CD_MASK_PROP_STRING | CD_MASK_PROP_BYTE_COLOR | CD_MASK_PROP_BOOL | \
228  CD_MASK_PROP_INT8)
229 
230 /* All color attributes */
231 #define CD_MASK_COLOR_ALL (CD_MASK_PROP_COLOR | CD_MASK_PROP_BYTE_COLOR)
232 
233 typedef struct CustomData_MeshMasks {
240 
242 enum {
243  /* Indicates layer should not be copied by CustomData_from_template or CustomData_copy_data */
244  CD_FLAG_NOCOPY = (1 << 0),
245  /* Indicates layer should not be freed (for layers backed by external data) */
246  CD_FLAG_NOFREE = (1 << 1),
247  /* Indicates the layer is only temporary, also implies no copy */
249  /* Indicates the layer is stored in an external file */
250  CD_FLAG_EXTERNAL = (1 << 3),
251  /* Indicates external data is read into memory */
252  CD_FLAG_IN_MEMORY = (1 << 4),
254  CD_FLAG_COLOR_RENDER = (1 << 6)
255 };
256 
257 /* Limits */
258 #define MAX_MTFACE 8
259 
260 #define DYNTOPO_NODE_NONE -1
261 
262 #ifdef __cplusplus
263 }
264 #endif
struct CustomDataLayer CustomDataLayer
@ CD_FLAG_NOCOPY
@ CD_FLAG_IN_MEMORY
@ CD_FLAG_COLOR_RENDER
@ CD_FLAG_TEMPORARY
@ CD_FLAG_NOFREE
@ CD_FLAG_COLOR_ACTIVE
@ CD_FLAG_EXTERNAL
struct CustomDataExternal CustomDataExternal
struct CustomData_MeshMasks CustomData_MeshMasks
eCustomDataType
@ CD_PROP_BYTE_COLOR
@ CD_FACEMAP
@ CD_MLOOPTANGENT
@ CD_PAINT_MASK
@ CD_MVERT_SKIN
@ CD_PROP_FLOAT
@ CD_CUSTOMLOOPNORMAL
@ CD_TESSLOOPNORMAL
@ CD_MTFACE
@ CD_PROP_FLOAT3
@ CD_PREVIEW_MCOL
@ CD_MFACE
@ CD_MDEFORMVERT
@ CD_ORIGINDEX
@ CD_PROP_COLOR
@ CD_NUMTYPES
@ CD_BM_ELEM_PYPTR
@ CD_PROP_INT8
@ CD_PROP_INT32
@ CD_PROP_FLOAT2
@ CD_ORIGSPACE_MLOOP
@ CD_PROP_BOOL
@ CD_HAIRLENGTH
@ CD_ORIGSPACE
@ CD_SCULPT_FACE_SETS
@ CD_FREESTYLE_EDGE
@ CD_SHAPEKEY
@ CD_FREESTYLE_FACE
@ CD_MEDGE
@ CD_GRID_PAINT_MASK
@ CD_CLOTH_ORCO
@ CD_PREVIEW_MLOOPCOL
@ CD_MVERT
@ CD_PROP_STRING
@ CD_BWEIGHT
@ CD_MLOOPUV
@ CD_AUTO_FROM_NAME
@ CD_TANGENT
@ CD_SHAPE_KEYINDEX
struct CustomData CustomData
unsigned __int64 uint64_t
Definition: stdint.h:90
const struct AnonymousAttributeID * anonymous_id
struct BLI_mempool * pool
CustomDataLayer * layers
CustomDataExternal * external