[Bf-blender-cvs] [c99b02b] terrible_consequencer: WIP support for meta trimming

Antony Riakiotakis noreply at git.blender.org
Mon Oct 20 15:01:49 CEST 2014


Commit: c99b02b047f08c4bcf997b35b1ea030a171f8b97
Author: Antony Riakiotakis
Date:   Mon Oct 20 11:04:14 2014 +0200
Branches: terrible_consequencer
https://developer.blender.org/rBc99b02b047f08c4bcf997b35b1ea030a171f8b97

WIP support for meta trimming

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

M	source/blender/editors/space_sequencer/sequencer_edit.c

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

diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 8d3099f..65e4aa0 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -1874,45 +1874,51 @@ static int sequencer_trim_invoke(bContext *C, wmOperator *op, const wmEvent *eve
 	return OPERATOR_RUNNING_MODAL;
 }
 
-static bool sequencer_trim(Scene *scene, Sequence *seq, int offset, int old_start)
+static bool sequencer_trim_recursively(Scene *scene, Sequence *seq, int offset, int old_start)
 {
 	/* only data types supported for now */
-	if ((offset != 0) && !(seq->type & SEQ_TYPE_EFFECT) && (seq->type != SEQ_TYPE_META)) {
-		int endframe;
-		Editing *ed = BKE_sequencer_editing_get(scene, false);
-		/* we have the offset, do the terrible math */
+	if (offset != 0) {
+		if (!(seq->type & SEQ_TYPE_EFFECT) && (seq->type != SEQ_TYPE_META)) {
+			int endframe;
+			Editing *ed = BKE_sequencer_editing_get(scene, false);
+			/* we have the offset, do the terrible math */
 
-		/* first, do the offset */
-		seq->start = old_start + offset;
-	
-		/* find the endframe */
-		endframe = seq->start + seq->len;
-		
-		/* now compute the terrible offsets */
-		if (endframe > seq->enddisp) {
-			seq->endstill = 0;
-			seq->endofs = endframe - seq->enddisp;
-		}
-		else if (endframe <= seq->enddisp) {
-			seq->endstill = seq->enddisp - endframe;
-			seq->endofs = 0;
-		}
-		
-		if (seq->start > seq->startdisp) {
-			seq->startstill = seq->start - seq->startdisp;
-			seq->startofs = 0;
+			/* first, do the offset */
+			seq->start = old_start + offset;
+
+			/* find the endframe */
+			endframe = seq->start + seq->len;
+
+			/* now compute the terrible offsets */
+			if (endframe > seq->enddisp) {
+				seq->endstill = 0;
+				seq->endofs = endframe - seq->enddisp;
+			}
+			else if (endframe <= seq->enddisp) {
+				seq->endstill = seq->enddisp - endframe;
+				seq->endofs = 0;
+			}
+
+			if (seq->start > seq->startdisp) {
+				seq->startstill = seq->start - seq->startdisp;
+				seq->startofs = 0;
+			}
+			else if (seq->start <= seq->startdisp) {
+				seq->startstill = 0;
+				seq->startofs = seq->startdisp - seq->start;
+			}
+
+			BKE_sequence_reload_new_file(scene, seq, false);
+			BKE_sequence_calc(scene, seq);
+
+			BKE_sequencer_free_imbuf(scene, &ed->seqbase, false);
+
+			return true;
 		}
-		else if (seq->start <= seq->startdisp) {
-			seq->startstill = 0;
-			seq->startofs = seq->startdisp - seq->start;
+		/* handle metas recursively here */
+		else if (seq->type == SEQ_TYPE_META) {
+
 		}
-		
-		BKE_sequence_reload_new_file(scene, seq, false);				
-		BKE_sequence_calc(scene, seq);
-	
-		BKE_sequencer_free_imbuf(scene, &ed->seqbase, false);
-		
-		return true;
 	}
 	
 	return false;
@@ -1923,7 +1929,7 @@ static int sequencer_trim_exec(bContext *C, wmOperator *op)
 	Scene *scene = CTX_data_scene(C);
 	Sequence *seq = BKE_sequencer_active_get(scene);
 	int offset = RNA_int_get(op->ptr, "offset");
-	if(sequencer_trim(scene, seq, offset, seq->start))
+	if(sequencer_trim_recursively(scene, seq, offset, seq->start))
 		return OPERATOR_FINISHED;
 	
 	return OPERATOR_CANCELLED;
@@ -1969,7 +1975,7 @@ static int sequencer_trim_modal(bContext *C, wmOperator *op, const wmEvent *even
 				ED_area_headerprint(sa, msg);
 			}
 			
-			if (sequencer_trim(scene, seq, offset, data->ts.start)) {
+			if (sequencer_trim_recursively(scene, seq, offset, data->ts.start)) {
 				WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
 			}
 			break;




More information about the Bf-blender-cvs mailing list