[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