Merged changes in the trunk up to revision 26856.
[blender-staging.git] / source / blender / makesdna / DNA_scene_types.h
index 037a8c46222f867d3b25869783e87e99988e8d96..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' */
@@ -280,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
@@ -337,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;
 
@@ -424,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
@@ -471,6 +503,7 @@ typedef struct TimeMarker {
        int frame;
        char name[64];
        unsigned int flag;
+       struct Object *camera;
 } TimeMarker;
 
 typedef struct Paint {
@@ -488,7 +521,7 @@ typedef struct Paint {
 typedef struct ImagePaintSettings {
        Paint paint;
 
-       short flag, tool;
+       short flag, pad;
        
        /* for projection painting only */
        short seam_bleed, normal_angle;
@@ -499,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 {
@@ -542,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 */
@@ -554,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 // depricated in 2.5x use (me->editflag & ME_EDIT_MIRROR_X)
-#define VP_HARD                64
 #define VP_ONLYVGROUP  128
 
 
@@ -731,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;
@@ -757,6 +792,11 @@ typedef struct Scene {
 
        /* Physics simulation settings */
        struct PhysicsSettings physics_settings;
+       
+       /* Freestyle */
+       short freestyle_current_layer_number;
+       short pad[3];
+       
 } Scene;
 
 
@@ -768,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
@@ -800,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 */
 
@@ -939,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 */
@@ -970,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)
@@ -992,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 */
@@ -1042,12 +1092,13 @@ 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_SHOW_BRUSH = 1,
+       PAINT_FAST_NAVIGATE = 2
 } PaintFlags;
 
 /* Sculpt.flags */
@@ -1071,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
@@ -1102,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
 
@@ -1114,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
@@ -1189,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