public MouseOpVideoEasings(IVidkaOpContext iEditor,
			VidkaUiStateObjects uiObjects,
			ProjectDimensions dimdim,
			IVideoShitbox editor,
			IVideoPlayer videoPlayer,
            TrimDirection side)
            : base(iEditor, uiObjects, dimdim, editor, videoPlayer)
        {
            this.side = side;
            keyboardMode = false;
        }
示例#2
0
        public MouseOpTrimVideo(IVidkaOpContext iEditor,
			VidkaUiStateObjects uiObjects,
			ProjectDimensions dimdim,
			IVideoShitbox editor,
			IVideoPlayer videoPlayer,
			TrimDirection side,
			ProjectDimensionsTimelineType timeline)
            : base(iEditor, uiObjects, dimdim, editor, videoPlayer)
        {
            this.side = side;
            this.timeline = timeline;
            keyboardMode = false;
        }
        public EditOperationTrimVideo(ISomeCommonEditorOperations iEditor,
			VidkaUiStateObjects uiObjects,
			ProjectDimensions dimdim,
			IVideoEditor editor,
			IVideoPlayer videoPlayer,
			TrimDirection side,
			ProjectDimensionsTimelineType timeline)
            : base(iEditor, uiObjects, dimdim, editor, videoPlayer)
        {
            this.side = side;
            this.timeline = timeline;
            keyboardMode = false;
        }
 /// <summary>
 /// Returns what the delta should be not to violate the trimming of this clip
 /// </summary>
 public static long HowMuchCanBeTrimmed(this VidkaClip clip, TrimDirection side, long delta)
 {
     if (clip == null)
         return 0;
     if (side == TrimDirection.Left)
     {
         if (clip.FrameStart + delta < 0) // left bound...
             return -clip.FrameStart; // ...to make 0
         else if (clip.FrameStartNoEase + delta >= clip.FrameEndNoEase) // right bound...
             return -clip.FrameStartNoEase + clip.FrameEndNoEase - 1; // ...to make frameEndNoEase-1
         return delta;
     }
     else if (side == TrimDirection.Right)
     {
         if (clip.FrameEndNoEase + delta <= clip.FrameStartNoEase) // left bound...
             return -clip.FrameEndNoEase + clip.FrameStartNoEase + 1; // ...to male frameStartNoEase+1
         else if (clip.FrameEnd + delta >= clip.FileLengthFrames) // right bound...
             return -clip.FrameEnd + clip.FileLengthFrames; // ...to make clip.LengthFrameCalc
         return delta;
     }
     return 0;
 }
 public static long HowMuchCanBeEased(this VidkaClipVideoAbstract clip, TrimDirection side, long delta)
 {
     if (clip == null)
         return 0;
     if (side == TrimDirection.Left)
     {
         var deltaBoundPositive = clip.LengthFrameCalcNoEase - 1 - clip.EasingLeft - clip.EasingRight;
         var deltaBoundNegative = clip.EasingLeft;
         if (delta > 0 && delta > deltaBoundNegative)
             return deltaBoundNegative;
         else if (delta < 0 && delta < -deltaBoundPositive)
             return -deltaBoundPositive;
         return delta;
     }
     else if (side == TrimDirection.Right)
     {
         var deltaBoundPositive = clip.LengthFrameCalcNoEase - 1 - clip.EasingLeft - clip.EasingRight;
         var deltaBoundNegative = clip.EasingRight;
         if (delta < 0 && delta < -deltaBoundNegative)
             return -deltaBoundNegative;
         else if (delta > 0 && delta > deltaBoundPositive)
             return deltaBoundPositive;
         return delta;
     }
     return 0;
 }
示例#6
0
 /// <summary>
 /// Returns what the delta should be not to violate the trimming of this clip
 /// </summary>
 public static long HowMuchCanBeTrimmed(this VidkaClipVideo clip, TrimDirection side, long delta)
 {
     if (clip == null)
         return 0;
     if (side == TrimDirection.Left)
     {
         var frame = clip.FrameStart + delta;
         if (frame < 0)
             return -clip.FrameStart; // to make 0
         else if (frame >= clip.FrameEnd)
             return -clip.FrameStart + clip.FrameEnd - 1; // to make frameEnd-1
         return delta;
     }
     else if (side == TrimDirection.Right)
     {
         var frame = clip.FrameEnd + delta;
         if (frame <= clip.FrameStart)
             return -clip.FrameEnd + clip.FrameStart + 1; // to male frameStart+1
         else if (frame >= clip.FileLengthFrames)
             return -clip.FrameEnd + clip.FileLengthFrames; // to make clip.LengthFrameCalc
         return delta;
     }
     return 0;
 }
 public void SetTrimHover(TrimDirection trimHover)
 {
     if (trimHover != TrimHover)
         stateChanged = true;
     TrimHover = trimHover;
 }
示例#8
0
 /// <summary>
 /// Only used in drawTrimBracket()
 /// </summary>
 private void drawTrimBracketSingle(Graphics g, Pen pen, int x, int y1, int y2, TrimDirection direction, int bracketLength)
 {
     var bracketDx = (direction == TrimDirection.Left)
         ? bracketLength
         : -bracketLength;
     g.DrawLine(pen, x, y1, x, y2);
     g.DrawLine(pen, x, y1, x + bracketDx, y1);
     g.DrawLine(pen, x, y2, x + bracketDx, y2);
 }
示例#9
0
 /// <summary>
 /// Draws one red bracket if drag frames = 0. If there has been a drag > 0,
 /// draws 2 brackets: one purple for original edge, one red for active (under mouse)
 /// </summary>
 public void DrawTrimBracket(Graphics g, int x, int y1, int y2, TrimDirection trimDirection, int bracketLength, int trimDeltaX,
     Pen penActive = null,
     Pen penActivePrev = null)
 {
     if (penActive == null)
         penActive = PPP.penActiveBoundary;
     if (penActivePrev == null)
         penActivePrev = PPP.penActiveBoundaryPrev;
     if (trimDeltaX == 0)
         drawTrimBracketSingle(g, penActive, x, y1, y2, trimDirection, bracketLength);
     else
     {
         g.FillRectangle(PPP.brushHazy, Math.Min(x, x + trimDeltaX), y1, Math.Abs(trimDeltaX), y2 - y1);
         drawTrimBracketSingle(g, penActivePrev, x, y1, y2, trimDirection, bracketLength);
         drawTrimBracketSingle(g, penActive, x + trimDeltaX, y1, y2, trimDirection, bracketLength);
     }
 }
示例#10
0
 public Trim(TrimDirection _trimDirection, IExpression remstr, IExpression str)
     : base("TRIM", WrapList(str, remstr))
 {
     Direction = _trimDirection;
 }