-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tool.cs
163 lines (141 loc) · 3.99 KB
/
Tool.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GeoGebra_v1._0
{
public class Tool
{
public virtual void MouseDown(float x, float y, PictureBox temp)
{
}
public virtual void MouseUp(float x, float y)
{
}
public virtual void MouseMove(float x, float y)
{
}
static Tool currentTool;
public static Tool CurrentTool
{
get
{
return currentTool;
}
set
{
currentTool = value;
}
}
}
public class ToolPoint : Tool
{
public override void MouseUp(float x, float y)
{
Point t = new Point(x, y);
Construction.getConstruction().AddShape(t);
}
private ToolPoint()
{
}
public static ToolPoint getToolPoint()
{
if (toolPoint == null)
toolPoint = new ToolPoint();
return toolPoint;
}
static ToolPoint toolPoint;
}
public class ToolEllipse : Tool
{
float xc, yc;
private ToolEllipse()
{
}
public static ToolEllipse getToolEllipse()
{
if (toolEllipse == null)
toolEllipse = new ToolEllipse();
return toolEllipse;
}
static ToolEllipse toolEllipse;
public override void MouseDown(float x, float y, PictureBox temp)
{
this.xc = x;
this.yc = y;
}
public override void MouseUp(float x, float y)
{
Ellipse e = new Ellipse(xc, yc, Math.Abs(x - xc), Math.Abs(y - yc));
Construction.getConstruction().AddShape(e);
}
}
public class ToolLine : Tool
{
float x1, y1;
private ToolLine()
{ }
public static ToolLine getToolLine()
{
if (toolLine == null)
toolLine = new ToolLine();
return toolLine;
}
static ToolLine toolLine;
public override void MouseDown(float x, float y, PictureBox temp)
{
this.x1 = x;
this.y1 = y;
Construction.getConstruction().RegisterTempRepresentation(new RepresentationPictureBox(temp));
}
public override void MouseMove(float x, float y)
{
Construction.getConstruction().ClearTempShapes();
Construction.getConstruction().AddTempShape(new Line(x1, y1, x, y));
}
public override void MouseUp(float x, float y)
{
Construction.getConstruction().ClearTempRepresentations();
Line l = new Line(x1, y1, x, y);
Construction.getConstruction().AddShape(l);
}
}
public class ToolCircle : Tool
{
float xc, yc;
private ToolCircle()
{
}
public static ToolCircle getToolCircle()
{
if (toolCircle == null)
toolCircle = new ToolCircle();
return toolCircle;
}
static ToolCircle toolCircle;
public override void MouseDown(float x, float y, PictureBox temp)
{
this.xc = x;
this.yc = y;
}
public override void MouseUp(float x, float y)
{
Circle c = new Circle(xc, yc, (float)Math.Sqrt((x - xc) * (x - xc) + (y - yc) * (y - yc)));
Construction.getConstruction().AddShape(c);
}
}
public class Coordinates : Tool
{
Form form;
public Coordinates(Form form)
{
this.form = form;
}
public override void MouseMove(float x, float y)
{
form.Text = x + ":" + y;
}
}
}