-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFormPerformance.cs
161 lines (138 loc) · 5.96 KB
/
FormPerformance.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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace TheraWii
{
public partial class FormPerformance : Form
{
private Profile profile;
private string therapy, task;
private PerformanceMetricType metric;
public FormPerformance(Profile p)
{
InitializeComponent();
profile = p;
comboBoxMetric.DataSource = PerformanceMetrics.PerformanceMetricStrings;
comboBoxTherapy.DataSource = profile.GetAllTherapies();
}
private void comboBoxTherapy_SelectedIndexChanged(object sender, EventArgs e)
{
therapy = (string)comboBoxTherapy.SelectedItem;
comboBoxTask.DataSource = profile.GetAllTasks(therapy);
}
private void comboBoxTask_SelectedIndexChanged(object sender, EventArgs e)
{
task = (string)comboBoxTask.SelectedItem;
metric = profile.GetPrimaryMetric(therapy, task);
comboBoxMetric.SelectedIndex = -1;
comboBoxMetric.SelectedIndex = (int)metric;
}
private void comboBoxMetric_SelectedIndexChanged(object sender, EventArgs e)
{
if (0 <= comboBoxMetric.SelectedIndex
&& comboBoxMetric.SelectedIndex < PerformanceMetrics.PerformanceMetricStrings.Length)
{
metric = (PerformanceMetricType)comboBoxMetric.SelectedIndex;
updateChart();
}
}
private void updateChart()
{
DataPoints points = profile.GetMetricPoints(therapy, task, metric);
chart1.Series["Series1"].Points.DataBindXY(points.Xs, points.Ys);
//chart1.Series["Series1"].IsXValueIndexed = true;
chart1.Titles[0].Text = PerformanceMetrics.PerformanceMetricStrings[(int)metric];
switch (metric)
{
case PerformanceMetricType.TotalTime:
case PerformanceMetricType.TimeInRegion:
case PerformanceMetricType.TimeOutRegion:
chart1.ChartAreas[0].AxisY.Title = "Seconds";
break;
case PerformanceMetricType.PathEfficiency:
chart1.ChartAreas[0].AxisY.Title = "Path Distance / Path Length";
break;
case PerformanceMetricType.MotionArea:
chart1.ChartAreas[0].AxisY.Title = "Distance Units Square";
break;
case PerformanceMetricType.SpeedAverage:
chart1.ChartAreas[0].AxisY.Title = "Distance Units per Second";
break;
default:
chart1.ChartAreas[0].AxisY.Title = "Distance Units";
break;
}
}
private void buttonSave_Click(object sender, EventArgs e)
{
// Create a new save file dialog
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
// Sets the current file name filter string, which determines
// the choices that appear in the "Save as file type" or
// "Files of type" box in the dialog box.
saveFileDialog1.Filter = "PNG (*.png)|*.png|JPEG (*.jpg)|*.jpg|EMF-Plus (*.emf)|*.emf|EMF-Dual (*.emf)|*.emf|EMF (*.emf)|*.emf|GIF (*.gif)|*.gif|TIFF (*.tif)|*.tif|Bitmap (*.bmp)|*.bmp";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.RestoreDirectory = true;
// Set image file format
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
ChartImageFormat format = ChartImageFormat.Bmp;
if (saveFileDialog1.FileName.EndsWith("bmp"))
{
format = ChartImageFormat.Bmp;
}
else if (saveFileDialog1.FileName.EndsWith("jpg"))
{
format = ChartImageFormat.Jpeg;
}
else if (saveFileDialog1.FileName.EndsWith("emf") && saveFileDialog1.FilterIndex == 3)
{
format = ChartImageFormat.EmfPlus;
}
else if (saveFileDialog1.FileName.EndsWith("emf") && saveFileDialog1.FilterIndex == 4)
{
format = ChartImageFormat.EmfDual;
}
else if (saveFileDialog1.FileName.EndsWith("emf"))
{
format = ChartImageFormat.Emf;
}
else if (saveFileDialog1.FileName.EndsWith("gif"))
{
format = ChartImageFormat.Gif;
}
else if (saveFileDialog1.FileName.EndsWith("png"))
{
format = ChartImageFormat.Png;
}
else if (saveFileDialog1.FileName.EndsWith("tif"))
{
format = ChartImageFormat.Tiff;
}
// Save image
chart1.SaveImage(saveFileDialog1.FileName, format);
}
}
private void buttonCopy_Click(object sender, EventArgs e)
{
// create a memory stream to save the chart image
System.IO.MemoryStream stream = new System.IO.MemoryStream();
// save the chart image to the stream
chart1.SaveImage(stream, ImageFormat.Png);
// create a bitmap using the stream
Bitmap bmp = new Bitmap(stream);
// save the bitmap to the clipboard
Clipboard.SetDataObject(bmp);
}
private void buttonClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
}