[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18579] branches/blender2.5/blender/source /blender: Added back some functionality to the sequencer

Campbell Barton ideasman42 at gmail.com
Mon Jan 19 22:42:19 CET 2009


Revision: 18579
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18579
Author:   campbellbarton
Date:     2009-01-19 22:42:18 +0100 (Mon, 19 Jan 2009)

Log Message:
-----------
Added back some functionality to the sequencer
- removed static vars _last_seq, last_imagename and last_sounddir, replacing them with with vars in the "Editing" struct. didnt manage to get the active sequence to load so currently thats lost when loading.
- removed flag SEQ_ACTIVE
- Added operators cut, mute, unmute, deselect_all, select_invert, select, select_more, select_less, select_pick_linked, select_linked and borderselect.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_select.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/Makefile
    branches/blender2.5/blender/source/blender/editors/space_sequencer/SConscript
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h
    branches/blender2.5/blender/source/blender/editors/space_sequencer/space_sequencer.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_sequence_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_sequence.c

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_select.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c	2009-01-19 18:50:35 UTC (rev 18578)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/sequence.c	2009-01-19 21:42:18 UTC (rev 18579)
@@ -192,8 +192,6 @@
 
 	if(ed==NULL)
 		return;
-	
-	//XXX set_last_seq(NULL); /* clear_last_seq doesnt work, it screws up free_sequence */
 
 	SEQ_BEGIN(ed, seq) {
 		seq_free_sequence(seq);

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-01-19 18:50:35 UTC (rev 18578)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-01-19 21:42:18 UTC (rev 18579)
@@ -3705,6 +3705,11 @@
 					MEM_freeN(base);
 				}
 			}
+			
+			if (sce->ed) {
+				Editing *ed= sce->ed;
+				ed->act_seq= NULL; //	ed->act_seq=  newlibadr(fd, ed->act_seq); // FIXME
+			}
 
 			SEQ_BEGIN(sce->ed, seq) {
 				if(seq->ipo) seq->ipo= newlibadr_us(fd, sce->id.lib, seq->ipo);
@@ -3781,6 +3786,7 @@
 		ListBase *old_seqbasep= &((Editing *)sce->ed)->seqbase;
 		
 		ed= sce->ed= newdataadr(fd, sce->ed);
+		ed->act_seq= NULL; //		ed->act_seq=  newdataadr(fd, ed->act_seq); // FIXME
 
 		/* recursive link sequences, lb will be correctly initialized */
 		link_recurs_seq(fd, &ed->seqbase);

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_select.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_select.c	2009-01-19 18:50:35 UTC (rev 18578)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_select.c	2009-01-19 21:42:18 UTC (rev 18579)
@@ -241,6 +241,9 @@
 	rect.ymax= RNA_int_get(op->ptr, "ymax");
 	UI_view2d_region_to_view(&ar->v2d, rect.xmax, rect.ymax, &rectf.xmax, &rectf.ymax);
 	
+	if (snode->edittree == NULL) // XXX should this be in poll()? - campbell
+		return OPERATOR_FINISHED;
+
 	for(node= snode->edittree->nodes.first; node; node= node->next) {
 		if(BLI_isect_rctf(&rectf, &node->totr, NULL)) {
 			if(val==NODE_EXTEND)

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/Makefile
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/Makefile	2009-01-19 18:50:35 UTC (rev 18578)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/Makefile	2009-01-19 21:42:18 UTC (rev 18579)
@@ -46,6 +46,7 @@
 CPPFLAGS += -I../../blenkernel
 CPPFLAGS += -I../../blenlib
 CPPFLAGS += -I../../makesdna
+CPPFLAGS += -I../../makesrna
 CPPFLAGS += -I../../imbuf
 CPPFLAGS += -I../../python
 CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/SConscript
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/SConscript	2009-01-19 18:50:35 UTC (rev 18578)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/SConscript	2009-01-19 21:42:18 UTC (rev 18579)
@@ -5,6 +5,6 @@
 
 incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
 incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
-incs += ' #intern/bmfont'
+incs += ' #intern/bmfont ../../makesrna'
 
 env.BlenderLib ( 'bf_editors_space_sequencer', sources, Split(incs), [], libtype=['core'], priority=[100] )

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-01-19 18:50:35 UTC (rev 18578)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-01-19 21:42:18 UTC (rev 18579)
@@ -68,11 +68,21 @@
 #include "BIF_gl.h"
 #include "BIF_glutil.h"
 
+#include "WM_api.h"
 #include "WM_types.h"
 
+#include "RNA_access.h"
+#include "RNA_define.h"
+
+/* for menu/popup icons etc etc*/
+#include "UI_interface.h"
+#include "UI_resources.h"
+
 #include "ED_anim_api.h"
 #include "ED_space_api.h"
 #include "ED_types.h"
+#include "ED_screen.h"
+#include "ED_util.h"
 
 #include "UI_interface.h"
 #include "UI_resources.h"
@@ -82,8 +92,8 @@
 #include "sequencer_intern.h"
 
 /* XXX */
-static Sequence *_last_seq=0;
-static int _last_seq_init=0;
+//static Sequence *_last_seq=0;
+//static int _last_seq_init=0;
 /* XXX */
 static void BIF_undo_push() {}
 static void error() {}
@@ -98,20 +108,8 @@
 static void deselect_markers() {}
 static void transform_markers() {}
 static void transform_seq_nomarker() {}
-#define SCE_MARKERS 0
 /* XXX */
 
-
-#ifdef WIN32
-char last_imagename[FILE_MAXDIR+FILE_MAXFILE]= "c:\\";
-#else
-char last_imagename[FILE_MAXDIR+FILE_MAXFILE]= "/";
-#endif
-
-char last_sounddir[FILE_MAXDIR+FILE_MAXFILE]= "";
-
-#define SEQ_DESEL	~(SELECT+SEQ_LEFTSEL+SEQ_RIGHTSEL)
-
 typedef struct TransSeq {
 	int start, machine;
 	int startstill, endstill;
@@ -123,61 +121,21 @@
 
 Sequence *get_last_seq(Scene *scene)
 {
-	if(!_last_seq_init) {
-		Editing *ed;
-		Sequence *seq;
-		Sequence *l_sel = NULL;
-		Sequence *l_act = NULL;
-
-		ed= scene->ed;
-		if(!ed) return NULL;
-
-		for(seq= ed->seqbasep->first; seq; seq=seq->next) {
-			if(seq->flag & SEQ_ACTIVE)
-				l_act = seq;
-			if(seq->flag & SELECT)
-				l_sel = seq;
-		}
-
-		if (l_act) {
-			_last_seq = l_act;
-		} else {
-			_last_seq = l_sel;
-		}
-
-		if (_last_seq) {
-			_last_seq->flag |= SEQ_ACTIVE;
-		}
-
-		_last_seq_init = 1;
-	}
-
-	return _last_seq;
+	Editing *ed;
+	ed= scene->ed;
+	if(!ed) return NULL;
+	return ed->act_seq;
 }
 
-void set_last_seq(Sequence *seq)
+void set_last_seq(Scene *scene, Sequence *seq)
 {
-	if (_last_seq_init && _last_seq) {
-		_last_seq->flag &= ~SEQ_ACTIVE;
-	}
-
-	_last_seq = seq;
-	_last_seq_init = 1;
-
-	if (_last_seq) {
-		_last_seq->flag |= SEQ_ACTIVE;
-	}
+	Editing *ed;
+	ed= scene->ed;
+	if(!ed) return;
+	
+	ed->act_seq= seq;
 }
 
-void clear_last_seq()
-{
-	if (_last_seq_init && _last_seq) {
-		_last_seq->flag &= ~SEQ_ACTIVE;
-	}
-	_last_seq = NULL;
-	_last_seq_init = 0;
-}
-
 Sequence *get_forground_frame_seq(Scene *scene, int frame)
 {
 	Editing *ed;
@@ -283,6 +241,16 @@
 	return 0;
 }
 
+void seq_rectf(Sequence *seq, rctf *rectf)
+{
+	if(seq->startstill) rectf->xmin= seq->start;
+	else rectf->xmin= seq->startdisp;
+	rectf->ymin= seq->machine+0.2;
+	if(seq->endstill) rectf->xmax= seq->start+seq->len;
+	else rectf->xmax= seq->enddisp;
+	rectf->ymax= seq->machine+0.8;
+}
+
 /* used so we can do a quick check for single image seq
    since they work a bit differently to normal image seq's (during transform) */
 int check_single_seq(Sequence *seq)
@@ -438,6 +406,7 @@
 		|| (get_sequence_effect_num_inputs(seq->type) == 0);
 }
 
+/* XXX - use mouse_frame_side instead */
 char mouse_cfra_side(View2D *v2d, int frame ) 
 {
 	short mval[2];
@@ -449,6 +418,21 @@
 	return (xmouse > frame) ? 'R' : 'L';
 }
 
+int mouse_frame_side(View2D *v2d, short mouse_x, int frame ) 
+{
+	short mval[2];
+	float mouseloc[2];
+	
+	mval[0]= mouse_x;
+	mval[1]= 0;
+	
+	/* choose the side based on which side of the playhead the mouse is on */
+	UI_view2d_region_to_view(v2d, mval[0], mval[1], &mouseloc[0], &mouseloc[1]);
+	
+	return mouseloc[0] > frame;
+}
+
+
 Sequence *find_neighboring_sequence(Scene *scene, Sequence *test, int lr, int sel) 
 {
 /*	looks to the left on lr==1, to the right on lr==2
@@ -537,12 +521,12 @@
 }
 
 
-Sequence *find_nearest_seq(Scene *scene, View2D *v2d, int *hand)
+Sequence *find_nearest_seq(Scene *scene, View2D *v2d, int *hand, short mval[2])
 {
 	Sequence *seq;
 	Editing *ed;
 	float x, y;
-	short mval[2];
+//	short mval[2];
 	float pixelx;
 	float handsize;
 	float displen;
@@ -662,7 +646,7 @@
 	return 0;
 }
 
-static void deselect_all_seq(Scene *scene)
+void deselect_all_seq(Scene *scene)
 {
 	Sequence *seq;
 	Editing *ed;
@@ -675,10 +659,10 @@
 	}
 	SEQ_END
 		
-	BIF_undo_push("(De)select all Strips, Sequencer");
+	//BIF_undo_push("(De)select all Strips, Sequencer"); - manage undo elsewhere for 2.5, campbell
 }
 
-static void recurs_sel_seq(Sequence *seqm)
+void recurs_sel_seq(Sequence *seqm)
 {
 	Sequence *seq;
 
@@ -695,287 +679,6 @@
 	}
 }
 
-void select_single_seq(Scene *scene, Sequence *seq, int deselect_all)
-{
-	if(deselect_all)
-		deselect_all_seq(scene);
-	set_last_seq(seq);
-
-	if((seq->type==SEQ_IMAGE) || (seq->type==SEQ_MOVIE)) {
-		if(seq->strip)
-			strncpy(last_imagename, seq->strip->dir, FILE_MAXDIR-1);
-	}
-	else if((seq->type==SEQ_HD_SOUND) || (seq->type==SEQ_RAM_SOUND)) {
-		if(seq->strip)
-			strncpy(last_sounddir, seq->strip->dir, FILE_MAXDIR-1);
-	}
-	seq->flag|= SELECT;
-	recurs_sel_seq(seq);
-}
-
-void swap_select_seq(Scene *scene)
-{
-	Sequence *seq;
-	Editing *ed;
-	int sel=0;
-
-	ed= scene->ed;
-	if(ed==NULL) return;
-
-	SEQP_BEGIN(ed, seq) {
-		if(seq->flag & SELECT) sel= 1;
-	}
-	SEQ_END
-
-	SEQP_BEGIN(ed, seq) {
-		/* always deselect all to be sure */
-		seq->flag &= SEQ_DESEL;
-		if(sel==0) seq->flag |= SELECT;
-	}
-	SEQ_END
-
-	BIF_undo_push("Swap Selected Strips, Sequencer");
-
-}
-
-void select_channel_direction(Scene *scene, Sequence *test,int lr) {
-/* selects all strips in a channel to one direction of the passed strip */
-	Sequence *seq;
-	Editing *ed;
-
-	ed= scene->ed;
-	if(ed==NULL) return;
-
-	seq= ed->seqbasep->first;
-	while(seq) {
-		if(seq!=test) {
-			if (test->machine==seq->machine) {
-				if(test->depth==seq->depth) {
-					if (((lr==1)&&(test->startdisp > (seq->startdisp)))||((lr==2)&&(test->startdisp < (seq->startdisp)))) {
-						seq->flag |= SELECT;
-						recurs_sel_seq(seq);
-					}
-				}
-			}
-		}
-		seq= seq->next;
-	}
-	test->flag |= SELECT;
-	recurs_sel_seq(test);
-}
-
-void select_dir_from_last(Scene *scene, int lr)
-{
-	Sequence *seq=get_last_seq(scene);
-	if (seq==NULL)
-		return;
-	
-	select_channel_direction(scene, seq,lr);
-	
-	if (lr==1)	BIF_undo_push("Select Strips to the Left, Sequencer");
-	else		BIF_undo_push("Select Strips to the Right, Sequencer");
-}
-
-void select_surrounding_handles(Scene *scene, Sequence *test) 
-{
-	Sequence *neighbor;
-	
-	neighbor=find_neighboring_sequence(scene, test, 1, -1);
-	if (neighbor) {
-		neighbor->flag |= SELECT;
-		recurs_sel_seq(neighbor);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list