Added Lossless Output option for h264 codec.
[blender.git] / source / blender / makesdna / DNA_scene_types.h
index 345e78d..a2dfea1 100644 (file)
  *
  * ***** END GPL LICENSE BLOCK *****
  */
-#ifndef DNA_SCENE_TYPES_H
-#define DNA_SCENE_TYPES_H
 
 /** \file DNA_scene_types.h
  *  \ingroup DNA
  */
 
+#ifndef DNA_SCENE_TYPES_H
+#define DNA_SCENE_TYPES_H
+
 #include "DNA_defs.h"
 
 // XXX, temp feature - campbell
@@ -58,6 +59,10 @@ struct SceneStats;
 struct bGPdata;
 struct MovieClip;
 
+/* ************************************************************* */
+/* Scene Data */
+
+/* Base - Wrapper for referencing Objects in a Scene */
 typedef struct Base {
        struct Base *next, *prev;
        unsigned int lay, selcol;
@@ -66,6 +71,9 @@ typedef struct Base {
        struct Object *object;
 } Base;
 
+/* ************************************************************* */
+/* Output Format Data */
+
 typedef struct AviCodecData {
        void                    *lpFormat;  /* save format */
        void                    *lpParms;   /* compressor options */
@@ -141,6 +149,8 @@ typedef struct FFMpegCodecData {
        IDProperty *properties;
 } FFMpegCodecData;
 
+/* ************************************************************* */
+/* Audio */
 
 typedef struct AudioData {
        int mixrate; // 2.5: now in FFMpegCodecData: audio_mixrate
@@ -154,10 +164,14 @@ typedef struct AudioData {
        float pad2;
 } AudioData;
 
+/* *************************************************************** */
+/* Render Layers */
+
+/* Render Layer */
 typedef struct SceneRenderLayer {
        struct SceneRenderLayer *next, *prev;
        
-       char name[32];
+       char name[64];  /* MAX_NAME */
        
        struct Material *mat_override;
        struct Group *light_override;
@@ -210,6 +224,7 @@ typedef struct SceneRenderLayer {
 
 /* note, srl->passflag is treestore element 'nr' in outliner, short still... */
 
+/* *************************************************************** */
 
 /* Generic image format settings,
  * this is used for NodeImageFile and IMAGE_OT_save_as operator too.
@@ -313,6 +328,9 @@ typedef struct ImageFormatData {
 /* ImageFormatData.cineon_flag */
 #define R_IMF_CINEON_FLAG_LOG (1<<0)  /* was R_CINEON_LOG */
 
+/* *************************************************************** */
+/* Render Data */
+
 typedef struct RenderData {
        struct ImageFormatData im_format;
        
@@ -332,9 +350,15 @@ typedef struct RenderData {
 
        /** For UR edge rendering: give the edges this color */
        float edgeR, edgeG, edgeB;
-       
-       short fullscreen  DNA_DEPRECATED, xplay  DNA_DEPRECATED, yplay  DNA_DEPRECATED, freqplay  DNA_DEPRECATED;       /* standalone player */  //  XXX deprecated since 2.5
-       short depth  DNA_DEPRECATED, attrib  DNA_DEPRECATED;                    /* standalone player */  //  XXX deprecated since 2.5
+
+
+       /* standalone player */  //  XXX deprecated since 2.5
+       short fullscreen  DNA_DEPRECATED, xplay  DNA_DEPRECATED, yplay  DNA_DEPRECATED;
+       short freqplay  DNA_DEPRECATED;
+       /* standalone player */  //  XXX deprecated since 2.5
+       short depth  DNA_DEPRECATED, attrib  DNA_DEPRECATED;
+
+
        int frame_step;         /* frames to jump during render/playback */
 
        short stereomode  DNA_DEPRECATED;       /* standalone player stereo settings */  //  XXX deprecated since 2.5
@@ -492,6 +516,9 @@ typedef struct RenderData {
        char engine[32];
 } RenderData;
 
+/* *************************************************************** */
+/* Render Conversion/Simplfication Settings */
+
 /* control render convert and shading engine */
 typedef struct RenderProfile {
        struct RenderProfile *next, *prev;
@@ -506,6 +533,9 @@ typedef struct RenderProfile {
        
 } RenderProfile;
 
+/* *************************************************************** */
+/* Game Engine - Dome */
+
 typedef struct GameDome {
        short res, mode;
        short angle, tilt;
@@ -520,6 +550,9 @@ typedef struct GameDome {
 #define DOME_PANORAM_SPH               5
 #define DOME_NUM_MODES                 6
 
+/* *************************************************************** */
+/* Game Engine */
+
 typedef struct GameFraming {
        float col[3];
        char type, pad1, pad2, pad3;
@@ -550,8 +583,9 @@ typedef struct GameData {
 
        /*  standalone player */
        struct GameFraming framing;
-       short fullscreen, xplay, yplay, freqplay;
+       short playerflag, xplay, yplay, freqplay;
        short depth, attrib, rt1, rt2;
+       short aasamples, pad4[3];
 
        /* stereo/dome mode */
        struct GameDome dome;
@@ -628,11 +662,18 @@ typedef struct GameData {
 #define GAME_SHOW_OBSTACLE_SIMULATION          (1 << 16)
 /* Note: GameData.flag is now an int (max 32 flags). A short could only take 16 flags */
 
+/* GameData.playerflag */
+#define GAME_PLAYER_FULLSCREEN                         (1 << 0)
+#define GAME_PLAYER_DESKTOP_RESOLUTION         (1 << 1)
+
 /* GameData.matmode */
 #define GAME_MAT_TEXFACE       0
 #define GAME_MAT_MULTITEX      1
 #define GAME_MAT_GLSL          2
 
+/* *************************************************************** */
+/* Markers */
+
 typedef struct TimeMarker {
        struct TimeMarker *next, *prev;
        int frame;
@@ -641,6 +682,10 @@ typedef struct TimeMarker {
        struct Object *camera;
 } TimeMarker;
 
+/* *************************************************************** */
+/* Paint Mode/Tool Data */
+
+/* Paint Tool Base */
 typedef struct Paint {
        struct Brush *brush;
        
@@ -651,6 +696,10 @@ typedef struct Paint {
        int flags;
 } Paint;
 
+/* ------------------------------------------- */
+/* Image Paint */
+
+/* Texture/Image Editor */
 typedef struct ImagePaintSettings {
        Paint paint;
 
@@ -665,6 +714,10 @@ typedef struct ImagePaintSettings {
        void *paintcursor;                      /* wm handle */
 } ImagePaintSettings;
 
+/* ------------------------------------------- */
+/* Particle Edit */
+
+/* Settings for a Particle Editing Brush */
 typedef struct ParticleBrushData {
        short size;                                             /* common setting */
        short step, invert, count;              /* for specific brushes only */
@@ -672,6 +725,7 @@ typedef struct ParticleBrushData {
        float strength;
 } ParticleBrushData;
 
+/* Particle Edit Mode Settings */
 typedef struct ParticleEditSettings {
        short flag;
        short totrekey;
@@ -692,12 +746,10 @@ typedef struct ParticleEditSettings {
        struct Object *object;
 } ParticleEditSettings;
 
-typedef struct TransformOrientation {
-       struct TransformOrientation *next, *prev;
-       char name[36];
-       float mat[3][3];
-} TransformOrientation;
+/* ------------------------------------------- */
+/* Sculpt */
 
+/* Sculpt */
 typedef struct Sculpt {
        Paint paint;
 
@@ -728,6 +780,10 @@ typedef struct Sculpt {
        int pad;
 } Sculpt;
 
+/* ------------------------------------------- */
+/* Vertex Paint */
+
+/* Vertex Paint */
 typedef struct VPaint {
        Paint paint;
 
@@ -748,6 +804,52 @@ typedef struct VPaint {
 // #define VP_MIRROR_X 32 // deprecated in 2.5x use (me->editflag & ME_EDIT_MIRROR_X)
 #define VP_ONLYVGROUP  128
 
+/* *************************************************************** */
+/* Transform Orientations */
+
+typedef struct TransformOrientation {
+       struct TransformOrientation *next, *prev;
+       char name[64];  /* MAX_NAME */
+       float mat[3][3];
+       int pad;
+} TransformOrientation;
+
+/* *************************************************************** */
+/* Unified Paint Settings */
+
+/* These settings can override the equivalent fields in the active
+   Brush for any paint mode; the flag field controls whether these
+   values are used */
+typedef struct UnifiedPaintSettings {
+       /* unified radius of brush in pixels */
+       int size;
+
+       /* unified radius of brush in Blender units */
+       float unprojected_radius;
+
+       /* unified strength of brush */
+       float alpha;
+
+       /* user preferences for sculpt and paint */
+       int flag;
+} UnifiedPaintSettings;
+
+typedef enum {
+       UNIFIED_PAINT_SIZE  = (1<<0),
+       UNIFIED_PAINT_ALPHA = (1<<1),
+
+       /* only used if unified size is enabled, mirros the brush flags
+          BRUSH_LOCK_SIZE and BRUSH_SIZE_PRESSURE */
+       UNIFIED_PAINT_BRUSH_LOCK_SIZE = (1<<2),
+       UNIFIED_PAINT_BRUSH_SIZE_PRESSURE   = (1<<3),
+
+       /* only used if unified alpha is enabled, mirrors the brush flag
+          BRUSH_ALPHA_PRESSURE */
+       UNIFIED_PAINT_BRUSH_ALPHA_PRESSURE  = (1<<4)
+} UnifiedPaintSettingsFlags;
+
+/* *************************************************************** */
+/* Tool Settings */
 
 typedef struct ToolSettings {
        VPaint *vpaint;         /* vertex paint */
@@ -818,13 +920,9 @@ typedef struct ToolSettings {
        /* Auto-Keying Mode */
        short autokey_mode, autokey_flag;       /* defines in DNA_userdef_types.h */
        
-       /* Retopo */
-       char retopo_mode;
-       char retopo_paint_tool;
-       char line_div, ellipse_div, retopo_hotspot;
-
        /* Multires */
        char multires_subdiv_type;
+       char pad2[5];
        
        /* Skeleton generation */
        short skgen_resolution;
@@ -868,33 +966,52 @@ typedef struct ToolSettings {
        char auto_normalize; /*auto normalizing mode in wpaint*/
        char multipaint; /* paint multiple bones in wpaint */
 
-       short sculpt_paint_settings; /* user preferences for sculpt and paint */
+       /* XXX: these sculpt_paint_* fields are deprecated, use the
+          unified_paint_settings field instead! */
+       short sculpt_paint_settings DNA_DEPRECATED;
        short pad1;
-       int sculpt_paint_unified_size; /* unified radius of brush in pixels */
-       float sculpt_paint_unified_unprojected_radius;/* unified radius of brush in Blender units */
-       float sculpt_paint_unified_alpha; /* unified strength of brush */
+       int sculpt_paint_unified_size DNA_DEPRECATED;
+       float sculpt_paint_unified_unprojected_radius DNA_DEPRECATED;
+       float sculpt_paint_unified_alpha DNA_DEPRECATED;
+
+       /* Unified Paint Settings */
+       struct UnifiedPaintSettings unified_paint_settings;
 } ToolSettings;
 
+/* *************************************************************** */
+/* Assorted Scene Data */
+
+/* ------------------------------------------- */
+/* Stats (show in Info header) */
+
 typedef struct bStats {
        /* scene totals for visible layers */
        int totobj, totlamp, totobjsel, totcurve, totmesh, totarmature;
        int totvert, totface;
 } bStats;
 
+/* ------------------------------------------- */
+/* Unit Settings */
+
 typedef struct UnitSettings {
        /* Display/Editing unit options for each scene */
        float scale_length; /* maybe have other unit conversions? */
        char system; /* imperial, metric etc */
        char system_rotation; /* not implimented as a propper unit system yet */
        short flag;
-       
 } UnitSettings;
 
+/* ------------------------------------------- */
+/* Global/Common Physics Settings */
+
 typedef struct PhysicsSettings {
        float gravity[3];
        int flag, quick_cache_step, rt;
 } PhysicsSettings;
 
+/* *************************************************************** */
+/* Scene ID-Block */
+
 typedef struct Scene {
        ID id;
        struct AnimData *adt;   /* animation data (must be immediately after id for utilities to use it) */ 
@@ -915,8 +1032,6 @@ typedef struct Scene {
        unsigned int lay;                       /* bitflags for layer visibility */
        int layact;             /* active layer */
        unsigned int lay_updated;       /* runtime flag, has layer ever been updated since load? */
-       unsigned int customdata_mask;   /* XXX. runtime flag for drawing, actually belongs in the window, only used by object_handle_update() */
-       unsigned int customdata_mask_modal; /* XXX. same as above but for temp operator use (gl renders) */
        
        short flag;                                                             /* various settings */
        
@@ -954,7 +1069,7 @@ typedef struct Scene {
 
        /* 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 */
+       ListBase keyingsets;                    /* KeyingSets for this scene */
        
        /* Game Settings */
        struct GameFraming framing  DNA_DEPRECATED; // XXX  deprecated since 2.5
@@ -971,6 +1086,9 @@ typedef struct Scene {
 
        /* Movie Tracking */
        struct MovieClip *clip;                 /* active movie clip */
+
+       uint64_t customdata_mask;       /* XXX. runtime flag for drawing, actually belongs in the window, only used by object_handle_update() */
+       uint64_t customdata_mask_modal; /* XXX. same as above but for temp operator use (gl renders) */
 } Scene;
 
 
@@ -1082,7 +1200,9 @@ typedef struct Scene {
 #define R_STAMP_SEQSTRIP       0x0200
 #define R_STAMP_RENDERTIME     0x0400
 #define R_STAMP_CAMERALENS     0x0800
-#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|R_STAMP_CAMERALENS)
+#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|R_STAMP_CAMERALENS)
 
 /* alphamode */
 #define R_ADDSKY               0
@@ -1090,7 +1210,8 @@ typedef struct Scene {
 #define R_ALPHAKEY             2
 
 /* color_mgt_flag */
-#define R_COLOR_MANAGEMENT     1
+#define R_COLOR_MANAGEMENT              (1 << 0)
+#define R_COLOR_MANAGEMENT_PREDIVIDE    (1 << 1)
 
 /* subimtype, flag options for imtype */
 #define R_OPENEXR_HALF    1                                      /*deprecated*/
@@ -1140,12 +1261,31 @@ typedef struct Scene {
 #define MINAFRAMEF     -300000.0f
 
 /* 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==NULL) && (((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==NULL) && (((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==NULL) && (((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 BASE_VISIBLE(v3d, base)         ((base->lay & v3d->lay) && (base->object->restrictflag & OB_RESTRICT_VIEW)==0)
+#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==NULL) &&                                         \
+       (((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==NULL) &&                                         \
+       (((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==NULL) &&                                         \
+       (((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 BASE_VISIBLE(v3d, base)  (                                            \
+       (base->lay & v3d->lay) &&                                                 \
+       (base->object->restrictflag & OB_RESTRICT_VIEW)==0  )
+
 #define FIRSTBASE              scene->base.first
 #define LASTBASE               scene->base.last
 #define BASACT                 (scene->basact)
@@ -1240,6 +1380,7 @@ typedef struct Scene {
 
 #define FFMPEG_MULTIPLEX_AUDIO  1 /* deprecated, you can choose none as audiocodec now */
 #define FFMPEG_AUTOSPLIT_OUTPUT 2
+#define FFMPEG_LOSSLESS_OUTPUT  4
 
 /* Paint.flags */
 typedef enum {
@@ -1262,13 +1403,6 @@ typedef enum SculptFlags {
        SCULPT_ONLY_DEFORM = (1<<8),
 } SculptFlags;
 
-/* sculpt_paint_settings */
-#define SCULPT_PAINT_USE_UNIFIED_SIZE        (1<<0)
-#define SCULPT_PAINT_USE_UNIFIED_ALPHA       (1<<1)
-#define SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE (1<<2)
-#define SCULPT_PAINT_UNIFIED_SIZE_PRESSURE   (1<<3)
-#define SCULPT_PAINT_UNIFIED_ALPHA_PRESSURE  (1<<4)
-
 /* ImagePaintSettings.flag */
 #define IMAGEPAINT_DRAWING                             1
 // #define IMAGEPAINT_DRAW_TOOL                        2 // deprecated
@@ -1339,15 +1473,6 @@ typedef enum SculptFlags {
 #define PE_TYPE_SOFTBODY       1
 #define PE_TYPE_CLOTH          2
 
-/* toolsettings->retopo_mode */
-#define RETOPO 1
-#define RETOPO_PAINT 2
-
-/* toolsettings->retopo_paint_tool */ /*UNUSED*/
-/* #define RETOPO_PEN 1 */
-/* #define RETOPO_LINE 2 */
-/* #define RETOPO_ELLIPSE 4 */
-
 /* toolsettings->skgen_options */
 #define SKGEN_FILTER_INTERNAL  (1 << 0)
 #define SKGEN_FILTER_EXTERNAL  (1 << 1)