summaryrefslogtreecommitdiff
path: root/grapher/Models/Options/AccelOptions.cs
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-08-12 19:22:21 -0700
committerJacob Palecki <[email protected]>2020-08-12 19:22:21 -0700
commitcc531c79f2bd664551071ef315a54814bd9ab914 (patch)
treee6d1db3477e8ba41299d1d92eac4748a648c960b /grapher/Models/Options/AccelOptions.cs
parentAdd ability to have x\y graphs (diff)
downloadrawaccel-cc531c79f2bd664551071ef315a54814bd9ab914.tar.xz
rawaccel-cc531c79f2bd664551071ef315a54814bd9ab914.zip
Reorganized solution into directories
Diffstat (limited to 'grapher/Models/Options/AccelOptions.cs')
-rw-r--r--grapher/Models/Options/AccelOptions.cs79
1 files changed, 79 insertions, 0 deletions
diff --git a/grapher/Models/Options/AccelOptions.cs b/grapher/Models/Options/AccelOptions.cs
new file mode 100644
index 0000000..b233552
--- /dev/null
+++ b/grapher/Models/Options/AccelOptions.cs
@@ -0,0 +1,79 @@
+using grapher.Layouts;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher
+{
+ public class AccelOptions
+ {
+ public const int PossibleOptionsCount = 4;
+ public const int PossibleOptionsXYCount = 2;
+
+ public static readonly Dictionary<string, LayoutBase> AccelerationTypes = new List<LayoutBase>
+ {
+ new DefaultLayout(),
+ new LinearLayout(),
+ new ClassicLayout(),
+ new NaturalLayout(),
+ new LogLayout(),
+ new SigmoidLayout(),
+ new PowerLayout(),
+ new OffLayout()
+ }.ToDictionary(k => k.Name);
+
+ public AccelOptions(
+ ComboBox accelDropdown,
+ Option[] options,
+ OptionXY[] optionsXY,
+ Button writeButton)
+ {
+ AccelDropdown = accelDropdown;
+ AccelDropdown.Items.Clear();
+ AccelDropdown.Items.AddRange(AccelerationTypes.Keys.Skip(1).ToArray());
+ AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged);
+
+ if (options.Length > PossibleOptionsCount)
+ {
+ throw new Exception("Layout given too many options.");
+ }
+
+ if (optionsXY.Length > PossibleOptionsXYCount)
+ {
+ throw new Exception("Layout given too many options.");
+ }
+
+ Options = options;
+ OptionsXY = optionsXY;
+ WriteButton = writeButton;
+
+ Layout("Default");
+ }
+
+ public Button WriteButton { get; }
+
+ public ComboBox AccelDropdown { get; }
+
+ public int AccelerationIndex { get; private set; }
+
+ public Option[] Options { get; }
+
+ public OptionXY[] OptionsXY { get; }
+
+ private void OnIndexChanged(object sender, EventArgs e)
+ {
+ var accelerationTypeString = AccelDropdown.SelectedItem.ToString();
+ Layout(accelerationTypeString);
+ }
+
+ private void Layout(string type)
+ {
+ var accelerationType = AccelerationTypes[type];
+ AccelerationIndex = accelerationType.Index;
+ accelerationType.Layout(Options, OptionsXY, WriteButton);
+ }
+ }
+}