[Bf-blender-cvs] [5891dba] multiview: Sequencer: Implement 'Use Multi-View' for sequencer strips as well.
Dalai Felinto
noreply at git.blender.org
Wed Feb 25 20:48:25 CET 2015
Commit: 5891dba59f17148f6b3808c60b435aa6c49365ef
Author: Dalai Felinto
Date: Tue Feb 24 21:55:47 2015 -0300
Branches: multiview
https://developer.blender.org/rB5891dba59f17148f6b3808c60b435aa6c49365ef
Sequencer: Implement 'Use Multi-View' for sequencer strips as well.
Note: Sequencer still needs the same cleanup we did for Image/Movie
datablocks regarding the load functions.
The Sequencer code flow is very differnt than regular image I/O though. So
I'm leaving the sequencer cleanup for after I get the other suggested
changes implemented in the Image code (i.e., more separation be image
and Scene/RenderData).
===================================================================
M release/scripts/startup/bl_ui/space_sequencer.py
M source/blender/blenkernel/intern/sequencer.c
M source/blender/editors/space_sequencer/sequencer_add.c
M source/blender/makesdna/DNA_sequence_types.h
M source/blender/makesrna/intern/rna_scene.c
M source/blender/makesrna/intern/rna_sequencer.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 21955d9..e33a34c 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -658,6 +658,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
+ scene = context.scene
strip = act_strip(context)
@@ -671,7 +672,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
# Current element for the filename
- elem = strip.strip_elem_from_frame(context.scene.frame_current)
+ elem = strip.strip_elem_from_frame(scene.frame_current)
if elem:
split = layout.split(percentage=0.2)
split.label(text="File:")
@@ -717,6 +718,19 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
col.prop(strip, "frame_offset_start", text="Start")
col.prop(strip, "frame_offset_end", text="End")
+ if scene.render.use_multiview and seq_type in {'IMAGE', 'MOVIE'}:
+ layout.prop(strip, "use_multiview")
+
+ col = layout.column()
+ col.active = strip.use_multiview
+
+ col.label(text="Views Format:")
+ col.row().prop(strip, "views_format", expand=True)
+
+ box = col.box()
+ box.active = strip.views_format == 'STEREO_3D'
+ box.template_image_stereo_3d(strip.stereo_3d_format)
+
class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel):
bl_label = "Sound"
@@ -1098,35 +1112,5 @@ class SEQUENCER_PT_grease_pencil_tools(GreasePencilToolsPanel, SequencerButtonsP
# toolbar, which doesn't exist here...
-class SEQUENCER_PT_stereo_3d(SequencerButtonsPanel, Panel):
- bl_label = "Stereoscopy"
- bl_options = {'DEFAULT_CLOSED'}
-
- @classmethod
- def poll(cls, context):
- if not cls.has_sequencer(context):
- return False
-
- strip = act_strip(context)
- if not strip:
- return False
-
- return (strip.type in {'IMAGE', 'MOVIE'} and
- context.scene.render.use_multiview)
-
- def draw(self, context):
- layout = self.layout
-
- strip = act_strip(context)
-
- col = layout
- col.label(text="Views Format:")
- col.row().prop(strip, "views_format", expand=True)
-
- box = col.box()
- box.active = strip.views_format == 'STEREO_3D'
- box.template_image_stereo_3d(strip.stereo_3d_format)
-
-
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 15e9a34..f6fc756 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -94,7 +94,7 @@ static ImBuf *seq_render_strip_stack(const SeqRenderData *context, ListBase *seq
static ImBuf *seq_render_strip(const SeqRenderData *context, Sequence *seq, float cfra);
static void seq_free_animdata(Scene *scene, Sequence *seq);
static ImBuf *seq_render_mask(const SeqRenderData *context, Mask *mask, float nr, bool make_float);
-static size_t seq_num_files(Scene *scene, char views_format);
+static size_t seq_num_files(Scene *scene, char views_format, const bool is_multiview);
static void seq_anim_add_suffix(Scene *scene, struct anim *anim, const size_t view_id);
/* **** XXX ******** */
@@ -836,7 +836,8 @@ void BKE_sequence_reload_new_file(Scene *scene, Sequence *seq, const bool lock_r
case SEQ_TYPE_MOVIE:
{
StripAnim *sanim;
- const bool is_multiview = (scene->r.scemode & R_MULTIVIEW) != 0;
+ const bool is_multiview = (seq->flag & SEQ_USE_VIEWS) != 0 &&
+ (scene->r.scemode & R_MULTIVIEW) != 0;
BLI_join_dirfile(path, sizeof(path), seq->strip->dir,
seq->strip->stripdata->name);
@@ -847,7 +848,7 @@ void BKE_sequence_reload_new_file(Scene *scene, Sequence *seq, const bool lock_r
if (is_multiview && (seq->views_format == R_IMF_VIEWS_INDIVIDUAL)) {
char prefix[FILE_MAX] = {'\0'};
char *ext = NULL;
- size_t totfiles = seq_num_files(scene, seq->views_format);
+ size_t totfiles = seq_num_files(scene, seq->views_format, true);
int i = 0;
BKE_scene_view_prefix_get(scene, path, prefix, &ext);
@@ -1409,10 +1410,8 @@ static double seq_rendersize_to_scale_factor(int size)
}
/* the number of files will vary according to the stereo format */
-static size_t seq_num_files(Scene *scene, char views_format)
+static size_t seq_num_files(Scene *scene, char views_format, const bool is_multiview)
{
- const bool is_multiview = (scene->r.scemode & R_MULTIVIEW) != 0;
-
if (!is_multiview) {
return 1;
}
@@ -1430,7 +1429,7 @@ static void seq_open_anim_file(Scene *scene, Sequence *seq, bool openfile)
char dir[FILE_MAX];
char name[FILE_MAX];
StripProxy *proxy;
- const bool is_multiview = (scene->r.scemode & R_MULTIVIEW) != 0;
+ const bool is_multiview = (seq->flag & SEQ_USE_VIEWS) != 0 && (scene->r.scemode & R_MULTIVIEW) != 0;
if ((seq->anims.first != NULL) && (((StripAnim *)seq->anims.first)->anim != NULL)) {
return;
@@ -1451,7 +1450,7 @@ static void seq_open_anim_file(Scene *scene, Sequence *seq, bool openfile)
}
if (is_multiview && seq->views_format == R_IMF_VIEWS_INDIVIDUAL) {
- size_t totfiles = seq_num_files(scene, seq->views_format);
+ size_t totfiles = seq_num_files(scene, seq->views_format, true);
char prefix[FILE_MAX] = {'\0'};
char *ext = NULL;
int i;
@@ -3016,7 +3015,8 @@ static ImBuf *do_render_strip_uncached(const SeqRenderData *context, Sequence *s
case SEQ_TYPE_IMAGE:
{
- bool is_multiview = (context->scene->r.scemode & R_MULTIVIEW) != 0;
+ bool is_multiview = (seq->flag & SEQ_USE_VIEWS) != 0 &&
+ (context->scene->r.scemode & R_MULTIVIEW) != 0;
StripElem *s_elem = BKE_sequencer_give_stripelem(seq, cfra);
int flag;
@@ -3033,7 +3033,7 @@ static ImBuf *do_render_strip_uncached(const SeqRenderData *context, Sequence *s
/* don't do anything */
}
else if (is_multiview) {
- size_t totfiles = seq_num_files(context->scene, seq->views_format);
+ size_t totfiles = seq_num_files(context->scene, seq->views_format, true);
size_t totviews;
struct ImBuf **ibufs_arr;
char prefix[FILE_MAX] = {'\0'};
@@ -3120,7 +3120,8 @@ monoview_image:
case SEQ_TYPE_MOVIE:
{
StripAnim *sanim;
- bool is_multiview = (context->scene->r.scemode & R_MULTIVIEW) != 0;
+ bool is_multiview = (seq->flag & SEQ_USE_VIEWS) != 0 &&
+ (context->scene->r.scemode & R_MULTIVIEW) != 0;
/* load all the videos */
seq_open_anim_file(context->scene, seq, false);
@@ -3128,7 +3129,7 @@ monoview_image:
if (is_multiview) {
ImBuf **ibuf_arr;
size_t totviews;
- size_t totfiles = seq_num_files(context->scene, seq->views_format);
+ size_t totfiles = seq_num_files(context->scene, seq->views_format, true);
int i;
if (totfiles != BLI_listbase_count_ex(&seq->anims, totfiles + 1))
@@ -4832,6 +4833,7 @@ Sequence *BKE_sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoad
*seq->stereo3d_format = *seq_load->stereo3d_format;
seq->views_format = seq_load->views_format;
+ seq->flag |= seq_load->flag & SEQ_USE_VIEWS;
seq_load_apply(scene, seq, seq_load);
@@ -4927,8 +4929,8 @@ Sequence *BKE_sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoad
Strip *strip;
StripElem *se;
char colorspace[64] = "\0"; /* MAX_COLORSPACE_NAME */
- size_t totfiles = seq_num_files(scene, seq_load->views_format);
- bool is_multiview = (scene->r.scemode & R_MULTIVIEW) != 0;
+ bool is_multiview = (seq_load->flag & SEQ_USE_VIEWS) != 0;
+ size_t totfiles = seq_num_files(scene, seq_load->views_format, is_multiview);
struct anim **anim_arr;
int i;
@@ -4981,6 +4983,7 @@ monoview:
*seq->stereo3d_format = *seq_load->stereo3d_format;
seq->views_format = seq_load->views_format;
}
+ seq->flag |= seq_load->flag & SEQ_USE_VIEWS;
seq->type = SEQ_TYPE_MOVIE;
seq->blend_mode = SEQ_TYPE_CROSS; /* so alpha adjustment fade to the strip below */
diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c
index e744372..8bd8903 100644
--- a/source/blender/editors/space_sequencer/sequencer_add.c
+++ b/source/blender/editors/space_sequencer/sequencer_add.c
@@ -234,6 +234,7 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op)
ImageFormatData *imf = &sad->im_format;
seq_load->views_format = imf->views_format;
+ seq_load->flag |= SEQ_USE_VIEWS;
/* operator custom data is always released after the SeqLoadInfo, no need to handle the memory here */
seq_load->stereo3d_format = &imf->stereo3d_format;
@@ -648,9 +649,9 @@ static int sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, const w
sequencer_add_init(C, op);
/* show multiview save options only if scene has multiviews */
- prop = RNA_struct_find_property(op->ptr, "use_multiview");
+ prop = RNA_struct_find_property(op->ptr, "show_multiview");
RNA_property_boolean_set(op->ptr, prop, (scene->r.scemode & R_MULTIVIEW) != 0);
-
+
WM_event_add_fileselect(C, op);
return OPERATOR_RUNNING_MODAL;
@@ -663,7 +664,6 @@ static void sequencer_add_draw(bContext *UNUSED(C), wmOperator *op)
SequencerAddData *sad = op->customdata;
ImageFormatData *imf = &sad->im_format;
PointerRNA imf_ptr, ptr;
- const bool is_multiview = RNA_boolean_get(op->ptr, "use_multiview");
/* main draw call */
RNA_pointer_create(NULL, op->type->srna, op->properties, &ptr);
@@ -673,8 +673,8 @@ static void sequencer_add_draw(bContext *UNUSED(C), wmOperator *op)
RNA_pointer_create(NULL, &RNA_ImageFormatSettings, imf, &imf_ptr);
/* multiview template */
- if (is_multiview)
- uiTemplateImageFormatViews(layout, &imf_ptr);
+ if (RNA_boolean_get(op->ptr, "show_multiview"))
+ uiTemplateImageFormatViews(layout, &imf_ptr, op->ptr);
}
void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot)
@@ -831,
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list