[Bf-blender-cvs] [09c83d6] master: Viewport: Add adjustable safe areas, 3d-view & VSE

Campbell Barton noreply at git.blender.org
Mon Jan 19 06:50:29 CET 2015


Commit: 09c83d6fea0fc55b54900329c1b81d992d814b9e
Author: Campbell Barton
Date:   Mon Jan 19 16:30:35 2015 +1100
Branches: master
https://developer.blender.org/rB09c83d6fea0fc55b54900329c1b81d992d814b9e

Viewport: Add adjustable safe areas, 3d-view & VSE

Also adds safe-area presets.

D325 by Diego Gangl with own edits.

===================================================================

M	intern/cycles/blender/addon/ui.py
A	release/scripts/presets/safe_areas/14_colon_9_in_16_colon_9.py
A	release/scripts/presets/safe_areas/16_colon_9.py
A	release/scripts/presets/safe_areas/4_colon_3_in_16_colon_9.py
M	release/scripts/startup/bl_operators/presets.py
M	release/scripts/startup/bl_ui/properties_data_camera.py
M	release/scripts/startup/bl_ui/space_sequencer.py
M	source/blender/blenkernel/BKE_scene.h
M	source/blender/blenkernel/intern/scene.c
M	source/blender/blenloader/intern/versioning_270.c
M	source/blender/blenloader/intern/versioning_legacy.c
M	source/blender/editors/include/UI_interface.h
M	source/blender/editors/interface/interface_draw.c
M	source/blender/editors/space_sequencer/sequencer_draw.c
M	source/blender/editors/space_sequencer/space_sequencer.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/makesdna/DNA_camera_types.h
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/makesrna/RNA_access.h
M	source/blender/makesrna/intern/rna_camera.c
M	source/blender/makesrna/intern/rna_scene.c
M	source/blender/makesrna/intern/rna_space.c

===================================================================

diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 8fd09c3..da303ce 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -1417,6 +1417,7 @@ def get_panels():
         "DATA_PT_vertex_colors",
         "DATA_PT_camera",
         "DATA_PT_camera_display",
+        "DATA_PT_camera_safe_areas",
         "DATA_PT_lens",
         "DATA_PT_speaker",
         "DATA_PT_distance",
diff --git a/release/scripts/presets/safe_areas/14_colon_9_in_16_colon_9.py b/release/scripts/presets/safe_areas/14_colon_9_in_16_colon_9.py
new file mode 100644
index 0000000..e486b41
--- /dev/null
+++ b/release/scripts/presets/safe_areas/14_colon_9_in_16_colon_9.py
@@ -0,0 +1,7 @@
+import bpy
+safe_areas = bpy.context.scene.safe_areas
+
+safe_areas.title = (0.035, 0.035)
+safe_areas.action = (0.1, 0.05)
+safe_areas.title_center = (0.15, 0.05)
+safe_areas.action_center = (0.1, 0.05)
diff --git a/release/scripts/presets/safe_areas/16_colon_9.py b/release/scripts/presets/safe_areas/16_colon_9.py
new file mode 100644
index 0000000..221b8db
--- /dev/null
+++ b/release/scripts/presets/safe_areas/16_colon_9.py
@@ -0,0 +1,7 @@
+import bpy
+safe_areas = bpy.context.scene.safe_areas
+
+safe_areas.title = (0.035, 0.035)
+safe_areas.action = (0.1, 0.05)
+safe_areas.title_center = (0.0, 0.0)
+safe_areas.action_center = (0.0, 0.0)
diff --git a/release/scripts/presets/safe_areas/4_colon_3_in_16_colon_9.py b/release/scripts/presets/safe_areas/4_colon_3_in_16_colon_9.py
new file mode 100644
index 0000000..c10bc6c
--- /dev/null
+++ b/release/scripts/presets/safe_areas/4_colon_3_in_16_colon_9.py
@@ -0,0 +1,7 @@
+import bpy
+safe_areas = bpy.context.scene.safe_areas
+
+safe_areas.title = (0.035, 0.035)
+safe_areas.action = (0.1, 0.05)
+safe_areas.title_center = (0.175, 0.05)
+safe_areas.action_center = (0.15, 0.05)
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index f89792b..5e3485a 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -277,6 +277,26 @@ class AddPresetCamera(AddPresetBase, Operator):
         return preset_values
 
 
+class AddPresetSafeAreas(AddPresetBase, Operator):
+    """Add or remove a Safe Areas Preset"""
+    bl_idname = "safe_areas.preset_add"
+    bl_label = "Add Safe Area Preset"
+    preset_menu = "SAFE_AREAS_MT_presets"
+
+    preset_defines = [
+        "safe_areas = bpy.context.scene.safe_areas"
+    ]
+
+    preset_values = [
+        "safe_areas.title",
+        "safe_areas.action",
+        "safe_areas.title_center",
+        "safe_areas.action_center",
+    ]
+
+    preset_subdir = "safe_areas"
+
+
 class AddPresetSSS(AddPresetBase, Operator):
     """Add or remove a Subsurface Scattering Preset"""
     bl_idname = "material.sss_preset_add"
diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py
index fee3e58..9c94c9c 100644
--- a/release/scripts/startup/bl_ui/properties_data_camera.py
+++ b/release/scripts/startup/bl_ui/properties_data_camera.py
@@ -41,6 +41,14 @@ class CAMERA_MT_presets(Menu):
     draw = Menu.draw_preset
 
 
+class SAFE_AREAS_MT_presets(Menu):
+    bl_label = "Camera Presets"
+    preset_subdir = "safe_areas"
+    preset_operator = "script.execute_preset"
+    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+    draw = Menu.draw_preset
+
+
 class DATA_PT_context_camera(CameraButtonsPanel, Panel):
     bl_label = ""
     bl_options = {'HIDE_HEADER'}
@@ -195,7 +203,7 @@ class DATA_PT_camera_display(CameraButtonsPanel, Panel):
         col = split.column()
         col.prop(cam, "show_limits", text="Limits")
         col.prop(cam, "show_mist", text="Mist")
-        col.prop(cam, "show_title_safe", text="Safe Areas")
+
         col.prop(cam, "show_sensor", text="Sensor")
         col.prop(cam, "show_name", text="Name")
 
@@ -210,10 +218,57 @@ class DATA_PT_camera_display(CameraButtonsPanel, Panel):
         sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True)
 
 
+class DATA_PT_camera_safe_areas(CameraButtonsPanel, Panel):
+    bl_label = "Safe Areas"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+
+    def draw_header(self, context):
+        cam = context.camera
+
+        self.layout.prop(cam, "show_safe_areas", text="")
+
+    def draw(self, context):
+        layout = self.layout
+        cam = context.camera
+
+        draw_display_safe_settings(layout, cam)
+
+
 class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, Panel):
     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
     _context_path = "object.data"
     _property_type = bpy.types.Camera
 
+
+def draw_display_safe_settings(layout, settings):
+
+    safe_data = bpy.context.scene.safe_areas
+    show_safe_areas = settings.show_safe_areas
+    show_safe_center = settings.show_safe_center
+
+    split = layout.split()
+
+    col = split.column()
+    row = col.row(align=True)
+    row.menu("SAFE_AREAS_MT_presets", text=bpy.types.SAFE_AREAS_MT_presets.bl_label)
+    row.operator("safe_areas.preset_add", text="", icon='ZOOMIN')
+    row.operator("safe_areas.preset_add", text="", icon='ZOOMOUT').remove_active = True
+
+    col = split.column()
+    col.prop(settings, "show_safe_center", text="Center-Cut Safe Areas")
+
+    split = layout.split()
+    col = split.column()
+    col.active = show_safe_areas
+    col.prop(safe_data, "title", slider=True)
+    col.prop(safe_data, "action", slider=True)
+
+    col = split.column()
+    col.active = show_safe_areas and show_safe_center
+    col.prop(safe_data, "title_center", slider=True)
+    col.prop(safe_data, "action_center", slider=True)
+
+
 if __name__ == "__main__":  # only for live edit.
     bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 66b3cbe..bf63b84 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -22,6 +22,7 @@ from bpy.types import Header, Menu, Panel
 from bl_ui.properties_grease_pencil_common import GreasePencilDataPanel, GreasePencilToolsPanel
 from bpy.app.translations import pgettext_iface as iface_
 
+from bl_ui.properties_data_camera import draw_display_safe_settings
 
 def act_strip(context):
     try:
@@ -205,7 +206,7 @@ class SEQUENCER_MT_view(Menu):
 
         if is_preview:
             if st.display_mode == 'IMAGE':
-                layout.prop(st, "show_safe_margin")
+                layout.prop(st, "show_safe_areas")
             elif st.display_mode == 'WAVEFORM':
                 layout.prop(st, "show_separate_color")
 
@@ -973,12 +974,38 @@ class SEQUENCER_PT_view(SequencerButtonsPanel_Output, Panel):
         col = layout.column()
         if st.display_mode == 'IMAGE':
             col.prop(st, "draw_overexposed")
-            col.prop(st, "show_safe_margin")
+            col.separator()
+
         elif st.display_mode == 'WAVEFORM':
             col.prop(st, "show_separate_color")
+
+        col = layout.column()
+        col.separator()
         col.prop(st, "proxy_render_size")
 
 
+class SEQUENCER_PT_view_safe_areas(SequencerButtonsPanel_Output, Panel):
+    bl_label = "Safe Areas"
+    bl_options = {'DEFAULT_CLOSED'}
+
+    @classmethod
+    def poll(cls, context):
+        st = context.space_data
+        is_preview = st.view_type in {'PREVIEW', 'SEQUENCER_PREVIEW'}
+        return is_preview and (st.display_mode == 'IMAGE')
+
+    def draw_header(self, context):
+        st = context.space_data
+
+        self.layout.prop(st, "show_safe_areas", text="")
+
+    def draw(self, context):
+        layout = self.layout
+        st = context.space_data
+
+        draw_display_safe_settings(layout, st)
+
+
 class SEQUENCER_PT_modifiers(SequencerButtonsPanel, Panel):
     bl_label = "Modifiers"
 
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index eac4f6a..149472d 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -39,6 +39,7 @@ extern "C" {
 
 struct AviCodecData;
 struct Base;
+struct DisplaySafeAreas;
 struct EvaluationContext;
 struct bglMats;
 struct Main;
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 13e9b7f..577dbd6 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -689,6 +689,12 @@ Scene *BKE_scene_add(Main *bmain, const char *name)
 	BLI_strncpy(sce->sequencer_colorspace_settings.name, colorspace_name,
 	            sizeof(sce->sequencer_colorspace_settings.name));
 
+	/* Safe Areas */
+	copy_v2_fl2(sce->safe_areas.title, 3.5f / 100.0f, 3.5f / 100.0f);
+	copy_v2_fl2(sce->safe_areas.action, 10.0f / 100.0f, 5.0f / 100.0f);
+	copy_v2_fl2(sce->safe_areas.title_center, 17.5f / 100.0f, 5.0f / 100.0f);
+	copy_v2_fl2(sce->safe_areas.action_center, 15.0f / 100.0f, 5.0f / 100.0f);
+
 	return sce;
 }
 
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index e6e4375..bde3f0f 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -458,4 +458,18 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
 #undef BRUSH_RAKE
 #undef BRUSH_RANDOM_ROTATION
 	}
+
+	/* Customizable Safe Areas */
+	if (!MAIN_VERSION_ATLEAST(main, 273, 2)) {
+		if (!DNA_struct_elem_find(fd->filesdna, "Scene", "DisplaySafeAreas", "safe_areas")) {
+			Scene *scene;
+
+			for (scene = main->scene.first; scene; scene = scene->id.next) {
+				copy_v2_fl2(scene->safe_areas.title, 3.5f / 100.0f, 3.5f / 100.0f);
+				copy_v2_fl2(scene->safe_areas.action, 10.0f / 100.0f, 5.0f / 100.0f);
+				copy_v2_fl2(scene->safe_areas.title_center, 17.5f / 100.0f, 5.0f / 100.0f);
+				copy_v2_fl2(scene->safe_areas.action_center, 15.0f / 100.0f, 5.0f / 100.0f);
+			}
+		}
+	}
 }
diff --git a/source/blender/blenloader/intern/versioning_legacy.c b/source/blender/blenloader/intern/versioning_l

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list