soc-2008-mxcurioni: merged changes to revision 23516
[blender.git] / source / blender / makesdna / DNA_armature_types.h
index 82d120533d6da6ee04e4e762d42ef1ca748640fb..590e7dadcdcaec9c5676acf787fdd559b2ba911c 100644 (file)
@@ -1,15 +1,12 @@
 /**
  * $Id$
  *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -25,7 +22,7 @@
  *
  * Contributor(s): Full recode, Ton Roosendaal, Crete 2005
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  */
 
 #ifndef DNA_ARMATURE_TYPES_H
@@ -34,6 +31,8 @@
 #include "DNA_listBase.h"
 #include "DNA_ID.h"
 
+struct AnimData;
+
 /* this system works on different transformation space levels;
 
 1) Bone Space;         with each Bone having own (0,0,0) origin
@@ -68,12 +67,17 @@ typedef struct Bone {
        float                   size[3];                /*  patch for upward compat, UNUSED! */
        short                   layer;
        short                   segments;               /*  for B-bones */
-}Bone;
+} Bone;
 
 typedef struct bArmature {
        ID                      id;
+       struct AnimData *adt;
        ListBase        bonebase;
        ListBase        chainbase;
+       ListBase        *edbo;                                  /* editbone listbase, we use pointer so we can check state */
+       
+       void            *sketch;                                /* sketch struct for etch-a-ton */
+       
        int                     flag;
        int                     drawtype;                       
        short           deformflag; 
@@ -84,75 +88,84 @@ typedef struct bArmature {
        int                     ghostsf, ghostef;               /* start and end frames of ghost-drawing range */
        int             pathsf, pathef;                 /* start and end frames of path-calculation range for all bones */
        int                     pathbc, pathac;                 /* number of frames before/after current frame of path-calculation for all bones  */
-}bArmature;
+} bArmature;
 
 /* armature->flag */
 /* dont use bit 7, was saved in files to disable stuff */
-
-/* armature->flag */
-#define                ARM_RESTPOS             0x001
-                       /* XRAY is here only for backwards converting */
-#define                ARM_DRAWXRAY    0x002
-#define                ARM_DRAWAXES    0x004
-#define                ARM_DRAWNAMES   0x008
-#define                ARM_POSEMODE    0x010
-#define                ARM_EDITMODE    0x020
-#define                ARM_DELAYDEFORM 0x040
-#define                ARM_DONT_USE    0x080
-#define                ARM_MIRROR_EDIT 0x100
-#define                ARM_AUTO_IK             0x200
-                       /* made option negative, for backwards compat */
-#define                ARM_NO_CUSTOM   0x400
-#define                ARM_COL_CUSTOM  0x800
+typedef enum eArmature_Flag {
+       ARM_RESTPOS                     = (1<<0),
+       ARM_DRAWXRAY            = (1<<1),       /* XRAY is here only for backwards converting */
+       ARM_DRAWAXES            = (1<<2),
+       ARM_DRAWNAMES           = (1<<3), 
+       ARM_POSEMODE            = (1<<4), 
+       ARM_EDITMODE            = (1<<5), 
+       ARM_DELAYDEFORM         = (1<<6), 
+       ARM_DONT_USE            = (1<<7),
+       ARM_MIRROR_EDIT         = (1<<8),
+       ARM_AUTO_IK                     = (1<<9),
+       ARM_NO_CUSTOM           = (1<<10),      /* made option negative, for backwards compat */
+       ARM_COL_CUSTOM          = (1<<11),      /* draw custom colours  */
+       ARM_GHOST_ONLYSEL       = (1<<12),      /* when ghosting, only show selected bones (this should belong to ghostflag instead) */
+       ARM_DS_EXPAND           = (1<<13)
+} eArmature_Flag;
 
 /* armature->drawtype */
-#define                ARM_OCTA                0
-#define                ARM_LINE                1
-#define                ARM_B_BONE              2
-#define                ARM_ENVELOPE    3
+typedef enum eArmature_Drawtype {
+       ARM_OCTA = 0,
+       ARM_LINE,
+       ARM_B_BONE,
+       ARM_ENVELOPE
+} eArmature_Drawtype;
 
 /* armature->deformflag */
-#define                ARM_DEF_VGROUP          1
-#define                ARM_DEF_ENVELOPE        2
-#define                ARM_DEF_QUATERNION      4
-#define                ARM_DEF_B_BONE_REST     8
+typedef enum eArmature_DeformFlag {
+       ARM_DEF_VGROUP                  = (1<<0),
+       ARM_DEF_ENVELOPE                = (1<<1),
+       ARM_DEF_QUATERNION              = (1<<2),
+       ARM_DEF_B_BONE_REST             = (1<<3),
+       ARM_DEF_INVERT_VGROUP   = (1<<4)
+} eArmature_DeformFlag;
 
 /* armature->pathflag */
-#define                ARM_PATH_FNUMS          (1<<0)
-#define                ARM_PATH_KFRAS          (1<<1)
-#define                ARM_PATH_HEADS          (1<<2)
-#define        ARM_PATH_ACFRA          (1<<3)
+typedef enum eArmature_PathFlag {
+       ARM_PATH_FNUMS          = (1<<0),
+       ARM_PATH_KFRAS          = (1<<1),
+       ARM_PATH_HEADS          = (1<<2),
+       ARM_PATH_ACFRA          = (1<<3),
+       ARM_PATH_KFNOS          = (1<<4)
+} eArmature_PathFlag;
 
 /* armature->ghosttype */
-#define        ARM_GHOST_CUR   0
-#define                ARM_GHOST_RANGE 1
+typedef enum eArmature_GhostType {
+       ARM_GHOST_CUR = 0,
+       ARM_GHOST_RANGE,
+       ARM_GHOST_KEYS
+} eArmature_GhostType;
 
 /* bone->flag */
-#define                BONE_SELECTED   1
-#define                BONE_ROOTSEL    2
-#define                BONE_TIPSEL             4
-                       /* Used instead of BONE_SELECTED during transform */
-#define                BONE_TRANSFORM  8
-#define                BONE_CONNECTED 16
-                       /* 32 used to be quatrot, was always set in files, do not reuse unless you clear it always */
-                       /* hidden Bones when drawing Posechannels */
-#define                BONE_HIDDEN_P           64
-                       /* For detecting cyclic dependancies */
-#define                BONE_DONE               128
-                       /* active is on mouse clicks only */
-#define                BONE_ACTIVE             256
-                       /* No parent rotation or scale */
-#define                BONE_HINGE              512
-                       /* hidden Bones when drawing Armature Editmode */
-#define                BONE_HIDDEN_A           1024
-                       /* multiplies vgroup with envelope */
-#define                BONE_MULT_VG_ENV        2048
-#define                BONE_NO_DEFORM          4096
-                       /* set to prevent destruction of its unkeyframed pose (after transform) */
-#define        BONE_UNKEYED            8192
-                       /* set to prevent hinge child bones from influencing the transform center */
-#define        BONE_HINGE_CHILD_TRANSFORM 16384
-                       /* No parent scale */
-#define                BONE_NO_SCALE           (1<<15)
+typedef enum eBone_Flag {
+       BONE_SELECTED                           = (1<<0),
+       BONE_ROOTSEL                            = (1<<1),
+       BONE_TIPSEL                                     = (1<<2),
+       BONE_TRANSFORM                          = (1<<3),       /* Used instead of BONE_SELECTED during transform */
+       BONE_CONNECTED                          = (1<<4),       /* when bone has a parent, connect head of bone to parent's tail*/
+       /* 32 used to be quatrot, was always set in files, do not reuse unless you clear it always */   
+       BONE_HIDDEN_P                           = (1<<6),       /* hidden Bones when drawing PoseChannels */    
+       BONE_DONE                                       = (1<<7),       /* For detecting cyclic dependancies */
+       BONE_ACTIVE                                     = (1<<8),       /* active is on mouse clicks only */
+       BONE_HINGE                                      = (1<<9),       /* No parent rotation or scale */
+       BONE_HIDDEN_A                           = (1<<10),      /* hidden Bones when drawing Armature Editmode */
+       BONE_MULT_VG_ENV                        = (1<<11),      /* multiplies vgroup with envelope */
+       BONE_NO_DEFORM                          = (1<<12),      /* bone doesn't deform geometry */
+       BONE_UNKEYED                            = (1<<13),      /* set to prevent destruction of its unkeyframed pose (after transform) */              
+       BONE_HINGE_CHILD_TRANSFORM      = (1<<14),      /* set to prevent hinge child bones from influencing the transform center */
+       BONE_NO_SCALE                           = (1<<15),      /* No parent scale */
+       BONE_HIDDEN_PG                          = (1<<16),      /* hidden bone when drawing PoseChannels (for ghost drawing) */
+       BONE_DRAWWIRE                           = (1<<17),      /* bone should be drawn as OB_WIRE, regardless of draw-types of view+armature */
+       BONE_NO_CYCLICOFFSET            = (1<<18),      /* when no parent, bone will not get cyclic offset */
+       BONE_EDITMODE_LOCKED            = (1<<19),      /* bone transforms are locked in EditMode */
+       BONE_TRANSFORM_CHILD            = (1<<20),      /* Indicates that a parent is also being transformed */
+       BONE_UNSELECTABLE                       = (1<<21),      /* bone cannot be selected */
+} eBone_Flag;
 
 #endif