summaryrefslogtreecommitdiff
path: root/grapher/Models/Options/AccelOptionSet.cs
diff options
context:
space:
mode:
Diffstat (limited to 'grapher/Models/Options/AccelOptionSet.cs')
-rw-r--r--grapher/Models/Options/AccelOptionSet.cs164
1 files changed, 164 insertions, 0 deletions
diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs
new file mode 100644
index 0000000..838917c
--- /dev/null
+++ b/grapher/Models/Options/AccelOptionSet.cs
@@ -0,0 +1,164 @@
+using grapher.Models.Serialized;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher.Models.Options
+{
+ public class AccelOptionSet
+ {
+ public AccelOptionSet(
+ Label titleLabel,
+ int topAnchor,
+ AccelTypeOptions accelTypeOptions,
+ Option acceleration,
+ CapOptions cap,
+ Option weight,
+ OffsetOptions offset,
+ Option limitOrExp,
+ Option midpoint)
+ {
+ TitleLabel = titleLabel;
+ TopAnchor = topAnchor;
+ AccelTypeOptions = accelTypeOptions;
+ Acceleration = acceleration;
+ Cap = cap;
+ Weight = weight;
+ Offset = offset;
+ LimitOrExponent = limitOrExp;
+ Midpoint = midpoint;
+
+ AccelTypeOptions.ShowFullText();
+
+ TitleLabel.Top = TopAnchor;
+ IsTitleMode = true;
+ SetRegularMode();
+ }
+
+ public int TopAnchor { get; }
+
+ public Label TitleLabel { get; }
+
+ public AccelTypeOptions AccelTypeOptions { get; }
+
+ public Option Acceleration { get; }
+
+ public CapOptions Cap { get; }
+
+ public Option Weight { get; }
+
+ public OffsetOptions Offset { get; }
+
+ public Option LimitOrExponent { get; }
+
+ public Option Midpoint { get; }
+
+ public bool IsTitleMode { get; private set; }
+
+ public void SetRegularMode()
+ {
+ if (IsTitleMode)
+ {
+ IsTitleMode = false;
+
+ HideTitle();
+ AccelTypeOptions.Left = Acceleration.Left;
+ AccelTypeOptions.Width = Acceleration.Width;
+ AccelTypeOptions.ShowFullText();
+ }
+ }
+
+ public void SetTitleMode(string title)
+ {
+ TitleLabel.Text = title;
+
+ if (!IsTitleMode)
+ {
+ IsTitleMode = true;
+
+ AccelTypeOptions.Left = Acceleration.Field.Left;
+ AccelTypeOptions.Width = Acceleration.Field.Width;
+ AccelTypeOptions.ShowShortenedText();
+ DisplayTitle();
+ }
+ }
+
+ public void Hide()
+ {
+ TitleLabel.Hide();
+ AccelTypeOptions.Hide();
+ }
+
+ public void Show()
+ {
+ if (IsTitleMode)
+ {
+ TitleLabel.Show();
+ }
+
+ AccelTypeOptions.Show();
+ }
+
+ public void DisplayTitle()
+ {
+ TitleLabel.Show();
+
+ SetOptionsTop(TitleLabel.Top + TitleLabel.Height + Constants.OptionVerticalSeperation);
+ }
+
+ public void HideTitle()
+ {
+ TitleLabel.Hide();
+
+ SetOptionsTop(TopAnchor);
+ }
+
+ public void SetArgs(AccelArgs args)
+ {
+ args.accel = Acceleration.Field.Data;
+ args.rate = Acceleration.Field.Data;
+ args.powerScale = Acceleration.Field.Data;
+ args.gainCap = Cap.VelocityGainCap;
+ args.scaleCap = Cap.SensitivityCap;
+ args.limit = LimitOrExponent.Field.Data;
+ args.exponent = LimitOrExponent.Field.Data;
+ args.powerExponent = LimitOrExponent.Field.Data;
+ args.offset = Offset.Offset;
+ args.legacy_offset = Offset.LegacyOffset;
+ args.midpoint = Midpoint.Field.Data;
+ args.weight = Weight.Field.Data;
+ }
+
+ public AccelArgs GenerateArgs()
+ {
+ AccelArgs args = new AccelArgs();
+ SetArgs(args);
+ return args;
+ }
+
+ public void SetActiveValues(int mode, AccelArgs args)
+ {
+ AccelTypeOptions.SetActiveValue(mode);
+ Weight.SetActiveValue(args.weight);
+ Cap.SetActiveValues(args.gainCap, args.scaleCap, args.gainCap > 0);
+ Offset.SetActiveValue(args.offset, args.legacy_offset);
+ Acceleration.SetActiveValue(args.accel);
+ LimitOrExponent.SetActiveValue(args.exponent);
+ Midpoint.SetActiveValue(args.midpoint);
+ }
+
+ private void SetOptionsTop(int top)
+ {
+ AccelTypeOptions.Top = top;
+ Acceleration.Top = AccelTypeOptions.Top + AccelTypeOptions.Height + Constants.OptionVerticalSeperation;
+ Cap.SnapTo(Acceleration);
+ Weight.SnapTo(Cap);
+ Offset.OffsetOption.SnapTo(Weight);
+ LimitOrExponent.SnapTo(Offset.OffsetOption);
+ Midpoint.SnapTo(LimitOrExponent);
+ }
+ }
+}