Esempio n. 1
0
        static private Point[] GetPointsByAngle(AngleEnum triangleAngle, Rectangle position)
        {
            switch (triangleAngle)
            {
            case AngleEnum.TopLeft:
                return(new Point[3] {
                    new Point(position.Left, position.Top),
                    new Point(position.Right, position.Top),
                    new Point(position.Left, position.Bottom)
                });

            case AngleEnum.TopCenter:
                return(new Point[3] {
                    new Point(position.Left + (position.Width / 2), position.Top),
                    new Point(position.Left, position.Bottom),
                    new Point(position.Right, position.Bottom)
                });

            case AngleEnum.TopRight:
                return(new Point[3] {
                    new Point(position.Left, position.Top),
                    new Point(position.Right, position.Top),
                    new Point(position.Right, position.Bottom)
                });

            case AngleEnum.BottomLeft:
                return(new Point[3] {
                    new Point(position.Left, position.Top),
                    new Point(position.Left, position.Bottom),
                    new Point(position.Right, position.Bottom)
                });

            case AngleEnum.BottomCenter:
                return(new Point[3] {
                    new Point(position.Left, position.Top),
                    new Point(position.Right, position.Top),
                    new Point(position.Left + (position.Width / 2), position.Bottom)
                });

            case AngleEnum.BottomRight:
                return(new Point[3] {
                    new Point(position.Right, position.Top),
                    new Point(position.Left, position.Bottom),
                    new Point(position.Right, position.Bottom)
                });

            default:
                throw EnumNotImplementedException.Throw(triangleAngle,
                                                        ExceptionMessages.MSG_NOT_YET_IMPLEMENTED);
            }
        }
Esempio n. 2
0
        public override void OnMouseUp(object sender, MouseEventArgs e)
        {
            var mouseLocation   = e.Location;
            var snappedLocation = Grid.SnapToGrid(mouseLocation);

            switch (action)
            {
            case SelectorAction.BeginSelectionRectangle:
                // Redirect to MouseUp:EndSelectionRectangle
                action = SelectorAction.EndSelectionRectangle;
                OnMouseUp(sender, e);
                break;

            case SelectorAction.EndSelectionRectangle:
                SetSelectedRectangle(mouseDownLocation, mouseLocation);
                break;

            case SelectorAction.BeginMoveSelectedShapes:
                // Redirect to MouseUp:EndMoveSelectedShapes
                action = SelectorAction.EndMoveSelectedShapes;
                OnMouseUp(sender, e);
                break;

            case SelectorAction.EndMoveSelectedShapes:
                ClickData.ShapeApplyOffset();

                // Reset click data
                ClickData.Clear(false);
                selectedRectangleDownLocation = new Point();
                mouseDownLocation             = new Point();

                break;

            case SelectorAction.None:
                break;

            default:
                throw EnumNotImplementedException.Throw(action, ExceptionMessages.MSG_NOT_YET_IMPLEMENTED);
            }

            Canvas.Instance.Invalidate();
        }
Esempio n. 3
0
        public override void OnMouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            var mouseLocation   = e.Location;
            var snappedLocation = Grid.SnapToGrid(mouseLocation);

            switch (action)
            {
            case SelectorAction.BeginSelectionRectangle:
                mouseDownLocation = mouseLocation;
                //ClickData.Set(mouseDownLocation, ShapeClickAction.Drag);
                SetSelectedRectangle(mouseDownLocation, mouseLocation);
                break;

            case SelectorAction.EndSelectionRectangle:
                OnMouseDown_HandleDragSelection(sender, e, mouseLocation, snappedLocation, true);
                break;

            case SelectorAction.EndMoveSelectedShapes:
                OnMouseDown_HandleDragSelection(sender, e, mouseLocation, snappedLocation, false);
                break;

            case SelectorAction.None:
                // This should only get triggered on the initial mouse down,
                // But in case, just clear the selected rectangle info and MouseDown with BeginSelectionRectangle
                ClearSelectedRectangle();
                action = SelectorAction.BeginSelectionRectangle;

                OnMouseDown(sender, e);
                break;

            default:
                throw EnumNotImplementedException.Throw(action, ExceptionMessages.MSG_NOT_YET_IMPLEMENTED);
            }

            Canvas.Instance.Invalidate();
        }
        public static bool ShowFileDialog(LoadSaveAction action)
        {
            bool result = false;

            FileDialog          d;
            Func <string, bool> fileAction;

            switch (action)
            {
            case LoadSaveAction.LoadProject:
                d          = SetupFileDialog(new OpenFileDialog(), "Load Project (.shp)", ".shp");
                fileAction = LoadProject;
                break;

            case LoadSaveAction.SaveProject:
                d          = SetupFileDialog(new SaveFileDialog(), "Save Project (.shp)", ".shp");
                fileAction = SaveProject;
                break;

            case LoadSaveAction.ExportToImage:
                d          = SetupFileDialog(new SaveFileDialog(), "Export to Image (.png,.jpg,.bmp)", ".png");
                fileAction = ExportToImage;
                break;

            default:
                throw EnumNotImplementedException.Throw(action);
            }

            if (d.ShowDialog() == DialogResult.OK)
            {
                result = fileAction(d.FileName);
            }

            d.Dispose();
            d = null;

            return(result);
        }
Esempio n. 5
0
        public override void OnMouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            var mouseLocation   = e.Location;
            var snappedLocation = Grid.SnapToGrid(mouseLocation);

            switch (action)
            {
            case SelectorAction.BeginSelectionRectangle:
                SetSelectedRectangle(mouseDownLocation, snappedLocation);
                break;

            case SelectorAction.BeginMoveSelectedShapes:
                Canvas.Instance.Focus();

                ClickData.Set(ShapeClickAction.Drag);
                ClickData.ShapeUpdateOffset(snappedLocation);

                Point moveTo = new Point(
                    snappedLocation.X - mouseDownLocation.X,
                    snappedLocation.Y - mouseDownLocation.Y
                    );

                selectedRectangle.X = selectedRectangleDownLocation.X + moveTo.X;
                selectedRectangle.Y = selectedRectangleDownLocation.Y + moveTo.Y;
                break;

            default:
                throw EnumNotImplementedException.Throw(action, ExceptionMessages.MSG_NOT_YET_IMPLEMENTED);
            }

            Canvas.Instance.Invalidate();
        }