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; }
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; }
/// <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; }
/// <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); }
/// <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); } }
public Trim(TrimDirection _trimDirection, IExpression remstr, IExpression str) : base("TRIM", WrapList(str, remstr)) { Direction = _trimDirection; }