[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29595] trunk/blender: sequencer swap data operator.

Campbell Barton ideasman42 at gmail.com
Mon Jun 21 19:37:50 CEST 2010


Revision: 29595
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29595
Author:   campbellbarton
Date:     2010-06-21 19:37:50 +0200 (Mon, 21 Jun 2010)

Log Message:
-----------
sequencer swap data operator.
needed for durian so we can swap out preview AVI's for EXR sequences.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_sequencer.py
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/space_logic/logic_window.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_intern.h
    trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_select.c

Modified: trunk/blender/release/scripts/ui/space_sequencer.py
===================================================================
--- trunk/blender/release/scripts/ui/space_sequencer.py	2010-06-21 16:58:35 UTC (rev 29594)
+++ trunk/blender/release/scripts/ui/space_sequencer.py	2010-06-21 17:37:50 UTC (rev 29595)
@@ -291,7 +291,11 @@
 
         layout.operator_menu_enum("sequencer.swap", "side")
 
+        layout.separator()
 
+        layout.operator("sequencer.swap_data")
+
+
 class SequencerButtonsPanel(bpy.types.Panel):
     bl_space_type = 'SEQUENCE_EDITOR'
     bl_region_type = 'UI'

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-06-21 16:58:35 UTC (rev 29594)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-06-21 17:37:50 UTC (rev 29595)
@@ -191,6 +191,7 @@
 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);
+int seq_swap(struct Sequence *seq_a, struct Sequence *seq_b);
 
 void seq_update_sound(struct Scene* scene, struct Sequence *seq);
 void seq_update_muting(struct Scene* scene, struct Editing *ed);
@@ -200,8 +201,9 @@
 
 struct Sequence *get_seq_by_name(struct ListBase *seqbase, const char *name, int recursive);
 
-struct Sequence *active_seq_get(struct Scene *scene);
-void active_seq_set(struct Scene *scene, struct Sequence *seq);
+struct Sequence *seq_active_get(struct Scene *scene);
+void seq_active_set(struct Scene *scene, struct Sequence *seq);
+int seq_active_pair_get(struct Scene *scene, struct Sequence **seq_act, struct Sequence **seq_other);
 
 /* api for adding new sequence strips */
 typedef struct SeqLoadInfo {

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-06-21 16:58:35 UTC (rev 29594)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-06-21 17:37:50 UTC (rev 29595)
@@ -3790,6 +3790,33 @@
 	return NULL;
 }
 
+int seq_swap(Sequence *seq_a, Sequence *seq_b)
+{
+	if(seq_a->len != seq_b->len)
+		return 0;
+
+	/* type checking, could be more advanced but disalow sound vs non-sound copy */
+	if(seq_a->type != seq_b->type) {
+		if(seq_a->type == SEQ_SOUND || seq_b->type == SEQ_SOUND) {
+			return 0;
+		}
+	}
+
+	SWAP(Sequence, *seq_a, *seq_b);
+	SWAP(void *, seq_a->prev, seq_b->prev);
+	SWAP(void *, seq_a->next, seq_b->next);
+
+	SWAP(int, seq_a->start, seq_b->start);
+	SWAP(int, seq_a->startofs, seq_b->startofs);
+	SWAP(int, seq_a->endofs, seq_b->endofs);
+	SWAP(int, seq_a->startstill, seq_b->startstill);
+	SWAP(int, seq_a->endstill, seq_b->endstill);
+	SWAP(int, seq_a->machine, seq_b->machine);
+	SWAP(int, seq_a->startdisp, seq_b->enddisp);
+
+	return 1;
+}
+
 /* XXX - hackish function needed for transforming strips! TODO - have some better solution */
 void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs)
 {
@@ -3832,14 +3859,14 @@
 }
 
 
-Sequence *active_seq_get(Scene *scene)
+Sequence *seq_active_get(Scene *scene)
 {
 	Editing *ed= seq_give_editing(scene, FALSE);
 	if(ed==NULL) return NULL;
 	return ed->act_seq;
 }
 
-void active_seq_set(Scene *scene, Sequence *seq)
+void seq_active_set(Scene *scene, Sequence *seq)
 {
 	Editing *ed= seq_give_editing(scene, FALSE);
 	if(ed==NULL) return;
@@ -3847,6 +3874,35 @@
 	ed->act_seq= seq;
 }
 
+int seq_active_pair_get(Scene *scene, Sequence **seq_act, Sequence **seq_other)
+{
+	Editing *ed= seq_give_editing(scene, FALSE);
+
+	*seq_act= seq_active_get(scene);
+
+	if(*seq_act == NULL) {
+		return 0;
+	}
+	else {
+		Sequence *seq;
+
+		*seq_other= NULL;
+
+		for(seq= ed->seqbasep->first; seq; seq= seq->next) {
+			if(seq->flag & SELECT && (seq != (*seq_act))) {
+				if(*seq_other) {
+					return 0;
+				}
+				else {
+					*seq_other= seq;
+				}
+			}
+		}
+
+		return (*seq_other != NULL);
+	}
+}
+
 /* api like funcs for adding */
 
 void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load)
@@ -3861,7 +3917,7 @@
 
 		if(seq_load->flag & SEQ_LOAD_REPLACE_SEL) {
 			seq_load->flag |= SELECT;
-			active_seq_set(scene, seq);
+			seq_active_set(scene, seq);
 		}
 
 		if(seq_load->flag & SEQ_LOAD_SOUND_CACHE) {

Modified: trunk/blender/source/blender/editors/space_logic/logic_window.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_window.c	2010-06-21 16:58:35 UTC (rev 29594)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c	2010-06-21 17:37:50 UTC (rev 29595)
@@ -4361,7 +4361,7 @@
 	
 	PointerRNA logic_ptr, settings_ptr;
 	
-	uiLayout *layout, *row, *split, *subsplit, *box, *col;
+	uiLayout *layout, *row, *box;
 	uiBlock *block;
 	uiBut *but;
 	char name[32];

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c	2010-06-21 16:58:35 UTC (rev 29594)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_add.c	2010-06-21 17:37:50 UTC (rev 29595)
@@ -203,7 +203,7 @@
 	
 	if (RNA_boolean_get(op->ptr, "replace_sel")) {
 		deselect_all_seq(scene);
-		active_seq_set(scene, seq);
+		seq_active_set(scene, seq);
 		seq->flag |= SELECT;
 	}
 	
@@ -572,7 +572,7 @@
 
 	if (RNA_boolean_get(op->ptr, "replace_sel")) {
 		deselect_all_seq(scene);
-		active_seq_set(scene, seq);
+		seq_active_set(scene, seq);
 		seq->flag |= SELECT;
 	}
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2010-06-21 16:58:35 UTC (rev 29594)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2010-06-21 17:37:50 UTC (rev 29595)
@@ -900,7 +900,7 @@
 	Scene *scene= CTX_data_scene(C);
 	SpaceSeq *sseq= CTX_wm_space_seq(C);
 	View2D *v2d= &ar->v2d;
-	Sequence *last_seq = active_seq_get(scene);
+	Sequence *last_seq = seq_active_get(scene);
 	int sel = 0, j;
 	float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin);
 	

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2010-06-21 16:58:35 UTC (rev 29594)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2010-06-21 17:37:50 UTC (rev 29595)
@@ -75,10 +75,6 @@
 /* own include */
 #include "sequencer_intern.h"
 
-/* XXX */
-//static Sequence *_last_seq=0;
-//static int _last_seq_init=0;
-/* XXX */
 static void error(const char *dummy) {}
 static void waitcursor(int val) {}
 static void activate_fileselect(int d1, char *d2, char *d3, void *d4) {}
@@ -167,7 +163,7 @@
 {
 	Editing *ed= seq_give_editing(scene, FALSE);
 	struct SeqEffectHandle sh;
-	Sequence *last_seq= active_seq_get(scene);
+	Sequence *last_seq= seq_active_get(scene);
 
 	if(last_seq && last_seq->type != SEQ_PLUGIN) return;
 
@@ -441,7 +437,7 @@
 	Editing *ed;
 	Sequence *seq, *seqact;
 	SpaceFile *sfile;
-	Sequence *last_seq= active_seq_get(scene);
+	Sequence *last_seq= seq_active_get(scene);
 
 	ed= scene->ed;
 
@@ -483,7 +479,7 @@
 	Editing *ed= seq_give_editing(scene, FALSE);
 	Sequence *seq=NULL, *seqact;
 	SpaceFile *sfile=NULL;
-	Sequence *last_seq= active_seq_get(scene);
+	Sequence *last_seq= seq_active_get(scene);
 
 
 
@@ -519,7 +515,7 @@
 void change_sequence(Scene *scene)
 {
 	Editing *ed= seq_give_editing(scene, FALSE);
-	Sequence *last_seq= active_seq_get(scene);
+	Sequence *last_seq= seq_active_get(scene);
 	Scene *sce;
 	short event;
 
@@ -621,7 +617,7 @@
 	*error_str= NULL;
 
 	if (!activeseq)
-		seq2= active_seq_get(scene);
+		seq2= seq_active_get(scene);
 
 	for(seq=ed->seqbasep->first; seq; seq=seq->next) {
 		if(seq->flag & SELECT) {
@@ -684,7 +680,7 @@
 void reassign_inputs_seq_effect(Scene *scene)
 {
 	Editing *ed= seq_give_editing(scene, FALSE);
-	Sequence *seq1, *seq2, *seq3, *last_seq = active_seq_get(scene);
+	Sequence *seq1, *seq2, *seq3, *last_seq = seq_active_get(scene);
 	char *error_msg;
 
 	if(last_seq==0 || !(last_seq->type & SEQ_EFFECT)) return;
@@ -753,7 +749,7 @@
 static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short deleteall)
 {
 	Sequence *seq, *seqn;
-	Sequence *last_seq = active_seq_get(scene);
+	Sequence *last_seq = seq_active_get(scene);
 
 	seq= lb->first;
 	while(seq) {
@@ -763,7 +759,7 @@
 				seq->sound->id.us--;
 
 			BLI_remlink(lb, seq);
-			if(seq==last_seq) active_seq_set(scene, NULL);
+			if(seq==last_seq) seq_active_set(scene, NULL);
 			if(seq->type==SEQ_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1);
 			if(seq->ipo) seq->ipo->id.us--;
 			seq_free_sequence(scene, seq);
@@ -873,7 +869,7 @@
 {
 	Sequence *seq;
 	Sequence *seqn = 0;
-	Sequence *last_seq = active_seq_get(scene);
+	Sequence *last_seq = seq_active_get(scene);
 
 	for(seq= old->first; seq; seq= seq->next) {
 		seq->tmp= NULL;
@@ -891,7 +887,7 @@
 				
 				if(do_context) {
 					if (seq == last_seq) {
-						active_seq_set(scene, seqn);
+						seq_active_set(scene, seqn);
 					}
 				}
 			}
@@ -1190,7 +1186,7 @@
 
 void seq_remap_paths(Scene *scene)
 {
-	Sequence *seq, *last_seq = active_seq_get(scene);
+	Sequence *seq, *last_seq = seq_active_get(scene);
 	Editing *ed= seq_give_editing(scene, FALSE);
 	char from[FILE_MAX], to[FILE_MAX], stripped[FILE_MAX];
 	
@@ -1751,7 +1747,7 @@
 	MetaStack *ms;
 	int nothingSelected = TRUE;
 
-	seq=active_seq_get(scene);
+	seq=seq_active_get(scene);
 	if (seq && seq->flag & SELECT) { /* avoid a loop since this is likely to be selected */
 		nothingSelected = FALSE;
 	} else {
@@ -1918,7 +1914,7 @@
 {
 	Scene *scene= CTX_data_scene(C);
 	Editing *ed= seq_give_editing(scene, FALSE);
-	Sequence *last_seq= active_seq_get(scene);
+	Sequence *last_seq= seq_active_get(scene);
 	MetaStack *ms;
 
 	if(last_seq && last_seq->type==SEQ_META && last_seq->flag & SELECT) {
@@ -1930,7 +1926,7 @@
 
 		ed->seqbasep= &last_seq->seqbase;
 
-		active_seq_set(scene, NULL);
+		seq_active_set(scene, NULL);
 
 	}
 	else {
@@ -1950,7 +1946,7 @@

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list