== file browser ==
[blender.git] / source / blender / makesdna / DNA_customdata_types.h
index 18c18d9e9ddce108dd30acbfcc75c7dfbe4a03c2..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 */
@@ -44,14 +52,19 @@ typedef struct CustomDataLayer {
        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 */
-       void *pool;               /* for Bmesh: Memory pool for allocation of blocks*/
+       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 */
@@ -76,7 +89,10 @@ typedef struct CustomData {
 #define CD_TANGENT             18
 #define CD_MDISPS              19
 #define CD_WEIGHT_MCOL 20 /* for displaying weightpaint colors */
-#define CD_NUMTYPES            21
+#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)
@@ -100,9 +116,7 @@ typedef struct CustomData {
 #define CD_MASK_TANGENT                (1 << CD_TANGENT)
 #define CD_MASK_MDISPS         (1 << CD_MDISPS)
 #define CD_MASK_WEIGHT_MCOL    (1 << CD_WEIGHT_MCOL)
-
-/* derivedmesh wants CustomDataMask for weightpaint too, is not customdata though */
-#define CD_MASK_WEIGHTPAINT    (1 << CD_WEIGHTPAINT)
+#define CD_MASK_CLOTH_ORCO     (1 << CD_CLOTH_ORCO)
 
 /* CustomData.flag */
 
@@ -113,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