Added Lossless Output option for h264 codec.
[blender.git] / source / blender / makesdna / DNA_scene_types.h
index 15e7c82..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
 #define DURIAN_CAMERA_SWITCH
 
@@ -56,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;
@@ -64,6 +71,9 @@ typedef struct Base {
        struct Object *object;
 } Base;
 
+/* ************************************************************* */
+/* Output Format Data */
+
 typedef struct AviCodecData {
        void                    *lpFormat;  /* save format */
        void                    *lpParms;   /* compressor options */
@@ -139,6 +149,8 @@ typedef struct FFMpegCodecData {
        IDProperty *properties;
 } FFMpegCodecData;
 
+/* ************************************************************* */
+/* Audio */
 
 typedef struct AudioData {
        int mixrate; // 2.5: now in FFMpegCodecData: audio_mixrate
@@ -152,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;
@@ -208,11 +224,17 @@ typedef struct SceneRenderLayer {
 
 /* note, srl->passflag is treestore element 'nr' in outliner, short still... */
 
+/* *************************************************************** */
 
-/* generic image format settings,
- * no video codec info however */
+/* Generic image format settings,
+ * this is used for NodeImageFile and IMAGE_OT_save_as operator too.
+ *
+ * note: its a bit strange that even though this is an image format struct
+ *  the imtype can still be used to select video formats.
+ *  RNA ensures these enum's are only selectable for render output.
+ */
 typedef struct ImageFormatData {
-       char imtype;   /* R_PNG, R_... */
+       char imtype;   /* R_IMF_IMTYPE_PNG, R_... */
                       /* note, video types should only ever be set from this
                        * structure when used from RenderData */
        char depth;    /* bits per channel, R_IMF_CHAN_DEPTH_8 -> 32,
@@ -242,18 +264,42 @@ typedef struct ImageFormatData {
 
 } ImageFormatData;
 
+
+/* ImageFormatData.imtype */
+#define R_IMF_IMTYPE_TARGA           0
+#define R_IMF_IMTYPE_IRIS            1
+/* #define R_HAMX                    2 */ /* hamx is nomore */
+/* #define R_FTYPE                   3 */ /* ftype is nomore */
+#define R_IMF_IMTYPE_JPEG90          4
+/* #define R_MOVIE                   5 */ /* movie is nomore */
+#define R_IMF_IMTYPE_IRIZ            7
+#define R_IMF_IMTYPE_RAWTGA         14
+#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_QUICKTIME      19
+#define R_IMF_IMTYPE_BMP            20
+#define R_IMF_IMTYPE_RADHDR         21
+#define R_IMF_IMTYPE_TIFF           22
+#define R_IMF_IMTYPE_OPENEXR        23
+#define R_IMF_IMTYPE_FFMPEG         24
+#define R_IMF_IMTYPE_FRAMESERVER    25
+#define R_IMF_IMTYPE_CINEON         26
+#define R_IMF_IMTYPE_DPX            27
+#define R_IMF_IMTYPE_MULTILAYER     28
+#define R_IMF_IMTYPE_DDS            29
+#define R_IMF_IMTYPE_JP2            30
+#define R_IMF_IMTYPE_H264           31
+#define R_IMF_IMTYPE_XVID           32
+#define R_IMF_IMTYPE_THEORA         33
+
+#define R_IMF_IMTYPE_INVALID        255
+
 /* ImageFormatData.flag */
 #define R_IMF_FLAG_ZBUF         (1<<0)   /* was R_OPENEXR_ZBUF */
 #define R_IMF_FLAG_PREVIEW_JPG  (1<<1)   /* was R_PREVIEW_JPG */
 
-/* ImageFormatData.jp2_flag */
-#define R_IMF_JP2_FLAG_YCC          (1<<0)  /* when disabled use RGB */ /* was R_JPEG2K_YCC */
-#define R_IMF_JP2_FLAG_CINE_PRESET  (1<<1)  /* was R_JPEG2K_CINE_PRESET */
-#define R_IMF_JP2_FLAG_CINE_48      (1<<2)  /* was R_JPEG2K_CINE_48FPS */
-
-/* ImageFormatData.cineon_flag */
-#define R_IMF_CINEON_FLAG_LOG (1<<0)  /* was R_CINEON_LOG */
-
 /* 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) */
@@ -267,6 +313,24 @@ typedef struct ImageFormatData {
 #define R_IMF_PLANES_RGBA  32
 #define R_IMF_PLANES_BW    8
 
+/* ImageFormatData.exr_codec */
+#define R_IMF_EXR_CODEC_NONE  0
+#define R_IMF_EXR_CODEC_PXR24 1
+#define R_IMF_EXR_CODEC_ZIP   2
+#define R_IMF_EXR_CODEC_PIZ   3
+#define R_IMF_EXR_CODEC_RLE   4
+
+/* ImageFormatData.jp2_flag */
+#define R_IMF_JP2_FLAG_YCC          (1<<0)  /* when disabled use RGB */ /* was R_JPEG2K_YCC */
+#define R_IMF_JP2_FLAG_CINE_PRESET  (1<<1)  /* was R_JPEG2K_CINE_PRESET */
+#define R_IMF_JP2_FLAG_CINE_48      (1<<2)  /* was R_JPEG2K_CINE_48FPS */
+
+/* ImageFormatData.cineon_flag */
+#define R_IMF_CINEON_FLAG_LOG (1<<0)  /* was R_CINEON_LOG */
+
+/* *************************************************************** */
+/* Render Data */
+
 typedef struct RenderData {
        struct ImageFormatData im_format;
        
@@ -286,12 +350,18 @@ typedef struct RenderData {
 
        /** For UR edge rendering: give the edges this color */
        float edgeR, edgeG, edgeB;
-       
-       short fullscreen, xplay, yplay, freqplay;       /* standalone player */  //  XXX deprecated since 2.5
-       short depth, attrib;                    /* 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;       /* standalone player stereo settings */  //  XXX deprecated since 2.5
+       short stereomode  DNA_DEPRECATED;       /* standalone player stereo settings */  //  XXX deprecated since 2.5
        
        short dimensionspreset;         /* for the dimensions presets menu */
 
@@ -316,7 +386,7 @@ typedef struct RenderData {
         */
        short yparts;
 
-       short planes, imtype, subimtype, quality;                   /*deprecated!*/
+       short planes  DNA_DEPRECATED, imtype  DNA_DEPRECATED, subimtype  DNA_DEPRECATED, quality  DNA_DEPRECATED; /*deprecated!*/
        
        /**
         * Render to image editor, fullscreen or to new window.
@@ -343,8 +413,7 @@ typedef struct RenderData {
         */
        short raytrace_structure;
 
-       /* renderer (deprecated) */
-       short renderer;
+       short pad1;
 
        /* octree resolution */
        short ocres;
@@ -390,7 +459,7 @@ typedef struct RenderData {
        /* color management settings - color profiles, gamma correction, etc */
        int color_mgt_flag;
        
-       /** post-production settings. Depricated, but here for upwards compat (initialized to 1) */      
+       /** post-production settings. deprecated, but here for upwards compat (initialized to 1) */
        float postgamma, posthue, postsat;       
        
         /* Dither noise intensity */
@@ -429,24 +498,27 @@ typedef struct RenderData {
        float simplify_aosss;
 
        /* cineon */
-       short cineonwhite, cineonblack;                              /*deprecated*/
-       float cineongamma;                                           /*deprecated*/
+       short cineonwhite  DNA_DEPRECATED, cineonblack  DNA_DEPRECATED;  /*deprecated*/
+       float cineongamma  DNA_DEPRECATED;  /*deprecated*/
        
        /* jpeg2000 */
-       short jp2_preset, jp2_depth;                                 /*deprecated*/
+       short jp2_preset  DNA_DEPRECATED, jp2_depth  DNA_DEPRECATED;  /*deprecated*/
        int rpad3;
 
        /* Dome variables */ //  XXX deprecated since 2.5
-       short domeres, domemode;        //  XXX deprecated since 2.5
-       short domeangle, dometilt;      //  XXX deprecated since 2.5
-       float domeresbuf;       //  XXX deprecated since 2.5
-       float pad2;                     //  XXX deprecated since 2.5
-       struct Text *dometext;  //  XXX deprecated since 2.5
+       short domeres  DNA_DEPRECATED, domemode  DNA_DEPRECATED;        //  XXX deprecated since 2.5
+       short domeangle  DNA_DEPRECATED, dometilt  DNA_DEPRECATED;      //  XXX deprecated since 2.5
+       float domeresbuf  DNA_DEPRECATED;       //  XXX deprecated since 2.5
+       float pad2;
+       struct Text *dometext  DNA_DEPRECATED;  //  XXX deprecated since 2.5
 
        /* render engine */
        char engine[32];
 } RenderData;
 
+/* *************************************************************** */
+/* Render Conversion/Simplfication Settings */
+
 /* control render convert and shading engine */
 typedef struct RenderProfile {
        struct RenderProfile *next, *prev;
@@ -461,6 +533,9 @@ typedef struct RenderProfile {
        
 } RenderProfile;
 
+/* *************************************************************** */
+/* Game Engine - Dome */
+
 typedef struct GameDome {
        short res, mode;
        short angle, tilt;
@@ -475,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;
@@ -505,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;
@@ -531,7 +610,7 @@ typedef struct GameData {
        short mode, matmode;
        short occlusionRes;             /* resolution of occlusion Z buffer in pixel */
        short physicsEngine;
-       short pad[2];
+       short exitkey, pad;
        short ticrate, maxlogicstep, physubstep, maxphystep;
        short obstacleSimulation, pad1;
        float levelHeight;
@@ -583,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;
@@ -596,6 +682,10 @@ typedef struct TimeMarker {
        struct Object *camera;
 } TimeMarker;
 
+/* *************************************************************** */
+/* Paint Mode/Tool Data */
+
+/* Paint Tool Base */
 typedef struct Paint {
        struct Brush *brush;
        
@@ -606,6 +696,10 @@ typedef struct Paint {
        int flags;
 } Paint;
 
+/* ------------------------------------------- */
+/* Image Paint */
+
+/* Texture/Image Editor */
 typedef struct ImagePaintSettings {
        Paint paint;
 
@@ -620,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 */
@@ -627,6 +725,7 @@ typedef struct ParticleBrushData {
        float strength;
 } ParticleBrushData;
 
+/* Particle Edit Mode Settings */
 typedef struct ParticleEditSettings {
        short flag;
        short totrekey;
@@ -647,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;
 
@@ -683,6 +780,10 @@ typedef struct Sculpt {
        int pad;
 } Sculpt;
 
+/* ------------------------------------------- */
+/* Vertex Paint */
+
+/* Vertex Paint */
 typedef struct VPaint {
        Paint paint;
 
@@ -700,9 +801,55 @@ typedef struct VPaint {
 
 #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_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 */
@@ -773,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;
@@ -823,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) */ 
@@ -870,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 */
        
@@ -909,10 +1069,10 @@ 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; // XXX  deprecated since 2.5
+       struct GameFraming framing  DNA_DEPRECATED; // XXX  deprecated since 2.5
        struct GameData gm;
 
        /* Units */
@@ -926,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;
 
 
@@ -990,10 +1153,6 @@ typedef struct Scene {
 #define R_FILTER_MITCH 6
 #define R_FILTER_FAST_GAUSS    7 /* note, this is only used for nodes at the moment */
 
-/* yafray: renderer flag (not only exclusive to yafray) */
-#define R_INTERN       0
-#define R_YAFRAY       1
-
 /* raytrace structure */
 #define R_RAYSTRUCTURE_AUTO                            0
 #define R_RAYSTRUCTURE_OCTREE                  1
@@ -1041,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
@@ -1049,36 +1210,8 @@ typedef struct Scene {
 #define R_ALPHAKEY             2
 
 /* color_mgt_flag */
-#define R_COLOR_MANAGEMENT     1
-
-/* imtype */
-#define R_TARGA                0
-#define R_IRIS         1
-/* #define R_HAMX              2 */ /* hamx is nomore */
-/* #define R_FTYPE             3 */ /* ftype is nomore */
-#define R_JPEG90       4
-/*#define R_MOVIE              5*/ /* movie is nomore */
-#define R_IRIZ         7
-#define R_RAWTGA       14
-#define R_AVIRAW       15
-#define R_AVIJPEG      16
-#define R_PNG          17
-#define R_AVICODEC     18
-#define R_QUICKTIME 19
-#define R_BMP          20
-#define R_RADHDR       21
-#define R_TIFF         22
-#define R_OPENEXR      23
-#define R_FFMPEG        24
-#define R_FRAMESERVER   25
-#define R_CINEON               26
-#define R_DPX                  27
-#define R_MULTILAYER   28
-#define R_DDS                  29
-#define R_JP2                  30
-#define R_H264         31
-#define R_XVID         32
-#define R_THEORA               33
+#define R_COLOR_MANAGEMENT              (1 << 0)
+#define R_COLOR_MANAGEMENT_PREDIVIDE    (1 << 1)
 
 /* subimtype, flag options for imtype */
 #define R_OPENEXR_HALF    1                                      /*deprecated*/
@@ -1128,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)
@@ -1228,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 {
@@ -1250,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
@@ -1327,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)