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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to