Subversion Repositories AndroidProjects

Rev

Rev 1408 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1399 chris 1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
using System.Windows.Forms;
7
 
1405 chris 8
using ShapeEditor.file.shapes;
9
 
1399 chris 10
namespace ShapeEditor.interaction
11
{
12
    public class SelectMode : InteractionMode
13
    {
1405 chris 14
        private bool mLeftButtonDown = false;
1399 chris 15
 
1404 chris 16
        private int mLastX = 0;
17
        private int mLastY = 0;
1399 chris 18
 
1405 chris 19
        private BaseShapeElement mSelectedElement = null;
1406 chris 20
        private bool mMoveEntireObject = false;
1405 chris 21
        private int mSelectedHandle = -1;
22
 
1399 chris 23
        public SelectMode(MainForm parent)
1404 chris 24
            : base(parent, InteractionMode.SELECT)
1399 chris 25
        {
26
        }
27
 
1420 chris 28
        public override void MouseMove(MouseEventArgs e, bool isMouseDown = false)
1399 chris 29
        {
1405 chris 30
            mSelectedElement = mParent.CurrentDoc.GetSelectedElement();
31
 
32
            if (mSelectedElement == null)
33
                return;
34
 
1408 chris 35
            float offsetX = mParent.CurrentDoc.Sprite.transform.x;
36
            float offsetY = mParent.CurrentDoc.Sprite.transform.y;
37
 
1405 chris 38
            if (e.Button == MouseButtons.Left)
1404 chris 39
            {
1405 chris 40
                if (!mLeftButtonDown)
41
                {
42
                    // mouse down
1406 chris 43
                    if (mSelectedElement.FindHandleAt(e.X, e.Y) == -1)
44
                    {
45
                        // priority to current selection's handles
46
                        mSelectedElement = mParent.CurrentDoc.SelectAt(e.X, e.Y);
47
                        if (mSelectedElement == null)
48
                            return;
49
                    }
50
 
1405 chris 51
                    mLeftButtonDown = true;
52
                    mSelectedHandle = mSelectedElement.FindHandleAt(e.X, e.Y);
53
                    if (mSelectedHandle != -1)
1406 chris 54
                    {
55
                        mMoveEntireObject = false;
1408 chris 56
                        mParent.GlView.Cursor = mSelectedElement.GetCursor(mSelectedHandle);
1406 chris 57
                    }
58
                    else if (mSelectedElement.IsInside(e.X, e.Y))
59
                    {
60
                        mMoveEntireObject = true;
61
                        mParent.GlView.Cursor = Cursors.SizeAll;
62
                    }
1405 chris 63
                }
64
                else
65
                {
66
                    // mouse drag
67
                    int dx = e.X - mLastX;
68
                    int dy = e.Y - mLastY;
69
 
70
                    if (mSelectedHandle != -1)
71
                    {
1408 chris 72
                        mSelectedElement.DragHandle(mSelectedHandle, dx, dy);
1405 chris 73
                    }
1406 chris 74
                    else if (mMoveEntireObject)
75
                    {
1408 chris 76
                        mSelectedElement.DragMove(dx, dy);
1406 chris 77
                    }
1405 chris 78
                }
1404 chris 79
            }
1405 chris 80
            else if (e.Button == MouseButtons.None)
1404 chris 81
            {
1408 chris 82
                int handle = mSelectedElement.FindHandleAt(e.X, e.Y);
83
                if (handle != -1)
1405 chris 84
                {
1408 chris 85
                    mParent.GlView.Cursor = mSelectedElement.GetCursor(handle);
1405 chris 86
                }
1406 chris 87
                else if (mSelectedElement.IsInside(e.X, e.Y))
88
                {
1408 chris 89
                    mParent.GlView.Cursor = Cursors.SizeAll;
1406 chris 90
                }
1405 chris 91
                else
92
                {
93
                    mParent.GlView.Cursor = Cursors.Arrow;
94
                }
1404 chris 95
            }
96
 
97
            mLastX = e.X;
98
            mLastY = e.Y;
1399 chris 99
        }
100
 
101
        public override void MouseUp(MouseEventArgs e)
102
        {
1405 chris 103
            if (e.Button == MouseButtons.Left)
104
            {
105
                if (mSelectedElement != null)
106
                {
107
                    mSelectedElement.FixCoordinates();
108
                }
109
 
110
                mLeftButtonDown = false;
111
                mSelectedHandle = -1;
1406 chris 112
                mMoveEntireObject = false;
1405 chris 113
            }
114
 
115
            mSelectedHandle = -1;
1399 chris 116
        }
1400 chris 117
 
118
        public override void Render()
119
        {
120
        }
1399 chris 121
    }
122
}