summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--grapher/Models/AccelGUI.cs2
-rw-r--r--grapher/Models/Charts/AccelCharts.cs196
-rw-r--r--grapher/Models/Charts/ChartState/ChartState.cs86
-rw-r--r--grapher/Models/Charts/ChartState/ChartStateManager.cs68
-rw-r--r--grapher/Models/Charts/ChartState/CombinedState.cs38
-rw-r--r--grapher/Models/Charts/ChartState/XYOneGraphState.cs20
-rw-r--r--grapher/Models/Charts/ChartState/XYTwoGraphState.cs38
-rw-r--r--grapher/Models/Options/ApplyOptions.cs2
8 files changed, 332 insertions, 118 deletions
diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs
index 3acb943..59aab2f 100644
--- a/grapher/Models/AccelGUI.cs
+++ b/grapher/Models/AccelGUI.cs
@@ -128,7 +128,7 @@ namespace grapher
private void SetupWriteButton()
{
- WriteButton.Top = AccelCharts.SensitivityChart.Top + AccelCharts.SensitivityChart.Height - Constants.WriteButtonVerticalOffset;
+ WriteButton.Top = AccelCharts.Top + AccelCharts.TopChartHeight - Constants.WriteButtonVerticalOffset;
SetWriteButtonDefault();
}
diff --git a/grapher/Models/Charts/AccelCharts.cs b/grapher/Models/Charts/AccelCharts.cs
index 3f228c3..f255d79 100644
--- a/grapher/Models/Charts/AccelCharts.cs
+++ b/grapher/Models/Charts/AccelCharts.cs
@@ -1,5 +1,6 @@
using grapher.Models.Calculations;
using grapher.Models.Charts;
+using grapher.Models.Charts.ChartState;
using grapher.Models.Serialized;
using System;
using System.Drawing;
@@ -20,31 +21,21 @@ namespace grapher
ToolStripMenuItem enableLastMouseMove,
Button writeButton)
{
- Estimated = new EstimatedPoints();
- EstimatedX = new EstimatedPoints();
- EstimatedY = new EstimatedPoints();
- AccelData = new AccelData(Estimated, EstimatedX, EstimatedY);
+ var estimated = new EstimatedPoints();
+ var estimatedX = new EstimatedPoints();
+ var estimatedY = new EstimatedPoints();
+ SetupCharts(sensitivityChart, velocityChart, gainChart, estimated, estimatedX, estimatedY);
+ var accelData = new AccelData(estimated, estimatedX, estimatedY);
+ ChartStateManager = new ChartStateManager(sensitivityChart, velocityChart, gainChart, accelData);
- ContaingForm = form;
- SensitivityChart = sensitivityChart;
- VelocityChart = velocityChart;
- GainChart = gainChart;
+ ContainingForm = form;
EnableVelocityAndGain = enableVelocityAndGain;
EnableLastValue = enableLastMouseMove;
WriteButton = writeButton;
- SensitivityChart.SetPointBinds(Estimated.Sensitivity, EstimatedX.Sensitivity, EstimatedY.Sensitivity);
- VelocityChart.SetPointBinds(Estimated.Velocity, EstimatedX.Velocity, EstimatedY.Velocity);
- GainChart.SetPointBinds(Estimated.Gain, EstimatedX.Gain, EstimatedY.Gain);
- SensitivityChart.SetTop(0);
- VelocityChart.SetHeight(SensitivityChart.Height);
- VelocityChart.SetTop(SensitivityChart.Height + Constants.ChartSeparationVertical);
- GainChart.SetHeight(SensitivityChart.Height);
- GainChart.SetTop(VelocityChart.Top + VelocityChart.Height + Constants.ChartSeparationVertical);
-
- Rectangle screenRectangle = ContaingForm.RectangleToScreen(ContaingForm.ClientRectangle);
- FormBorderHeight = screenRectangle.Top - ContaingForm.Top;
+ Rectangle screenRectangle = ContainingForm.RectangleToScreen(ContainingForm.ClientRectangle);
+ FormBorderHeight = screenRectangle.Top - ContainingForm.Top;
EnableVelocityAndGain.Click += new System.EventHandler(OnEnableClick);
EnableVelocityAndGain.CheckedChanged += new System.EventHandler(OnEnableVelocityGainCheckStateChange);
@@ -52,22 +43,15 @@ namespace grapher
EnableLastValue.CheckedChanged += new System.EventHandler(OnEnableLastMouseMoveCheckStateChange);
HideVelocityAndGain();
- SensitivityChart.Show();
- Combined = false;
- ShowCombined();
+ ChartState = ChartStateManager.InitialState();
+ ChartState.Activate();
}
#endregion Constructors
#region Properties
- public Form ContaingForm { get; }
-
- public ChartXY SensitivityChart { get; }
-
- public ChartXY VelocityChart { get; }
-
- public ChartXY GainChart { get; }
+ public Form ContainingForm { get; }
public ToolStripMenuItem EnableVelocityAndGain { get; }
@@ -75,90 +59,109 @@ namespace grapher
private Button WriteButton { get; }
- public AccelData AccelData { get; }
-
- private EstimatedPoints Estimated { get; }
+ public AccelData AccelData
+ {
+ get
+ {
+ return ChartState.AccelData;
+ }
+ }
- private EstimatedPoints EstimatedX { get; }
+ public int Left
+ {
+ get
+ {
+ return ChartState.SensitivityChart.Left;
+ }
+ }
- private EstimatedPoints EstimatedY { get; }
+ public int Top
+ {
+ get
+ {
+ return ChartState.SensitivityChart.Top;
+ }
+ }
- private bool Combined { get; set; }
+ public int TopChartHeight
+ {
+ get
+ {
+ return ChartState.SensitivityChart.Height;
+ }
+ }
private int FormBorderHeight { get; }
+ private ChartState ChartState { get; set; }
+
+ private ChartStateManager ChartStateManager { get; }
+
#endregion Properties
#region Methods
public void MakeDots(int x, int y, double timeInMs)
{
- if (Combined)
- {
- AccelData.CalculateDots(x, y, timeInMs);
- }
- else
- {
- AccelData.CalculateDotsXY(x, y, timeInMs);
- }
+ ChartState.MakeDots(x, y, timeInMs);
}
public void DrawLastMovement()
{
if (EnableLastValue.Checked)
{
- SensitivityChart.DrawLastMovementValue();
- VelocityChart.DrawLastMovementValue();
- GainChart.DrawLastMovementValue();
+ ChartState.DrawLastMovement();
}
}
public void Bind()
{
- if (Combined)
- {
- SensitivityChart.Bind(AccelData.Combined.AccelPoints);
- VelocityChart.Bind(AccelData.Combined.VelocityPoints);
- GainChart.Bind(AccelData.Combined.GainPoints);
- }
- else
- {
- SensitivityChart.BindXY(AccelData.X.AccelPoints, AccelData.Y.AccelPoints);
- VelocityChart.BindXY(AccelData.X.VelocityPoints, AccelData.Y.VelocityPoints);
- GainChart.BindXY(AccelData.X.GainPoints, AccelData.Y.GainPoints);
- }
+ ChartState.Bind();
}
public void ShowActive(DriverSettings driverSettings)
{
- if (driverSettings.combineMagnitudes)
- {
- ShowCombined();
- }
- else
- {
- ShowXandYSeparate();
- }
+ ChartState = ChartStateManager.DetermineState(driverSettings);
+ ChartState.Activate();
+ UpdateFormWidth();
+ Bind();
}
public void SetWidened()
{
- SensitivityChart.SetWidened();
- VelocityChart.SetWidened();
- GainChart.SetWidened();
+ ChartState.SetWidened();
UpdateFormWidth();
AlignWriteButton();
}
public void SetNarrowed()
{
- SensitivityChart.SetNarrowed();
- VelocityChart.SetNarrowed();
- GainChart.SetNarrowed();
+ ChartState.SetNarrowed();
UpdateFormWidth();
AlignWriteButton();
}
+ private static void SetupCharts(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ EstimatedPoints estimated,
+ EstimatedPoints estimatedX,
+ EstimatedPoints estimatedY)
+ {
+ sensitivityChart.SetPointBinds(estimated.Sensitivity, estimatedX.Sensitivity, estimatedY.Sensitivity);
+ velocityChart.SetPointBinds(estimated.Velocity, estimatedX.Velocity, estimatedY.Velocity);
+ gainChart.SetPointBinds(estimated.Gain, estimatedX.Gain, estimatedY.Gain);
+
+ sensitivityChart.SetTop(0);
+ velocityChart.SetHeight(sensitivityChart.Height);
+ velocityChart.SetTop(sensitivityChart.Height + Constants.ChartSeparationVertical);
+ gainChart.SetHeight(sensitivityChart.Height);
+ gainChart.SetTop(velocityChart.Top + velocityChart.Height + Constants.ChartSeparationVertical);
+
+ sensitivityChart.Show();
+ }
+
private void OnEnableClick(object sender, EventArgs e)
{
EnableVelocityAndGain.Checked = !EnableVelocityAndGain.Checked;
@@ -180,67 +183,28 @@ namespace grapher
{
if (!EnableLastValue.Checked)
{
- SensitivityChart.ClearLastValue();
- VelocityChart.ClearLastValue();
- GainChart.ClearLastValue();
+ ChartState.ClearLastValue();
}
}
private void ShowVelocityAndGain()
{
- VelocityChart.Show();
- GainChart.Show();
- ContaingForm.Height = SensitivityChart.Height +
- Constants.ChartSeparationVertical +
- VelocityChart.Height +
- Constants.ChartSeparationVertical +
- GainChart.Height +
- FormBorderHeight;
+ ChartState.ShowVelocityAndGain(ContainingForm, FormBorderHeight);
}
private void HideVelocityAndGain()
{
- VelocityChart.Hide();
- GainChart.Hide();
- ContaingForm.Height = SensitivityChart.Height + FormBorderHeight;
- }
-
- private void ShowXandYSeparate()
- {
- if (Combined)
- {
- Combined = false;
-
- SensitivityChart.SetSeparate();
- VelocityChart.SetSeparate();
- GainChart.SetSeparate();
- UpdateFormWidth();
- Bind();
- }
- }
-
- private void ShowCombined()
- {
- if (!Combined)
- {
- Combined = true;
-
- SensitivityChart.SetCombined();
- VelocityChart.SetCombined();
- GainChart.SetCombined();
- UpdateFormWidth();
- Bind();
- }
+ ChartState.HideVelocityAndGain(ContainingForm, FormBorderHeight);
}
private void UpdateFormWidth()
{
- ContaingForm.Width = SensitivityChart.Left + SensitivityChart.Width;
+ ContainingForm.Width = ChartState.SensitivityChart.Left + ChartState.SensitivityChart.Width;
}
private void AlignWriteButton()
{
- WriteButton.Left = SensitivityChart.Left / 2 - WriteButton.Width / 2;
+ WriteButton.Left = ChartState.SensitivityChart.Left / 2 - WriteButton.Width / 2;
}
#endregion Methods
diff --git a/grapher/Models/Charts/ChartState/ChartState.cs b/grapher/Models/Charts/ChartState/ChartState.cs
new file mode 100644
index 0000000..b450357
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/ChartState.cs
@@ -0,0 +1,86 @@
+using grapher.Models.Calculations;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public abstract class ChartState
+ {
+ public ChartState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData)
+ {
+ SensitivityChart = sensitivityChart;
+ VelocityChart = velocityChart;
+ GainChart = gainChart;
+ AccelData = accelData;
+ }
+
+ public ChartXY SensitivityChart { get; }
+
+ public ChartXY VelocityChart { get; }
+
+ public ChartXY GainChart { get; }
+
+ public AccelData AccelData { get; }
+
+ public abstract void MakeDots(int x, int y, double timeInMs);
+
+ public abstract void Bind();
+
+ public abstract void Activate();
+
+ public void DrawLastMovement()
+ {
+ SensitivityChart.DrawLastMovementValue();
+ VelocityChart.DrawLastMovementValue();
+ GainChart.DrawLastMovementValue();
+ }
+
+ public void SetWidened()
+ {
+ SensitivityChart.SetWidened();
+ VelocityChart.SetWidened();
+ GainChart.SetWidened();
+ }
+
+ public void SetNarrowed()
+ {
+ SensitivityChart.SetNarrowed();
+ VelocityChart.SetNarrowed();
+ GainChart.SetNarrowed();
+ }
+
+ public void ClearLastValue()
+ {
+ SensitivityChart.ClearLastValue();
+ VelocityChart.ClearLastValue();
+ GainChart.ClearLastValue();
+ }
+
+ public void ShowVelocityAndGain(Form form, int borderHeight)
+ {
+ VelocityChart.Show();
+ GainChart.Show();
+ form.Height = SensitivityChart.Height +
+ Constants.ChartSeparationVertical +
+ VelocityChart.Height +
+ Constants.ChartSeparationVertical +
+ GainChart.Height +
+ borderHeight;
+ }
+
+ public void HideVelocityAndGain(Form form, int borderHeight)
+ {
+ VelocityChart.Hide();
+ GainChart.Hide();
+ form.Height = SensitivityChart.Height + borderHeight;
+ }
+ }
+}
diff --git a/grapher/Models/Charts/ChartState/ChartStateManager.cs b/grapher/Models/Charts/ChartState/ChartStateManager.cs
new file mode 100644
index 0000000..27d0836
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/ChartStateManager.cs
@@ -0,0 +1,68 @@
+using grapher.Models.Calculations;
+using grapher.Models.Serialized;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class ChartStateManager
+ {
+ public ChartStateManager(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChat,
+ AccelData accelData)
+ {
+ CombinedState = new CombinedState(
+ sensitivityChart,
+ velocityChart,
+ gainChat,
+ accelData);
+
+ XYOneGraphState = new XYOneGraphState(
+ sensitivityChart,
+ velocityChart,
+ gainChat,
+ accelData);
+
+ XYTwoGraphState = new XYTwoGraphState(
+ sensitivityChart,
+ velocityChart,
+ gainChat,
+ accelData);
+ }
+
+ private CombinedState CombinedState { get; }
+
+ private XYOneGraphState XYOneGraphState { get; }
+
+ private XYTwoGraphState XYTwoGraphState { get; }
+
+ public ChartState DetermineState(DriverSettings settings)
+ {
+ if (settings.combineMagnitudes)
+ {
+ if (settings.sensitivity.x != settings.sensitivity.y)
+ {
+ return XYOneGraphState;
+ }
+ else
+ {
+ return CombinedState;
+ }
+ }
+ else
+ {
+ return XYTwoGraphState;
+ }
+ }
+
+ public ChartState InitialState()
+ {
+ return CombinedState;
+ }
+ }
+}
diff --git a/grapher/Models/Charts/ChartState/CombinedState.cs b/grapher/Models/Charts/ChartState/CombinedState.cs
new file mode 100644
index 0000000..bc8c720
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/CombinedState.cs
@@ -0,0 +1,38 @@
+using grapher.Models.Calculations;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class CombinedState : ChartState
+ {
+ public CombinedState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData)
+ : base(
+ sensitivityChart,
+ velocityChart,
+ gainChart,
+ accelData)
+ { }
+
+ public override void Activate()
+ {
+ SensitivityChart.SetCombined();
+ VelocityChart.SetCombined();
+ GainChart.SetCombined();
+ }
+
+ public override void MakeDots(int x, int y, double timeInMs)
+ {
+ AccelData.CalculateDots(x, y, timeInMs);
+ }
+
+ public override void Bind()
+ {
+ SensitivityChart.Bind(AccelData.Combined.AccelPoints);
+ VelocityChart.Bind(AccelData.Combined.VelocityPoints);
+ GainChart.Bind(AccelData.Combined.GainPoints);
+ }
+ }
+}
diff --git a/grapher/Models/Charts/ChartState/XYOneGraphState.cs b/grapher/Models/Charts/ChartState/XYOneGraphState.cs
new file mode 100644
index 0000000..58276e4
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/XYOneGraphState.cs
@@ -0,0 +1,20 @@
+using grapher.Models.Calculations;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class XYOneGraphState : ChartState
+ {
+ public XYOneGraphState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData)
+ : base(
+ sensitivityChart,
+ velocityChart,
+ gainChart,
+ accelData)
+ { }
+
+ }
+}
diff --git a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
new file mode 100644
index 0000000..f37af08
--- /dev/null
+++ b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
@@ -0,0 +1,38 @@
+using grapher.Models.Calculations;
+
+namespace grapher.Models.Charts.ChartState
+{
+ public class XYTwoGraphState : ChartState
+ {
+ public XYTwoGraphState(
+ ChartXY sensitivityChart,
+ ChartXY velocityChart,
+ ChartXY gainChart,
+ AccelData accelData)
+ : base(
+ sensitivityChart,
+ velocityChart,
+ gainChart,
+ accelData)
+ { }
+
+ public override void Activate()
+ {
+ SensitivityChart.SetSeparate();
+ VelocityChart.SetSeparate();
+ GainChart.SetSeparate();
+ }
+
+ public override void MakeDots(int x, int y, double timeInMs)
+ {
+ AccelData.CalculateDotsXY(x, y, timeInMs);
+ }
+
+ public override void Bind()
+ {
+ SensitivityChart.BindXY(AccelData.X.AccelPoints, AccelData.Y.AccelPoints);
+ VelocityChart.BindXY(AccelData.X.VelocityPoints, AccelData.Y.VelocityPoints);
+ GainChart.BindXY(AccelData.X.GainPoints, AccelData.Y.GainPoints);
+ }
+ }
+}
diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs
index 241fe50..6ec9d31 100644
--- a/grapher/Models/Options/ApplyOptions.cs
+++ b/grapher/Models/Options/ApplyOptions.cs
@@ -227,7 +227,7 @@ namespace grapher.Models.Options
private void SetActiveTitlesWhole()
{
OptionSetX.ActiveValuesTitle.Left = OptionSetX.Options.Left + OptionSetX.Options.Width;
- LockXYLabel.Width = (AccelCharts.SensitivityChart.Left - OptionSetX.ActiveValuesTitle.Left) / 2;
+ LockXYLabel.Width = (AccelCharts.Left - OptionSetX.ActiveValuesTitle.Left) / 2;
OptionSetX.ActiveValuesTitle.Width = LockXYLabel.Width;
LockXYLabel.Left = OptionSetX.ActiveValuesTitle.Left + OptionSetX.ActiveValuesTitle.Width;
Sensitivity.Fields.LockCheckBox.Left = LockXYLabel.Left + LockXYLabel.Width / 2 - Sensitivity.Fields.LockCheckBox.Width / 2;