== file browser ==
[blender.git] / source / blender / makesdna / DNA_customdata_types.h
index 73a39abac55373d47675f6271cef780bd108bf71..cdfcf465c6cd92ad684cfa33e37de872e742c7b2 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -15,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * ***** END GPL LICENSE BLOCK *****
  */
+
+/** \file DNA_customdata_types.h
+ *  \ingroup DNA
+ */
+
 #ifndef DNA_CUSTOMDATA_TYPES_H
 #define DNA_CUSTOMDATA_TYPES_H
 
-/* descriptor and storage for a custom data layer */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** descriptor and storage for a custom data layer */
 typedef struct CustomDataLayer {
        int type;       /* type of data in layer */
        int offset;     /* in editmode, offset of layer in block */
        int flag;       /* general purpose flag */
        int active;     /* number of the active layer of this type */
        int active_rnd; /* number of the layer to render*/
+       int active_clone; /* number of the layer to render*/
+       int active_mask; /* number of the layer to render*/
        char pad[4];
        char name[32];  /* layer name */
        void *data;     /* layer data */
 } CustomDataLayer;
 
-/* structure which stores custom element data associated with mesh elements
+typedef struct CustomDataExternal {
+       char filename[240]; /* FILE_MAX */
+} CustomDataExternal;
+
+/** structure which stores custom element data associated with mesh elements
  * (vertices, edges or faces). The custom data is organised into a series of
  * layers, each with a data type (e.g. MTFace, MDeformVert, etc.). */
 typedef struct CustomData {
-       CustomDataLayer *layers;  /* CustomDataLayers, ordered by type */
-       int totlayer, maxlayer;   /* number of layers, size of layers array */
-       int totsize, pad;         /* in editmode, total size of all data layers */
+       CustomDataLayer *layers;      /* CustomDataLayers, ordered by type */
+       int totlayer, maxlayer;       /* number of layers, size of layers array */
+       int totsize, pad;             /* in editmode, total size of all data layers */
+       void *pool;                   /* Bmesh: Memory pool for allocation of blocks */
+       CustomDataExternal *external; /* external file storing customdata layers */
 } CustomData;
 
 /* CustomData.type */
@@ -66,7 +83,16 @@ typedef struct CustomData {
 #define CD_PROP_STR            12
 #define CD_ORIGSPACE   13 /* for modifier stack face location mapping */
 #define CD_ORCO                        14
-#define CD_NUMTYPES            15
+#define CD_MTEXPOLY            15
+#define CD_MLOOPUV             16
+#define CD_MLOOPCOL            17
+#define CD_TANGENT             18
+#define CD_MDISPS              19
+#define CD_WEIGHT_MCOL 20 /* for displaying weightpaint colors */
+#define CD_ID_MCOL             21
+#define CD_TEXTURE_MCOL        22
+#define CD_CLOTH_ORCO  23
+#define CD_NUMTYPES            24
 
 /* Bits for CustomDataMask */
 #define CD_MASK_MVERT          (1 << CD_MVERT)
@@ -84,7 +110,13 @@ typedef struct CustomData {
 #define CD_MASK_PROP_STR       (1 << CD_PROP_STR)
 #define CD_MASK_ORIGSPACE      (1 << CD_ORIGSPACE)
 #define CD_MASK_ORCO           (1 << CD_ORCO)
-
+#define CD_MASK_MTEXPOLY       (1 << CD_MTEXPOLY)
+#define CD_MASK_MLOOPUV                (1 << CD_MLOOPUV)
+#define CD_MASK_MLOOPCOL       (1 << CD_MLOOPCOL)
+#define CD_MASK_TANGENT                (1 << CD_TANGENT)
+#define CD_MASK_MDISPS         (1 << CD_MDISPS)
+#define CD_MASK_WEIGHT_MCOL    (1 << CD_WEIGHT_MCOL)
+#define CD_MASK_CLOTH_ORCO     (1 << CD_CLOTH_ORCO)
 
 /* CustomData.flag */
 
@@ -95,9 +127,17 @@ typedef struct CustomData {
 #define CD_FLAG_NOFREE    (1<<1)
 /* indicates the layer is only temporary, also implies no copy */
 #define CD_FLAG_TEMPORARY ((1<<2)|CD_FLAG_NOCOPY)
+/* indicates the layer is stored in an external file */
+#define CD_FLAG_EXTERNAL  (1<<3)
+/* indicates external data is read into memory */
+#define CD_FLAG_IN_MEMORY (1<<4)
 
 /* Limits */
 #define MAX_MTFACE 8
 #define MAX_MCOL   8
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif