Example #1
0
        public override List <int> MouseUp(object sender, MouseButtonEventArgs e, ProjectCanvas pc)
        {
            List <int> result = new List <int>();

            if (!(e.LeftButton == MouseButtonState.Released && e.RightButton == MouseButtonState.Released) ||
                (MouseDownPoint.X == -1 && MouseDownPoint.Y == -1))
            {
                return(result);
            }
            Rect boundingBox     = GetBoundingBox();
            bool SingleClickFlag = false;
            var  pos             = e.GetPosition(pc);

            if ((pos.X - MouseDownPoint.X) * (pos.X - MouseDownPoint.X) + (pos.Y - MouseDownPoint.Y) * (pos.Y - MouseDownPoint.Y) < 5)
            {
                // single click
                boundingBox     = new Rect(e.GetPosition(pc).X, e.GetPosition(pc).Y, 0, 0);
                SingleClickFlag = true;
            }
            if (!ResetFlag)
            {
                for (int i = 0; i < pc.Stones.Count; i++)
                {
                    if (pc.Stones[i] is DominoInCanvas dic && IsInside(dic, boundingBox, SingleClickFlag ? true : IncludeBoundary))
                    {
                        result.Add(i);
                    }
                }
            }
            ResetFlag = false;
            RemoveSelectionDomain(pc);
            MouseDownPoint = new System.Windows.Point(-1, -1);
            return(result);
        }
Example #2
0
        public override void MouseMove(object sender, MouseEventArgs e, ProjectCanvas pc)
        {
            if (e.LeftButton == MouseButtonState.Released && e.RightButton == MouseButtonState.Released)
            {
                RemoveSelectionDomain(pc);
                return;
            }
            if (s == null)
            {
                return;
            }

            UpdateShapeProperties(e.GetPosition((Canvas)sender));
        }
Example #3
0
        public override void MouseDown(object sender, MouseButtonEventArgs e, ProjectCanvas pc)
        {
            UpdateSelectionMode(e);

            MouseDownPoint = e.GetPosition((Canvas)sender);

            SolidColorBrush color = SelectionColor;

            s.Stroke          = color;
            s.StrokeThickness = 8;

            Initialize();
            ResetFlag = false;

            AddSelectionDomain(pc);
        }
Example #4
0
        public override void MouseMove(object sender, MouseEventArgs e, ProjectCanvas pc)
        {
            if (s == null)
            {
                return;
            }

            var poly = s as System.Windows.Shapes.Polyline;

            if (poly.Points.Count == points.Count)
            {
                poly.Points.Add(e.GetPosition(pc));
            }
            else
            {
                poly.Points[poly.Points.Count - 1] = e.GetPosition(pc);
            }
        }
Example #5
0
        public override void MouseDown(object sender, MouseButtonEventArgs e, ProjectCanvas pc)
        {
            if (!((e.ChangedButton == MouseButton.Left || e.ChangedButton == MouseButton.Right) &&
                  (e.LeftButton == MouseButtonState.Pressed ^ e.RightButton == MouseButtonState.Pressed)))
            {
                return;
            }

            if (points.Count == 0)
            {
                firstButton = e.ChangedButton;
                if (SelectionMode == SelectionMode.Neutral)
                {
                    CurrentSelectionMode = e.ChangedButton == MouseButton.Left ? SelectionMode.Add : SelectionMode.Remove;
                }
                else
                {
                    CurrentSelectionMode = SelectionMode;
                }
                AddSelectionDomain(pc);
            }
            else if (e.ClickCount == 2)
            {
                DoubleClickFlag = true;
            }
            if (e.ChangedButton != firstButton)
            {
                // selection canceled, clear polygon
                points.Clear();
                RemoveSelectionDomain(pc);
                return;
            }
            s.Stroke          = SelectionColor;
            s.StrokeThickness = 8;
            points.Add(e.GetPosition(pc));
            var poly = s as System.Windows.Shapes.Polyline;

            poly.Points = new System.Windows.Media.PointCollection(points);
        }
Example #6
0
        public override List <int> MouseUp(object sender, MouseButtonEventArgs e, ProjectCanvas pc)
        {
            var result = new List <int>();

            if (!DoubleClickFlag)
            {
                return(result);
            }
            DoubleClickFlag = false;
            var boundingBox = GetBoundingBox();

            for (int i = 0; i < pc.Stones.Count; i++)
            {
                if (pc.Stones[i] is DominoInCanvas dic && IsInside(dic, boundingBox, IncludeBoundary))
                {
                    result.Add(i);
                }
            }
            RemoveSelectionDomain(pc);
            points      = new List <System.Windows.Point>();
            firstButton = null;
            return(result);
        }
Example #7
0
 public virtual List <int> MouseUp(object sender, MouseButtonEventArgs e, ProjectCanvas pc)
 {
     return(new List <int>());
 }
Example #8
0
 public abstract void MouseDown(object sender, MouseButtonEventArgs e, ProjectCanvas pc);
Example #9
0
 public abstract void MouseMove(object sender, MouseEventArgs e, ProjectCanvas pc);
Example #10
0
 public void AddSelectionDomain(ProjectCanvas pc)
 {
     pc.Children.Remove(s);
     s.Visibility = Visibility.Visible;
     pc.Children.Add(s);
 }
Example #11
0
 public void RemoveSelectionDomain(ProjectCanvas pc)
 {
     s.Visibility = Visibility.Hidden;
     (VisualTreeHelper.GetParent(s) as Canvas)?.Children.Remove(s);
 }