GSOC 2013 paint
[blender.git] / source / blender / makesdna / DNA_modifier_types.h
index b3c7427074c4f209f4a05d307890d388909c2f56..2bd33ae60f22cbca1012dd303d6125aa07573518 100644 (file)
@@ -81,6 +81,7 @@ typedef enum ModifierType {
        eModifierType_UVWarp            = 45,
        eModifierType_MeshCache         = 46,
        eModifierType_LaplacianDeform   = 47,
+       eModifierType_Wireframe         = 48,
        NUM_MODIFIER_TYPES
 } ModifierType;
 
@@ -166,9 +167,18 @@ typedef struct BuildModifierData {
        ModifierData modifier;
 
        float start, length;
-       int randomize, seed;
+       short flag;
+       
+       short randomize;      /* (bool) whether order of vertices is randomized - legacy files (for readfile conversion) */
+       int seed;             /* (int) random seed */
 } BuildModifierData;
 
+/* Build Modifier -> flag */
+enum {
+       MOD_BUILD_FLAG_RANDOMIZE = (1 << 0),  /* order of vertices is randomized */
+       MOD_BUILD_FLAG_REVERSE   = (1 << 1),  /* frame range is reversed, resulting in a deconstruction effect */
+};
+
 /* Mask Modifier */
 typedef struct MaskModifierData {
        ModifierData modifier;
@@ -294,17 +304,21 @@ typedef struct BevelModifierData {
 
        float value;          /* the "raw" bevel value (distance/amount to bevel) */
        int res;              /* the resolution (as originally coded, it is the number of recursive bevels) */
-       int pad;
        short flags;          /* general option flags */
-       short val_flags;      /* flags used to interpret the bevel value */
+       short val_flags;      /* used to interpret the bevel value */
        short lim_flags;      /* flags to tell the tool how to limit the bevel */
        short e_flags;        /* flags to direct how edge weights are applied to verts */
+       short mat;            /* material index if >= 0, else material inherited from surrounding faces */
+       short pad;
+       int pad2;
+       float profile;        /* controls profile shape (0->1, .5 is round) */
        /* if the MOD_BEVEL_ANGLE is set, this will be how "sharp" an edge must be before it gets beveled */
        float bevel_angle;
        /* if the MOD_BEVEL_VWEIGHT option is set, this will be the name of the vert group, MAX_VGROUP_NAME */
        char defgrp_name[64];
 } BevelModifierData;
 
+/* BevelModifierData->flags and BevelModifierData->lim_flags */
 enum {
        MOD_BEVEL_VERT          = (1 << 1),
 /*     MOD_BEVEL_RADIUS        = (1 << 2), */
@@ -323,6 +337,14 @@ enum {
        MOD_BEVEL_OVERLAP_OK    = (1 << 13),
 };
 
+/* BevelModifierData->val_flags (not used as flags any more) */
+enum {
+       MOD_BEVEL_AMT_OFFSET = 0,
+       MOD_BEVEL_AMT_WIDTH = 1,
+       MOD_BEVEL_AMT_DEPTH = 2,
+       MOD_BEVEL_AMT_PERCENT = 3,
+};
+
 typedef struct SmokeModifierData {
        ModifierData modifier;
 
@@ -603,7 +625,7 @@ typedef struct MeshDeformModifierData {
        struct Object *object;          /* mesh object */
        char defgrp_name[64];           /* optional vertexgroup name, MAX_VGROUP_NAME */
 
-       short gridsize, flag, mode, pad;
+       short gridsize, flag, pad[2];
 
        /* result of static binding */
        MDefInfluence *bindinfluences;  /* influences */
@@ -614,7 +636,7 @@ typedef struct MeshDeformModifierData {
        /* result of dynamic binding */
        MDefCell *dyngrid;              /* grid with dynamic binding cell points */
        MDefInfluence *dyninfluences;   /* dynamic binding vertex influences */
-       int *dynverts, *pad2;           /* is this vertex bound or not? */
+       int *dynverts;                  /* is this vertex bound or not? */
        int dyngridsize;                /* size of the dynamic bind grid */
        int totinfluence;               /* total number of vertex influences */
        float dyncellmin[3];            /* offset of the dynamic bind grid */
@@ -719,7 +741,8 @@ typedef struct ShrinkwrapModifierData {
        char vgroup_name[64];     /* optional vertexgroup name, MAX_VGROUP_NAME */
        float keepDist;           /* distance offset to keep from mesh/projection point */
        short shrinkType;         /* shrink type projection */
-       short shrinkOpts;         /* shrink options */
+       char  shrinkOpts;         /* shrink options */
+       char  pad1;
        float projLimit;          /* limit the projection ray cast */
        char  projAxis;           /* axis to project over */
 
@@ -1201,7 +1224,7 @@ enum {
 /* Triangulate methods - NGons */
 enum {
        MOD_TRIANGULATE_NGON_BEAUTY = 0,
-       MOD_TRIANGULATE_NGON_SCANFILL,
+       MOD_TRIANGULATE_NGON_EARCLIP,
 };
 
 /* Triangulate methods - Quads */
@@ -1321,5 +1344,27 @@ enum {
        MOD_LAPLACIANDEFORM_BIND = 1,
 };
 
+/* many of these options match 'solidify' */
+typedef struct WireframeModifierData {
+       ModifierData modifier;
+       char defgrp_name[64];  /* MAX_VGROUP_NAME */
+       float offset;
+       float offset_fac;
+       float offset_fac_vg;
+       float crease_weight;
+       short flag, mat_ofs;
+       short pad[2];
+} WireframeModifierData;
+
+enum {
+       MOD_WIREFRAME_INVERT_VGROUP = (1 << 0),
+       MOD_WIREFRAME_REPLACE       = (1 << 1),
+       MOD_WIREFRAME_BOUNDARY      = (1 << 2),
+       MOD_WIREFRAME_OFS_EVEN      = (1 << 3),
+       MOD_WIREFRAME_OFS_RELATIVE  = (1 << 4),
+       MOD_WIREFRAME_CREASE        = (1 << 5),
+};
+
+
 
 #endif  /* __DNA_MODIFIER_TYPES_H__ */