public Operation OnMouseDown(MouseButtons button, PointF point, SegmentOperation segOp) { if (button == MouseButtons.Right) { prevPoint = point; return(null); } if (editingSegment != null) { return(editingSegment.OnMouseDown(button, point, transform, segOp)); } return(null); }
public Operation OnMouseUp(MouseButtons button, Point point, SegmentOperation segOp) { if (button == MouseButtons.Right) { if (!prevPoint.IsEmpty) { Pan(point.X - prevPoint.X, point.Y - prevPoint.Y); } prevPoint = point; return(null); } if (editingSegment != null) { return(editingSegment.OnMouseUp(button, point, transform, segOp)); } return(null); }
public override Operation OnMouseDown(MouseButtons button, PointF point, Matrix transform, SegmentOperation segOp) { if (segOp != SegmentOperation.Segment) { return(base.OnMouseDown(button, point, transform, segOp)); } var inv = transform.Clone(); if (!inv.IsInvertible) { return(null); } inv.Invert(); var pt = new PointF[] { point }; inv.TransformPoints(pt); if (button == MouseButtons.Left) { return(AssignPathPoint(InvertPoint(point, transform), transform)); } return(null); }
public virtual Operation OnMouseUp(MouseButtons button, PointF point, Matrix transform, SegmentOperation segOp) { return(null); }
public virtual Operation OnMouseMove(MouseButtons button, PointF point, Matrix transform, SegmentOperation segOp) { nearestBone = null; nearestPoint = PointF.Empty; switch (segOp) { case SegmentOperation.Segment: // nearestPoint = GetNearestPoint(point, path, 20, transform); break; case SegmentOperation.Section: nearestPoint = GetNearestPoint(point, path, 20, transform); break; case SegmentOperation.SkeletonAnnotation: if (root == null || root.an == null) { break; } nearestBone = root.an.GetNearestBone(point, 20, transform); break; case SegmentOperation.PartingLine: nearestPoint = GetNearestPoint(point, partingLine, 10, transform); break; default: break; } return(null); }
public virtual Operation OnMouseDown(MouseButtons button, PointF point, Matrix transform, SegmentOperation segOp) { PointF nearest; switch (segOp) { case SegmentOperation.Segment: break; case SegmentOperation.Section: if (button != MouseButtons.Left) { break; } nearest = GetNearestPoint(point, path, 20, transform); if (nearest.IsEmpty) { break; } if (!section.Contains(nearest)) { section.Add(nearest); } else { section.Remove(nearest); } break; case SegmentOperation.SkeletonAnnotation: if (button != MouseButtons.Left) { break; } if (root == null || root.an == null) { break; } BoneAnnotation nearBone = root.an.GetNearestBone(point, 20, transform); if (nearBone == null) { break; } if (!an.bones.Contains(nearBone)) { an.bones.Add(nearBone); } else { an.bones.Remove(nearBone); } an.joints.Clear(); foreach (var bone in an.bones) { if (!an.joints.Contains(bone.src)) { an.joints.Add(bone.src); } if (!an.joints.Contains(bone.dst)) { an.joints.Add(bone.dst); } } break; case SegmentOperation.PartingLine: if (button != MouseButtons.Left) { break; } nearest = GetNearestPoint(point, partingLine, 10, transform); if (nearest.IsEmpty) { partingLine.Add(InvertPoint(point, transform)); } else { partingLine.Remove(nearest); } break; default: break; } return(null); }