[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25504] trunk/blender/source/blender: removing sequence strip overlap didnt adjust the animation key time

Campbell Barton ideasman42 at gmail.com
Mon Dec 21 17:57:39 CET 2009


Revision: 25504
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25504
Author:   campbellbarton
Date:     2009-12-21 17:57:39 +0100 (Mon, 21 Dec 2009)

Log Message:
-----------
removing sequence strip overlap didnt adjust the animation key time
single images were not having their animation data transformed correctly
made sequence strip opacity 0-1 rather then 0-100 in RNA

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c
    trunk/blender/source/blender/makesrna/intern/rna_sequencer.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2009-12-21 16:19:08 UTC (rev 25503)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2009-12-21 16:57:39 UTC (rev 25504)
@@ -188,8 +188,8 @@
 int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test);
 struct ListBase *seq_seqbase(struct ListBase *seqbase, struct Sequence *seq);
 void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs);
-int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test);
-int shuffle_seq_time(ListBase * seqbasep);
+int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene *evil_scene);
+int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene);
 int seqbase_isolated_sel_check(struct ListBase *seqbase);
 void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage);
 

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2009-12-21 16:19:08 UTC (rev 25503)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2009-12-21 16:57:39 UTC (rev 25504)
@@ -3442,13 +3442,15 @@
 }
 
 
-static void seq_translate(Sequence *seq, int delta)
+static void seq_translate(Scene *evil_scene, Sequence *seq, int delta)
 {
+	seq_offset_animdata(evil_scene, seq, delta);
 	seq->start += delta;
+
 	if(seq->type==SEQ_META) {
 		Sequence *seq_child;
 		for(seq_child= seq->seqbase.first; seq_child; seq_child= seq_child->next) {
-			seq_translate(seq_child, delta);
+			seq_translate(evil_scene, seq_child, delta);
 		}
 	}
 
@@ -3456,7 +3458,7 @@
 }
 
 /* return 0 if there werent enough space */
-int shuffle_seq(ListBase * seqbasep, Sequence *test)
+int shuffle_seq(ListBase * seqbasep, Sequence *test, Scene *evil_scene)
 {
 	int orig_machine= test->machine;
 	test->machine++;
@@ -3484,7 +3486,7 @@
 
 		test->machine= orig_machine;
 		new_frame = new_frame + (test->start-test->startdisp); /* adjust by the startdisp */
-		seq_translate(test, new_frame - test->start);
+		seq_translate(evil_scene, test, new_frame - test->start);
 
 		calc_sequence(test);
 		return 0;
@@ -3540,7 +3542,7 @@
 	return tot_ofs;
 }
 
-int shuffle_seq_time(ListBase * seqbasep)
+int shuffle_seq_time(ListBase * seqbasep, Scene *evil_scene)
 {
 	/* note: seq->tmp is used to tag strips to move */
 
@@ -3553,7 +3555,7 @@
 	if(offset) {
 		for(seq= seqbasep->first; seq; seq= seq->next) {
 			if(seq->tmp) {
-				seq_translate(seq, offset);
+				seq_translate(evil_scene, seq, offset);
 				seq->flag &= ~SEQ_OVERLAP;
 			}
 		}

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c	2009-12-21 16:19:08 UTC (rev 25503)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c	2009-12-21 16:57:39 UTC (rev 25504)
@@ -548,7 +548,7 @@
 		RNA_float_get_array(op->ptr, "color", colvars->col);
 	}
 
-	if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq);
+	if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene);
 
 	update_changed_seq_and_deps(scene, seq, 1, 1); /* runs calc_sequence */
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-12-21 16:19:08 UTC (rev 25503)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-12-21 16:57:39 UTC (rev 25504)
@@ -195,7 +195,7 @@
 				 last_seq->seq2->machine, 
 				 last_seq->seq3->machine);
 
-	if( seq_test_overlap(ed->seqbasep, last_seq) ) shuffle_seq(ed->seqbasep, last_seq);
+	if( seq_test_overlap(ed->seqbasep, last_seq) ) shuffle_seq(ed->seqbasep, last_seq, scene);
 	
 }
 
@@ -1395,7 +1395,7 @@
 		if(seq->flag & SELECT && !(seq->depth==0 && seq->flag & SEQ_LOCK)) {
 			seq->flag &= ~SEQ_OVERLAP;
 			if( seq_test_overlap(ed->seqbasep, seq) ) {
-				shuffle_seq(ed->seqbasep, seq);
+				shuffle_seq(ed->seqbasep, seq, scene);
 			}
 		}
 		else if(seq->type & SEQ_EFFECT) {
@@ -1975,7 +1975,7 @@
 				calc_sequence(seq_new);
 				seq_new->flag &= ~SEQ_OVERLAP;
 				if (seq_test_overlap(ed->seqbasep, seq_new)) {
-					shuffle_seq(ed->seqbasep, seq_new);
+					shuffle_seq(ed->seqbasep, seq_new, scene);
 				}
 
 				seqUniqueName(scene->ed->seqbasep, seq_new);
@@ -2138,7 +2138,7 @@
 	
 	active_seq_set(scene, seqm);
 
-	if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm);
+	if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm, scene);
 
 	seq_update_muting(ed);
 
@@ -2207,7 +2207,7 @@
 		if(seq->flag & SELECT) {
 			seq->flag &= ~SEQ_OVERLAP;
 			if( seq_test_overlap(ed->seqbasep, seq) ) {
-				shuffle_seq(ed->seqbasep, seq);
+				shuffle_seq(ed->seqbasep, seq, scene);
 			}
 		}
 	}
@@ -2632,7 +2632,7 @@
 			if((iseq->type & SEQ_EFFECT) && (seq_is_parent(iseq, active_seq) || seq_is_parent(iseq, seq))) {
 				/* this may now overlap */
 				if( seq_test_overlap(ed->seqbasep, iseq) ) {
-					shuffle_seq(ed->seqbasep, iseq);
+					shuffle_seq(ed->seqbasep, iseq, scene);
 				}
 			}
 		}

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c	2009-12-21 16:19:08 UTC (rev 25503)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c	2009-12-21 16:57:39 UTC (rev 25504)
@@ -2365,23 +2365,21 @@
 
 	/* flush to 2d vector from internally used 3d vector */
 	for(a=0, td= t->data, td2d= t->data2d; a<t->total; a++, td++, td2d++) {
-
 		tdsq= (TransDataSeq *)td->extra;
 		seq= tdsq->seq;
 		new_frame= (int)floor(td2d->loc[0] + 0.5f);
 
 		switch (tdsq->sel_flag) {
 		case SELECT:
-			if (seq->type != SEQ_META && (seq->depth != 0 || seq_tx_test(seq))) /* for meta's, their children move */
-				seq->start= new_frame - tdsq->start_offset;
-
 #ifdef XXX_DURIAN_ANIM_TX_HACK
-			if (seq->type != SEQ_META && seq != seq_prev) {
-				int ofs = (new_frame - tdsq->start_offset) - seq->start;
+			if (seq != seq_prev) {
+				int ofs = (new_frame - tdsq->start_offset) - seq->start; // breaks for single strips - color/image
 				seq_offset_animdata(t->scene, seq, ofs);
 			}
 #endif
-            
+			if (seq->type != SEQ_META && (seq->depth != 0 || seq_tx_test(seq))) /* for meta's, their children move */
+				seq->start= new_frame - tdsq->start_offset;
+
 			if (seq->depth==0) {
 				seq->machine= (int)floor(td2d->loc[1] + 0.5f);
 				CLAMP(seq->machine, 1, MAXSEQ);
@@ -4130,7 +4128,7 @@
 						}
 					}
 
-					shuffle_seq_time(seqbasep);
+					shuffle_seq_time(seqbasep, t->scene);
 				}
 			}
 #endif

Modified: trunk/blender/source/blender/makesrna/intern/rna_sequencer.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_sequencer.c	2009-12-21 16:19:08 UTC (rev 25503)
+++ trunk/blender/source/blender/makesrna/intern/rna_sequencer.c	2009-12-21 16:57:39 UTC (rev 25504)
@@ -96,7 +96,7 @@
 	calc_sequence_disp(seq);
 
 	if(seq_test_overlap(seqbase, seq)) {
-		shuffle_seq(seqbase, seq);
+		shuffle_seq(seqbase, seq, scene); // XXX - BROKEN!, uses context seqbasep
 	}
 	sort_seq(scene);
 }
@@ -155,7 +155,7 @@
 	seq->machine= value;
 	
 	if( seq_test_overlap(seqbase, seq) ) {
-		shuffle_seq(seqbase, seq);
+		shuffle_seq(seqbase, seq, scene);  // XXX - BROKEN!, uses context seqbasep
 	}
 	sort_seq(scene);
 }
@@ -362,6 +362,14 @@
 	rna_Sequence_update(bmain, scene, ptr);
 }
 
+/* do_versions? */
+static float rna_Sequence_opacity_get(PointerRNA *ptr) {
+	return ((Sequence*)(ptr->data))->blend_opacity / 100.0f;
+}
+static void rna_Sequence_opacity_set(PointerRNA *ptr, float value) {
+	((Sequence*)(ptr->data))->blend_opacity = value * 100.0f;
+}
+
 #else
 
 static void rna_def_strip_element(BlenderRNA *brna)
@@ -660,9 +668,10 @@
 	RNA_def_property_ui_text(prop, "Blend Mode", "");
 	RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
 	
-	prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE);
-	RNA_def_property_range(prop, 0.0f, 100.0f);
+	prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_FACTOR);
+	RNA_def_property_range(prop, 0.0f, 1.0f);
 	RNA_def_property_ui_text(prop, "Blend Opacity", "");
+	RNA_def_property_float_funcs(prop, "rna_Sequence_opacity_get", "rna_Sequence_opacity_set", NULL); // stupid 0-100 -> 0-1
 	RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
 	
 	prop= RNA_def_property(srna, "effect_fader", PROP_FLOAT, PROP_NONE);





More information about the Bf-blender-cvs mailing list