Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 public virtual Operation OnMouseUp(MouseButtons button, PointF point, Matrix transform, SegmentOperation segOp)
 {
     return(null);
 }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }