diff options
| author | Jacob Palecki <[email protected]> | 2021-09-16 18:33:30 -0700 |
|---|---|---|
| committer | a1xd <[email protected]> | 2021-09-23 22:35:45 -0400 |
| commit | 1fd8881608e4ce6ab21fd78d3ebb42a941cd0e93 (patch) | |
| tree | 27ee298593168cf2d330abf4a7a3ee9fbe8f3d68 /grapher/Models | |
| parent | Fix error in LUT gui (diff) | |
| download | rawaccel-1fd8881608e4ce6ab21fd78d3ebb42a941cd0e93.tar.xz rawaccel-1fd8881608e4ce6ab21fd78d3ebb42a941cd0e93.zip | |
Add power start from one
Diffstat (limited to 'grapher/Models')
| -rw-r--r-- | grapher/Models/AccelGUIFactory.cs | 24 | ||||
| -rw-r--r-- | grapher/Models/Options/AccelTypeOptions.cs | 9 | ||||
| -rw-r--r-- | grapher/Models/Options/SwitchOption.cs | 162 |
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 + } +} |