summaryrefslogtreecommitdiff
path: root/grapher/Models
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2021-09-16 18:33:30 -0700
committera1xd <[email protected]>2021-09-23 22:35:45 -0400
commit1fd8881608e4ce6ab21fd78d3ebb42a941cd0e93 (patch)
tree27ee298593168cf2d330abf4a7a3ee9fbe8f3d68 /grapher/Models
parentFix error in LUT gui (diff)
downloadrawaccel-1fd8881608e4ce6ab21fd78d3ebb42a941cd0e93.tar.xz
rawaccel-1fd8881608e4ce6ab21fd78d3ebb42a941cd0e93.zip
Add power start from one
Diffstat (limited to 'grapher/Models')
-rw-r--r--grapher/Models/AccelGUIFactory.cs24
-rw-r--r--grapher/Models/Options/AccelTypeOptions.cs9
-rw-r--r--grapher/Models/Options/SwitchOption.cs162
3 files changed, 195 insertions, 0 deletions
diff --git a/grapher/Models/AccelGUIFactory.cs b/grapher/Models/AccelGUIFactory.cs
index d95489b..89318e2 100644
--- a/grapher/Models/AccelGUIFactory.cs
+++ b/grapher/Models/AccelGUIFactory.cs
@@ -86,6 +86,10 @@ namespace grapher.Models
CheckBox byComponentCheckBox,
CheckBox gainSwitchX,
CheckBox gainSwitchY,
+ CheckBox powerStartsFromZeroBoxX,
+ CheckBox powerStartsFromOneBoxX,
+ CheckBox powerStartsFromZeroBoxY,
+ CheckBox powerStartsFromOneBoxY,
RichTextBox xLutActiveValuesBox,
RichTextBox yLutActiveValuesBox,
RichTextBox xLutPointsBox,
@@ -124,6 +128,8 @@ namespace grapher.Models
Label powerClassicLabelY,
Label expLabelX,
Label expLabelY,
+ Label powerStartsFromLabelX,
+ Label powerStartsFromLabelY,
Label lutTextLabelX,
Label lutTextLabelY,
Label constantThreeLabelX,
@@ -163,6 +169,8 @@ namespace grapher.Models
Label powerClassicActiveLabelY,
Label expActiveLabelX,
Label expActiveLabelY,
+ Label powerStartsFromActiveLabelX,
+ Label powerStartsFromActiveLabelY,
Label midpointActiveLabelX,
Label midpointActiveLabelY,
Label accelTypeActiveLabelX,
@@ -487,6 +495,20 @@ namespace grapher.Models
outCapYPower,
scaleY);
+ var powerStartsFromX = new SwitchOption(
+ powerStartsFromLabelX,
+ powerStartsFromZeroBoxX,
+ powerStartsFromOneBoxX,
+ new ActiveValueLabel(powerStartsFromActiveLabelX, activeValueTitleX),
+ 0);
+
+ var powerStartsFromY = new SwitchOption(
+ powerStartsFromLabelY,
+ powerStartsFromZeroBoxY,
+ powerStartsFromOneBoxY,
+ new ActiveValueLabel(powerStartsFromActiveLabelY, activeValueTitleY),
+ optionSetYLeft);
+
var lpNorm = new Option(
new Field(lpNormBox, form, 2),
lpNormLabel,
@@ -532,6 +554,7 @@ namespace grapher.Models
gainSwitchOptionX,
classicCapOptionsX,
powerCapOptionsX,
+ powerStartsFromX,
decayRateX,
growthRateX,
smoothX,
@@ -554,6 +577,7 @@ namespace grapher.Models
gainSwitchOptionY,
classicCapOptionsY,
powerCapOptionsY,
+ powerStartsFromY,
decayRateY,
growthRateY,
smoothY,
diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs
index 029a93e..b3153ed 100644
--- a/grapher/Models/Options/AccelTypeOptions.cs
+++ b/grapher/Models/Options/AccelTypeOptions.cs
@@ -29,6 +29,7 @@ namespace grapher
CheckBoxOption gainSwitch,
CapOptions classicCap,
CapOptions powerCap,
+ SwitchOption powerStartsFrom,
Option decayRate,
Option growthRate,
Option smooth,
@@ -70,6 +71,7 @@ namespace grapher
Limit = limit;
PowerClassic = powerClassic;
Exponent = exponent;
+ PowerStartsFrom = powerStartsFrom;
Midpoint = midpoint;
WriteButton = writeButton;
AccelTypeActiveValue = accelTypeActiveValue;
@@ -112,6 +114,8 @@ namespace grapher
public CapOptions PowerCap { get; }
+ public SwitchOption PowerStartsFrom { get; }
+
public Option Offset { get; }
public Option Limit { get; }
@@ -223,6 +227,7 @@ namespace grapher
Smooth.Hide();
ClassicCap.Hide();
PowerCap.Hide();
+ PowerStartsFrom.Hide();
Offset.Hide();
Limit.Hide();
PowerClassic.Hide();
@@ -260,6 +265,7 @@ namespace grapher
args.cap.x,
args.cap.y,
args.capMode);
+ PowerStartsFrom.SetActiveValue(!args.powerStartFromOne);
Offset.SetActiveValue(args.offset);
DecayRate.SetActiveValue(args.decayRate);
GrowthRate.SetActiveValue(args.growthRate);
@@ -322,6 +328,7 @@ namespace grapher
args.cap.y = PowerCap.Out.Field.Data;
args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode();
}
+ if (PowerStartsFrom.Visible) args.powerStartFromOne = PowerStartsFrom.Second.Checked;
if (Limit.Visible)
{
if (args.mode == AccelMode.motivity)
@@ -362,6 +369,7 @@ namespace grapher
Smooth.AlignActiveValues();
ClassicCap.AlignActiveValues();
PowerCap.AlignActiveValues();
+ PowerStartsFrom.AlignActiveValues();
Offset.AlignActiveValues();
Limit.AlignActiveValues();
PowerClassic.AlignActiveValues();
@@ -403,6 +411,7 @@ namespace grapher
Limit,
PowerClassic,
Exponent,
+ PowerStartsFrom,
Midpoint,
LutText,
LutPanel,
diff --git a/grapher/Models/Options/SwitchOption.cs b/grapher/Models/Options/SwitchOption.cs
new file mode 100644
index 0000000..79991c1
--- /dev/null
+++ b/grapher/Models/Options/SwitchOption.cs
@@ -0,0 +1,162 @@
+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 SwitchOption : OptionBase
+ {
+
+ #region Constructors
+
+ public SwitchOption(
+ Label label,
+ CheckBox firstCheckBox,
+ CheckBox secondCheckBox,
+ ActiveValueLabel activeValueLabel,
+ int left)
+ {
+ Label = label;
+ First = firstCheckBox;
+ Second = secondCheckBox;
+ ActiveValueLabel = activeValueLabel;
+ Left = left;
+
+ label.AutoSize = false;
+ label.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ label.Width = First.Left - left - Constants.OptionLabelBoxSeperation;
+ label.Height = First.Height;
+
+ ActiveValueLabel.Height = First.Height;
+
+ First.CheckedChanged += OnFirstCheckedChange;
+ Second.CheckedChanged += OnSecondCheckedChange;
+
+ First.Checked = true;
+ Second.Left = First.Left + First.Width + Constants.OptionLabelBoxSeperation;
+ Show(string.Empty);
+ }
+
+ #endregion Constructors
+
+ #region Properties
+
+ public Label Label { get; }
+
+ public CheckBox First { get; }
+
+ public CheckBox Second { get; }
+
+ public ActiveValueLabel ActiveValueLabel { get; }
+
+ public override int Height
+ {
+ get => Label.Height;
+ }
+
+ public override int Left
+ {
+ get => Label.Left;
+ set
+ {
+ Label.Left = value;
+ }
+ }
+
+ public override bool Visible
+ {
+ get => ShouldShow;
+ }
+
+ public override int Width
+ {
+ get => Second.Left + Second.Width - Label.Left;
+ set
+ {
+ }
+ }
+
+ public override int Top
+ {
+ get => Label.Top;
+ set
+ {
+ Label.Top = value;
+ First.Top = value;
+ Second.Top = value;
+ ActiveValueLabel.Top = value;
+ }
+ }
+
+ private bool ShouldShow { get; set; }
+
+ #endregion Properties
+
+ #region Methods
+
+ public override void AlignActiveValues()
+ {
+ ActiveValueLabel.Align();
+ }
+
+ public override void Hide()
+ {
+ ShouldShow = false;
+
+ Label.Hide();
+ First.Hide();
+ Second.Hide();
+ ActiveValueLabel.Hide();
+ }
+
+ public override void Show(string name)
+ {
+ ShouldShow = true;
+
+ if (!string.IsNullOrWhiteSpace(name))
+ {
+ Label.Text = name;
+ }
+
+ Label.Show();
+ First.Show();
+ Second.Show();
+ ActiveValueLabel.Show();
+ }
+
+ public void SetActiveValue(bool shouldFirstBeChecked)
+ {
+ if (shouldFirstBeChecked)
+ {
+ First.Checked = true;
+ ActiveValueLabel.SetValue(First.Text);
+ }
+ else
+ {
+ Second.Checked = true;
+ ActiveValueLabel.SetValue(Second.Text);
+ }
+ }
+
+ private void OnFirstCheckedChange(object sender, EventArgs e)
+ {
+ if (First.Checked)
+ {
+ Second.Checked = false;
+ }
+ }
+
+ private void OnSecondCheckedChange(object sender, EventArgs e)
+ {
+ if (Second.Checked)
+ {
+ First.Checked = false;
+ }
+ }
+
+ #endregion Methods
+ }
+}