Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2007-10-17 22:32:54 +0400
committerCampbell Barton <ideasman42@gmail.com>2007-10-17 22:32:54 +0400
commit2639404f34cd89e1eaebc3736d751938a801fcb9 (patch)
treea6b83ff9736dde1940a74b63ca013f387691dba4 /source/blender/src/editseq.c
parente844ee5e54b4a6764bdd692e09ceb64f91344283 (diff)
Sequencer
- Draw a verticle line for markers - Added an option to transform selected markers in the sequencer - useful for Extending time
Diffstat (limited to 'source/blender/src/editseq.c')
-rw-r--r--source/blender/src/editseq.c68
1 files changed, 66 insertions, 2 deletions
diff --git a/source/blender/src/editseq.c b/source/blender/src/editseq.c
index 9bf5ee7a611..193a0c8b62e 100644
--- a/source/blender/src/editseq.c
+++ b/source/blender/src/editseq.c
@@ -2625,6 +2625,7 @@ static void transform_grab_xlimits(Sequence *seq, int leftflag, int rightflag)
void transform_seq(int mode, int context)
{
+ SpaceSeq *sseq= curarea->spacedata.first;
Sequence *seq;
Editing *ed;
float dx, dy, dvec[2], div;
@@ -2636,6 +2637,11 @@ void transform_seq(int mode, int context)
char str[32];
char side; /* for extend mode only - use to know which side to extend on */
+ /* for markers */
+ int *oldframe, totmark, a;
+ TimeMarker *marker;
+
+
if(mode!='g' && mode!='e') return; /* from gesture */
/* which seqs are involved */
@@ -2672,7 +2678,7 @@ void transform_seq(int mode, int context)
}
}
END_SEQ
-
+
getmouseco_areawin(mval);
/* choose the side based on which side of the playhead the mouse is on */
@@ -2682,6 +2688,31 @@ void transform_seq(int mode, int context)
side = (xmouse > CFRA) ? 'R' : 'L';
}
+ /* Markers */
+ if (sseq->flag & SEQ_MARKER_TRANS) {
+ for(marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT) totmark++;
+ }
+
+ oldframe= MEM_mallocN(totmark*sizeof(int), "marker array");
+ for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT) {
+ if (mode=='e') {
+
+ /* when extending, invalidate markers on the other side by using an invalid frame value */
+ if ((side == 'L' && marker->frame > CFRA) || (side == 'R' && marker->frame < CFRA)) {
+ oldframe[a] = MAXFRAME+1;
+ } else {
+ oldframe[a]= marker->frame;
+ }
+ } else {
+ oldframe[a]= marker->frame;
+ }
+ a++;
+ }
+ }
+ }
+
xo=xn= mval[0];
yo=yn= mval[1];
dvec[0]= dvec[1]= 0.0;
@@ -2747,6 +2778,16 @@ void transform_seq(int mode, int context)
}
}
END_SEQ
+
+ /* Markers */
+ if (sseq->flag & SEQ_MARKER_TRANS) {
+ for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT) {
+ marker->frame= oldframe[a] + ix;
+ a++;
+ }
+ }
+ }
/* Extend, grabs one side of the current frame */
} else if (mode=='e') {
int cfra = CFRA;
@@ -2840,6 +2881,16 @@ void transform_seq(int mode, int context)
}
}
END_SEQ
+
+ /* markers */
+ if (sseq->flag & SEQ_MARKER_TRANS) {
+ for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT && (oldframe[a] != MAXFRAME+1)) {
+ marker->frame= oldframe[a] + ix;
+ }
+ a++;
+ }
+ }
}
sprintf(str, "X: %d Y: %d ", ix, iy);
@@ -2919,9 +2970,19 @@ void transform_seq(int mode, int context)
else if(seq->seq2 && seq->seq2->flag & SELECT) calc_sequence(seq);
else if(seq->seq3 && seq->seq3->flag & SELECT) calc_sequence(seq);
}
-
}
END_SEQ
+
+
+ /* Markers */
+ if (sseq->flag & SEQ_MARKER_TRANS) {
+ for(a=0, marker= G.scene->markers.first; marker; marker= marker->next) {
+ if(marker->flag & SELECT && (oldframe[a] != MAXFRAME+1)) {
+ marker->frame= oldframe[a];
+ }
+ a++;
+ }
+ }
} else {
/* images, effects and overlap */
@@ -2953,6 +3014,9 @@ void transform_seq(int mode, int context)
G.moving= 0;
MEM_freeN(transmain);
+ if (sseq->flag & SEQ_MARKER_TRANS)
+ MEM_freeN(transmain);
+
if (mode=='g')
BIF_undo_push("Transform Grab, Sequencer");
else if (mode=='e')