[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18667] branches/blender2.5/blender/source /blender: * added operators SEQUENCER_OT_lock, unlock, reload, refresh_all, view_all, view_selected.

Campbell Barton ideasman42 at gmail.com
Sun Jan 25 15:53:45 CET 2009


Revision: 18667
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18667
Author:   campbellbarton
Date:     2009-01-25 15:53:41 +0100 (Sun, 25 Jan 2009)

Log Message:
-----------
* added operators SEQUENCER_OT_lock, unlock, reload, refresh_all, view_all, view_selected.
* sequencer transform now does overlap checks.
* removed old transform functions from sequencer_edit.c
* shuffle_seq moved to kernel, now moves strips to the end of the last sequence of itschannel (if all channels are used). 2.4x would remove the strip.
* most of the 'Strip' menu items now call their operators in the header menu, some for view and select too.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_sequence.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/seqeffects.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c
    branches/blender2.5/blender/source/blender/editors/gpencil/gpencil.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_add.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_draw.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_header.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_select.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_sequence_types.h

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_sequence.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_sequence.h	2009-01-25 14:40:27 UTC (rev 18666)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_sequence.h	2009-01-25 14:53:41 UTC (rev 18667)
@@ -161,7 +161,7 @@
 /* seqeffects.c */
 // intern?
 struct SeqEffectHandle get_sequence_blend(struct Sequence *seq);
-void sequence_effect_speed_rebuild_map(struct Scene *scene, struct Sequence *seq, int force);
+void sequence_effect_speed_rebuild_map(struct Sequence *seq, int force);
 
 // extern
 struct SeqEffectHandle get_sequence_effect(struct Sequence *seq);
@@ -178,4 +178,7 @@
 int seq_tx_test(struct Sequence * seq);
 int check_single_seq(struct Sequence *seq);
 void fix_single_seq(struct Sequence *seq);
+int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test);
+int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test);
+void free_imbuf_seq(struct ListBase * seqbasep);
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/seqeffects.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/seqeffects.c	2009-01-25 14:40:27 UTC (rev 18666)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/seqeffects.c	2009-01-25 14:53:41 UTC (rev 18667)
@@ -935,9 +935,9 @@
 	char *rt1, *rt2, *rt;
 	
 	xo= x;
-	rt1= (char *)rect1;
-	rt2= (char *)rect2;
-	rt= (char *)out;
+	rt1= (signed char *)rect1;
+	rt2= (signed char *)rect2;
+	rt= (signed char *)out;
 
 	fac2= (int)(256.0*facf0);
 	fac1= 256-fac2;
@@ -2772,7 +2772,7 @@
 	}	
 }
 
-void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force)
+void sequence_effect_speed_rebuild_map(Sequence * seq, int force)
 {
 	float facf0 = seq->facf0;
 	//float ctime, div;

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c	2009-01-25 14:40:27 UTC (rev 18666)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c	2009-01-25 14:53:41 UTC (rev 18667)
@@ -2074,7 +2074,7 @@
 	TStripElem * se1 = 0;
 	TStripElem * se2 = 0;
 	
-	sequence_effect_speed_rebuild_map(scene, seq, 0);
+	sequence_effect_speed_rebuild_map(seq, 0);
 	
 	f_cfra = seq->start + s->frameMap[nr];
 	
@@ -2865,16 +2865,13 @@
 	SEQ_END
 }
 
-void free_imbuf_seq(Scene *scene)
+void free_imbuf_seq(ListBase * seqbase)
 {
-	Editing *ed= scene->ed;
 	Sequence *seq;
 	TStripElem *se;
 	int a;
-
-	if(ed==NULL) return;
-
-	SEQ_BEGIN(ed, seq) {
+	
+	for(seq= seqbase->first; seq; seq= seq->next) {
 		if(seq->strip) {
 			for(a = 0, se = seq->strip->tstripdata; 
 			    a < seq->strip->len && se; a++, se++) {
@@ -2901,11 +2898,14 @@
 			if(seq->type==SEQ_MOVIE)
 				free_anim_seq(seq);
 			if(seq->type==SEQ_SPEED) {
-				sequence_effect_speed_rebuild_map(scene, seq, 1);
+				sequence_effect_speed_rebuild_map(seq, 1);
 			}
 		}
+		if(seq->type==SEQ_META) {
+			free_imbuf_seq(&seq->seqbase);
+		}
 	}
-	SEQ_END
+	
 }
 
 static int update_changed_seq_recurs(Scene *scene, Sequence *seq, Sequence *changed_seq, int len_change, int ibuf_change)
@@ -2947,7 +2947,7 @@
 			if(seq->type == SEQ_MOVIE)
 				free_anim_seq(seq);
 			if(seq->type == SEQ_SPEED) {
-				sequence_effect_speed_rebuild_map(scene, seq, 1);
+				sequence_effect_speed_rebuild_map(seq, 1);
 			}
 		}
 		
@@ -2981,7 +2981,7 @@
 		if(seq->ipo == ipo) {
 			update_changed_seq_and_deps(scene, seq, 0, 1);
 			if(seq->type == SEQ_SPEED) {
-				sequence_effect_speed_rebuild_map(scene, seq, 1);
+				sequence_effect_speed_rebuild_map(seq, 1);
 			}
 		}
 	}
@@ -3197,3 +3197,72 @@
 {
 	return (seq->type < SEQ_EFFECT) || (get_sequence_effect_num_inputs(seq->type) == 0);
 }
+
+int seq_test_overlap(ListBase * seqbasep, Sequence *test)
+{
+	Sequence *seq;
+
+	seq= seqbasep->first;
+	while(seq) {
+		if(seq!=test) {
+			if(test->machine==seq->machine) {
+				if( (test->enddisp <= seq->startdisp) || (test->startdisp >= seq->enddisp) );
+				else return 1;
+			}
+		}
+		seq= seq->next;
+	}
+	return 0;
+}
+
+
+static void seq_translate(Sequence *seq, int 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);
+		}
+	}
+
+	calc_sequence_disp(seq);
+}
+
+/* return 0 if there werent enough space */
+int shuffle_seq(ListBase * seqbasep, Sequence *test)
+{
+	int orig_machine= test->machine;
+	test->machine++;
+	calc_sequence(test);
+	while( seq_test_overlap(seqbasep, test) ) {
+		if(test->machine >= MAXSEQ) {
+			break;
+		}
+		test->machine++;
+		calc_sequence(test); // XXX - I dont think this is needed since were only moving vertically, Campbell.
+	}
+
+	
+	if(test->machine >= MAXSEQ) {
+		/* Blender 2.4x would remove the strip.
+		 * nicer to move it to the end */
+
+		Sequence *seq;
+		int new_frame= test->enddisp;
+
+		for(seq= seqbasep->first; seq; seq= seq->next) {
+			if (seq->machine == orig_machine)
+				new_frame = MAX2(new_frame, seq->enddisp);
+		}
+
+		test->machine= orig_machine;
+		new_frame = new_frame + (test->start-test->startdisp); /* adjust by the startdisp */
+		seq_translate(test, new_frame - test->start);
+
+		calc_sequence(test);
+		return 0;
+	} else {
+		return 1;
+	}
+}

Modified: branches/blender2.5/blender/source/blender/editors/gpencil/gpencil.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/gpencil/gpencil.c	2009-01-25 14:40:27 UTC (rev 18666)
+++ branches/blender2.5/blender/source/blender/editors/gpencil/gpencil.c	2009-01-25 14:53:41 UTC (rev 18667)
@@ -367,7 +367,7 @@
 			SpaceSeq *sseq= sa->spacedata.first;
 			
 			/* only applicable for image modes */
-			if (sseq->mainb)
+			if (sseq->mainb != SEQ_DRAW_SEQUENCE)
 				return sseq->gpd;
 		}
 			break;
@@ -431,7 +431,7 @@
 			SpaceSeq *sseq= sa->spacedata.first;
 			
 			/* only applicable if right mode */
-			if (sseq->mainb) {
+			if (sseq->mainb != SEQ_DRAW_SEQUENCE) {
 				/* free the existing block */
 				if (sseq->gpd)
 					free_gpencil_data(sseq->gpd);
@@ -1748,7 +1748,7 @@
 			p->v2d= &ar->v2d;
 			
 			/* check that gpencil data is allowed to be drawn */
-			if (sseq->mainb == 0) {
+			if (sseq->mainb == SEQ_DRAW_SEQUENCE) {
 				p->status= GP_STATUS_ERROR;
 				if (G.f & G_DEBUG) 
 					printf("Error: In active view (sequencer), active mode doesn't support Grease Pencil \n");

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_add.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_add.c	2009-01-25 14:40:27 UTC (rev 18666)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_add.c	2009-01-25 14:53:41 UTC (rev 18667)
@@ -92,862 +92,6 @@
 /* own include */
 #include "sequencer_intern.h"
 
-static void BIF_undo_push() {}
-static void error() {}
-static void waitcursor() {}
-static void activate_fileselect() {}
-
-
-static int pupmenu() {return 0;}
-static int pupmenu_col() {return 0;}
-
-
-
-
-static void transform_seq_nomarker() {}
-	
-	
-	
-	
-	
-
-static Sequence *sfile_to_sequence(Scene *scene, SpaceFile *sfile, int cfra, int machine, int last)
-{
-#if 0
-	/* XXX sfile recoded... */
-	Sequence *seq;
-	Strip *strip;
-	StripElem *se;
-	int totsel, a;
-	char name[160];
-	Editing *ed= scene->ed;
-	
-	/* are there selected files? */
-	totsel= 0;
-	for(a=0; a<sfile->totfile; a++) {
-		if(sfile->filelist[a].flags & ACTIVE) {
-			if( (sfile->filelist[a].type & S_IFDIR)==0 ) {
-				totsel++;
-			}
-		}
-	}
-
-	if(last) {
-		/* if not, a file handed to us? */
-		if(totsel==0 && sfile->file[0]) totsel= 1;
-	}
-
-	if(totsel==0) return 0;
-
-	/* make seq */
-	seq= alloc_sequence(((Editing *)scene->ed)->seqbasep, cfra, machine);
-	seq->len= totsel;
-
-	if(totsel==1) {
-		seq->startstill= 25;
-		seq->endstill= 24;
-	}
-
-	calc_sequence(seq);
-	
-	if(sfile->flag & FILE_STRINGCODE) {
-		strcpy(name, sfile->dir);
-		BLI_makestringcode(G.sce, name);
-	} else {
-		strcpy(name, sfile->dir);
-	}
-
-	/* strip and stripdata */
-	seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
-	strip->len= totsel;
-	strip->us= 1;
-	strncpy(strip->dir, name, FILE_MAXDIR-1);
-	strip->stripdata= se= MEM_callocN(totsel*sizeof(StripElem), "stripelem");
-
-	for(a=0; a<sfile->totfile; a++) {
-		if(sfile->filelist[a].flags & ACTIVE) {
-			if( (sfile->filelist[a].type & S_IFDIR)==0 ) {
-				strncpy(se->name, sfile->filelist[a].relname, FILE_MAXFILE-1);
-				se++;
-			}
-		}
-	}
-	/* no selected file: */
-	if(totsel==1 && se==strip->stripdata) {
-		strncpy(se->name, sfile->file, FILE_MAXFILE-1);
-	}
-
-	/* last active name */
-	strncpy(ed->act_imagedir, seq->strip->dir, FILE_MAXDIR-1);
-
-	return seq;
-#endif
-	return NULL;
-}
-
-
-#if 0
-static int sfile_to_mv_sequence_load(Scene *scene, SpaceFile *sfile, int cfra, 
-				     int machine, int index )
-{
-	/* XXX sfile recoded... */
-	Sequence *seq;
-	struct anim *anim;
-	Strip *strip;
-	StripElem *se;
-	int totframe;
-	char name[160];
-	char str[FILE_MAXDIR+FILE_MAXFILE];
-	Editing *ed= scene->ed;
-	
-	totframe= 0;
-
-	strncpy(str, sfile->dir, FILE_MAXDIR-1);
-	if(index<0)
-		strncat(str, sfile->file, FILE_MAXDIR-1);
-	else
-		strncat(str, sfile->filelist[index].relname, FILE_MAXDIR-1);
-
-	/* is it a movie? */
-	anim = openanim(str, IB_rect);
-	if(anim==0) {
-		error("The selected file is not a movie or "
-		      "FFMPEG-support not compiled in!");
-		return(cfra);
-	}
-	
-	totframe= IMB_anim_get_duration(anim);
-
-	/* make seq */
-	seq= alloc_sequence(((Editing *)scene->ed)->seqbasep, cfra, machine);
-	seq->len= totframe;
-	seq->type= SEQ_MOVIE;
-	seq->anim= anim;
-	seq->anim_preseek = IMB_anim_get_preseek(anim);
-
-	calc_sequence(seq);
-	
-	if(sfile->flag & FILE_STRINGCODE) {
-		strcpy(name, sfile->dir);
-		BLI_makestringcode(G.sce, name);
-	} else {
-		strcpy(name, sfile->dir);
-	}
-
-	/* strip and stripdata */
-	seq->strip= strip= MEM_callocN(sizeof(Strip), "strip");
-	strip->len= totframe;
-	strip->us= 1;
-	strncpy(strip->dir, name, FILE_MAXDIR-1);
-	strip->stripdata= se= MEM_callocN(sizeof(StripElem), "stripelem");
-
-	/* name movie in first strip */
-	if(index<0)
-		strncpy(se->name, sfile->file, FILE_MAXFILE-1);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list