public void OutlineClipVideoHover( Graphics g, VidkaClipVideo vclip, ProjectDimensions dimdim, int Height, TrimDirection trimDirection, int trimBracketLength, long framesActiveMouseTrim) { int y1 = dimdim.getY_main1(Height); int y2 = dimdim.getY_main2(Height); //int yaudio = dimdim.getY_main_half(Height); int x1 = dimdim.getScreenX1(vclip); int clipW = dimdim.convert_FrameToAbsX(vclip.LengthFrameCalc); // hacky, I know g.DrawRectangle(penHover, x1, y1, clipW, y2 - y1); if (trimDirection == TrimDirection.Left) { drawTrimBracket(g, x1, y1, y2, TrimDirection.Left, trimBracketLength, dimdim.convert_FrameToAbsX(framesActiveMouseTrim), dimdim); } if (trimDirection == TrimDirection.Right) { drawTrimBracket(g, x1 + clipW, y1, y2, TrimDirection.Right, trimBracketLength, dimdim.convert_FrameToAbsX(framesActiveMouseTrim), dimdim); } }
internal void DrawCurrentClipVideo( Graphics g, VidkaClipVideo vclip, ProjectDimensions dimdim, VidkaProj proj, VidkaFileMapping projMapping, int w, int h, OutlineClipType type, bool isOriginalPlaybackMode, TrimDirection trimDirection, int trimBracketLength, long markerFrame, long selectedClipFrameOffset, long framesActiveMouseTrim) { int yMainTop = dimdim.getY_main1(h); int xMain1 = dimdim.getScreenX1(vclip); int xMain2 = xMain1 + dimdim.convert_FrameToAbsX(vclip.LengthFrameCalc); //hacky, I know int xMainDelta = dimdim.convert_FrameToAbsX(framesActiveMouseTrim); //hacky, I know int xOrig1 = dimdim.convert_Frame2ScreenX_OriginalTimeline(vclip.FrameStart, vclip.FileLengthFrames, w); int xOrig2 = dimdim.convert_Frame2ScreenX_OriginalTimeline(vclip.FrameEnd, vclip.FileLengthFrames, w); int xOrigDelta = dimdim.convert_Frame2ScreenX_OriginalTimeline(framesActiveMouseTrim, vclip.FileLengthFrames, w); // hacky, I know int y1 = dimdim.getY_original1(h); int y2 = dimdim.getY_original2(h); int yaudio = dimdim.getY_original_half(h); // draw entire original clip (0 .. vclip.FileLength) g.FillRectangle(brushWhite, 0, y1, w, y2 - y1); g.FillRectangle(brushActive, xOrig1, y1, xOrig2 - xOrig1, y2 - y1); DrawClipBitmaps(g, proj, projMapping, vclip, 0, y1, w, yaudio - y1, 0, vclip.FileLengthSec ?? 0); DrawWaveform(g, proj, projMapping, vclip, 0, yaudio, w, y2 - yaudio, 0, vclip.FileLengthSec ?? 0); if (vclip.IsMuted) { g.FillRectangle(brushHazyMute, xOrig1, yaudio, xOrig2 - xOrig1, y2 - yaudio); } g.DrawLine(penGray, 0, yaudio, w, yaudio); g.DrawRectangle(penDefault, 0, y1, w, y2 - y1); //draw clip bounds g.DrawLine((type == OutlineClipType.Hover) ? penHover : penGray, xMain1, yMainTop, xOrig1, y2); g.DrawLine((type == OutlineClipType.Hover) ? penHover : penGray, xMain2, yMainTop, xOrig2, y2); g.DrawLine((type == OutlineClipType.Hover) ? penHover : penGray, xOrig1, y1, xOrig1, y2); g.DrawLine((type == OutlineClipType.Hover) ? penHover : penGray, xOrig2, y1, xOrig2, y2); if (type == OutlineClipType.Hover) { if (trimDirection == TrimDirection.Left) { g.DrawLine(penActiveBoundary, xMain1 + xMainDelta, yMainTop, xOrig1 + xOrigDelta, y2); drawTrimBracket(g, xOrig1, y1, y2, TrimDirection.Left, trimBracketLength, xOrigDelta, dimdim); } if (trimDirection == TrimDirection.Right) { g.DrawLine(penActiveBoundary, xMain2 + xMainDelta, yMainTop, xOrig2 + xOrigDelta, y2); drawTrimBracket(g, xOrig2, y1, y2, TrimDirection.Right, trimBracketLength, xOrigDelta, dimdim); } } // draw marker on var frameOffset = isOriginalPlaybackMode ? markerFrame : markerFrame - selectedClipFrameOffset + vclip.FrameStart; int xMarker = dimdim.convert_Frame2ScreenX_OriginalTimeline(frameOffset, vclip.FileLengthFrames, w); g.DrawLine(penMarker, xMarker, y1, xMarker, y2); }