Exemplo n.º 1
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            Focus();

            if (EditMode == EEditMode.EM_None)
            {
                if (e.Button == MouseButtons.Right)
                {
                    Capture        = true;
                    EditMode       = EEditMode.EM_Translate;
                    LastMovePos[0] = e.X;
                    LastMovePos[1] = e.Y;

                    Cursor = Cursors.NoMove2D;
                }
                else if (e.Button == MouseButtons.Left)
                {
                    /*if (Control.ModifierKeys == Keys.Shift)
                     * {
                     *      Capture = true;
                     *      EditMode = EEditMode.EM_Translate;
                     *      LastMovePos[0] = e.X;
                     *      LastMovePos[1] = e.Y;
                     *
                     *      Cursor = Cursors.NoMove2D;
                     * }
                     * else */if ((WorkingFrameItem != null) && (Cursor != cursors[0]))
                    {
                        for (int i = 0; i < cursors.Length; i++)
                        {
                            if (cursors[i] == Cursor)
                            {
                                Capture        = true;
                                EditMode       = EEditMode.EM_Resize;
                                ResizeDir      = (EEdgeCorner)i;
                                LastMovePos[0] = e.X;
                                LastMovePos[1] = e.Y;
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (e.Button == MouseButtons.None)
            {
                /*if (Control.ModifierKeys == Keys.Shift)
                 * {
                 *      Cursor = Cursors.NoMove2D;
                 * }
                 * else*/
                if (WorkingFrameItem != null)
                {
                    Matrix IT = LastTransform.Clone();
                    IT.Invert();
                    Point[] p = new Point[] { new Point(e.X, e.Y) };
                    IT.TransformPoints(p);
                    if (Globals.WorkingFrames.Img != null)
                    {
                        p[0].X -= LastImageOffset.X;
                        p[0].Y -= LastImageOffset.Y;
                    }
                    _frameItem FI = Globals.WorkingFrames.GetItemUnder(p[0].X, p[0].Y, ValidFramesFlag);
                    if (WorkingFrameItem == null)
                    {
                        cbFrameNames.Items.Clear();
                    }
                    if (FI != null)
                    {
                        bool   fromList = false;
                        string name;
                        foreach (_frameName fn in FI.names)
                        {
                            if ((fn.source & ValidFramesFlag) == 0)
                            {
                                continue;
                            }
                            name = fn.name;
                            if (fn.source == FrameSource.Grid)
                            {
                                name += " (default)";
                            }
                            else if (fn.source == FrameSource.List)
                            {
                                name    += " (list)";
                                fromList = true;
                            }
                            else if (fn.source == FrameSource.Name)
                            {
                                name += " (name)";
                            }
                            else if (fn.source == FrameSource.Alias)
                            {
                                name += " (alias)";
                            }

                            if (WorkingFrameItem == null)
                            {
                                cbFrameNames.Items.Add(name);
                            }
                        }

                        if (WorkingFrameItem == null)
                        {
                            cbFrameNames.SelectedIndex = 0;
                        }

                        if (fromList)
                        {
                            EEdgeCorner ec = FI.GetEdgeOrCorner(p[0].X, p[0].Y, 5);
                            Cursor = cursors[(int)ec];
                        }
                    }
                    else
                    {
                        if (WorkingFrameItem == null)
                        {
                            cbFrameNames.Text = "";
                        }
                        Cursor = cursors[0];
                    }
                }

                return;
            }

            if (EditMode == EEditMode.EM_Translate)
            {
                Translation[0] += e.X - LastMovePos[0];
                Translation[1] += e.Y - LastMovePos[1];
                LastMovePos[0]  = e.X;
                LastMovePos[1]  = e.Y;

                Invalidate();
            }
            else if (EditMode == EEditMode.EM_Resize)
            {
                ResizeMovement[0] += (e.X - LastMovePos[0]) / (float)ZoomLevels[ZoomIndex];
                ResizeMovement[1] += (e.Y - LastMovePos[1]) / (float)ZoomLevels[ZoomIndex];
                LastMovePos[0]     = e.X;
                LastMovePos[1]     = e.Y;
                int rx = (int)ResizeMovement[0];
                ResizeMovement[0] -= rx;
                int ry = (int)ResizeMovement[1];
                ResizeMovement[1] -= ry;
                if (ResizeDir == EEdgeCorner.TopLeft)
                {
                    if ((WorkingFrameItem.x + rx >= 0) && (WorkingFrameItem.width - rx > 1))
                    {
                        WorkingFrameItem.x     += rx;
                        WorkingFrameItem.width -= rx;
                    }
                    if ((WorkingFrameItem.y + ry >= 0) && (WorkingFrameItem.height - ry > 1))
                    {
                        WorkingFrameItem.y      += ry;
                        WorkingFrameItem.height -= ry;
                    }
                }
                else if (ResizeDir == EEdgeCorner.Top)
                {
                    if ((WorkingFrameItem.y + ry >= 0) && (WorkingFrameItem.height - ry > 1))
                    {
                        WorkingFrameItem.y      += ry;
                        WorkingFrameItem.height -= ry;
                    }
                }
                else if (ResizeDir == EEdgeCorner.TopRight)
                {
                    if (WorkingFrameItem.width + rx > 1)
                    {
                        WorkingFrameItem.width += rx;
                    }
                    if ((WorkingFrameItem.y + ry >= 0) && (WorkingFrameItem.height - ry > 1))
                    {
                        WorkingFrameItem.y      += ry;
                        WorkingFrameItem.height -= ry;
                    }
                }
                else if (ResizeDir == EEdgeCorner.Left)
                {
                    if ((WorkingFrameItem.x + rx >= 0) && (WorkingFrameItem.width - rx > 1))
                    {
                        WorkingFrameItem.x     += rx;
                        WorkingFrameItem.width -= rx;
                    }
                }
                else if (ResizeDir == EEdgeCorner.Right)
                {
                    if (WorkingFrameItem.width + rx > 1)
                    {
                        WorkingFrameItem.width += rx;
                    }
                }
                else if (ResizeDir == EEdgeCorner.BottomLeft)
                {
                    if ((WorkingFrameItem.x + rx >= 0) && (WorkingFrameItem.width - rx > 1))
                    {
                        WorkingFrameItem.x     += rx;
                        WorkingFrameItem.width -= rx;
                    }
                    if (WorkingFrameItem.height + ry > 1)
                    {
                        WorkingFrameItem.height += ry;
                    }
                }
                else if (ResizeDir == EEdgeCorner.Bottom)
                {
                    if (WorkingFrameItem.height + ry > 1)
                    {
                        WorkingFrameItem.height += ry;
                    }
                }
                else if (ResizeDir == EEdgeCorner.BottomRight)
                {
                    if (WorkingFrameItem.width + rx > 1)
                    {
                        WorkingFrameItem.width += rx;
                    }
                    if (WorkingFrameItem.height + ry > 1)
                    {
                        WorkingFrameItem.height += ry;
                    }
                }

                if ((rx != 0) || (ry != 0))
                {
                    Globals.WorkingFrames.UpdateFrameListItem(WorkingFrameItem);
                    Invalidate();
                }
            }
        }