Merged changes in the trunk up to revision 51718.
[blender.git] / source / blender / makesdna / DNA_scene_types.h
index e2875d011186db145d67788d584ea93f26603a70..9bfa0e7fdf7094b9b5e3eff15c5a6b15bb63d775 100644 (file)
 
 #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"
+#include "DNA_freestyle_types.h"
 
 struct Object;
 struct Brush;
@@ -176,14 +178,19 @@ typedef struct SceneRenderLayer {
        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;
+       
 } SceneRenderLayer;
 
 /* srl->layflag */
@@ -193,7 +200,8 @@ typedef struct SceneRenderLayer {
 #define SCE_LAY_EDGE   8
 #define SCE_LAY_SKY            16
 #define SCE_LAY_STRAND 32
-       /* flags between 32 and 0x8000 are set to 1 already, for future options */
+#define SCE_LAY_FRS            64
+       /* flags between 64 and 0x8000 are set to 1 already, for future options */
 
 #define SCE_LAY_ALL_Z          0x8000
 #define SCE_LAY_XOR                    0x10000
@@ -249,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 */
@@ -271,6 +279,9 @@ typedef struct ImageFormatData {
 
        char pad[7];
 
+       /* color management */
+       ColorManagedViewSettings view_settings;
+       ColorManagedDisplaySettings display_settings;
 } ImageFormatData;
 
 
@@ -286,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
@@ -312,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
@@ -469,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;
@@ -521,6 +533,10 @@ 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;
@@ -614,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 */
@@ -623,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
@@ -640,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 */
@@ -704,6 +717,8 @@ typedef struct TimeMarker {
 /* *************************************************************** */
 /* Paint Mode/Tool Data */
 
+#define PAINT_MAX_INPUT_SAMPLES 64
+
 /* Paint Tool Base */
 typedef struct Paint {
        struct Brush *brush;
@@ -712,7 +727,14 @@ 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;
 
 /* ------------------------------------------- */
@@ -817,14 +839,15 @@ typedef struct VPaint {
        void *paintcursor;                                      /* wm handle */
 } VPaint;
 
-/* VPaint flag */
-#define VP_COLINDEX    1
-#define VP_AREA                2  /* vertex 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  /* weight paint only */
+/* 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 */
+};
 
 /* *************************************************************** */
 /* Transform Orientations */
@@ -837,11 +860,12 @@ typedef struct TransformOrientation {
 } TransformOrientation;
 
 /* *************************************************************** */
-/* Unified Paint Settings */
+/* 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 */
* 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;
@@ -852,21 +876,26 @@ typedef struct UnifiedPaintSettings {
        /* 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 */
+        * 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 */
+        * BRUSH_ALPHA_PRESSURE */
        UNIFIED_PAINT_BRUSH_ALPHA_PRESSURE  = (1<<4)
 } UnifiedPaintSettingsFlags;
 
@@ -879,12 +908,13 @@ typedef struct ToolSettings {
        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 */
@@ -942,11 +972,11 @@ typedef struct ToolSettings {
 
        /* Auto-Keying Mode */
        short autokey_mode, autokey_flag;       /* defines in DNA_userdef_types.h */
-       
+
        /* Multires */
        char multires_subdiv_type;
        char pad2[5];
-       
+
        /* Skeleton generation */
        short skgen_resolution;
        float skgen_threshold_internal;
@@ -964,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;
@@ -980,11 +1010,13 @@ 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 */
@@ -995,8 +1027,8 @@ typedef struct ToolSettings {
        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 pad1;
+        * 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;
@@ -1024,7 +1056,7 @@ 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 implemented as a propper unit system yet */
+       char system_rotation; /* not implemented as a proper unit system yet */
        short flag;
 } UnitSettings;
 
@@ -1064,7 +1096,7 @@ typedef struct Scene {
        
        short use_nodes;
        
-       struct bNodeTree *nodetree;     
+       struct bNodeTree *nodetree;
        
        struct Editing *ed;                                                             /* sequence editor data is allocated here */
        
@@ -1086,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 */
@@ -1114,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;
 
 
@@ -1134,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
@@ -1157,10 +1194,11 @@ 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 */
 
 /* 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 */
 
@@ -1237,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 */
@@ -1271,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 */
@@ -1321,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 */
@@ -1357,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 */
@@ -1393,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
@@ -1428,6 +1468,7 @@ typedef enum SculptFlags {
        SCULPT_SYMMETRY_FEATHER = (1<<6),
        SCULPT_USE_OPENMP = (1<<7),
        SCULPT_ONLY_DEFORM = (1<<8),
+       SCULPT_SHOW_DIFFUSE = (1<<9),
 } SculptFlags;
 
 /* ImagePaintSettings.flag */
@@ -1466,6 +1507,7 @@ typedef enum SculptFlags {
 #define EDGE_MODE_TAG_SHARP                            2
 #define EDGE_MODE_TAG_CREASE                   3
 #define EDGE_MODE_TAG_BEVEL                            4
+#define EDGE_MODE_TAG_FREESTYLE                        5
 
 /* toolsettings->gpencil_flags */
 #define GP_TOOL_FLAG_PAINTSESSIONS_ON  (1<<0)