private void CreateNewDrawing(PointF imagePoint, ImageToViewportTransformer transformer) { int keyframeIndex = 0; int timestampPerFrame = 1; long currentTimestamp = 0; bool editingLabel = false; if (screenToolManager.ActiveTool == ToolManager.Tools["Label"]) { editingLabel = LabelMouseDown(imagePoint, currentTimestamp, transformer); } if (editingLabel) { return; } if (metadata.Count == 0) { Keyframe kf = new Keyframe(0, "", metadata); metadata.AddKeyframe(kf); } AddDrawing(imagePoint, keyframeIndex, timestampPerFrame, transformer); }
public bool OnMouseLeftDown(Point mouse, Point imageLocation, float imageZoom) { if (metadata == null || screenToolManager == null) { return(false); } // At this point we must know the current timestamp and metadata should be valid. // TODO: Handle magnifier. // TODO: see if this could handle whole image manipulation as well, but at the moment the resizers are stored in the viewport. bool handled = false; ImageToViewportTransformer transformer = new ImageToViewportTransformer(imageLocation, imageZoom); PointF imagePoint = transformer.Untransform(mouse); metadata.AllDrawingTextToNormalMode(); if (screenToolManager.IsUsingHandTool) { // TODO: Change cursor. handled = screenToolManager.HandTool.OnMouseDown(metadata, fixedKeyframe, imagePoint, fixedTimestamp, false); } else { handled = true; CreateNewDrawing(imagePoint, transformer); } return(handled); }
public bool OnMouseLeftMove(Point mouse, Keys modifiers, Point imageLocation, float imageZoom) { if (metadata == null || screenToolManager == null) { return(false); } bool handled = false; ImageToViewportTransformer transformer = new ImageToViewportTransformer(imageLocation, imageZoom); PointF imagePoint = transformer.Untransform(mouse); if (screenToolManager.IsUsingHandTool) { // TODO: handle magnifier. handled = screenToolManager.HandTool.OnMouseMove(metadata, imagePoint, Point.Empty, modifiers); } else { // Setting second point of a drawing. IInitializable drawing = metadata.HitDrawing as IInitializable; if (drawing != null) { drawing.InitializeMove(imagePoint, modifiers); } } return(handled); }
public void Render(Graphics viewportCanvas, Point imageLocation, float imageZoom, long timestamp) { if (metadata == null) { return; } ImageToViewportTransformer transformer = new ImageToViewportTransformer(imageLocation, imageZoom); viewportCanvas.SmoothingMode = SmoothingMode.AntiAlias; RenderExtraDrawings(metadata, timestamp, viewportCanvas, transformer); RenderDrawings(metadata, timestamp, viewportCanvas, transformer); //RenderMagnifier(); }
private bool LabelMouseDown(PointF imagePoint, long currentTimestamp, ImageToViewportTransformer transformer) { bool hitExisting = false; foreach (DrawingText label in metadata.Labels()) { int hit = label.HitTest(imagePoint, currentTimestamp, metadata.CalibrationHelper.DistortionHelper, transformer, metadata.CoordinateSystem.Zooming); if (hit >= 0) { hitExisting = true; label.SetEditMode(true, transformer); } } return(hitExisting); }
public bool HitTest(Point mouse, Point imageLocation, float imageZoom) { // Note: at the moment this method does not support extra drawings. if (metadata == null) { return(false); } ImageToViewportTransformer transformer = new ImageToViewportTransformer(imageLocation, imageZoom); PointF imagePoint = transformer.Untransform(mouse); int keyframeIndex = 0; return(metadata.IsOnDrawing(keyframeIndex, imagePoint, fixedTimestamp)); }
public void OnMouseUp(Bitmap bitmap, Point mouse, Keys modifiers, Point imageLocation, float imageZoom) { // TODO: Handle magnifier. // TODO: Memorize the action we just finished to enable undo. // TODO: keep tool or change tool. // m_ActiveTool = m_ActiveTool.KeepTool ? m_ActiveTool : m_PointerTool; if (screenToolManager.IsUsingHandTool) { screenToolManager.HandTool.OnMouseUp(); metadata.AllDrawingTextToNormalMode(); metadata.UpdateTrackPoint(bitmap); } ImageToViewportTransformer transformer = new ImageToViewportTransformer(imageLocation, imageZoom); PointF imagePoint = transformer.Untransform(mouse); metadata.InitializeCommit(null, imagePoint); screenToolManager.AfterToolUse(); }
private void AddDrawing(PointF imagePoint, int keyframeIndex, int timestampPerFrame, ImageToViewportTransformer transformer) { AbstractDrawing drawing = screenToolManager.ActiveTool.GetNewDrawing(imagePoint, keyframeIndex, timestampPerFrame, transformer); Guid keyframeId = metadata.GetKeyframeId(keyframeIndex); HistoryMementoAddDrawing memento = new HistoryMementoAddDrawing(metadata, keyframeId, drawing.Id, drawing.ToolDisplayName); metadata.AddDrawing(keyframeId, drawing); metadata.HistoryStack.PushNewCommand(memento); // Special cases // TODO: implement the event handler to metadata DrawingAdded and finish the label in the handler. if (screenToolManager.ActiveTool == ToolManager.Tools["Label"]) { if (LabelAdded != null) { LabelAdded(this, new DrawingEventArgs(drawing, keyframeId)); } ((DrawingText)drawing).SetEditMode(true, transformer); } }
private void RenderDrawings(Metadata metadata, long timestamp, Graphics canvas, ImageToViewportTransformer transformer) { DistortionHelper distorter = metadata.CalibrationHelper.DistortionHelper; foreach (Keyframe keyframe in metadata.Keyframes) { foreach (AbstractDrawing drawing in keyframe.Drawings) { drawing.Draw(canvas, distorter, transformer, drawing == metadata.HitDrawing, timestamp); } } }
private void RenderExtraDrawings(Metadata metadata, long timestamp, Graphics canvas, ImageToViewportTransformer transformer) { DistortionHelper distorter = null; foreach (AbstractDrawing ad in metadata.ChronoManager.Drawings) { ad.Draw(canvas, distorter, transformer, false, timestamp); } foreach (AbstractDrawing ad in metadata.TrackManager.Drawings) { ad.Draw(canvas, distorter, transformer, false, timestamp); } foreach (AbstractDrawing ad in metadata.ExtraDrawings) { ad.Draw(canvas, distorter, transformer, false, timestamp); } }
private void RenderExtraDrawings(Metadata metadata, long timestamp, Graphics canvas, ImageToViewportTransformer transformer) { DistortionHelper distorter = null; metadata.DrawingCoordinateSystem.Draw(canvas, distorter, transformer, false, timestamp); metadata.DrawingTestGrid.Draw(canvas, distorter, transformer, false, timestamp); if (renderTimedDrawings) { metadata.SpotlightManager.Draw(canvas, distorter, transformer, false, timestamp); metadata.AutoNumberManager.Draw(canvas, distorter, transformer, false, timestamp); } if (renderTimedDrawings) { foreach (AbstractDrawing ad in metadata.ChronoManager.Drawings) { ad.Draw(canvas, distorter, transformer, false, timestamp); } } if (renderTimedDrawings) { foreach (AbstractDrawing ad in metadata.TrackManager.Drawings) { ad.Draw(canvas, distorter, transformer, false, timestamp); } } }