Merged changes in the trunk up to revision 26856.
[blender-staging.git] / source / blender / makesdna / DNA_scene_types.h
index e069136d46a81721fcaa708aafc89c32083f93bb..df7035146e334ff5a64316a94fd632d4f0438b79 100644 (file)
@@ -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.
@@ -29,6 +29,9 @@
 #ifndef DNA_SCENE_TYPES_H
 #define DNA_SCENE_TYPES_H
 
+// XXX, temp feature
+#define DURIAN_CAMERA_SWITCH
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -37,6 +40,7 @@ extern "C" {
 #include "DNA_vec_types.h"
 #include "DNA_listBase.h"
 #include "DNA_ID.h"
+#include "DNA_freestyle_types.h"
 
 struct Object;
 struct World;
@@ -77,7 +81,7 @@ typedef struct AviCodecData {
 } AviCodecData;
 
 typedef struct QuicktimeCodecData {
-
+       /*Old quicktime implementation compatibility fields, read only in 2.5 - deprecated*/
        void                    *cdParms;   /* codec/compressor options */
        void                    *pad;       /* padding */
 
@@ -86,6 +90,22 @@ typedef struct QuicktimeCodecData {
 
        char                    qtcodecname[128];
 } QuicktimeCodecData;
+       
+typedef struct QuicktimeCodecSettings {
+       /* Codec settings detailed for 2.5 implementation*/
+       int codecType; /* Types defined in quicktime_export.h */
+       int     codecSpatialQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
+
+       /* Settings not available in current QTKit API */
+       int     codec;
+       int     codecFlags;
+       int     colorDepth;
+       int     codecTemporalQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
+       int     minSpatialQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
+       int     minTemporalQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
+       int     keyFrameRate;
+       int     bitRate;        /* bitrate in bps */
+} QuicktimeCodecSettings;
 
 typedef struct FFMpegCodecData {
        int type;
@@ -133,6 +153,9 @@ typedef struct SceneRenderLayer {
        
        int passflag;                   /* pass_xor has to be after passflag */
        int pass_xor;
+       
+       struct FreestyleConfig freestyleConfig;
+       
 } SceneRenderLayer;
 
 /* srl->layflag */
@@ -142,6 +165,7 @@ typedef struct SceneRenderLayer {
 #define SCE_LAY_EDGE   8
 #define SCE_LAY_SKY            16
 #define SCE_LAY_STRAND 32
+#define SCE_LAY_FRS            64
        /* flags between 32 and 0x8000 are set to 1 already, for future options */
 
 #define SCE_LAY_ALL_Z          0x8000
@@ -151,23 +175,25 @@ typedef struct SceneRenderLayer {
 #define SCE_LAY_NEG_ZMASK      0x80000
 
 /* srl->passflag */
-#define SCE_PASS_COMBINED      1
-#define SCE_PASS_Z                     2
-#define SCE_PASS_RGBA          4
-#define SCE_PASS_DIFFUSE       8
-#define SCE_PASS_SPEC          16
-#define SCE_PASS_SHADOW                32
-#define SCE_PASS_AO                    64
-#define SCE_PASS_REFLECT       128
-#define SCE_PASS_NORMAL                256
-#define SCE_PASS_VECTOR                512
-#define SCE_PASS_REFRACT       1024
-#define SCE_PASS_INDEXOB       2048
-#define SCE_PASS_UV                    4096
-#define SCE_PASS_RADIO         8192 /* Radio removed, can use for new GI? */
-#define SCE_PASS_MIST          16384
-
-#define SCE_PASS_RAYHITS       32768
+#define SCE_PASS_COMBINED              1
+#define SCE_PASS_Z                             2
+#define SCE_PASS_RGBA                  4
+#define SCE_PASS_DIFFUSE               8
+#define SCE_PASS_SPEC                  16
+#define SCE_PASS_SHADOW                        32
+#define SCE_PASS_AO                            64
+#define SCE_PASS_REFLECT               128
+#define SCE_PASS_NORMAL                        256
+#define SCE_PASS_VECTOR                        512
+#define SCE_PASS_REFRACT               1024
+#define SCE_PASS_INDEXOB               2048
+#define SCE_PASS_UV                            4096
+#define SCE_PASS_RADIO                 8192 /* Radio removed, can use for new GI? */
+#define SCE_PASS_MIST                  16384
+#define SCE_PASS_RAYHITS               32768
+#define SCE_PASS_EMIT                  65536
+#define SCE_PASS_ENVIRONMENT   131072
+#define SCE_PASS_INDIRECT              262144
 
 /* note, srl->passflag is treestore element 'nr' in outliner, short still... */
 
@@ -176,6 +202,7 @@ typedef struct RenderData {
        
        struct AviCodecData *avicodecdata;
        struct QuicktimeCodecData *qtcodecdata;
+       struct QuicktimeCodecSettings qtcodecsettings;
        struct FFMpegCodecData ffcodecdata;
        
        int cfra, sfra, efra;   /* frames as in 'images' */
@@ -191,7 +218,8 @@ typedef struct RenderData {
        float edgeR, edgeG, edgeB;
        
        short fullscreen, xplay, yplay, freqplay;       /* standalone player */  //  XXX deprecated since 2.5
-       short depth, attrib, rt1, rt2;                  /* standalone player */  //  XXX deprecated since 2.5
+       short depth, attrib, rt2;                       /* standalone player */  //  XXX deprecated since 2.5
+       short frame_step;               /* frames to jump during render/playback */
 
        short stereomode;       /* standalone player stereo settings */  //  XXX deprecated since 2.5
        
@@ -279,7 +307,10 @@ typedef struct RenderData {
        
        /* information on different layers to be rendered */
        ListBase layers;
-       short actlay, pad;
+       short actlay;
+       
+       /* number of mblur samples */
+       short mblur_samples;
        
        /**
         * Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
@@ -336,8 +367,9 @@ typedef struct RenderData {
        float bg_stamp[4];
 
        /* render simplify */
-       int simplify_subsurf;
-       int simplify_shadowsamples;
+       int simplify_flag;
+       short simplify_subsurf;
+       short simplify_shadowsamples;
        float simplify_particles;
        float simplify_aosss;
 
@@ -423,6 +455,7 @@ typedef struct GameData {
        /* stereo/dome mode */
        struct GameDome dome;
        short stereoflag, stereomode, xsch, ysch; //xsch and ysch can be deleted !!!
+       float eyeseparation, pad1;
 } GameData;
 
 #define STEREO_NOSTEREO                1
@@ -470,6 +503,7 @@ typedef struct TimeMarker {
        int frame;
        char name[64];
        unsigned int flag;
+       struct Object *camera;
 } TimeMarker;
 
 typedef struct Paint {
@@ -481,13 +515,13 @@ typedef struct Paint {
        void *paint_cursor;
        unsigned char paint_cursor_col[4];
 
-       int pad;
+       int flags;
 } Paint;
 
 typedef struct ImagePaintSettings {
        Paint paint;
 
-       short flag, tool;
+       short flag, pad;
        
        /* for projection painting only */
        short seam_bleed, normal_angle;
@@ -498,6 +532,7 @@ typedef struct ImagePaintSettings {
 typedef struct ParticleBrushData {
        short size, strength;   /* common settings */
        short step, invert;             /* for specific brushes only */
+       int flag, pad;
 } ParticleBrushData;
 
 typedef struct ParticleEditSettings {
@@ -541,8 +576,7 @@ typedef struct Sculpt {
 typedef struct VPaint {
        Paint paint;
 
-       float gamma, mul;                       /* should become part of struct Brush? */
-       short mode, flag;
+       short flag, pad;
        int tot;                                                        /* allocation size of prev buffers */
        unsigned int *vpaint_prev;                      /* previous mesh colors */
        struct MDeformVert *wpaint_prev;        /* previous vertex weights */
@@ -553,11 +587,10 @@ typedef struct VPaint {
 /* VPaint flag */
 #define VP_COLINDEX    1
 #define VP_AREA                2
-#define VP_SOFT                4
+
 #define VP_NORMALS     8
 #define VP_SPRAY       16
-#define VP_MIRROR_X    32
-#define VP_HARD                64
+// #define VP_MIRROR_X 32 // depricated in 2.5x use (me->editflag & ME_EDIT_MIRROR_X)
 #define VP_ONLYVGROUP  128
 
 
@@ -669,6 +702,8 @@ typedef struct ToolSettings {
        /* Transform */
        short snap_mode, snap_flag, snap_target;
        short proportional, prop_mode;
+
+       int auto_normalize, intpad; /*auto normalizing mode in wpaint*/
 } ToolSettings;
 
 typedef struct bStats {
@@ -728,7 +763,10 @@ typedef struct Scene {
        ListBase markers;
        ListBase transform_spaces;
        
-       ListBase sound_handles;
+       void *sound_scene;
+       void *sound_scene_handle;
+       
+       void *fps_info;                                 /* (runtime) info/cache used for presenting playback framerate info to the user */
        
        /* none of the dependancy graph  vars is mean to be saved */
        struct  DagForest *theDag;
@@ -736,10 +774,8 @@ typedef struct Scene {
        short recalc;                           /* recalc = counterpart of ob->recalc */
 
        short jumpframe;
+       int pad5;
 
-       /* frame step. */
-       int frame_step;
-       
        /* User-Defined KeyingSets */
        int active_keyingset;                   /* index of the active KeyingSet. first KeyingSet has index 1, 'none' active is 0, 'add new' is -1 */
        ListBase keyingsets;                    /* KeyingSets for the given frame */
@@ -756,6 +792,11 @@ typedef struct Scene {
 
        /* Physics simulation settings */
        struct PhysicsSettings physics_settings;
+       
+       /* Freestyle */
+       short freestyle_current_layer_number;
+       short pad[3];
+       
 } Scene;
 
 
@@ -767,6 +808,10 @@ typedef struct Scene {
 #define R_FRONTBUF             4
 #define R_FRONTBUFANIM 8
 
+/* flag */
+       /* use preview range */
+#define SCER_PRV_RANGE (1<<0)
+
 /* mode (int now) */
 #define R_OSA                  0x0001
 #define R_SHADOW               0x0002
@@ -799,6 +844,7 @@ typedef struct Scene {
 #define R_NO_OVERWRITE 0x400000 /* skip existing files */
 #define R_TOUCH                        0x800000 /* touch files before rendering */
 #define R_SIMPLIFY             0x1000000
+#define R_EDGE_FRS             0x2000000 /* R_EDGE for Freestyle */
 
 /* displaymode */
 
@@ -866,7 +912,8 @@ typedef struct Scene {
 #define R_STAMP_MARKER 0x0080
 #define R_STAMP_FILENAME       0x0100
 #define R_STAMP_SEQSTRIP       0x0200
-#define R_STAMP_ALL            (R_STAMP_TIME|R_STAMP_FRAME|R_STAMP_DATE|R_STAMP_CAMERA|R_STAMP_SCENE|R_STAMP_NOTE|R_STAMP_MARKER|R_STAMP_FILENAME|R_STAMP_SEQSTRIP)
+#define R_STAMP_RENDERTIME     0x0400
+#define R_STAMP_ALL            (R_STAMP_TIME|R_STAMP_FRAME|R_STAMP_DATE|R_STAMP_CAMERA|R_STAMP_SCENE|R_STAMP_NOTE|R_STAMP_MARKER|R_STAMP_FILENAME|R_STAMP_SEQSTRIP|R_STAMP_RENDERTIME)
 
 /* alphamode */
 #define R_ADDSKY               0
@@ -937,6 +984,9 @@ typedef struct Scene {
 #define R_BAKE_SPACE_OBJECT     2
 #define R_BAKE_SPACE_TANGENT 3
 
+/* simplify_flag */
+#define R_SIMPLE_NO_TRIANGULATE                1
+
 /* **************** SCENE ********************* */
 
 /* for general use */
@@ -953,7 +1003,8 @@ typedef struct Scene {
 /* depricate this! */
 #define TESTBASE(v3d, base)    ( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0) )
 #define TESTBASELIB(v3d, base) ( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
-#define TESTBASELIB_BGMODE(v3d, base)   ( ((base)->flag & SELECT) && ((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
+#define TESTBASELIB_BGMODE(v3d, scene, base)   ( ((base)->flag & SELECT) && ((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
+#define BASE_EDITABLE_BGMODE(v3d, scene, base)   (((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
 #define BASE_SELECTABLE(v3d, base)      ((base->lay & v3d->lay) && (base->object->restrictflag & (OB_RESTRICT_SELECT|OB_RESTRICT_VIEW))==0)
 #define FIRSTBASE              scene->base.first
 #define LASTBASE               scene->base.last
@@ -967,8 +1018,9 @@ typedef struct Scene {
 #define        F_CFRA                  ((float)(scene->r.cfra))
 #define        SFRA                    (scene->r.sfra)
 #define        EFRA                    (scene->r.efra)
-#define PSFRA                  ((scene->r.psfra != 0)? (scene->r.psfra): (scene->r.sfra))
-#define PEFRA                  ((scene->r.psfra != 0)? (scene->r.pefra): (scene->r.efra))
+#define PRVRANGEON             (scene->r.flag & SCER_PRV_RANGE)
+#define PSFRA                  ((PRVRANGEON)? (scene->r.psfra): (scene->r.sfra))
+#define PEFRA                  ((PRVRANGEON)? (scene->r.pefra): (scene->r.efra))
 #define FRA2TIME(a)           ((((double) scene->r.frs_sec_base) * (a)) / scene->r.frs_sec)
 #define TIME2FRA(a)           ((((double) scene->r.frs_sec) * (a)) / scene->r.frs_sec_base)
 #define FPS                     (((double) scene->r.frs_sec) / scene->r.frs_sec_base)
@@ -989,10 +1041,11 @@ typedef struct Scene {
 #define SCE_SNAP_TARGET_MEDIAN 2
 #define SCE_SNAP_TARGET_ACTIVE 3
 /* toolsettings->snap_mode */
-#define SCE_SNAP_MODE_VERTEX   0
-#define SCE_SNAP_MODE_EDGE             1
-#define SCE_SNAP_MODE_FACE             2
-#define SCE_SNAP_MODE_VOLUME   3
+#define SCE_SNAP_MODE_INCREMENT        0
+#define SCE_SNAP_MODE_VERTEX   1
+#define SCE_SNAP_MODE_EDGE             2
+#define SCE_SNAP_MODE_FACE             3
+#define SCE_SNAP_MODE_VOLUME   4
 
 /* toolsettings->selectmode */
 #define SCE_SELECT_VERTEX      1 /* for mesh */
@@ -1016,6 +1069,11 @@ typedef struct Scene {
 #define PROP_CONST             5
 #define PROP_RANDOM            6
 
+/* toolsettings->proportional */
+#define PROP_EDIT_OFF                  0
+#define PROP_EDIT_ON                   1
+#define PROP_EDIT_CONNECTED    2
+
 /* sce->flag */
 #define SCE_DS_SELECTED                        (1<<0)
 #define SCE_DS_COLLAPSED               (1<<1)
@@ -1034,17 +1092,21 @@ typedef struct Scene {
 #define AUDIO_SYNC             2
 #define AUDIO_SCRUB            4
 
-#define FFMPEG_MULTIPLEX_AUDIO  1
+#define FFMPEG_MULTIPLEX_AUDIO  1 /* deprecated, you can choose none as audiocodec now */
 #define FFMPEG_AUTOSPLIT_OUTPUT 2
 
+/* Paint.flags */
+typedef enum {
+       PAINT_SHOW_BRUSH = 1,
+       PAINT_FAST_NAVIGATE = 2
+} PaintFlags;
+
 /* Sculpt.flags */
+/* These can eventually be moved to paint flags? */
 typedef enum SculptFlags {
        SCULPT_SYMM_X = 1,
        SCULPT_SYMM_Y = 2,
        SCULPT_SYMM_Z = 4,
-       SCULPT_INPUT_SMOOTH = 8,
-       SCULPT_DRAW_FAST = 16,
-       SCULPT_DRAW_BRUSH = 32,
        SCULPT_LOCK_X = 64,
        SCULPT_LOCK_Y = 128,
        SCULPT_LOCK_Z = 256
@@ -1060,8 +1122,8 @@ typedef enum SculptFlags {
 #define IMAGEPAINT_PROJECT_BACKFACE            32
 #define IMAGEPAINT_PROJECT_FLAT                        64
 #define IMAGEPAINT_PROJECT_LAYER_CLONE 128
-#define IMAGEPAINT_PROJECT_LAYER_MASK  256
-#define IMAGEPAINT_PROJECT_LAYER_MASK_INV      512
+#define IMAGEPAINT_PROJECT_LAYER_STENCIL       256
+#define IMAGEPAINT_PROJECT_LAYER_STENCIL_INV   512
 
 /* toolsettings->uvcalc_flag */
 #define UVCALC_FILLHOLES                       1
@@ -1091,7 +1153,7 @@ typedef enum SculptFlags {
 #define PE_DEFLECT_EMITTER             4
 #define PE_INTERPOLATE_ADDED   8
 #define PE_DRAW_PART                   16
-#define PE_X_MIRROR                            64
+#define PE_X_MIRROR                            64              /* deprecated */
 #define PE_FADE_TIME                   128
 #define PE_AUTO_VELOCITY               256
 
@@ -1103,10 +1165,14 @@ typedef enum SculptFlags {
 #define PE_BRUSH_PUFF          3
 #define PE_BRUSH_ADD           4
 #define PE_BRUSH_SMOOTH                5
+#define PE_BRUSH_WEIGHT                6
 
 /* this must equal ParticleEditSettings.brush array size */
 #define PE_TOT_BRUSH           6
 
+/* ParticleBrushData->flag */
+#define PE_BRUSH_DATA_PUFF_VOLUME 1
+
 /* tooksettings->particle edittype */
 #define PE_TYPE_PARTICLES      0
 #define PE_TYPE_SOFTBODY       1
@@ -1163,6 +1229,7 @@ typedef enum SculptFlags {
 #define        SK_RETARGET_AUTONAME                    1
 
 /* toolsettings->skgen_retarget_roll */
+#define        SK_RETARGET_ROLL_NONE                   0
 #define        SK_RETARGET_ROLL_VIEW                   1
 #define        SK_RETARGET_ROLL_JOINT                  2
 
@@ -1177,6 +1244,7 @@ typedef enum SculptFlags {
 #define        USER_UNIT_IMPERIAL              2
 /* UnitSettings->flag */
 #define        USER_UNIT_OPT_SPLIT             1
+#define USER_UNIT_ROT_RADIANS  2
 
 
 #ifdef __cplusplus