[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