Пример #1
0
        public void MouseUp(MouseManager m, PointF pt)
        {
            var r      = Compute.GetRectangleByPoints(pt, m.PressedPoint);
            var shapes = m.UserLayers.IsVisible(r);

#if PerfMon
            System.Diagnostics.Debug.WriteLine(
                $@"{StateManager.GetCurrentStateAndAction()} At ({pt}). Rect:{r}.
Selected:{string.Join(Environment.NewLine, shapes.Select(s => s.ToDebugString()))}");
#endif

            shapes.ForEach(s => s.Select());
            m.SelectedShapes.AddRange(shapes);

            if (m.OperationLayer.Selection.Visible)
            {
                m.OperationLayer.DeleteSelectionRectangle();
            }

            m.State = StateManager.Normal;
        }
Пример #2
0
        public List <AbstractShape> MouseMove(MouseManager m, PointF pt)
        {
            if (m.IsPressed)
            {
                var shapes = m.SelectedShapes;

                var size = pt - m.LastPoint.ToSizeF();

#if PerfMon
                System.Diagnostics.Debug.WriteLine(
                    $@"{StateManager.GetCurrentStateAndAction()} At ({pt}) Move ({size}). 
Selected:{string.Join(Environment.NewLine, shapes)}");
#endif

                shapes.ForEach(s => s.Move(size));
            }
            else
            {
                throw new InvalidOperationException(StateManager.GetNotExistStateErrorMessage());
            }
            return(null);
        }
Пример #3
0
        public List <AbstractShape> MouseMove(MouseManager m, PointF pt)
        {
            if (m.IsPressed && !m.IsDoubleClicked)
            {
                if (!m.MultiSelect && shape?.Selected != true)
                {
                    m.SelectedShapes.ForEach(s => s.UnSelect());
                    m.SelectedShapes.Clear();
                }

                if (shape == null)
                {
                    m.State = StateManager.Selecting;
                    return(m.State.MouseMove(m, pt));
                }
                else
                {
                    if (shape.CanSelect)
                    {
                        shape.Select();
                        m.SelectedShapes.Add(shape);
                        var state = StateManager.GetStateByShape(shape, m.IsPressed);
                        if (state != null)
                        {
                            m.State = state;
                            return(m.State.MouseMove(m, pt));
                        }
                        else
                        {
                            throw new InvalidOperationException(StateManager.GetNotExistStateErrorMessage());
                        }
                    }
                    else
                    {
                        if (shape is AbstractHandle)
                        {
                            var state = StateManager.GetStateByShape(shape, m.IsPressed);
                            if (state != null)
                            {
                                m.State = state;
                                return(m.State.MouseMove(m, pt));
                            }
                            else
                            {
                                throw new InvalidOperationException(StateManager.GetNotExistStateErrorMessage());
                            }
                        }
                        else
                        {
                            m.State = StateManager.Selecting;
                            return(m.State.MouseMove(m, pt));
                        }
                    }
                }
            }
            else
            {
                List <AbstractShape> list = new List <AbstractShape>();
                var shape = m.HitShape(pt);
                if (shape != null)
                {
                    list.Add(shape);
                    var state = StateManager.GetStateByShape(shape, m.IsPressed, m.IsDoubleClicked);
                    if (state != null)
                    {
                        m.State = state;
#if PerfMon
                        System.Diagnostics.Debug.WriteLine(
                            $"{StateManager.GetCurrentStateAndAction()} Hit {shape} Enter State : {m.State}");
#endif
                    }
                }
                else
                {
                    m.State = StateManager.Normal;
                }
                return(list);
            }
        }
Пример #4
0
 public void MouseUp(MouseManager m, PointF pt)
 {
 }
Пример #5
0
 public List <AbstractShape> MouseMove(MouseManager m, PointF pt)
 {
     return(null);
 }
Пример #6
0
 public AbstractShape MouseDown(MouseManager m, PointF pt)
 {
     throw new InvalidOperationException(StateManager.GetNotExistStateErrorMessage());
 }
Пример #7
0
 public void MouseUp(MouseManager m, PointF pt)
 {
     m.State = StateManager.Normal;
 }