Merged changes in the trunk up to revision 51718.
[blender.git] / source / blender / makesdna / DNA_scene_types.h
index 4d74089972b6fc5d3e225697633c5d2f0b8e4207..9bfa0e7fdf7094b9b5e3eff15c5a6b15bb63d775 100644 (file)
  *  \ingroup DNA
  */
 
-#ifndef DNA_SCENE_TYPES_H
-#define DNA_SCENE_TYPES_H
+#ifndef __DNA_SCENE_TYPES_H__
+#define __DNA_SCENE_TYPES_H__
 
 #include "DNA_defs.h"
 
-// XXX, temp feature - campbell
+/* XXX, temp feature - campbell */
 #define DURIAN_CAMERA_SWITCH
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#include "DNA_color_types.h"  /* color management */
 #include "DNA_vec_types.h"
 #include "DNA_listBase.h"
 #include "DNA_ID.h"
@@ -60,6 +61,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;
@@ -68,6 +73,9 @@ typedef struct Base {
        struct Object *object;
 } Base;
 
+/* ************************************************************* */
+/* Output Format Data */
+
 typedef struct AviCodecData {
        void                    *lpFormat;  /* save format */
        void                    *lpParms;   /* compressor options */
@@ -143,6 +151,8 @@ typedef struct FFMpegCodecData {
        IDProperty *properties;
 } FFMpegCodecData;
 
+/* ************************************************************* */
+/* Audio */
 
 typedef struct AudioData {
        int mixrate; // 2.5: now in FFMpegCodecData: audio_mixrate
@@ -156,22 +166,28 @@ 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;
        
-       unsigned int lay;               /* scene->lay itself has priority over this */
-       unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */
+       unsigned int lay;                 /* scene->lay itself has priority over this */
+       unsigned int lay_zmask;   /* has to be after lay, this is for Z-masking */
+       unsigned int lay_exclude; /* not used by internal, exclude */
        int layflag;
        
-       int pad;
-       
        int passflag;                   /* pass_xor has to be after passflag */
        int pass_xor;
+
+       int samples;
+       int pad;
        
        struct FreestyleConfig freestyleConfig;
        
@@ -194,28 +210,38 @@ typedef struct SceneRenderLayer {
 #define SCE_LAY_NEG_ZMASK      0x80000
 
 /* srl->passflag */
-#define SCE_PASS_COMBINED              (1<<0)
-#define SCE_PASS_Z                             (1<<1)
-#define SCE_PASS_RGBA                  (1<<2)
-#define SCE_PASS_DIFFUSE               (1<<3)
-#define SCE_PASS_SPEC                  (1<<4)
-#define SCE_PASS_SHADOW                        (1<<5)
-#define SCE_PASS_AO                            (1<<6)
-#define SCE_PASS_REFLECT               (1<<7)
-#define SCE_PASS_NORMAL                        (1<<8)
-#define SCE_PASS_VECTOR                        (1<<9)
-#define SCE_PASS_REFRACT               (1<<10)
-#define SCE_PASS_INDEXOB               (1<<11)
-#define SCE_PASS_UV                            (1<<12)
-#define SCE_PASS_INDIRECT              (1<<13)
-#define SCE_PASS_MIST                  (1<<14)
-#define SCE_PASS_RAYHITS               (1<<15)
-#define SCE_PASS_EMIT                  (1<<16)
-#define SCE_PASS_ENVIRONMENT   (1<<17)
-#define SCE_PASS_INDEXMA       (1<<18)
+#define SCE_PASS_COMBINED                      (1<<0)
+#define SCE_PASS_Z                                     (1<<1)
+#define SCE_PASS_RGBA                          (1<<2)
+#define SCE_PASS_DIFFUSE                       (1<<3)
+#define SCE_PASS_SPEC                          (1<<4)
+#define SCE_PASS_SHADOW                                (1<<5)
+#define SCE_PASS_AO                                    (1<<6)
+#define SCE_PASS_REFLECT                       (1<<7)
+#define SCE_PASS_NORMAL                                (1<<8)
+#define SCE_PASS_VECTOR                                (1<<9)
+#define SCE_PASS_REFRACT                       (1<<10)
+#define SCE_PASS_INDEXOB                       (1<<11)
+#define SCE_PASS_UV                                    (1<<12)
+#define SCE_PASS_INDIRECT                      (1<<13)
+#define SCE_PASS_MIST                          (1<<14)
+#define SCE_PASS_RAYHITS                       (1<<15)
+#define SCE_PASS_EMIT                          (1<<16)
+#define SCE_PASS_ENVIRONMENT           (1<<17)
+#define SCE_PASS_INDEXMA                       (1<<18)
+#define SCE_PASS_DIFFUSE_DIRECT                (1<<19)
+#define SCE_PASS_DIFFUSE_INDIRECT      (1<<20)
+#define SCE_PASS_DIFFUSE_COLOR         (1<<21)
+#define SCE_PASS_GLOSSY_DIRECT         (1<<22)
+#define SCE_PASS_GLOSSY_INDIRECT       (1<<23)
+#define SCE_PASS_GLOSSY_COLOR          (1<<24)
+#define SCE_PASS_TRANSM_DIRECT         (1<<25)
+#define SCE_PASS_TRANSM_INDIRECT       (1<<26)
+#define SCE_PASS_TRANSM_COLOR          (1<<27)
 
 /* 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.
@@ -231,7 +257,7 @@ typedef struct ImageFormatData {
        char depth;    /* bits per channel, R_IMF_CHAN_DEPTH_8 -> 32,
                        * not a flag, only set 1 at a time */
 
-       char planes  ; /* - R_IMF_PLANES_BW, R_IMF_PLANES_RGB, R_IMF_PLANES_RGBA */
+       char planes;   /* - R_IMF_PLANES_BW, R_IMF_PLANES_RGB, R_IMF_PLANES_RGBA */
        char flag;     /* generic options for all image types, alpha zbuffer */
 
        char quality;  /* (0 - 100), eg: jpeg quality */
@@ -253,6 +279,9 @@ typedef struct ImageFormatData {
 
        char pad[7];
 
+       /* color management */
+       ColorManagedViewSettings view_settings;
+       ColorManagedDisplaySettings display_settings;
 } ImageFormatData;
 
 
@@ -268,7 +297,7 @@ typedef struct ImageFormatData {
 #define R_IMF_IMTYPE_AVIRAW         15
 #define R_IMF_IMTYPE_AVIJPEG        16
 #define R_IMF_IMTYPE_PNG            17
-#define R_IMF_IMTYPE_AVICODEC       18
+/* #define R_IMF_IMTYPE_AVICODEC    18 */ /* avicodec is nomore */
 #define R_IMF_IMTYPE_QUICKTIME      19
 #define R_IMF_IMTYPE_BMP            20
 #define R_IMF_IMTYPE_RADHDR         21
@@ -294,10 +323,11 @@ typedef struct ImageFormatData {
 /* return values from BKE_imtype_valid_depths, note this is depts per channel */
 #define R_IMF_CHAN_DEPTH_1  (1<<0) /* 1bits  (unused) */
 #define R_IMF_CHAN_DEPTH_8  (1<<1) /* 8bits  (default) */
-#define R_IMF_CHAN_DEPTH_12 (1<<2) /* 12bits (uncommon, jp2 supports) */
-#define R_IMF_CHAN_DEPTH_16 (1<<3) /* 16bits (tiff, halff float exr) */
-#define R_IMF_CHAN_DEPTH_24 (1<<4) /* 24bits (unused) */
-#define R_IMF_CHAN_DEPTH_32 (1<<5) /* 32bits (full float exr) */
+#define R_IMF_CHAN_DEPTH_10 (1<<2) /* 10bits (uncommon, Cineon/DPX support) */
+#define R_IMF_CHAN_DEPTH_12 (1<<3) /* 12bits (uncommon, jp2/DPX support) */
+#define R_IMF_CHAN_DEPTH_16 (1<<4) /* 16bits (tiff, halff float exr) */
+#define R_IMF_CHAN_DEPTH_24 (1<<5) /* 24bits (unused) */
+#define R_IMF_CHAN_DEPTH_32 (1<<6) /* 32bits (full float exr) */
 
 /* ImageFormatData.planes */
 #define R_IMF_PLANES_RGB   24
@@ -319,6 +349,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;
        
@@ -448,7 +481,7 @@ typedef struct RenderData {
        int color_mgt_flag;
        
        /** post-production settings. deprecated, but here for upwards compat (initialized to 1) */
-       float postgamma, posthue, postsat;       
+       float postgamma, posthue, postsat;
        
         /* Dither noise intensity */
        float dither_intensity;
@@ -459,14 +492,14 @@ typedef struct RenderData {
        float bake_maxdist, bake_biasdist, bake_pad;
 
        /* path to render output */
-       char pic[240];
+       char pic[1024]; /* 1024 = FILE_MAX */
 
        /* stamps flags. */
        int stamp;
        short stamp_font_id, pad3; /* select one of blenders bitmap fonts */
 
        /* stamp info user data. */
-       char stamp_udata[160];
+       char stamp_udata[768];
 
        /* foreground/background color. */
        float fg_stamp[4];
@@ -500,10 +533,17 @@ typedef struct RenderData {
        float pad2;
        struct Text *dometext  DNA_DEPRECATED;  //  XXX deprecated since 2.5
 
+       /* Freestyle line thickness options */
+       int line_thickness_mode;
+       float unit_line_thickness; /* in pixels */
+
        /* render engine */
        char engine[32];
 } RenderData;
 
+/* *************************************************************** */
+/* Render Conversion/Simplfication Settings */
+
 /* control render convert and shading engine */
 typedef struct RenderProfile {
        struct RenderProfile *next, *prev;
@@ -518,6 +558,9 @@ typedef struct RenderProfile {
        
 } RenderProfile;
 
+/* *************************************************************** */
+/* Game Engine - Dome */
+
 typedef struct GameDome {
        short res, mode;
        short angle, tilt;
@@ -532,6 +575,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;
@@ -562,8 +608,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;
@@ -583,7 +630,7 @@ typedef struct GameData {
        /*
         * bit 3: (gameengine): Activity culling is enabled.
         * bit 5: (gameengine) : enable Bullet DBVT tree for view frustrum culling
-       */
+        */
        int flag;
        short mode, matmode;
        short occlusionRes;             /* resolution of occlusion Z buffer in pixel */
@@ -592,6 +639,7 @@ typedef struct GameData {
        short ticrate, maxlogicstep, physubstep, maxphystep;
        short obstacleSimulation, pad1;
        float levelHeight;
+       float deactivationtime, lineardeactthreshold, angulardeactthreshold, pad2;
 } GameData;
 
 #define STEREO_NOSTEREO                1
@@ -609,10 +657,6 @@ typedef struct GameData {
 
 /* physicsEngine */
 #define WOPHY_NONE             0
-#define WOPHY_ENJI             1
-#define WOPHY_SUMO             2
-#define WOPHY_DYNAMO   3
-#define WOPHY_ODE              4
 #define WOPHY_BULLET   5
 
 /* obstacleSimulation */
@@ -640,12 +684,29 @@ 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
 
-typedef struct TimeMarker {
+/* UV Paint */
+#define UV_SCULPT_LOCK_BORDERS                         1
+#define UV_SCULPT_ALL_ISLANDS                          2
+
+#define UV_SCULPT_TOOL_PINCH                           1
+#define UV_SCULPT_TOOL_RELAX                           2
+#define UV_SCULPT_TOOL_GRAB                                    3
+
+#define UV_SCULPT_TOOL_RELAX_LAPLACIAN 1
+#define UV_SCULPT_TOOL_RELAX_HC                        2
+
+/* Markers */
+
+typedef struct TimeMarker {    
        struct TimeMarker *next, *prev;
        int frame;
        char name[64];
@@ -653,6 +714,12 @@ typedef struct TimeMarker {
        struct Object *camera;
 } TimeMarker;
 
+/* *************************************************************** */
+/* Paint Mode/Tool Data */
+
+#define PAINT_MAX_INPUT_SAMPLES 64
+
+/* Paint Tool Base */
 typedef struct Paint {
        struct Brush *brush;
        
@@ -660,9 +727,20 @@ typedef struct Paint {
        void *paint_cursor;
        unsigned char paint_cursor_col[4];
 
+       /* enum PaintFlags */
        int flags;
+
+       /* Paint stroke can use up to PAINT_MAX_INPUT_SAMPLES inputs to
+        * smooth the stroke */
+       int num_input_samples;
+       
+       int pad;
 } Paint;
 
+/* ------------------------------------------- */
+/* Image Paint */
+
+/* Texture/Image Editor */
 typedef struct ImagePaintSettings {
        Paint paint;
 
@@ -677,6 +755,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 */
@@ -684,6 +766,7 @@ typedef struct ParticleBrushData {
        float strength;
 } ParticleBrushData;
 
+/* Particle Edit Mode Settings */
 typedef struct ParticleEditSettings {
        short flag;
        short totrekey;
@@ -704,12 +787,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;
 
@@ -740,6 +821,13 @@ typedef struct Sculpt {
        int pad;
 } Sculpt;
 
+typedef struct UvSculpt {
+       Paint paint;
+} UvSculpt;
+/* ------------------------------------------- */
+/* Vertex Paint */
+
+/* Vertex Paint */
 typedef struct VPaint {
        Paint paint;
 
@@ -751,27 +839,82 @@ typedef struct VPaint {
        void *paintcursor;                                      /* wm handle */
 } VPaint;
 
-/* VPaint flag */
-#define VP_COLINDEX    1
-#define VP_AREA                2
+/* VPaint.flag */
+enum {
+       // VP_COLINDEX  = (1 << 0),  /* only paint onto active material*/  /* deprecated since before 2.49 */
+       VP_AREA         = (1 << 1),
+       VP_NORMALS      = (1 << 3),
+       VP_SPRAY        = (1 << 4),
+       // VP_MIRROR_X  = (1 << 5),  /* deprecated in 2.5x use (me->editflag & ME_EDIT_MIRROR_X) */
+       VP_ONLYVGROUP   = (1 << 7)   /* weight paint only */
+};
 
-#define VP_NORMALS     8
-#define VP_SPRAY       16
-// #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;
+
+       /* unified brush weight, [0, 1] */
+       float weight;
+
+       /* user preferences for sculpt and paint */
+       int flag;
+       int pad;
+} UnifiedPaintSettings;
+
+typedef enum {
+       UNIFIED_PAINT_SIZE  = (1<<0),
+       UNIFIED_PAINT_ALPHA = (1<<1),
+       UNIFIED_PAINT_WEIGHT = (1<<5),
+
+       /* 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 */
        VPaint *wpaint;         /* weight paint */
        Sculpt *sculpt;
+       UvSculpt *uvsculpt;     /* uv smooth */
        
-       /* Vertex groups */
+       /* Vertex group weight - used only for editmode, not weight
+        * paint */
        float vgroup_weight;
 
        /* Subdivide Settings */
        short cornertype;
-       short editbutflag;
+       short pad1;
        /*Triangle to Quad conversion threshold*/
        float jointrilimit;
        /* Editmode Tools */
@@ -804,7 +947,7 @@ typedef struct ToolSettings {
        short uvcalc_mapalign;
        short uvcalc_flag;
        short uv_flag, uv_selectmode;
-       short uv_pad;
+       short uv_subsurf_level;
        
        /* Grease Pencil */
        short gpencil_flags;
@@ -829,15 +972,11 @@ 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;
        float skgen_threshold_internal;
@@ -855,7 +994,7 @@ typedef struct ToolSettings {
        char  skgen_postpro_passes;
        char  skgen_subdivisions[3];
        char  skgen_multi_level;
-       
+
        /* Skeleton Sketching */
        struct Object *skgen_template;
        char bone_sketching;
@@ -871,42 +1010,67 @@ typedef struct ToolSettings {
        char edge_mode_live_unwrap;
 
        /* Transform */
-       char snap_mode;
+       char snap_mode, snap_node_mode;
+       char pad3;
        short snap_flag, snap_target;
        short proportional, prop_mode;
        char proportional_objects; /* proportional edit, object mode */
-       char pad[5];
+       char proportional_mask; /* proportional edit, object mode */
+       char pad4[2];
 
        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 */
-       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 */
+       /* UV painting */
+       int use_uv_sculpt;
+       int uv_sculpt_settings;
+       int uv_sculpt_tool;
+       int uv_relax_method;
+       /* XXX: these sculpt_paint_* fields are deprecated, use the
+        * unified_paint_settings field instead! */
+       short sculpt_paint_settings DNA_DEPRECATED;     short pad5;
+       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 */
+       char system_rotation; /* not implemented as a proper 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) */ 
@@ -932,7 +1096,7 @@ typedef struct Scene {
        
        short use_nodes;
        
-       struct bNodeTree *nodetree;     
+       struct bNodeTree *nodetree;
        
        struct Editing *ed;                                                             /* sequence editor data is allocated here */
        
@@ -954,7 +1118,7 @@ typedef struct Scene {
        
        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 */
+       /* none of the dependency graph  vars is mean to be saved */
        struct  DagForest *theDag;
        short dagisvalid, dagflags;
        short recalc;                           /* recalc = counterpart of ob->recalc */
@@ -964,7 +1128,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
@@ -982,8 +1146,13 @@ 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;       /* XXX. runtime flag for drawing, actually belongs in the window, only used by BKE_object_handle_update() */
        uint64_t customdata_mask_modal; /* XXX. same as above but for temp operator use (gl renders) */
+
+       /* Color Management */
+       ColorManagedViewSettings view_settings;
+       ColorManagedDisplaySettings display_settings;
+       ColorManagedColorspaceSettings sequencer_colorspace_settings;
 } Scene;
 
 
@@ -1002,7 +1171,7 @@ typedef struct Scene {
 #define R_EDGE                 0x0020
 #define R_FIELDS               0x0040
 #define R_FIELDSTILL   0x0080
-#define R_RADIO                        0x0100
+/*#define R_RADIO                      0x0100 */ /* deprecated */
 #define R_BORDER               0x0200
 #define R_PANORAMA             0x0400  /* deprecated as scene option, still used in renderer */
 #define R_CROP                 0x0800
@@ -1029,7 +1198,7 @@ typedef struct Scene {
 
 /* seq_flag */
 #define R_SEQ_GL_PREV 1
-#define R_SEQ_GL_REND 2
+// #define R_SEQ_GL_REND 2  // UNUSED, opengl render has its own operator now.
 
 /* displaymode */
 
@@ -1106,7 +1275,7 @@ typedef struct Scene {
 #define R_ALPHAKEY             2
 
 /* color_mgt_flag */
-#define R_COLOR_MANAGEMENT              (1 << 0)
+#define R_COLOR_MANAGEMENT              (1 << 0)  /* deprecated, should only be used in versioning code only */
 #define R_COLOR_MANAGEMENT_PREDIVIDE    (1 << 1)
 
 /* subimtype, flag options for imtype */
@@ -1140,9 +1309,14 @@ typedef struct Scene {
 /* simplify_flag */
 #define R_SIMPLE_NO_TRIANGULATE                1
 
+/* line_thickness_mode */
+#define R_LINE_THICKNESS_ABSOLUTE 1
+#define R_LINE_THICKNESS_RELATIVE 2
+
 /* sequencer seq_prev_type seq_rend_type */
 
 
+
 /* **************** SCENE ********************* */
 
 /* for general use */
@@ -1190,23 +1364,17 @@ typedef struct Scene {
 #define V3D_CAMERA_LOCAL(v3d) ((!(v3d)->scenelock && (v3d)->camera) ? (v3d)->camera : NULL)
 #define V3D_CAMERA_SCENE(scene, v3d) ((!(v3d)->scenelock && (v3d)->camera) ? (v3d)->camera : (scene)->camera)
 
-#define ID_NEW(a)              if( (a) && (a)->id.newid ) (a)= (void *)(a)->id.newid
-#define ID_NEW_US(a)   if( (a)->id.newid) {(a)= (void *)(a)->id.newid; (a)->id.us++;}
-#define ID_NEW_US2(a)  if( ((ID *)a)->newid) {(a)= ((ID *)a)->newid; ((ID *)a)->us++;}
 #define        CFRA                    (scene->r.cfra)
 #define SUBFRA                 (scene->r.subframe)
 #define        SFRA                    (scene->r.sfra)
 #define        EFRA                    (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 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) * (double)(a)) / (double)scene->r.frs_sec)
 #define TIME2FRA(a)           ((((double) scene->r.frs_sec) * (double)(a)) / (double)scene->r.frs_sec_base)
 #define FPS                     (((double) scene->r.frs_sec) / (double)scene->r.frs_sec_base)
 
-#define RAD_PHASE_PATCHES      1
-#define RAD_PHASE_FACES                2
-
 /* base->flag is in DNA_object_types.h */
 
 /* toolsettings->snap_flag */
@@ -1226,6 +1394,9 @@ typedef struct Scene {
 #define SCE_SNAP_MODE_EDGE             2
 #define SCE_SNAP_MODE_FACE             3
 #define SCE_SNAP_MODE_VOLUME   4
+#define SCE_SNAP_MODE_NODE_X   5
+#define SCE_SNAP_MODE_NODE_Y   6
+#define SCE_SNAP_MODE_NODE_XY  7
 
 /* toolsettings->selectmode */
 #define SCE_SELECT_VERTEX      1 /* for mesh */
@@ -1262,7 +1433,7 @@ typedef struct Scene {
 #define SCE_FRAME_DROP                 (1<<3)
 
 
-       /* return flag next_object function */
+       /* return flag BKE_scene_base_iter_next function */
 #define F_ERROR                        -1
 #define F_START                        0
 #define F_SCENE                        1
@@ -1276,6 +1447,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 {
@@ -1296,15 +1468,9 @@ typedef enum SculptFlags {
        SCULPT_SYMMETRY_FEATHER = (1<<6),
        SCULPT_USE_OPENMP = (1<<7),
        SCULPT_ONLY_DEFORM = (1<<8),
+       SCULPT_SHOW_DIFFUSE = (1<<9),
 } 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
@@ -1323,6 +1489,7 @@ typedef enum SculptFlags {
 #define UVCALC_FILLHOLES                       1
 #define UVCALC_NO_ASPECT_CORRECT       2       /* would call this UVCALC_ASPECT_CORRECT, except it should be default with old file */
 #define UVCALC_TRANSFORM_CORRECT       4       /* adjust UV's while transforming to avoid distortion */
+#define UVCALC_USESUBSURF                      8       /* Use mesh data after subsurf to compute UVs*/
 
 /* toolsettings->uv_flag */
 #define UV_SYNC_SELECTION      1
@@ -1376,15 +1543,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)