summaryrefslogtreecommitdiff
path: root/grapher
diff options
context:
space:
mode:
Diffstat (limited to 'grapher')
-rw-r--r--grapher/Constants/Constants.cs25
-rw-r--r--grapher/DeviceMenuForm.cs405
-rw-r--r--grapher/Form1.Designer.cs1194
-rw-r--r--grapher/Form1.cs162
-rw-r--r--grapher/Layouts/ClassicLayout.cs11
-rw-r--r--grapher/Layouts/DefaultLayout.cs11
-rw-r--r--grapher/Layouts/JumpLayout.cs11
-rw-r--r--grapher/Layouts/LUTLayout.cs11
-rw-r--r--grapher/Layouts/LayoutBase.cs78
-rw-r--r--grapher/Layouts/LinearLayout.cs12
-rw-r--r--grapher/Layouts/MotivityLayout.cs11
-rw-r--r--grapher/Layouts/NaturalLayout.cs11
-rw-r--r--grapher/Layouts/OffLayout.cs11
-rw-r--r--grapher/Layouts/PowerLayout.cs11
-rw-r--r--grapher/Layouts/UnsupportedLayout.cs11
-rw-r--r--grapher/Models/AccelGUI.cs84
-rw-r--r--grapher/Models/AccelGUIFactory.cs341
-rw-r--r--grapher/Models/Calculations/AccelCalculator.cs20
-rw-r--r--grapher/Models/Calculations/Data/AccelDataCombined.cs4
-rw-r--r--grapher/Models/Calculations/Data/AccelDataXYComponential.cs7
-rw-r--r--grapher/Models/Calculations/Data/AccelDataXYDirectional.cs2
-rw-r--r--grapher/Models/Calculations/Data/IAccelData.cs2
-rw-r--r--grapher/Models/Charts/AccelCharts.cs8
-rw-r--r--grapher/Models/Charts/ChartState/ChartState.cs6
-rw-r--r--grapher/Models/Charts/ChartState/ChartStateManager.cs6
-rw-r--r--grapher/Models/Charts/ChartState/XYTwoGraphState.cs2
-rw-r--r--grapher/Models/Devices/DeviceDialogItem.cs26
-rw-r--r--grapher/Models/Devices/DeviceIDItem.cs73
-rw-r--r--grapher/Models/Devices/DeviceIDManager.cs68
-rw-r--r--grapher/Models/Mouse/MouseWatcher.cs47
-rw-r--r--grapher/Models/Options/AccelOptionSet.cs2
-rw-r--r--grapher/Models/Options/AccelTypeOptions.cs176
-rw-r--r--grapher/Models/Options/ApplyOptions.cs34
-rw-r--r--grapher/Models/Options/Cap/CapOptions.cs249
-rw-r--r--grapher/Models/Options/Cap/CapTypeOptions.cs160
-rw-r--r--grapher/Models/Options/CheckBoxOption.cs9
-rw-r--r--grapher/Models/Options/ComboBoxOptionsBase.cs124
-rw-r--r--grapher/Models/Options/Directionality/DirectionalityOptions.cs21
-rw-r--r--grapher/Models/Options/LUT/LUTPanelOptions.cs27
-rw-r--r--grapher/Models/Options/LUT/LutApplyOptions.cs138
-rw-r--r--grapher/Models/Options/LockableOption.cs137
-rw-r--r--grapher/Models/Options/SwitchOption.cs162
-rw-r--r--grapher/Models/Serialized/SettingsManager.cs236
-rw-r--r--grapher/grapher.csproj11
44 files changed, 3111 insertions, 1046 deletions
diff --git a/grapher/Constants/Constants.cs b/grapher/Constants/Constants.cs
index 383d7f4..af9db23 100644
--- a/grapher/Constants/Constants.cs
+++ b/grapher/Constants/Constants.cs
@@ -44,7 +44,7 @@ namespace grapher
public const int DropDownLeftSeparation = 10;
/// <summary> Height of sensitivity chart when displayed alone. </summary>
- public const int SensitivityChartAloneHeight = 480;
+ public const int SensitivityChartAloneHeight = 510;
/// <summary> Height of sensitivity chart when displayed alongside Velocity and Gain charts. </summary>
public const int SensitivityChartTogetherHeight = 328;
@@ -65,7 +65,7 @@ namespace grapher
public const int ButtonVerticalOffset = 60;
/// <summary> Vertical placement of directionality panel below top of containing form </summary>
- public const int DirectionalityVerticalOffset = 285;
+ public const int DirectionalityVerticalOffset = 315;
/// <summary> Padding between directionality title and containing panel </summary>
public const int DirectionalityTitlePad = 8;
@@ -104,10 +104,10 @@ namespace grapher
/// <summary> Default text to be displayed on button delay. </summary>
public const string ButtonDelayText = "Delay";
-
+
/// <summary> Default text to be displayed on button delay. </summary>
public const string ResetButtonText = "Reset";
-
+
/// <summary> Title of sensitivity chart. </summary>
public const string SensitivityChartTitle = "Sensitivity";
@@ -128,10 +128,10 @@ namespace grapher
public const string GuiConfigFileName = ".config";
- /// <summary> Text to direcitonality panel title when panel is closed. </summary>
+ /// <summary> Text to directionality panel title when panel is closed. </summary>
public const string DirectionalityTitleClosed = "Anisotropy \u25BC";
- /// <summary> Text to direcitonality panel title when panel is open. </summary>
+ /// <summary> Text to directionality panel title when panel is open. </summary>
public const string DirectionalityTitleOpen = "Anisotropy \u25B2";
/// <summary> Style used by System.Double.Parse </summary>
@@ -145,6 +145,15 @@ namespace grapher
/// <summary> Line Width For Series data on chart </summary>
public const int ChartSeriesLineWidth = 3;
+ #endregion Constants
+
+ #region ReadOnly
+
+ /// <summary> Default last mouse move label text format. </summary>
+ public static readonly string MouseMoveDefaultFormat = "Last (x, y): ({0}, {1})";
+
+ /// <summary> Last mouse move label text format when last input was from a dpi normalized device. </summary>
+ public static readonly string MouseMoveNormalizedFormat = $"{MouseMoveDefaultFormat} (n)";
/// <summary> Marker size for last-mouse-move chart series. </summary>
public const int DotMarkerSize = 7;
@@ -161,10 +170,6 @@ namespace grapher
/// <summary> Background Color When Streamer Mode Inactive </summary>
public static readonly System.Drawing.Color bgNoStreamer = System.Drawing.Color.White;
- #endregion Constants
-
- #region ReadOnly
-
/// <summary> Color of font in active value labels. </summary>
public static readonly Color ActiveValueFontColor = Color.FromArgb(255, 65, 65, 65);
diff --git a/grapher/DeviceMenuForm.cs b/grapher/DeviceMenuForm.cs
new file mode 100644
index 0000000..dd946f4
--- /dev/null
+++ b/grapher/DeviceMenuForm.cs
@@ -0,0 +1,405 @@
+using grapher.Models.Devices;
+using grapher.Models.Serialized;
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace grapher
+{
+ public class DeviceMenuForm : Form
+ {
+ #region Constructors
+ public DeviceMenuForm(SettingsManager sm)
+ {
+ Manager = sm;
+ defaultConfig = Manager.UserConfig.defaultDeviceConfig;
+
+ var columns = 3;
+ var rows = 9;
+ var tablePanel = new TableLayoutPanel
+ {
+ Dock = DockStyle.Fill,
+ ColumnCount = columns,
+ RowCount = rows
+ };
+
+ SuspendLayout();
+ tablePanel.SuspendLayout();
+
+ Label MakeConfigLabel(string text)
+ {
+ return new Label
+ {
+ Text = text,
+ Anchor = AnchorStyles.Left,
+ AutoSize = true,
+ };
+ }
+
+ DpiLabel = MakeConfigLabel("DPI:");
+ RateLabel = MakeConfigLabel("Polling rate:");
+ DisableLabel = MakeConfigLabel("Disable:");
+ OverrideLabel = MakeConfigLabel("Override defaults:");
+
+ var maxLabel = OverrideLabel;
+ tablePanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 2));
+ tablePanel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, maxLabel.PreferredSize.Width + maxLabel.Margin.Left + maxLabel.Margin.Right));
+ tablePanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 1));
+
+ var middleRowCount = rows - 2;
+ tablePanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
+ for (int i = 0; i < middleRowCount; i++)
+ {
+ tablePanel.RowStyles.Add(new RowStyle(SizeType.Percent, 1));
+ }
+ tablePanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
+
+ var topPanel = new FlowLayoutPanel
+ {
+ AutoSize = true,
+ };
+
+ DefaultDisableCheck = new CheckBox
+ {
+ Text = "Disable by default",
+ AutoSize = true,
+ Checked = defaultConfig.disable,
+ };
+
+ topPanel.Controls.Add(DefaultDisableCheck);
+
+ tablePanel.Controls.Add(topPanel, 0, 0);
+ tablePanel.SetColumnSpan(topPanel, columns);
+
+ var bottomPanel = new FlowLayoutPanel
+ {
+ AutoSize = true,
+ Anchor = AnchorStyles.Right | AnchorStyles.Bottom,
+ };
+
+ var applyButton = new Button
+ {
+ Text = "Apply",
+ DialogResult = DialogResult.OK,
+ };
+
+ bottomPanel.Controls.AddRange(new Control[] {
+ applyButton,
+ new Button
+ {
+ Text = "Cancel",
+ DialogResult = DialogResult.Cancel,
+ },
+ });
+
+ tablePanel.Controls.Add(bottomPanel, 0, rows - 1);
+ tablePanel.SetColumnSpan(bottomPanel, columns);
+
+ IdPanel = new Panel
+ {
+ Dock = DockStyle.Fill,
+ };
+
+ IdText = new TextBox
+ {
+ ReadOnly = true,
+ BorderStyle = BorderStyle.None,
+ BackColor = this.BackColor,
+ TabStop = false,
+ TextAlign = HorizontalAlignment.Center,
+ Dock = DockStyle.Fill,
+ };
+
+ IdPanel.Controls.Add(IdText);
+ IdPanel.Controls.Add(new Label
+ {
+ // divider
+ Height = 2,
+ BorderStyle = BorderStyle.Fixed3D,
+ AutoSize = false,
+ Text = string.Empty,
+ Dock = DockStyle.Bottom,
+ });
+
+ tablePanel.Controls.Add(IdPanel, 1, 1);
+ tablePanel.SetColumnSpan(IdPanel, 2);
+
+ NumericUpDown MakeNumericInput(int val = 0, int min = 0, int max = 999999)
+ {
+ return new NumericUpDown
+ {
+ Value = val,
+ Minimum = min,
+ Maximum = max,
+ Dock = DockStyle.Fill,
+ Anchor = AnchorStyles.Left,
+ AutoSize = true,
+ };
+ }
+
+ CheckBox MakeCheck()
+ {
+ return new CheckBox
+ {
+ Text = string.Empty,
+ AutoSize = true,
+ Anchor = AnchorStyles.Left,
+ };
+ }
+
+ DpiInput = MakeNumericInput();
+ RateInput = MakeNumericInput();
+ DisableCheck = MakeCheck();
+ OverrideCheck = MakeCheck();
+
+ tablePanel.Controls.Add(OverrideLabel, 1, 2);
+ tablePanel.Controls.Add(OverrideCheck, 2, 2);
+ tablePanel.Controls.Add(DisableLabel, 1, 3);
+ tablePanel.Controls.Add(DisableCheck, 2, 3);
+ tablePanel.Controls.Add(DpiLabel, 1, 5);
+ tablePanel.Controls.Add(DpiInput, 2, 5);
+ tablePanel.Controls.Add(RateLabel, 1, 6);
+ tablePanel.Controls.Add(RateInput, 2, 6);
+
+ DeviceSelect = new ListBox
+ {
+ Dock = DockStyle.Fill,
+ IntegralHeight = false,
+ HorizontalScrollbar = true
+ };
+
+ tablePanel.Controls.Add(DeviceSelect, 0, 1);
+ tablePanel.SetRowSpan(DeviceSelect, middleRowCount);
+
+ ResetDataAndSelection();
+ SetEnabled(false);
+ SetVisible(false);
+
+ applyButton.Click += ApplyButton_Click;
+ OverrideCheck.Click += OverrideCheck_Click;
+ OverrideCheck.CheckedChanged += OverrideCheck_Checked;
+ DefaultDisableCheck.CheckedChanged += DefaultDisableCheck_Checked;
+ IdText.DoubleClick += SelectAllText;
+ DeviceSelect.SelectedIndexChanged += DeviceSelect_SelectedIndexChanged;
+ Manager.DeviceChange += OnDeviceChange;
+ Disposed += OnDispose;
+
+ var toolTip = new ToolTip();
+ toolTip.SetToolTip(IdText, "Device ID");
+
+ var rateTip = "Keep at 0 for automatic adjustment";
+ toolTip.SetToolTip(RateInput, rateTip);
+ toolTip.SetToolTip(RateLabel, rateTip);
+
+ var dpiTip = "Normalizes sensitivity and input speed to 1000 DPI";
+ toolTip.SetToolTip(DpiInput, dpiTip);
+ toolTip.SetToolTip(DpiLabel, dpiTip);
+
+
+ Name = "DeviceMenuForm";
+ Text = "Devices";
+ MaximizeBox = false;
+ MinimizeBox = false;
+ FormBorderStyle = FormBorderStyle.FixedDialog;
+ StartPosition = FormStartPosition.CenterParent;
+ AutoScaleDimensions = new SizeF(6F, 13F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(500, 300);
+
+ Controls.Add(tablePanel);
+
+ tablePanel.ResumeLayout(false);
+ ResumeLayout(false);
+ }
+
+ #endregion Constructors
+
+ #region Fields
+
+ public DeviceConfig defaultConfig;
+
+ #endregion Fields
+
+ #region Properties
+
+ public DeviceDialogItem[] Items { get; private set; }
+
+ private DeviceDialogItem Selected
+ {
+ get => (DeviceDialogItem)DeviceSelect.SelectedItem;
+ }
+
+ private bool AnySelected
+ {
+ get => DeviceSelect.SelectedIndex != -1;
+ }
+
+ private int LastSelectedIndex { get; set; }
+
+ private SettingsManager Manager { get; }
+
+ private ListBox DeviceSelect { get; }
+
+ private CheckBox DefaultDisableCheck { get; }
+
+ private TextBox IdText { get; }
+ private Panel IdPanel { get; }
+
+ private Label OverrideLabel { get; }
+ private CheckBox OverrideCheck { get; }
+
+ private Label DisableLabel { get; }
+ private CheckBox DisableCheck { get; }
+
+ private Label DpiLabel { get; }
+ private NumericUpDown DpiInput { get; }
+
+ private Label RateLabel { get; }
+ private NumericUpDown RateInput { get; }
+
+ #endregion Properties
+
+ #region Methods
+
+ private void ResetDataAndSelection()
+ {
+ var count = Manager.SystemDevices.Count;
+ Items = new DeviceDialogItem[count];
+
+ for (int i = 0; i < count; i++)
+ {
+ var sysDev = Manager.SystemDevices[i];
+ var settings = Manager.UserConfig.devices.Find(s => s.id == sysDev.id);
+ bool found = !(settings is null);
+
+ Items[i] = new DeviceDialogItem
+ {
+ device = sysDev,
+ overrideDefaultConfig = found,
+ oldSettings = settings,
+ newConfig = found ?
+ settings.config :
+ Manager.UserConfig.defaultDeviceConfig,
+ newProfile = found ?
+ settings.profile :
+ Manager.UserConfig.profiles[0].name
+ };
+ }
+
+ LastSelectedIndex = -1;
+ DeviceSelect.ClearSelected();
+ DeviceSelect.Items.Clear();
+ DeviceSelect.Items.AddRange(Items);
+ }
+
+ private void SetVisible(bool visible)
+ {
+ IdPanel.Visible = visible;
+ OverrideLabel.Visible = visible;
+ OverrideCheck.Visible = visible;
+ DisableLabel.Visible = visible;
+ DisableCheck.Visible = visible;
+ DpiInput.Visible = visible;
+ DpiLabel.Visible = visible;
+ RateInput.Visible = visible;
+ RateLabel.Visible = visible;
+ }
+
+ private void SetEnabled(bool enable)
+ {
+ DisableLabel.Enabled = enable;
+ DisableCheck.Enabled = enable;
+ DpiInput.Enabled = enable;
+ DpiLabel.Enabled = enable;
+ RateInput.Enabled = enable;
+ RateLabel.Enabled = enable;
+ }
+
+ private void SetInputsFromNewSelection()
+ {
+ IdText.Text = Selected.device.id;
+ OverrideCheck.Checked = Selected.overrideDefaultConfig;
+
+ SetOverrideDependentInputs();
+ }
+
+ private void SetOverrideDependentInputs()
+ {
+ var item = Selected;
+ bool oride = item.overrideDefaultConfig;
+ DisableCheck.Checked = oride ? item.newConfig.disable : defaultConfig.disable;
+ DpiInput.Value = oride ? item.newConfig.dpi : defaultConfig.dpi;
+ RateInput.Value = oride ? item.newConfig.pollingRate : defaultConfig.pollingRate;
+ }
+
+ private void UpdateLastSelected()
+ {
+ var item = Items[LastSelectedIndex];
+ bool oride = OverrideCheck.Checked;
+ item.overrideDefaultConfig = oride;
+ item.newConfig.disable = oride ? DisableCheck.Checked : defaultConfig.disable;
+ item.newConfig.dpi = oride ? (int)DpiInput.Value : defaultConfig.dpi;
+ item.newConfig.pollingRate = oride ? (int)RateInput.Value : defaultConfig.pollingRate;
+ }
+
+ private void ApplyButton_Click(object sender, EventArgs e)
+ {
+ if (AnySelected) UpdateLastSelected();
+ }
+
+ private void OverrideCheck_Checked(object sender, EventArgs e)
+ {
+ SetEnabled(OverrideCheck.Checked);
+ }
+
+ private void OverrideCheck_Click(object sender, EventArgs e)
+ {
+ UpdateLastSelected();
+ SetOverrideDependentInputs();
+ }
+
+ private void DefaultDisableCheck_Checked(object sender, EventArgs e)
+ {
+ defaultConfig.disable = DefaultDisableCheck.Checked;
+
+ if (AnySelected && !Selected.overrideDefaultConfig)
+ {
+ DisableCheck.Checked = DefaultDisableCheck.Checked;
+ }
+ }
+
+ private void DeviceSelect_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (AnySelected)
+ {
+ if (LastSelectedIndex != -1)
+ {
+ UpdateLastSelected();
+ }
+
+ SetInputsFromNewSelection();
+ }
+
+ LastSelectedIndex = DeviceSelect.SelectedIndex;
+
+ SetVisible(AnySelected);
+ }
+
+ private void OnDeviceChange(object sender, EventArgs e)
+ {
+ ResetDataAndSelection();
+ }
+
+ private void OnDispose(object sender, EventArgs e)
+ {
+ Manager.DeviceChange -= OnDeviceChange;
+ }
+
+ private static void SelectAllText(object sender, EventArgs e)
+ {
+ ((TextBoxBase)sender).SelectAll();
+ }
+
+ #endregion Methods
+ }
+}
diff --git a/grapher/Form1.Designer.cs b/grapher/Form1.Designer.cs
index 203397b..89eafda 100644
--- a/grapher/Form1.Designer.cs
+++ b/grapher/Form1.Designer.cs
@@ -71,6 +71,43 @@ namespace grapher
System.Windows.Forms.DataVisualization.Charting.Title title6 = new System.Windows.Forms.DataVisualization.Charting.Title();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RawAcceleration));
this.optionsPanel = new System.Windows.Forms.Panel();
+ this.OutCapActiveYLabelPower = new System.Windows.Forms.Label();
+ this.InCapActiveYLabelPower = new System.Windows.Forms.Label();
+ this.OutCapActiveXLabelPower = new System.Windows.Forms.Label();
+ this.InCapActiveXLabelPower = new System.Windows.Forms.Label();
+ this.CapTypeActiveYLabelPower = new System.Windows.Forms.Label();
+ this.CapTypeActiveXLabelPower = new System.Windows.Forms.Label();
+ this.outCapLabelYPower = new System.Windows.Forms.Label();
+ this.inCapLabelYPower = new System.Windows.Forms.Label();
+ this.CapTypeLabelYPower = new System.Windows.Forms.Label();
+ this.outCapLabelXPower = new System.Windows.Forms.Label();
+ this.inCapLabelXPower = new System.Windows.Forms.Label();
+ this.CapTypeLabelXPower = new System.Windows.Forms.Label();
+ this.outCapBoxYPower = new System.Windows.Forms.TextBox();
+ this.outCapBoxXPower = new System.Windows.Forms.TextBox();
+ this.inCapBoxYPower = new System.Windows.Forms.TextBox();
+ this.inCapBoxXPower = new System.Windows.Forms.TextBox();
+ this.CapTypeDropdownYPower = new System.Windows.Forms.ComboBox();
+ this.CapTypeDropdownXPower = new System.Windows.Forms.ComboBox();
+ this.CapTypeActiveYLabelClassic = new System.Windows.Forms.Label();
+ this.CapTypeActiveXLabelClassic = new System.Windows.Forms.Label();
+ this.OutCapActiveYLabelClassic = new System.Windows.Forms.Label();
+ this.OutCapActiveXLabelClassic = new System.Windows.Forms.Label();
+ this.outCapLabelYClassic = new System.Windows.Forms.Label();
+ this.outCapLabelXClassic = new System.Windows.Forms.Label();
+ this.outCapBoxYClassic = new System.Windows.Forms.TextBox();
+ this.outCapBoxXClassic = new System.Windows.Forms.TextBox();
+ this.CapTypeLabelYClassic = new System.Windows.Forms.Label();
+ this.CapTypeLabelXClassic = new System.Windows.Forms.Label();
+ this.CapTypeDropdownYClassic = new System.Windows.Forms.ComboBox();
+ this.CapTypeDropdownXClassic = new System.Windows.Forms.ComboBox();
+ this.VertHorzRatioLabel = new System.Windows.Forms.Label();
+ this.SmoothActiveYLabel = new System.Windows.Forms.Label();
+ this.smoothLabelY = new System.Windows.Forms.Label();
+ this.SmoothActiveXLabel = new System.Windows.Forms.Label();
+ this.smoothLabelX = new System.Windows.Forms.Label();
+ this.smoothBoxY = new System.Windows.Forms.TextBox();
+ this.smoothBoxX = new System.Windows.Forms.TextBox();
this.GrowthRateActiveYLabel = new System.Windows.Forms.Label();
this.GrowthRateActiveXLabel = new System.Windows.Forms.Label();
this.DecayRateActiveYLabel = new System.Windows.Forms.Label();
@@ -145,50 +182,62 @@ namespace grapher
this.OptionSetXTitle = new System.Windows.Forms.Label();
this.constantThreeLabelY = new System.Windows.Forms.Label();
this.limitLabelY = new System.Windows.Forms.Label();
- this.offsetLabelY = new System.Windows.Forms.Label();
- this.weightLabelY = new System.Windows.Forms.Label();
- this.capLabelY = new System.Windows.Forms.Label();
+ this.inputJumpLabelY = new System.Windows.Forms.Label();
+ this.outputJumpLabelY = new System.Windows.Forms.Label();
+ this.inputOffsetLabelY = new System.Windows.Forms.Label();
+ this.outputOffsetLabelY = new System.Windows.Forms.Label();
+ this.inCapLabelYClassic = new System.Windows.Forms.Label();
this.constantOneLabelY = new System.Windows.Forms.Label();
this.ByComponentXYLock = new System.Windows.Forms.CheckBox();
this.MidpointActiveYLabel = new System.Windows.Forms.Label();
this.LimitActiveYLabel = new System.Windows.Forms.Label();
- this.OffsetActiveYLabel = new System.Windows.Forms.Label();
+ this.InputJumpActiveYLabel = new System.Windows.Forms.Label();
+ this.OutputJumpActiveYLabel = new System.Windows.Forms.Label();
+ this.InputOffsetActiveYLabel = new System.Windows.Forms.Label();
+ this.OutputOffsetActiveYLabel = new System.Windows.Forms.Label();
this.AccelerationActiveLabelY = new System.Windows.Forms.Label();
this.accelTypeDropY = new System.Windows.Forms.ComboBox();
this.midpointBoxY = new System.Windows.Forms.TextBox();
this.limitBoxY = new System.Windows.Forms.TextBox();
- this.offsetBoxY = new System.Windows.Forms.TextBox();
+ this.inputJumpBoxY = new System.Windows.Forms.TextBox();
+ this.outputJumpBoxY = new System.Windows.Forms.TextBox();
+ this.inputOffsetBoxY = new System.Windows.Forms.TextBox();
+ this.outputOffsetBoxY = new System.Windows.Forms.TextBox();
this.accelerationBoxY = new System.Windows.Forms.TextBox();
this.MidpointActiveXLabel = new System.Windows.Forms.Label();
this.LimitActiveXLabel = new System.Windows.Forms.Label();
- this.OffsetActiveXLabel = new System.Windows.Forms.Label();
- this.CapActiveYLabel = new System.Windows.Forms.Label();
- this.WeightActiveYLabel = new System.Windows.Forms.Label();
- this.WeightActiveXLabel = new System.Windows.Forms.Label();
- this.CapActiveXLabel = new System.Windows.Forms.Label();
+ this.InputJumpActiveXLabel = new System.Windows.Forms.Label();
+ this.OutputJumpActiveXLabel = new System.Windows.Forms.Label();
+ this.InputOffsetActiveXLabel = new System.Windows.Forms.Label();
+ this.OutputOffsetActiveXLabel = new System.Windows.Forms.Label();
+ this.InCapActiveYLabelClassic = new System.Windows.Forms.Label();
+ this.InCapActiveXLabelClassic = new System.Windows.Forms.Label();
this.AccelerationActiveLabelX = new System.Windows.Forms.Label();
this.AccelTypeActiveLabelX = new System.Windows.Forms.Label();
this.RotationActiveLabel = new System.Windows.Forms.Label();
- this.SensitivityActiveYLabel = new System.Windows.Forms.Label();
- this.SensitivityActiveXLabel = new System.Windows.Forms.Label();
+ this.VertHorzRatioActiveLabel = new System.Windows.Forms.Label();
+ this.SensitivityMultiplierActiveLabel = new System.Windows.Forms.Label();
this.ActiveValueTitle = new System.Windows.Forms.Label();
this.MouseLabel = new System.Windows.Forms.Label();
this.LockXYLabel = new System.Windows.Forms.Label();
this.sensXYLock = new System.Windows.Forms.CheckBox();
- this.capBoxY = new System.Windows.Forms.TextBox();
- this.sensitivityBoxY = new System.Windows.Forms.TextBox();
+ this.inCapBoxYClassic = new System.Windows.Forms.TextBox();
+ this.VertHorzRatioBox = new System.Windows.Forms.TextBox();
this.writeButton = new System.Windows.Forms.Button();
- this.offsetLabelX = new System.Windows.Forms.Label();
- this.offsetBoxX = new System.Windows.Forms.TextBox();
+ this.inputJumpLabelX = new System.Windows.Forms.Label();
+ this.outputJumpLabelX = new System.Windows.Forms.Label();
+ this.inputJumpBoxX = new System.Windows.Forms.TextBox();
+ this.outputJumpBoxX = new System.Windows.Forms.TextBox();
+ this.inputOffsetLabelX = new System.Windows.Forms.Label();
+ this.outputOffsetLabelX = new System.Windows.Forms.Label();
+ this.inputOffsetBoxX = new System.Windows.Forms.TextBox();
+ this.outputOffsetBoxX = new System.Windows.Forms.TextBox();
this.constantThreeLabelX = new System.Windows.Forms.Label();
this.midpointBoxX = new System.Windows.Forms.TextBox();
this.limitLabelX = new System.Windows.Forms.Label();
this.limitBoxX = new System.Windows.Forms.TextBox();
- this.weightBoxY = new System.Windows.Forms.TextBox();
- this.weightLabelX = new System.Windows.Forms.Label();
- this.weightBoxX = new System.Windows.Forms.TextBox();
- this.capLabelX = new System.Windows.Forms.Label();
- this.capBoxX = new System.Windows.Forms.TextBox();
+ this.inCapLabelXClassic = new System.Windows.Forms.Label();
+ this.inCapBoxXClassic = new System.Windows.Forms.TextBox();
this.constantOneLabelX = new System.Windows.Forms.Label();
this.accelerationBoxX = new System.Windows.Forms.TextBox();
this.rotationLabel = new System.Windows.Forms.Label();
@@ -209,7 +258,7 @@ namespace grapher
this.streamingModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.advancedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.AutoWriteMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.UseSpecificDeviceMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.DeviceMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.chartsPanel = new System.Windows.Forms.Panel();
this.GainChartY = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.VelocityChartY = new System.Windows.Forms.DataVisualization.Charting.Chart();
@@ -217,12 +266,6 @@ namespace grapher
this.GainChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.VelocityChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.AccelerationChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
- this.smoothBoxX = new System.Windows.Forms.TextBox();
- this.smoothBoxY = new System.Windows.Forms.TextBox();
- this.smoothLabelX = new System.Windows.Forms.Label();
- this.SmoothActiveXLabel = new System.Windows.Forms.Label();
- this.smoothLabelY = new System.Windows.Forms.Label();
- this.SmoothActiveYLabel = new System.Windows.Forms.Label();
this.optionsPanel.SuspendLayout();
this.DirectionalityPanel.SuspendLayout();
this.menuStrip1.SuspendLayout();
@@ -238,6 +281,37 @@ namespace grapher
// optionsPanel
//
this.optionsPanel.AutoSize = true;
+ this.optionsPanel.Controls.Add(this.OutCapActiveYLabelPower);
+ this.optionsPanel.Controls.Add(this.InCapActiveYLabelPower);
+ this.optionsPanel.Controls.Add(this.OutCapActiveXLabelPower);
+ this.optionsPanel.Controls.Add(this.InCapActiveXLabelPower);
+ this.optionsPanel.Controls.Add(this.CapTypeActiveYLabelPower);
+ this.optionsPanel.Controls.Add(this.CapTypeActiveXLabelPower);
+ this.optionsPanel.Controls.Add(this.outCapLabelYPower);
+ this.optionsPanel.Controls.Add(this.inCapLabelYPower);
+ this.optionsPanel.Controls.Add(this.CapTypeLabelYPower);
+ this.optionsPanel.Controls.Add(this.outCapLabelXPower);
+ this.optionsPanel.Controls.Add(this.inCapLabelXPower);
+ this.optionsPanel.Controls.Add(this.CapTypeLabelXPower);
+ this.optionsPanel.Controls.Add(this.outCapBoxYPower);
+ this.optionsPanel.Controls.Add(this.outCapBoxXPower);
+ this.optionsPanel.Controls.Add(this.inCapBoxYPower);
+ this.optionsPanel.Controls.Add(this.inCapBoxXPower);
+ this.optionsPanel.Controls.Add(this.CapTypeDropdownYPower);
+ this.optionsPanel.Controls.Add(this.CapTypeDropdownXPower);
+ this.optionsPanel.Controls.Add(this.CapTypeActiveYLabelClassic);
+ this.optionsPanel.Controls.Add(this.CapTypeActiveXLabelClassic);
+ this.optionsPanel.Controls.Add(this.OutCapActiveYLabelClassic);
+ this.optionsPanel.Controls.Add(this.OutCapActiveXLabelClassic);
+ this.optionsPanel.Controls.Add(this.outCapLabelYClassic);
+ this.optionsPanel.Controls.Add(this.outCapLabelXClassic);
+ this.optionsPanel.Controls.Add(this.outCapBoxYClassic);
+ this.optionsPanel.Controls.Add(this.outCapBoxXClassic);
+ this.optionsPanel.Controls.Add(this.CapTypeLabelYClassic);
+ this.optionsPanel.Controls.Add(this.CapTypeLabelXClassic);
+ this.optionsPanel.Controls.Add(this.CapTypeDropdownYClassic);
+ this.optionsPanel.Controls.Add(this.CapTypeDropdownXClassic);
+ this.optionsPanel.Controls.Add(this.VertHorzRatioLabel);
this.optionsPanel.Controls.Add(this.SmoothActiveYLabel);
this.optionsPanel.Controls.Add(this.smoothLabelY);
this.optionsPanel.Controls.Add(this.SmoothActiveXLabel);
@@ -299,50 +373,62 @@ namespace grapher
this.optionsPanel.Controls.Add(this.OptionSetXTitle);
this.optionsPanel.Controls.Add(this.constantThreeLabelY);
this.optionsPanel.Controls.Add(this.limitLabelY);
- this.optionsPanel.Controls.Add(this.offsetLabelY);
- this.optionsPanel.Controls.Add(this.weightLabelY);
- this.optionsPanel.Controls.Add(this.capLabelY);
+ this.optionsPanel.Controls.Add(this.inputJumpLabelY);
+ this.optionsPanel.Controls.Add(this.outputJumpLabelY);
+ this.optionsPanel.Controls.Add(this.inputOffsetLabelY);
+ this.optionsPanel.Controls.Add(this.outputOffsetLabelY);
+ this.optionsPanel.Controls.Add(this.inCapLabelYClassic);
this.optionsPanel.Controls.Add(this.constantOneLabelY);
this.optionsPanel.Controls.Add(this.ByComponentXYLock);
this.optionsPanel.Controls.Add(this.MidpointActiveYLabel);
this.optionsPanel.Controls.Add(this.LimitActiveYLabel);
- this.optionsPanel.Controls.Add(this.OffsetActiveYLabel);
+ this.optionsPanel.Controls.Add(this.InputJumpActiveYLabel);
+ this.optionsPanel.Controls.Add(this.OutputJumpActiveYLabel);
+ this.optionsPanel.Controls.Add(this.InputOffsetActiveYLabel);
+ this.optionsPanel.Controls.Add(this.OutputOffsetActiveYLabel);
this.optionsPanel.Controls.Add(this.AccelerationActiveLabelY);
this.optionsPanel.Controls.Add(this.accelTypeDropY);
this.optionsPanel.Controls.Add(this.midpointBoxY);
this.optionsPanel.Controls.Add(this.limitBoxY);
- this.optionsPanel.Controls.Add(this.offsetBoxY);
+ this.optionsPanel.Controls.Add(this.inputJumpBoxY);
+ this.optionsPanel.Controls.Add(this.outputJumpBoxY);
+ this.optionsPanel.Controls.Add(this.inputOffsetBoxY);
+ this.optionsPanel.Controls.Add(this.outputOffsetBoxY);
this.optionsPanel.Controls.Add(this.accelerationBoxY);
this.optionsPanel.Controls.Add(this.MidpointActiveXLabel);
this.optionsPanel.Controls.Add(this.LimitActiveXLabel);
- this.optionsPanel.Controls.Add(this.OffsetActiveXLabel);
- this.optionsPanel.Controls.Add(this.CapActiveYLabel);
- this.optionsPanel.Controls.Add(this.WeightActiveYLabel);
- this.optionsPanel.Controls.Add(this.WeightActiveXLabel);
- this.optionsPanel.Controls.Add(this.CapActiveXLabel);
+ this.optionsPanel.Controls.Add(this.InputJumpActiveXLabel);
+ this.optionsPanel.Controls.Add(this.OutputJumpActiveXLabel);
+ this.optionsPanel.Controls.Add(this.InputOffsetActiveXLabel);
+ this.optionsPanel.Controls.Add(this.OutputOffsetActiveXLabel);
+ this.optionsPanel.Controls.Add(this.InCapActiveYLabelClassic);
+ this.optionsPanel.Controls.Add(this.InCapActiveXLabelClassic);
this.optionsPanel.Controls.Add(this.AccelerationActiveLabelX);
this.optionsPanel.Controls.Add(this.AccelTypeActiveLabelX);
this.optionsPanel.Controls.Add(this.RotationActiveLabel);
- this.optionsPanel.Controls.Add(this.SensitivityActiveYLabel);
- this.optionsPanel.Controls.Add(this.SensitivityActiveXLabel);
+ this.optionsPanel.Controls.Add(this.VertHorzRatioActiveLabel);
+ this.optionsPanel.Controls.Add(this.SensitivityMultiplierActiveLabel);
this.optionsPanel.Controls.Add(this.ActiveValueTitle);
this.optionsPanel.Controls.Add(this.MouseLabel);
this.optionsPanel.Controls.Add(this.LockXYLabel);
this.optionsPanel.Controls.Add(this.sensXYLock);
- this.optionsPanel.Controls.Add(this.capBoxY);
- this.optionsPanel.Controls.Add(this.sensitivityBoxY);
+ this.optionsPanel.Controls.Add(this.inCapBoxYClassic);
+ this.optionsPanel.Controls.Add(this.VertHorzRatioBox);
this.optionsPanel.Controls.Add(this.writeButton);
- this.optionsPanel.Controls.Add(this.offsetLabelX);
- this.optionsPanel.Controls.Add(this.offsetBoxX);
+ this.optionsPanel.Controls.Add(this.inputJumpLabelX);
+ this.optionsPanel.Controls.Add(this.outputJumpLabelX);
+ this.optionsPanel.Controls.Add(this.inputJumpBoxX);
+ this.optionsPanel.Controls.Add(this.outputJumpBoxX);
+ this.optionsPanel.Controls.Add(this.inputOffsetLabelX);
+ this.optionsPanel.Controls.Add(this.outputOffsetLabelX);
+ this.optionsPanel.Controls.Add(this.inputOffsetBoxX);
+ this.optionsPanel.Controls.Add(this.outputOffsetBoxX);
this.optionsPanel.Controls.Add(this.constantThreeLabelX);
this.optionsPanel.Controls.Add(this.midpointBoxX);
this.optionsPanel.Controls.Add(this.limitLabelX);
this.optionsPanel.Controls.Add(this.limitBoxX);
- this.optionsPanel.Controls.Add(this.weightBoxY);
- this.optionsPanel.Controls.Add(this.weightLabelX);
- this.optionsPanel.Controls.Add(this.weightBoxX);
- this.optionsPanel.Controls.Add(this.capLabelX);
- this.optionsPanel.Controls.Add(this.capBoxX);
+ this.optionsPanel.Controls.Add(this.inCapLabelXClassic);
+ this.optionsPanel.Controls.Add(this.inCapBoxXClassic);
this.optionsPanel.Controls.Add(this.constantOneLabelX);
this.optionsPanel.Controls.Add(this.accelerationBoxX);
this.optionsPanel.Controls.Add(this.rotationLabel);
@@ -358,10 +444,323 @@ namespace grapher
this.optionsPanel.Size = new System.Drawing.Size(483, 956);
this.optionsPanel.TabIndex = 34;
//
+ // OutCapActiveYLabelPower
+ //
+ this.OutCapActiveYLabelPower.AutoSize = true;
+ this.OutCapActiveYLabelPower.Location = new System.Drawing.Point(414, 836);
+ this.OutCapActiveYLabelPower.Name = "OutCapActiveYLabelPower";
+ this.OutCapActiveYLabelPower.Size = new System.Drawing.Size(13, 13);
+ this.OutCapActiveYLabelPower.TabIndex = 224;
+ this.OutCapActiveYLabelPower.Text = "0";
+ //
+ // InCapActiveYLabelPower
+ //
+ this.InCapActiveYLabelPower.AutoSize = true;
+ this.InCapActiveYLabelPower.Location = new System.Drawing.Point(417, 810);
+ this.InCapActiveYLabelPower.Name = "InCapActiveYLabelPower";
+ this.InCapActiveYLabelPower.Size = new System.Drawing.Size(13, 13);
+ this.InCapActiveYLabelPower.TabIndex = 223;
+ this.InCapActiveYLabelPower.Text = "0";
+ //
+ // OutCapActiveXLabelPower
+ //
+ this.OutCapActiveXLabelPower.AutoSize = true;
+ this.OutCapActiveXLabelPower.Location = new System.Drawing.Point(200, 837);
+ this.OutCapActiveXLabelPower.Name = "OutCapActiveXLabelPower";
+ this.OutCapActiveXLabelPower.Size = new System.Drawing.Size(13, 13);
+ this.OutCapActiveXLabelPower.TabIndex = 222;
+ this.OutCapActiveXLabelPower.Text = "0";
+ //
+ // InCapActiveXLabelPower
+ //
+ this.InCapActiveXLabelPower.AutoSize = true;
+ this.InCapActiveXLabelPower.Location = new System.Drawing.Point(200, 810);
+ this.InCapActiveXLabelPower.Name = "InCapActiveXLabelPower";
+ this.InCapActiveXLabelPower.Size = new System.Drawing.Size(13, 13);
+ this.InCapActiveXLabelPower.TabIndex = 221;
+ this.InCapActiveXLabelPower.Text = "0";
+ //
+ // CapTypeActiveYLabelPower
+ //
+ this.CapTypeActiveYLabelPower.AutoSize = true;
+ this.CapTypeActiveYLabelPower.Location = new System.Drawing.Point(414, 783);
+ this.CapTypeActiveYLabelPower.Name = "CapTypeActiveYLabelPower";
+ this.CapTypeActiveYLabelPower.Size = new System.Drawing.Size(16, 13);
+ this.CapTypeActiveYLabelPower.TabIndex = 220;
+ this.CapTypeActiveYLabelPower.Text = "In";
+ //
+ // CapTypeActiveXLabelPower
+ //
+ this.CapTypeActiveXLabelPower.AutoSize = true;
+ this.CapTypeActiveXLabelPower.Location = new System.Drawing.Point(200, 788);
+ this.CapTypeActiveXLabelPower.Name = "CapTypeActiveXLabelPower";
+ this.CapTypeActiveXLabelPower.Size = new System.Drawing.Size(16, 13);
+ this.CapTypeActiveXLabelPower.TabIndex = 219;
+ this.CapTypeActiveXLabelPower.Text = "In";
+ //
+ // outCapLabelYPower
+ //
+ this.outCapLabelYPower.AutoSize = true;
+ this.outCapLabelYPower.Location = new System.Drawing.Point(262, 837);
+ this.outCapLabelYPower.Name = "outCapLabelYPower";
+ this.outCapLabelYPower.Size = new System.Drawing.Size(64, 13);
+ this.outCapLabelYPower.TabIndex = 218;
+ this.outCapLabelYPower.Text = "Cap: Output";
+ //
+ // inCapLabelYPower
+ //
+ this.inCapLabelYPower.AutoSize = true;
+ this.inCapLabelYPower.Location = new System.Drawing.Point(262, 810);
+ this.inCapLabelYPower.Name = "inCapLabelYPower";
+ this.inCapLabelYPower.Size = new System.Drawing.Size(56, 13);
+ this.inCapLabelYPower.TabIndex = 217;
+ this.inCapLabelYPower.Text = "Cap: Input";
+ //
+ // CapTypeLabelYPower
+ //
+ this.CapTypeLabelYPower.AutoSize = true;
+ this.CapTypeLabelYPower.Location = new System.Drawing.Point(262, 783);
+ this.CapTypeLabelYPower.Name = "CapTypeLabelYPower";
+ this.CapTypeLabelYPower.Size = new System.Drawing.Size(53, 13);
+ this.CapTypeLabelYPower.TabIndex = 216;
+ this.CapTypeLabelYPower.Text = "Cap Type";
+ //
+ // outCapLabelXPower
+ //
+ this.outCapLabelXPower.AutoSize = true;
+ this.outCapLabelXPower.Location = new System.Drawing.Point(35, 836);
+ this.outCapLabelXPower.Name = "outCapLabelXPower";
+ this.outCapLabelXPower.Size = new System.Drawing.Size(64, 13);
+ this.outCapLabelXPower.TabIndex = 215;
+ this.outCapLabelXPower.Text = "Cap: Output";
+ //
+ // inCapLabelXPower
+ //
+ this.inCapLabelXPower.AutoSize = true;
+ this.inCapLabelXPower.Location = new System.Drawing.Point(38, 810);
+ this.inCapLabelXPower.Name = "inCapLabelXPower";
+ this.inCapLabelXPower.Size = new System.Drawing.Size(56, 13);
+ this.inCapLabelXPower.TabIndex = 214;
+ this.inCapLabelXPower.Text = "Cap: Input";
+ //
+ // CapTypeLabelXPower
+ //
+ this.CapTypeLabelXPower.AutoSize = true;
+ this.CapTypeLabelXPower.Location = new System.Drawing.Point(40, 783);
+ this.CapTypeLabelXPower.Name = "CapTypeLabelXPower";
+ this.CapTypeLabelXPower.Size = new System.Drawing.Size(53, 13);
+ this.CapTypeLabelXPower.TabIndex = 213;
+ this.CapTypeLabelXPower.Text = "Cap Type";
+ //
+ // outCapBoxYPower
+ //
+ this.outCapBoxYPower.Location = new System.Drawing.Point(332, 834);
+ this.outCapBoxYPower.Name = "outCapBoxYPower";
+ this.outCapBoxYPower.Size = new System.Drawing.Size(76, 20);
+ this.outCapBoxYPower.TabIndex = 212;
+ //
+ // outCapBoxXPower
+ //
+ this.outCapBoxXPower.Location = new System.Drawing.Point(106, 833);
+ this.outCapBoxXPower.Name = "outCapBoxXPower";
+ this.outCapBoxXPower.Size = new System.Drawing.Size(76, 20);
+ this.outCapBoxXPower.TabIndex = 211;
+ //
+ // inCapBoxYPower
+ //
+ this.inCapBoxYPower.Location = new System.Drawing.Point(332, 807);
+ this.inCapBoxYPower.Name = "inCapBoxYPower";
+ this.inCapBoxYPower.Size = new System.Drawing.Size(76, 20);
+ this.inCapBoxYPower.TabIndex = 210;
+ //
+ // inCapBoxXPower
+ //
+ this.inCapBoxXPower.Location = new System.Drawing.Point(106, 807);
+ this.inCapBoxXPower.Name = "inCapBoxXPower";
+ this.inCapBoxXPower.Size = new System.Drawing.Size(76, 20);
+ this.inCapBoxXPower.TabIndex = 209;
+ //
+ // CapTypeDropdownYPower
+ //
+ this.CapTypeDropdownYPower.FormattingEnabled = true;
+ this.CapTypeDropdownYPower.Location = new System.Drawing.Point(332, 780);
+ this.CapTypeDropdownYPower.Name = "CapTypeDropdownYPower";
+ this.CapTypeDropdownYPower.Size = new System.Drawing.Size(76, 21);
+ this.CapTypeDropdownYPower.TabIndex = 208;
+ //
+ // CapTypeDropdownXPower
+ //
+ this.CapTypeDropdownXPower.FormattingEnabled = true;
+ this.CapTypeDropdownXPower.Location = new System.Drawing.Point(106, 780);
+ this.CapTypeDropdownXPower.Name = "CapTypeDropdownXPower";
+ this.CapTypeDropdownXPower.Size = new System.Drawing.Size(76, 21);
+ this.CapTypeDropdownXPower.TabIndex = 207;
+ //
+ // CapTypeActiveYLabelClassic
+ //
+ this.CapTypeActiveYLabelClassic.AutoSize = true;
+ this.CapTypeActiveYLabelClassic.Location = new System.Drawing.Point(415, 732);
+ this.CapTypeActiveYLabelClassic.Name = "CapTypeActiveYLabelClassic";
+ this.CapTypeActiveYLabelClassic.Size = new System.Drawing.Size(16, 13);
+ this.CapTypeActiveYLabelClassic.TabIndex = 206;
+ this.CapTypeActiveYLabelClassic.Text = "In";
+ //
+ // CapTypeActiveXLabelClassic
+ //
+ this.CapTypeActiveXLabelClassic.AutoSize = true;
+ this.CapTypeActiveXLabelClassic.Location = new System.Drawing.Point(200, 728);
+ this.CapTypeActiveXLabelClassic.Name = "CapTypeActiveXLabelClassic";
+ this.CapTypeActiveXLabelClassic.Size = new System.Drawing.Size(16, 13);
+ this.CapTypeActiveXLabelClassic.TabIndex = 205;
+ this.CapTypeActiveXLabelClassic.Text = "In";
+ //
+ // OutCapActiveYLabelClassic
+ //
+ this.OutCapActiveYLabelClassic.AutoSize = true;
+ this.OutCapActiveYLabelClassic.Location = new System.Drawing.Point(414, 757);
+ this.OutCapActiveYLabelClassic.Name = "OutCapActiveYLabelClassic";
+ this.OutCapActiveYLabelClassic.Size = new System.Drawing.Size(13, 13);
+ this.OutCapActiveYLabelClassic.TabIndex = 204;
+ this.OutCapActiveYLabelClassic.Text = "0";
+ //
+ // OutCapActiveXLabelClassic
+ //
+ this.OutCapActiveXLabelClassic.AutoSize = true;
+ this.OutCapActiveXLabelClassic.Location = new System.Drawing.Point(200, 757);
+ this.OutCapActiveXLabelClassic.Name = "OutCapActiveXLabelClassic";
+ this.OutCapActiveXLabelClassic.Size = new System.Drawing.Size(13, 13);
+ this.OutCapActiveXLabelClassic.TabIndex = 203;
+ this.OutCapActiveXLabelClassic.Text = "0";
+ //
+ // outCapLabelYClassic
+ //
+ this.outCapLabelYClassic.AutoSize = true;
+ this.outCapLabelYClassic.Location = new System.Drawing.Point(262, 757);
+ this.outCapLabelYClassic.Name = "outCapLabelYClassic";
+ this.outCapLabelYClassic.Size = new System.Drawing.Size(64, 13);
+ this.outCapLabelYClassic.TabIndex = 202;
+ this.outCapLabelYClassic.Text = "Cap: Output";
+ //
+ // outCapLabelXClassic
+ //
+ this.outCapLabelXClassic.AutoSize = true;
+ this.outCapLabelXClassic.Location = new System.Drawing.Point(35, 757);
+ this.outCapLabelXClassic.Name = "outCapLabelXClassic";
+ this.outCapLabelXClassic.Size = new System.Drawing.Size(64, 13);
+ this.outCapLabelXClassic.TabIndex = 201;
+ this.outCapLabelXClassic.Text = "Cap: Output";
+ //
+ // outCapBoxYClassic
+ //
+ this.outCapBoxYClassic.Location = new System.Drawing.Point(332, 754);
+ this.outCapBoxYClassic.Name = "outCapBoxYClassic";
+ this.outCapBoxYClassic.Size = new System.Drawing.Size(76, 20);
+ this.outCapBoxYClassic.TabIndex = 200;
+ //
+ // outCapBoxXClassic
+ //
+ this.outCapBoxXClassic.Location = new System.Drawing.Point(106, 754);
+ this.outCapBoxXClassic.Name = "outCapBoxXClassic";
+ this.outCapBoxXClassic.Size = new System.Drawing.Size(76, 20);
+ this.outCapBoxXClassic.TabIndex = 199;
+ //
+ // CapTypeLabelYClassic
+ //
+ this.CapTypeLabelYClassic.AutoSize = true;
+ this.CapTypeLabelYClassic.Location = new System.Drawing.Point(263, 729);
+ this.CapTypeLabelYClassic.Name = "CapTypeLabelYClassic";
+ this.CapTypeLabelYClassic.Size = new System.Drawing.Size(53, 13);
+ this.CapTypeLabelYClassic.TabIndex = 198;
+ this.CapTypeLabelYClassic.Text = "Cap Type";
+ //
+ // CapTypeLabelXClassic
+ //
+ this.CapTypeLabelXClassic.AutoSize = true;
+ this.CapTypeLabelXClassic.Location = new System.Drawing.Point(38, 728);
+ this.CapTypeLabelXClassic.Name = "CapTypeLabelXClassic";
+ this.CapTypeLabelXClassic.Size = new System.Drawing.Size(53, 13);
+ this.CapTypeLabelXClassic.TabIndex = 197;
+ this.CapTypeLabelXClassic.Text = "Cap Type";
+ //
+ // CapTypeDropdownYClassic
+ //
+ this.CapTypeDropdownYClassic.FormattingEnabled = true;
+ this.CapTypeDropdownYClassic.Location = new System.Drawing.Point(332, 725);
+ this.CapTypeDropdownYClassic.Name = "CapTypeDropdownYClassic";
+ this.CapTypeDropdownYClassic.Size = new System.Drawing.Size(76, 21);
+ this.CapTypeDropdownYClassic.TabIndex = 196;
+ //
+ // CapTypeDropdownXClassic
+ //
+ this.CapTypeDropdownXClassic.FormattingEnabled = true;
+ this.CapTypeDropdownXClassic.Location = new System.Drawing.Point(106, 726);
+ this.CapTypeDropdownXClassic.Name = "CapTypeDropdownXClassic";
+ this.CapTypeDropdownXClassic.Size = new System.Drawing.Size(76, 21);
+ this.CapTypeDropdownXClassic.TabIndex = 195;
+ //
+ // VertHorzRatioLabel
+ //
+ this.VertHorzRatioLabel.AutoSize = true;
+ this.VertHorzRatioLabel.Location = new System.Drawing.Point(28, 79);
+ this.VertHorzRatioLabel.Name = "VertHorzRatioLabel";
+ this.VertHorzRatioLabel.Size = new System.Drawing.Size(59, 13);
+ this.VertHorzRatioLabel.TabIndex = 194;
+ this.VertHorzRatioLabel.Text = "Y to X ratio";
+ //
+ // SmoothActiveYLabel
+ //
+ this.SmoothActiveYLabel.AutoSize = true;
+ this.SmoothActiveYLabel.Location = new System.Drawing.Point(414, 704);
+ this.SmoothActiveYLabel.Name = "SmoothActiveYLabel";
+ this.SmoothActiveYLabel.Size = new System.Drawing.Size(13, 13);
+ this.SmoothActiveYLabel.TabIndex = 193;
+ this.SmoothActiveYLabel.Text = "0";
+ //
+ // smoothLabelY
+ //
+ this.smoothLabelY.AutoSize = true;
+ this.smoothLabelY.Location = new System.Drawing.Point(266, 704);
+ this.smoothLabelY.Name = "smoothLabelY";
+ this.smoothLabelY.Size = new System.Drawing.Size(43, 13);
+ this.smoothLabelY.TabIndex = 192;
+ this.smoothLabelY.Text = "Smooth";
+ //
+ // SmoothActiveXLabel
+ //
+ this.SmoothActiveXLabel.AutoSize = true;
+ this.SmoothActiveXLabel.Location = new System.Drawing.Point(200, 704);
+ this.SmoothActiveXLabel.Name = "SmoothActiveXLabel";
+ this.SmoothActiveXLabel.Size = new System.Drawing.Size(13, 13);
+ this.SmoothActiveXLabel.TabIndex = 191;
+ this.SmoothActiveXLabel.Text = "0";
+ //
+ // smoothLabelX
+ //
+ this.smoothLabelX.AutoSize = true;
+ this.smoothLabelX.Location = new System.Drawing.Point(38, 704);
+ this.smoothLabelX.Name = "smoothLabelX";
+ this.smoothLabelX.Size = new System.Drawing.Size(43, 13);
+ this.smoothLabelX.TabIndex = 190;
+ this.smoothLabelX.Text = "Smooth";
+ //
+ // smoothBoxY
+ //
+ this.smoothBoxY.Location = new System.Drawing.Point(332, 698);
+ this.smoothBoxY.Name = "smoothBoxY";
+ this.smoothBoxY.Size = new System.Drawing.Size(76, 20);
+ this.smoothBoxY.TabIndex = 189;
+ //
+ // smoothBoxX
+ //
+ this.smoothBoxX.Location = new System.Drawing.Point(106, 699);
+ this.smoothBoxX.Name = "smoothBoxX";
+ this.smoothBoxX.Size = new System.Drawing.Size(76, 20);
+ this.smoothBoxX.TabIndex = 188;
+ //
// GrowthRateActiveYLabel
//
this.GrowthRateActiveYLabel.AutoSize = true;
- this.GrowthRateActiveYLabel.Location = new System.Drawing.Point(417, 647);
+ this.GrowthRateActiveYLabel.Location = new System.Drawing.Point(417, 674);
this.GrowthRateActiveYLabel.Name = "GrowthRateActiveYLabel";
this.GrowthRateActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.GrowthRateActiveYLabel.TabIndex = 187;
@@ -370,7 +769,7 @@ namespace grapher
// GrowthRateActiveXLabel
//
this.GrowthRateActiveXLabel.AutoSize = true;
- this.GrowthRateActiveXLabel.Location = new System.Drawing.Point(200, 647);
+ this.GrowthRateActiveXLabel.Location = new System.Drawing.Point(200, 674);
this.GrowthRateActiveXLabel.Name = "GrowthRateActiveXLabel";
this.GrowthRateActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.GrowthRateActiveXLabel.TabIndex = 186;
@@ -379,7 +778,7 @@ namespace grapher
// DecayRateActiveYLabel
//
this.DecayRateActiveYLabel.AutoSize = true;
- this.DecayRateActiveYLabel.Location = new System.Drawing.Point(417, 626);
+ this.DecayRateActiveYLabel.Location = new System.Drawing.Point(417, 653);
this.DecayRateActiveYLabel.Name = "DecayRateActiveYLabel";
this.DecayRateActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.DecayRateActiveYLabel.TabIndex = 185;
@@ -388,7 +787,7 @@ namespace grapher
// DecayRateActiveXLabel
//
this.DecayRateActiveXLabel.AutoSize = true;
- this.DecayRateActiveXLabel.Location = new System.Drawing.Point(200, 622);
+ this.DecayRateActiveXLabel.Location = new System.Drawing.Point(200, 649);
this.DecayRateActiveXLabel.Name = "DecayRateActiveXLabel";
this.DecayRateActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.DecayRateActiveXLabel.TabIndex = 184;
@@ -397,7 +796,7 @@ namespace grapher
// growthRateLabelY
//
this.growthRateLabelY.AutoSize = true;
- this.growthRateLabelY.Location = new System.Drawing.Point(263, 648);
+ this.growthRateLabelY.Location = new System.Drawing.Point(263, 675);
this.growthRateLabelY.Name = "growthRateLabelY";
this.growthRateLabelY.Size = new System.Drawing.Size(67, 13);
this.growthRateLabelY.TabIndex = 183;
@@ -406,7 +805,7 @@ namespace grapher
// growthRateLabelX
//
this.growthRateLabelX.AutoSize = true;
- this.growthRateLabelX.Location = new System.Drawing.Point(37, 648);
+ this.growthRateLabelX.Location = new System.Drawing.Point(37, 675);
this.growthRateLabelX.Name = "growthRateLabelX";
this.growthRateLabelX.Size = new System.Drawing.Size(67, 13);
this.growthRateLabelX.TabIndex = 182;
@@ -415,7 +814,7 @@ namespace grapher
// decayRateLabelY
//
this.decayRateLabelY.AutoSize = true;
- this.decayRateLabelY.Location = new System.Drawing.Point(262, 622);
+ this.decayRateLabelY.Location = new System.Drawing.Point(262, 649);
this.decayRateLabelY.Name = "decayRateLabelY";
this.decayRateLabelY.Size = new System.Drawing.Size(64, 13);
this.decayRateLabelY.TabIndex = 181;
@@ -424,7 +823,7 @@ namespace grapher
// decayRateLabelX
//
this.decayRateLabelX.AutoSize = true;
- this.decayRateLabelX.Location = new System.Drawing.Point(37, 622);
+ this.decayRateLabelX.Location = new System.Drawing.Point(35, 649);
this.decayRateLabelX.Name = "decayRateLabelX";
this.decayRateLabelX.Size = new System.Drawing.Size(64, 13);
this.decayRateLabelX.TabIndex = 180;
@@ -432,28 +831,28 @@ namespace grapher
//
// growthRateBoxY
//
- this.growthRateBoxY.Location = new System.Drawing.Point(332, 644);
+ this.growthRateBoxY.Location = new System.Drawing.Point(332, 671);
this.growthRateBoxY.Name = "growthRateBoxY";
this.growthRateBoxY.Size = new System.Drawing.Size(76, 20);
this.growthRateBoxY.TabIndex = 179;
//
// growthRateBoxX
//
- this.growthRateBoxX.Location = new System.Drawing.Point(106, 645);
+ this.growthRateBoxX.Location = new System.Drawing.Point(106, 672);
this.growthRateBoxX.Name = "growthRateBoxX";
this.growthRateBoxX.Size = new System.Drawing.Size(76, 20);
this.growthRateBoxX.TabIndex = 178;
//
// decayRateBoxY
//
- this.decayRateBoxY.Location = new System.Drawing.Point(332, 619);
+ this.decayRateBoxY.Location = new System.Drawing.Point(332, 646);
this.decayRateBoxY.Name = "decayRateBoxY";
this.decayRateBoxY.Size = new System.Drawing.Size(76, 20);
this.decayRateBoxY.TabIndex = 177;
//
// decayRateBoxX
//
- this.decayRateBoxX.Location = new System.Drawing.Point(106, 619);
+ this.decayRateBoxX.Location = new System.Drawing.Point(106, 646);
this.decayRateBoxX.Name = "decayRateBoxX";
this.decayRateBoxX.Size = new System.Drawing.Size(76, 20);
this.decayRateBoxX.TabIndex = 176;
@@ -461,7 +860,7 @@ namespace grapher
// PowerClassicActiveYLabel
//
this.PowerClassicActiveYLabel.AutoSize = true;
- this.PowerClassicActiveYLabel.Location = new System.Drawing.Point(417, 599);
+ this.PowerClassicActiveYLabel.Location = new System.Drawing.Point(417, 626);
this.PowerClassicActiveYLabel.Name = "PowerClassicActiveYLabel";
this.PowerClassicActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.PowerClassicActiveYLabel.TabIndex = 175;
@@ -470,7 +869,7 @@ namespace grapher
// PowerClassicActiveXLabel
//
this.PowerClassicActiveXLabel.AutoSize = true;
- this.PowerClassicActiveXLabel.Location = new System.Drawing.Point(200, 599);
+ this.PowerClassicActiveXLabel.Location = new System.Drawing.Point(200, 626);
this.PowerClassicActiveXLabel.Name = "PowerClassicActiveXLabel";
this.PowerClassicActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.PowerClassicActiveXLabel.TabIndex = 174;
@@ -479,7 +878,7 @@ namespace grapher
// powerLabelY
//
this.powerLabelY.AutoSize = true;
- this.powerLabelY.Location = new System.Drawing.Point(263, 599);
+ this.powerLabelY.Location = new System.Drawing.Point(263, 626);
this.powerLabelY.Name = "powerLabelY";
this.powerLabelY.Size = new System.Drawing.Size(37, 13);
this.powerLabelY.TabIndex = 173;
@@ -488,7 +887,7 @@ namespace grapher
// powerLabelX
//
this.powerLabelX.AutoSize = true;
- this.powerLabelX.Location = new System.Drawing.Point(35, 595);
+ this.powerLabelX.Location = new System.Drawing.Point(35, 622);
this.powerLabelX.Name = "powerLabelX";
this.powerLabelX.Size = new System.Drawing.Size(37, 13);
this.powerLabelX.TabIndex = 172;
@@ -496,21 +895,21 @@ namespace grapher
//
// powerBoxY
//
- this.powerBoxY.Location = new System.Drawing.Point(332, 594);
+ this.powerBoxY.Location = new System.Drawing.Point(332, 621);
this.powerBoxY.Name = "powerBoxY";
this.powerBoxY.Size = new System.Drawing.Size(76, 20);
this.powerBoxY.TabIndex = 171;
//
// powerBoxX
//
- this.powerBoxX.Location = new System.Drawing.Point(106, 595);
+ this.powerBoxX.Location = new System.Drawing.Point(106, 622);
this.powerBoxX.Name = "powerBoxX";
this.powerBoxX.Size = new System.Drawing.Size(76, 20);
this.powerBoxX.TabIndex = 170;
//
// YLutActiveValuesBox
//
- this.YLutActiveValuesBox.Location = new System.Drawing.Point(397, 369);
+ this.YLutActiveValuesBox.Location = new System.Drawing.Point(397, 396);
this.YLutActiveValuesBox.Name = "YLutActiveValuesBox";
this.YLutActiveValuesBox.Size = new System.Drawing.Size(73, 72);
this.YLutActiveValuesBox.TabIndex = 169;
@@ -518,7 +917,7 @@ namespace grapher
//
// XLutActiveValuesBox
//
- this.XLutActiveValuesBox.Location = new System.Drawing.Point(317, 369);
+ this.XLutActiveValuesBox.Location = new System.Drawing.Point(317, 396);
this.XLutActiveValuesBox.Name = "XLutActiveValuesBox";
this.XLutActiveValuesBox.Size = new System.Drawing.Size(68, 72);
this.XLutActiveValuesBox.TabIndex = 168;
@@ -527,7 +926,7 @@ namespace grapher
// LutApplyActiveYLabel
//
this.LutApplyActiveYLabel.AutoSize = true;
- this.LutApplyActiveYLabel.Location = new System.Drawing.Point(417, 565);
+ this.LutApplyActiveYLabel.Location = new System.Drawing.Point(417, 592);
this.LutApplyActiveYLabel.Name = "LutApplyActiveYLabel";
this.LutApplyActiveYLabel.Size = new System.Drawing.Size(35, 13);
this.LutApplyActiveYLabel.TabIndex = 167;
@@ -536,7 +935,7 @@ namespace grapher
// YLutApplyDropdown
//
this.YLutApplyDropdown.FormattingEnabled = true;
- this.YLutApplyDropdown.Location = new System.Drawing.Point(397, 527);
+ this.YLutApplyDropdown.Location = new System.Drawing.Point(397, 554);
this.YLutApplyDropdown.Name = "YLutApplyDropdown";
this.YLutApplyDropdown.Size = new System.Drawing.Size(73, 21);
this.YLutApplyDropdown.TabIndex = 166;
@@ -544,7 +943,7 @@ namespace grapher
// XLutApplyDropdown
//
this.XLutApplyDropdown.FormattingEnabled = true;
- this.XLutApplyDropdown.Location = new System.Drawing.Point(320, 527);
+ this.XLutApplyDropdown.Location = new System.Drawing.Point(320, 554);
this.XLutApplyDropdown.Name = "XLutApplyDropdown";
this.XLutApplyDropdown.Size = new System.Drawing.Size(65, 21);
this.XLutApplyDropdown.TabIndex = 165;
@@ -552,7 +951,7 @@ namespace grapher
// LutApplyActiveXLabel
//
this.LutApplyActiveXLabel.AutoSize = true;
- this.LutApplyActiveXLabel.Location = new System.Drawing.Point(200, 565);
+ this.LutApplyActiveXLabel.Location = new System.Drawing.Point(200, 592);
this.LutApplyActiveXLabel.Name = "LutApplyActiveXLabel";
this.LutApplyActiveXLabel.Size = new System.Drawing.Size(35, 13);
this.LutApplyActiveXLabel.TabIndex = 164;
@@ -561,7 +960,7 @@ namespace grapher
// YLutApplyLabel
//
this.YLutApplyLabel.AutoSize = true;
- this.YLutApplyLabel.Location = new System.Drawing.Point(397, 510);
+ this.YLutApplyLabel.Location = new System.Drawing.Point(397, 537);
this.YLutApplyLabel.Name = "YLutApplyLabel";
this.YLutApplyLabel.Size = new System.Drawing.Size(47, 13);
this.YLutApplyLabel.TabIndex = 163;
@@ -570,7 +969,7 @@ namespace grapher
// XLutApplyLabel
//
this.XLutApplyLabel.AutoSize = true;
- this.XLutApplyLabel.Location = new System.Drawing.Point(317, 511);
+ this.XLutApplyLabel.Location = new System.Drawing.Point(317, 538);
this.XLutApplyLabel.Name = "XLutApplyLabel";
this.XLutApplyLabel.Size = new System.Drawing.Size(47, 13);
this.XLutApplyLabel.TabIndex = 162;
@@ -578,7 +977,7 @@ namespace grapher
//
// YLutPointsBox
//
- this.YLutPointsBox.Location = new System.Drawing.Point(397, 447);
+ this.YLutPointsBox.Location = new System.Drawing.Point(397, 474);
this.YLutPointsBox.Name = "YLutPointsBox";
this.YLutPointsBox.Size = new System.Drawing.Size(73, 57);
this.YLutPointsBox.TabIndex = 161;
@@ -586,7 +985,7 @@ namespace grapher
//
// XLutPointsBox
//
- this.XLutPointsBox.Location = new System.Drawing.Point(317, 447);
+ this.XLutPointsBox.Location = new System.Drawing.Point(317, 474);
this.XLutPointsBox.Name = "XLutPointsBox";
this.XLutPointsBox.Size = new System.Drawing.Size(68, 57);
this.XLutPointsBox.TabIndex = 160;
@@ -595,7 +994,7 @@ namespace grapher
// gainSwitchActiveLabelY
//
this.gainSwitchActiveLabelY.AutoSize = true;
- this.gainSwitchActiveLabelY.Location = new System.Drawing.Point(417, 95);
+ this.gainSwitchActiveLabelY.Location = new System.Drawing.Point(417, 122);
this.gainSwitchActiveLabelY.Name = "gainSwitchActiveLabelY";
this.gainSwitchActiveLabelY.Size = new System.Drawing.Size(29, 13);
this.gainSwitchActiveLabelY.TabIndex = 157;
@@ -604,7 +1003,7 @@ namespace grapher
// gainSwitchActiveLabelX
//
this.gainSwitchActiveLabelX.AutoSize = true;
- this.gainSwitchActiveLabelX.Location = new System.Drawing.Point(200, 96);
+ this.gainSwitchActiveLabelX.Location = new System.Drawing.Point(200, 123);
this.gainSwitchActiveLabelX.Name = "gainSwitchActiveLabelX";
this.gainSwitchActiveLabelX.Size = new System.Drawing.Size(29, 13);
this.gainSwitchActiveLabelX.TabIndex = 156;
@@ -615,7 +1014,7 @@ namespace grapher
this.gainSwitchY.AutoSize = true;
this.gainSwitchY.Checked = true;
this.gainSwitchY.CheckState = System.Windows.Forms.CheckState.Checked;
- this.gainSwitchY.Location = new System.Drawing.Point(283, 116);
+ this.gainSwitchY.Location = new System.Drawing.Point(283, 143);
this.gainSwitchY.Name = "gainSwitchY";
this.gainSwitchY.Size = new System.Drawing.Size(48, 17);
this.gainSwitchY.TabIndex = 155;
@@ -627,7 +1026,7 @@ namespace grapher
this.gainSwitchX.AutoSize = true;
this.gainSwitchX.Checked = true;
this.gainSwitchX.CheckState = System.Windows.Forms.CheckState.Checked;
- this.gainSwitchX.Location = new System.Drawing.Point(38, 116);
+ this.gainSwitchX.Location = new System.Drawing.Point(38, 143);
this.gainSwitchX.Name = "gainSwitchX";
this.gainSwitchX.Size = new System.Drawing.Size(48, 17);
this.gainSwitchX.TabIndex = 154;
@@ -637,7 +1036,7 @@ namespace grapher
// LUTTextLabelY
//
this.LUTTextLabelY.AutoSize = true;
- this.LUTTextLabelY.Location = new System.Drawing.Point(266, 350);
+ this.LUTTextLabelY.Location = new System.Drawing.Point(266, 377);
this.LUTTextLabelY.Name = "LUTTextLabelY";
this.LUTTextLabelY.Size = new System.Drawing.Size(52, 13);
this.LUTTextLabelY.TabIndex = 153;
@@ -646,7 +1045,7 @@ namespace grapher
// LUTTextLabelX
//
this.LUTTextLabelX.AutoSize = true;
- this.LUTTextLabelX.Location = new System.Drawing.Point(38, 350);
+ this.LUTTextLabelX.Location = new System.Drawing.Point(38, 377);
this.LUTTextLabelX.Name = "LUTTextLabelX";
this.LUTTextLabelX.Size = new System.Drawing.Size(52, 13);
this.LUTTextLabelX.TabIndex = 152;
@@ -655,7 +1054,7 @@ namespace grapher
// FakeBox
//
this.FakeBox.AutoSize = true;
- this.FakeBox.Location = new System.Drawing.Point(31, 538);
+ this.FakeBox.Location = new System.Drawing.Point(31, 565);
this.FakeBox.Name = "FakeBox";
this.FakeBox.Size = new System.Drawing.Size(47, 17);
this.FakeBox.TabIndex = 151;
@@ -683,7 +1082,7 @@ namespace grapher
this.DirectionalityPanel.Controls.Add(this.DomainBoxY);
this.DirectionalityPanel.Controls.Add(this.DomainBoxX);
this.DirectionalityPanel.Controls.Add(this.DirectionalityLabel);
- this.DirectionalityPanel.Location = new System.Drawing.Point(12, 369);
+ this.DirectionalityPanel.Location = new System.Drawing.Point(12, 396);
this.DirectionalityPanel.Name = "DirectionalityPanel";
this.DirectionalityPanel.Size = new System.Drawing.Size(298, 135);
this.DirectionalityPanel.TabIndex = 150;
@@ -856,7 +1255,7 @@ namespace grapher
//
// toggleButton
//
- this.toggleButton.Location = new System.Drawing.Point(211, 534);
+ this.toggleButton.Location = new System.Drawing.Point(211, 561);
this.toggleButton.Name = "toggleButton";
this.toggleButton.Size = new System.Drawing.Size(104, 24);
this.toggleButton.TabIndex = 112;
@@ -866,7 +1265,7 @@ namespace grapher
// scaleLabelY
//
this.scaleLabelY.AutoSize = true;
- this.scaleLabelY.Location = new System.Drawing.Point(263, 333);
+ this.scaleLabelY.Location = new System.Drawing.Point(263, 360);
this.scaleLabelY.Name = "scaleLabelY";
this.scaleLabelY.Size = new System.Drawing.Size(34, 13);
this.scaleLabelY.TabIndex = 149;
@@ -875,7 +1274,7 @@ namespace grapher
// ScaleActiveYLabel
//
this.ScaleActiveYLabel.AutoSize = true;
- this.ScaleActiveYLabel.Location = new System.Drawing.Point(414, 333);
+ this.ScaleActiveYLabel.Location = new System.Drawing.Point(414, 360);
this.ScaleActiveYLabel.Name = "ScaleActiveYLabel";
this.ScaleActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.ScaleActiveYLabel.TabIndex = 148;
@@ -883,7 +1282,7 @@ namespace grapher
//
// scaleBoxY
//
- this.scaleBoxY.Location = new System.Drawing.Point(332, 330);
+ this.scaleBoxY.Location = new System.Drawing.Point(332, 357);
this.scaleBoxY.Name = "scaleBoxY";
this.scaleBoxY.Size = new System.Drawing.Size(76, 20);
this.scaleBoxY.TabIndex = 102;
@@ -891,7 +1290,7 @@ namespace grapher
// ScaleActiveXLabel
//
this.ScaleActiveXLabel.AutoSize = true;
- this.ScaleActiveXLabel.Location = new System.Drawing.Point(197, 333);
+ this.ScaleActiveXLabel.Location = new System.Drawing.Point(197, 360);
this.ScaleActiveXLabel.Name = "ScaleActiveXLabel";
this.ScaleActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.ScaleActiveXLabel.TabIndex = 147;
@@ -900,7 +1299,7 @@ namespace grapher
// scaleLabelX
//
this.scaleLabelX.AutoSize = true;
- this.scaleLabelX.Location = new System.Drawing.Point(37, 333);
+ this.scaleLabelX.Location = new System.Drawing.Point(37, 360);
this.scaleLabelX.Name = "scaleLabelX";
this.scaleLabelX.Size = new System.Drawing.Size(34, 13);
this.scaleLabelX.TabIndex = 146;
@@ -909,7 +1308,7 @@ namespace grapher
//
// scaleBoxX
//
- this.scaleBoxX.Location = new System.Drawing.Point(106, 330);
+ this.scaleBoxX.Location = new System.Drawing.Point(106, 357);
this.scaleBoxX.Name = "scaleBoxX";
this.scaleBoxX.Size = new System.Drawing.Size(76, 20);
this.scaleBoxX.TabIndex = 88;
@@ -917,7 +1316,7 @@ namespace grapher
// expLabelY
//
this.expLabelY.AutoSize = true;
- this.expLabelY.Location = new System.Drawing.Point(263, 276);
+ this.expLabelY.Location = new System.Drawing.Point(263, 303);
this.expLabelY.Name = "expLabelY";
this.expLabelY.Size = new System.Drawing.Size(52, 13);
this.expLabelY.TabIndex = 145;
@@ -926,7 +1325,7 @@ namespace grapher
// ExpActiveYLabel
//
this.ExpActiveYLabel.AutoSize = true;
- this.ExpActiveYLabel.Location = new System.Drawing.Point(414, 276);
+ this.ExpActiveYLabel.Location = new System.Drawing.Point(414, 303);
this.ExpActiveYLabel.Name = "ExpActiveYLabel";
this.ExpActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.ExpActiveYLabel.TabIndex = 144;
@@ -934,7 +1333,7 @@ namespace grapher
//
// expBoxY
//
- this.expBoxY.Location = new System.Drawing.Point(332, 273);
+ this.expBoxY.Location = new System.Drawing.Point(332, 300);
this.expBoxY.Name = "expBoxY";
this.expBoxY.Size = new System.Drawing.Size(76, 20);
this.expBoxY.TabIndex = 109;
@@ -942,7 +1341,7 @@ namespace grapher
// ExpActiveXLabel
//
this.ExpActiveXLabel.AutoSize = true;
- this.ExpActiveXLabel.Location = new System.Drawing.Point(197, 276);
+ this.ExpActiveXLabel.Location = new System.Drawing.Point(197, 303);
this.ExpActiveXLabel.Name = "ExpActiveXLabel";
this.ExpActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.ExpActiveXLabel.TabIndex = 143;
@@ -951,7 +1350,7 @@ namespace grapher
// expLabelX
//
this.expLabelX.AutoSize = true;
- this.expLabelX.Location = new System.Drawing.Point(37, 276);
+ this.expLabelX.Location = new System.Drawing.Point(37, 303);
this.expLabelX.Name = "expLabelX";
this.expLabelX.Size = new System.Drawing.Size(52, 13);
this.expLabelX.TabIndex = 142;
@@ -960,7 +1359,7 @@ namespace grapher
//
// expBoxX
//
- this.expBoxX.Location = new System.Drawing.Point(106, 273);
+ this.expBoxX.Location = new System.Drawing.Point(106, 300);
this.expBoxX.Name = "expBoxX";
this.expBoxX.Size = new System.Drawing.Size(76, 20);
this.expBoxX.TabIndex = 95;
@@ -977,7 +1376,7 @@ namespace grapher
// AccelTypeActiveLabelY
//
this.AccelTypeActiveLabelY.AutoSize = true;
- this.AccelTypeActiveLabelY.Location = new System.Drawing.Point(414, 116);
+ this.AccelTypeActiveLabelY.Location = new System.Drawing.Point(414, 143);
this.AccelTypeActiveLabelY.Name = "AccelTypeActiveLabelY";
this.AccelTypeActiveLabelY.Size = new System.Drawing.Size(66, 13);
this.AccelTypeActiveLabelY.TabIndex = 140;
@@ -986,7 +1385,7 @@ namespace grapher
// OptionSetYTitle
//
this.OptionSetYTitle.AutoSize = true;
- this.OptionSetYTitle.Location = new System.Drawing.Point(360, 97);
+ this.OptionSetYTitle.Location = new System.Drawing.Point(360, 124);
this.OptionSetYTitle.Name = "OptionSetYTitle";
this.OptionSetYTitle.Size = new System.Drawing.Size(14, 13);
this.OptionSetYTitle.TabIndex = 139;
@@ -995,7 +1394,7 @@ namespace grapher
// OptionSetXTitle
//
this.OptionSetXTitle.AutoSize = true;
- this.OptionSetXTitle.Location = new System.Drawing.Point(143, 97);
+ this.OptionSetXTitle.Location = new System.Drawing.Point(143, 124);
this.OptionSetXTitle.Name = "OptionSetXTitle";
this.OptionSetXTitle.Size = new System.Drawing.Size(14, 13);
this.OptionSetXTitle.TabIndex = 138;
@@ -1004,7 +1403,7 @@ namespace grapher
// constantThreeLabelY
//
this.constantThreeLabelY.AutoSize = true;
- this.constantThreeLabelY.Location = new System.Drawing.Point(263, 303);
+ this.constantThreeLabelY.Location = new System.Drawing.Point(263, 330);
this.constantThreeLabelY.Name = "constantThreeLabelY";
this.constantThreeLabelY.Size = new System.Drawing.Size(47, 13);
this.constantThreeLabelY.TabIndex = 137;
@@ -1013,43 +1412,61 @@ namespace grapher
// limitLabelY
//
this.limitLabelY.AutoSize = true;
- this.limitLabelY.Location = new System.Drawing.Point(263, 247);
+ this.limitLabelY.Location = new System.Drawing.Point(263, 274);
this.limitLabelY.Name = "limitLabelY";
this.limitLabelY.Size = new System.Drawing.Size(28, 13);
this.limitLabelY.TabIndex = 136;
this.limitLabelY.Text = "Limit";
//
- // offsetLabelY
+ // inputJumpLabelY
+ //
+ this.inputJumpLabelY.AutoSize = true;
+ this.inputJumpLabelY.Location = new System.Drawing.Point(263, 248);
+ this.inputJumpLabelY.Name = "inputJumpLabelY";
+ this.inputJumpLabelY.Size = new System.Drawing.Size(31, 13);
+ this.inputJumpLabelY.TabIndex = 135;
+ this.inputJumpLabelY.Text = "Input";
+ //
+ // outputJumpLabelY
//
- this.offsetLabelY.AutoSize = true;
- this.offsetLabelY.Location = new System.Drawing.Point(263, 221);
- this.offsetLabelY.Name = "offsetLabelY";
- this.offsetLabelY.Size = new System.Drawing.Size(35, 13);
- this.offsetLabelY.TabIndex = 135;
- this.offsetLabelY.Text = "Offset";
+ this.outputJumpLabelY.AutoSize = true;
+ this.outputJumpLabelY.Location = new System.Drawing.Point(263, 248);
+ this.outputJumpLabelY.Name = "outputJumpLabelY";
+ this.outputJumpLabelY.Size = new System.Drawing.Size(39, 13);
+ this.outputJumpLabelY.TabIndex = 135;
+ this.outputJumpLabelY.Text = "Output";
//
- // weightLabelY
+ // inputOffsetLabelY
//
- this.weightLabelY.AutoSize = true;
- this.weightLabelY.Location = new System.Drawing.Point(263, 195);
- this.weightLabelY.Name = "weightLabelY";
- this.weightLabelY.Size = new System.Drawing.Size(41, 13);
- this.weightLabelY.TabIndex = 134;
- this.weightLabelY.Text = "Weight";
+ this.inputOffsetLabelY.AutoSize = true;
+ this.inputOffsetLabelY.Location = new System.Drawing.Point(263, 248);
+ this.inputOffsetLabelY.Name = "inputOffsetLabelY";
+ this.inputOffsetLabelY.Size = new System.Drawing.Size(62, 13);
+ this.inputOffsetLabelY.TabIndex = 135;
+ this.inputOffsetLabelY.Text = "Input Offset";
//
- // capLabelY
+ // outputOffsetLabelY
//
- this.capLabelY.AutoSize = true;
- this.capLabelY.Location = new System.Drawing.Point(263, 169);
- this.capLabelY.Name = "capLabelY";
- this.capLabelY.Size = new System.Drawing.Size(26, 13);
- this.capLabelY.TabIndex = 133;
- this.capLabelY.Text = "Cap";
+ this.outputOffsetLabelY.AutoSize = true;
+ this.outputOffsetLabelY.Location = new System.Drawing.Point(263, 248);
+ this.outputOffsetLabelY.Name = "outputOffsetLabelY";
+ this.outputOffsetLabelY.Size = new System.Drawing.Size(70, 13);
+ this.outputOffsetLabelY.TabIndex = 135;
+ this.outputOffsetLabelY.Text = "Output Offset";
+ //
+ // inCapLabelYClassic
+ //
+ this.inCapLabelYClassic.AutoSize = true;
+ this.inCapLabelYClassic.Location = new System.Drawing.Point(263, 196);
+ this.inCapLabelYClassic.Name = "inCapLabelYClassic";
+ this.inCapLabelYClassic.Size = new System.Drawing.Size(56, 13);
+ this.inCapLabelYClassic.TabIndex = 133;
+ this.inCapLabelYClassic.Text = "Cap: Input";
//
// constantOneLabelY
//
this.constantOneLabelY.AutoSize = true;
- this.constantOneLabelY.Location = new System.Drawing.Point(263, 143);
+ this.constantOneLabelY.Location = new System.Drawing.Point(263, 170);
this.constantOneLabelY.Name = "constantOneLabelY";
this.constantOneLabelY.Size = new System.Drawing.Size(66, 13);
this.constantOneLabelY.TabIndex = 132;
@@ -1060,7 +1477,7 @@ namespace grapher
this.ByComponentXYLock.AutoSize = true;
this.ByComponentXYLock.Checked = true;
this.ByComponentXYLock.CheckState = System.Windows.Forms.CheckState.Checked;
- this.ByComponentXYLock.Location = new System.Drawing.Point(283, 96);
+ this.ByComponentXYLock.Location = new System.Drawing.Point(283, 123);
this.ByComponentXYLock.Name = "ByComponentXYLock";
this.ByComponentXYLock.Size = new System.Drawing.Size(15, 14);
this.ByComponentXYLock.TabIndex = 98;
@@ -1069,7 +1486,7 @@ namespace grapher
// MidpointActiveYLabel
//
this.MidpointActiveYLabel.AutoSize = true;
- this.MidpointActiveYLabel.Location = new System.Drawing.Point(414, 303);
+ this.MidpointActiveYLabel.Location = new System.Drawing.Point(414, 330);
this.MidpointActiveYLabel.Name = "MidpointActiveYLabel";
this.MidpointActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.MidpointActiveYLabel.TabIndex = 131;
@@ -1078,25 +1495,52 @@ namespace grapher
// LimitActiveYLabel
//
this.LimitActiveYLabel.AutoSize = true;
- this.LimitActiveYLabel.Location = new System.Drawing.Point(414, 247);
+ this.LimitActiveYLabel.Location = new System.Drawing.Point(414, 274);
this.LimitActiveYLabel.Name = "LimitActiveYLabel";
this.LimitActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.LimitActiveYLabel.TabIndex = 130;
this.LimitActiveYLabel.Text = "0";
//
- // OffsetActiveYLabel
+ // InputJumpActiveYLabel
+ //
+ this.InputJumpActiveYLabel.AutoSize = true;
+ this.InputJumpActiveYLabel.Location = new System.Drawing.Point(414, 248);
+ this.InputJumpActiveYLabel.Name = "InputJumpActiveYLabel";
+ this.InputJumpActiveYLabel.Size = new System.Drawing.Size(13, 13);
+ this.InputJumpActiveYLabel.TabIndex = 129;
+ this.InputJumpActiveYLabel.Text = "0";
+ //
+ // OutputJumpActiveYLabel
//
- this.OffsetActiveYLabel.AutoSize = true;
- this.OffsetActiveYLabel.Location = new System.Drawing.Point(414, 221);
- this.OffsetActiveYLabel.Name = "OffsetActiveYLabel";
- this.OffsetActiveYLabel.Size = new System.Drawing.Size(13, 13);
- this.OffsetActiveYLabel.TabIndex = 129;
- this.OffsetActiveYLabel.Text = "0";
+ this.OutputJumpActiveYLabel.AutoSize = true;
+ this.OutputJumpActiveYLabel.Location = new System.Drawing.Point(414, 248);
+ this.OutputJumpActiveYLabel.Name = "OutputJumpActiveYLabel";
+ this.OutputJumpActiveYLabel.Size = new System.Drawing.Size(13, 13);
+ this.OutputJumpActiveYLabel.TabIndex = 129;
+ this.OutputJumpActiveYLabel.Text = "0";
+ //
+ // InputOffsetActiveYLabel
+ //
+ this.InputOffsetActiveYLabel.AutoSize = true;
+ this.InputOffsetActiveYLabel.Location = new System.Drawing.Point(414, 248);
+ this.InputOffsetActiveYLabel.Name = "InputOffsetActiveYLabel";
+ this.InputOffsetActiveYLabel.Size = new System.Drawing.Size(13, 13);
+ this.InputOffsetActiveYLabel.TabIndex = 129;
+ this.InputOffsetActiveYLabel.Text = "0";
+ //
+ // OutputOffsetActiveYLabel
+ //
+ this.OutputOffsetActiveYLabel.AutoSize = true;
+ this.OutputOffsetActiveYLabel.Location = new System.Drawing.Point(414, 248);
+ this.OutputOffsetActiveYLabel.Name = "OutputOffsetActiveYLabel";
+ this.OutputOffsetActiveYLabel.Size = new System.Drawing.Size(13, 13);
+ this.OutputOffsetActiveYLabel.TabIndex = 129;
+ this.OutputOffsetActiveYLabel.Text = "0";
//
// AccelerationActiveLabelY
//
this.AccelerationActiveLabelY.AutoSize = true;
- this.AccelerationActiveLabelY.Location = new System.Drawing.Point(414, 143);
+ this.AccelerationActiveLabelY.Location = new System.Drawing.Point(414, 170);
this.AccelerationActiveLabelY.Name = "AccelerationActiveLabelY";
this.AccelerationActiveLabelY.Size = new System.Drawing.Size(13, 13);
this.AccelerationActiveLabelY.TabIndex = 128;
@@ -1105,7 +1549,7 @@ namespace grapher
// accelTypeDropY
//
this.accelTypeDropY.FormattingEnabled = true;
- this.accelTypeDropY.Location = new System.Drawing.Point(332, 113);
+ this.accelTypeDropY.Location = new System.Drawing.Point(332, 138);
this.accelTypeDropY.Name = "accelTypeDropY";
this.accelTypeDropY.Size = new System.Drawing.Size(76, 21);
this.accelTypeDropY.TabIndex = 99;
@@ -1113,28 +1557,49 @@ namespace grapher
//
// midpointBoxY
//
- this.midpointBoxY.Location = new System.Drawing.Point(332, 300);
+ this.midpointBoxY.Location = new System.Drawing.Point(332, 327);
this.midpointBoxY.Name = "midpointBoxY";
this.midpointBoxY.Size = new System.Drawing.Size(76, 20);
this.midpointBoxY.TabIndex = 110;
//
// limitBoxY
//
- this.limitBoxY.Location = new System.Drawing.Point(332, 244);
+ this.limitBoxY.Location = new System.Drawing.Point(332, 271);
this.limitBoxY.Name = "limitBoxY";
this.limitBoxY.Size = new System.Drawing.Size(76, 20);
this.limitBoxY.TabIndex = 108;
//
- // offsetBoxY
+ // inputJumpBoxY
+ //
+ this.inputJumpBoxY.Location = new System.Drawing.Point(332, 245);
+ this.inputJumpBoxY.Name = "inputJumpBoxY";
+ this.inputJumpBoxY.Size = new System.Drawing.Size(76, 20);
+ this.inputJumpBoxY.TabIndex = 106;
+ //
+ // outputJumpBoxY
+ //
+ this.outputJumpBoxY.Location = new System.Drawing.Point(332, 245);
+ this.outputJumpBoxY.Name = "outputJumpBoxY";
+ this.outputJumpBoxY.Size = new System.Drawing.Size(76, 20);
+ this.outputJumpBoxY.TabIndex = 106;
+ //
+ // inputOffsetBoxY
+ //
+ this.inputOffsetBoxY.Location = new System.Drawing.Point(332, 245);
+ this.inputOffsetBoxY.Name = "inputOffsetBoxY";
+ this.inputOffsetBoxY.Size = new System.Drawing.Size(76, 20);
+ this.inputOffsetBoxY.TabIndex = 106;
+ //
+ // outputOffsetBoxY
//
- this.offsetBoxY.Location = new System.Drawing.Point(332, 218);
- this.offsetBoxY.Name = "offsetBoxY";
- this.offsetBoxY.Size = new System.Drawing.Size(76, 20);
- this.offsetBoxY.TabIndex = 106;
+ this.outputOffsetBoxY.Location = new System.Drawing.Point(332, 245);
+ this.outputOffsetBoxY.Name = "outputOffsetBoxY";
+ this.outputOffsetBoxY.Size = new System.Drawing.Size(76, 20);
+ this.outputOffsetBoxY.TabIndex = 106;
//
// accelerationBoxY
//
- this.accelerationBoxY.Location = new System.Drawing.Point(332, 140);
+ this.accelerationBoxY.Location = new System.Drawing.Point(332, 167);
this.accelerationBoxY.Name = "accelerationBoxY";
this.accelerationBoxY.Size = new System.Drawing.Size(76, 20);
this.accelerationBoxY.TabIndex = 100;
@@ -1142,7 +1607,7 @@ namespace grapher
// MidpointActiveXLabel
//
this.MidpointActiveXLabel.AutoSize = true;
- this.MidpointActiveXLabel.Location = new System.Drawing.Point(197, 303);
+ this.MidpointActiveXLabel.Location = new System.Drawing.Point(197, 330);
this.MidpointActiveXLabel.Name = "MidpointActiveXLabel";
this.MidpointActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.MidpointActiveXLabel.TabIndex = 127;
@@ -1151,61 +1616,70 @@ namespace grapher
// LimitActiveXLabel
//
this.LimitActiveXLabel.AutoSize = true;
- this.LimitActiveXLabel.Location = new System.Drawing.Point(197, 247);
+ this.LimitActiveXLabel.Location = new System.Drawing.Point(197, 274);
this.LimitActiveXLabel.Name = "LimitActiveXLabel";
this.LimitActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.LimitActiveXLabel.TabIndex = 126;
this.LimitActiveXLabel.Text = "0";
//
- // OffsetActiveXLabel
+ // InputJumpActiveXLabel
//
- this.OffsetActiveXLabel.AutoSize = true;
- this.OffsetActiveXLabel.Location = new System.Drawing.Point(197, 221);
- this.OffsetActiveXLabel.Name = "OffsetActiveXLabel";
- this.OffsetActiveXLabel.Size = new System.Drawing.Size(13, 13);
- this.OffsetActiveXLabel.TabIndex = 125;
- this.OffsetActiveXLabel.Text = "0";
+ this.InputJumpActiveXLabel.AutoSize = true;
+ this.InputJumpActiveXLabel.Location = new System.Drawing.Point(197, 248);
+ this.InputJumpActiveXLabel.Name = "InputJumpActiveXLabel";
+ this.InputJumpActiveXLabel.Size = new System.Drawing.Size(13, 13);
+ this.InputJumpActiveXLabel.TabIndex = 125;
+ this.InputJumpActiveXLabel.Text = "0";
//
- // CapActiveYLabel
+ // OutputJumpActiveXLabel
//
- this.CapActiveYLabel.AutoSize = true;
- this.CapActiveYLabel.Location = new System.Drawing.Point(414, 169);
- this.CapActiveYLabel.Name = "CapActiveYLabel";
- this.CapActiveYLabel.Size = new System.Drawing.Size(13, 13);
- this.CapActiveYLabel.TabIndex = 124;
- this.CapActiveYLabel.Text = "0";
+ this.OutputJumpActiveXLabel.AutoSize = true;
+ this.OutputJumpActiveXLabel.Location = new System.Drawing.Point(197, 248);
+ this.OutputJumpActiveXLabel.Name = "OutputJumpActiveXLabel";
+ this.OutputJumpActiveXLabel.Size = new System.Drawing.Size(13, 13);
+ this.OutputJumpActiveXLabel.TabIndex = 125;
+ this.OutputJumpActiveXLabel.Text = "0";
//
- // WeightActiveYLabel
+ // InputOffsetActiveXLabel
//
- this.WeightActiveYLabel.AutoSize = true;
- this.WeightActiveYLabel.Location = new System.Drawing.Point(414, 195);
- this.WeightActiveYLabel.Name = "WeightActiveYLabel";
- this.WeightActiveYLabel.Size = new System.Drawing.Size(13, 13);
- this.WeightActiveYLabel.TabIndex = 123;
- this.WeightActiveYLabel.Text = "0";
+ this.InputOffsetActiveXLabel.AutoSize = true;
+ this.InputOffsetActiveXLabel.Location = new System.Drawing.Point(197, 248);
+ this.InputOffsetActiveXLabel.Name = "InputOffsetActiveXLabel";
+ this.InputOffsetActiveXLabel.Size = new System.Drawing.Size(13, 13);
+ this.InputOffsetActiveXLabel.TabIndex = 125;
+ this.InputOffsetActiveXLabel.Text = "0";
//
- // WeightActiveXLabel
+ // OutputOffsetActiveXLabel
//
- this.WeightActiveXLabel.AutoSize = true;
- this.WeightActiveXLabel.Location = new System.Drawing.Point(197, 195);
- this.WeightActiveXLabel.Name = "WeightActiveXLabel";
- this.WeightActiveXLabel.Size = new System.Drawing.Size(13, 13);
- this.WeightActiveXLabel.TabIndex = 122;
- this.WeightActiveXLabel.Text = "0";
+ this.OutputOffsetActiveXLabel.AutoSize = true;
+ this.OutputOffsetActiveXLabel.Location = new System.Drawing.Point(197, 248);
+ this.OutputOffsetActiveXLabel.Name = "OutputOffsetActiveXLabel";
+ this.OutputOffsetActiveXLabel.Size = new System.Drawing.Size(13, 13);
+ this.OutputOffsetActiveXLabel.TabIndex = 125;
+ this.OutputOffsetActiveXLabel.Text = "0";
//
- // CapActiveXLabel
+ // InCapActiveYLabelClassic
//
- this.CapActiveXLabel.AutoSize = true;
- this.CapActiveXLabel.Location = new System.Drawing.Point(197, 169);
- this.CapActiveXLabel.Name = "CapActiveXLabel";
- this.CapActiveXLabel.Size = new System.Drawing.Size(13, 13);
- this.CapActiveXLabel.TabIndex = 121;
- this.CapActiveXLabel.Text = "0";
+ this.InCapActiveYLabelClassic.AutoSize = true;
+ this.InCapActiveYLabelClassic.Location = new System.Drawing.Point(414, 196);
+ this.InCapActiveYLabelClassic.Name = "InCapActiveYLabelClassic";
+ this.InCapActiveYLabelClassic.Size = new System.Drawing.Size(13, 13);
+ this.InCapActiveYLabelClassic.TabIndex = 124;
+ this.InCapActiveYLabelClassic.Text = "0";
+ //
+ // InCapActiveXLabelClassic
+ //
+ this.InCapActiveXLabelClassic.AutoSize = true;
+ this.InCapActiveXLabelClassic.Location = new System.Drawing.Point(197, 196);
+ this.InCapActiveXLabelClassic.Name = "InCapActiveXLabelClassic";
+ this.InCapActiveXLabelClassic.Size = new System.Drawing.Size(13, 13);
+ this.InCapActiveXLabelClassic.TabIndex = 121;
+ this.InCapActiveXLabelClassic.Text = "0";
//
// AccelerationActiveLabelX
//
this.AccelerationActiveLabelX.AutoSize = true;
- this.AccelerationActiveLabelX.Location = new System.Drawing.Point(197, 143);
+ this.AccelerationActiveLabelX.Location = new System.Drawing.Point(197, 170);
this.AccelerationActiveLabelX.Name = "AccelerationActiveLabelX";
this.AccelerationActiveLabelX.Size = new System.Drawing.Size(13, 13);
this.AccelerationActiveLabelX.TabIndex = 120;
@@ -1214,7 +1688,7 @@ namespace grapher
// AccelTypeActiveLabelX
//
this.AccelTypeActiveLabelX.AutoSize = true;
- this.AccelTypeActiveLabelX.Location = new System.Drawing.Point(197, 116);
+ this.AccelTypeActiveLabelX.Location = new System.Drawing.Point(197, 143);
this.AccelTypeActiveLabelX.Name = "AccelTypeActiveLabelX";
this.AccelTypeActiveLabelX.Size = new System.Drawing.Size(66, 13);
this.AccelTypeActiveLabelX.TabIndex = 119;
@@ -1223,29 +1697,29 @@ namespace grapher
// RotationActiveLabel
//
this.RotationActiveLabel.AutoSize = true;
- this.RotationActiveLabel.Location = new System.Drawing.Point(197, 78);
+ this.RotationActiveLabel.Location = new System.Drawing.Point(197, 105);
this.RotationActiveLabel.Name = "RotationActiveLabel";
this.RotationActiveLabel.Size = new System.Drawing.Size(13, 13);
this.RotationActiveLabel.TabIndex = 118;
this.RotationActiveLabel.Text = "0";
//
- // SensitivityActiveYLabel
+ // VertHorzRatioActiveLabel
//
- this.SensitivityActiveYLabel.AutoSize = true;
- this.SensitivityActiveYLabel.Location = new System.Drawing.Point(217, 52);
- this.SensitivityActiveYLabel.Name = "SensitivityActiveYLabel";
- this.SensitivityActiveYLabel.Size = new System.Drawing.Size(14, 13);
- this.SensitivityActiveYLabel.TabIndex = 117;
- this.SensitivityActiveYLabel.Text = "Y";
+ this.VertHorzRatioActiveLabel.AutoSize = true;
+ this.VertHorzRatioActiveLabel.Location = new System.Drawing.Point(196, 76);
+ this.VertHorzRatioActiveLabel.Name = "VertHorzRatioActiveLabel";
+ this.VertHorzRatioActiveLabel.Size = new System.Drawing.Size(13, 13);
+ this.VertHorzRatioActiveLabel.TabIndex = 117;
+ this.VertHorzRatioActiveLabel.Text = "0";
//
- // SensitivityActiveXLabel
+ // SensitivityMultiplierActiveLabel
//
- this.SensitivityActiveXLabel.AutoSize = true;
- this.SensitivityActiveXLabel.Location = new System.Drawing.Point(188, 52);
- this.SensitivityActiveXLabel.Name = "SensitivityActiveXLabel";
- this.SensitivityActiveXLabel.Size = new System.Drawing.Size(14, 13);
- this.SensitivityActiveXLabel.TabIndex = 116;
- this.SensitivityActiveXLabel.Text = "X";
+ this.SensitivityMultiplierActiveLabel.AutoSize = true;
+ this.SensitivityMultiplierActiveLabel.Location = new System.Drawing.Point(195, 52);
+ this.SensitivityMultiplierActiveLabel.Name = "SensitivityMultiplierActiveLabel";
+ this.SensitivityMultiplierActiveLabel.Size = new System.Drawing.Size(13, 13);
+ this.SensitivityMultiplierActiveLabel.TabIndex = 116;
+ this.SensitivityMultiplierActiveLabel.Text = "0";
//
// ActiveValueTitle
//
@@ -1279,57 +1753,108 @@ namespace grapher
this.sensXYLock.AutoSize = true;
this.sensXYLock.Checked = true;
this.sensXYLock.CheckState = System.Windows.Forms.CheckState.Checked;
- this.sensXYLock.Location = new System.Drawing.Point(283, 49);
+ this.sensXYLock.Location = new System.Drawing.Point(282, 75);
this.sensXYLock.Name = "sensXYLock";
this.sensXYLock.Size = new System.Drawing.Size(15, 14);
this.sensXYLock.TabIndex = 82;
this.sensXYLock.UseVisualStyleBackColor = true;
//
- // capBoxY
+ // inCapBoxYClassic
//
- this.capBoxY.Location = new System.Drawing.Point(332, 166);
- this.capBoxY.Name = "capBoxY";
- this.capBoxY.Size = new System.Drawing.Size(76, 20);
- this.capBoxY.TabIndex = 103;
+ this.inCapBoxYClassic.Location = new System.Drawing.Point(332, 193);
+ this.inCapBoxYClassic.Name = "inCapBoxYClassic";
+ this.inCapBoxYClassic.Size = new System.Drawing.Size(76, 20);
+ this.inCapBoxYClassic.TabIndex = 103;
//
- // sensitivityBoxY
+ // VertHorzRatioBox
//
- this.sensitivityBoxY.Location = new System.Drawing.Point(148, 49);
- this.sensitivityBoxY.Name = "sensitivityBoxY";
- this.sensitivityBoxY.Size = new System.Drawing.Size(34, 20);
- this.sensitivityBoxY.TabIndex = 81;
+ this.VertHorzRatioBox.Location = new System.Drawing.Point(106, 76);
+ this.VertHorzRatioBox.Name = "VertHorzRatioBox";
+ this.VertHorzRatioBox.Size = new System.Drawing.Size(76, 20);
+ this.VertHorzRatioBox.TabIndex = 81;
//
// writeButton
//
this.writeButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F);
- this.writeButton.Location = new System.Drawing.Point(90, 527);
+ this.writeButton.Location = new System.Drawing.Point(90, 554);
this.writeButton.Name = "writeButton";
this.writeButton.Size = new System.Drawing.Size(92, 35);
this.writeButton.TabIndex = 111;
this.writeButton.Text = "Apply";
this.writeButton.UseVisualStyleBackColor = true;
//
- // offsetLabelX
+ // inputJumpLabelX
+ //
+ this.inputJumpLabelX.AutoSize = true;
+ this.inputJumpLabelX.Location = new System.Drawing.Point(37, 248);
+ this.inputJumpLabelX.Name = "inputJumpLabelX";
+ this.inputJumpLabelX.Size = new System.Drawing.Size(59, 13);
+ this.inputJumpLabelX.TabIndex = 107;
+ this.inputJumpLabelX.Text = "Input Jump";
+ this.inputJumpLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // outputJumpLabelX
+ //
+ this.outputJumpLabelX.AutoSize = true;
+ this.outputJumpLabelX.Location = new System.Drawing.Point(37, 248);
+ this.outputJumpLabelX.Name = "outputJumpLabelX";
+ this.outputJumpLabelX.Size = new System.Drawing.Size(67, 13);
+ this.outputJumpLabelX.TabIndex = 107;
+ this.outputJumpLabelX.Text = "Output Jump";
+ this.outputJumpLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // inputJumpBoxX
+ //
+ this.inputJumpBoxX.Location = new System.Drawing.Point(106, 245);
+ this.inputJumpBoxX.Name = "inputJumpBoxX";
+ this.inputJumpBoxX.Size = new System.Drawing.Size(76, 20);
+ this.inputJumpBoxX.TabIndex = 92;
+ //
+ // outputJumpBoxX
+ //
+ this.outputJumpBoxX.Location = new System.Drawing.Point(106, 245);
+ this.outputJumpBoxX.Name = "outputJumpBoxX";
+ this.outputJumpBoxX.Size = new System.Drawing.Size(76, 20);
+ this.outputJumpBoxX.TabIndex = 92;
//
- this.offsetLabelX.AutoSize = true;
- this.offsetLabelX.Location = new System.Drawing.Point(37, 221);
- this.offsetLabelX.Name = "offsetLabelX";
- this.offsetLabelX.Size = new System.Drawing.Size(35, 13);
- this.offsetLabelX.TabIndex = 107;
- this.offsetLabelX.Text = "Offset";
- this.offsetLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ // inputOffsetLabelX
//
- // offsetBoxX
+ this.inputOffsetLabelX.AutoSize = true;
+ this.inputOffsetLabelX.Location = new System.Drawing.Point(37, 248);
+ this.inputOffsetLabelX.Name = "inputOffsetLabelX";
+ this.inputOffsetLabelX.Size = new System.Drawing.Size(62, 13);
+ this.inputOffsetLabelX.TabIndex = 107;
+ this.inputOffsetLabelX.Text = "Input Offset";
+ this.inputOffsetLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
- this.offsetBoxX.Location = new System.Drawing.Point(106, 218);
- this.offsetBoxX.Name = "offsetBoxX";
- this.offsetBoxX.Size = new System.Drawing.Size(76, 20);
- this.offsetBoxX.TabIndex = 92;
+ // outputOffsetLabelX
+ //
+ this.outputOffsetLabelX.AutoSize = true;
+ this.outputOffsetLabelX.Location = new System.Drawing.Point(37, 248);
+ this.outputOffsetLabelX.Name = "outputOffsetLabelX";
+ this.outputOffsetLabelX.Size = new System.Drawing.Size(70, 13);
+ this.outputOffsetLabelX.TabIndex = 107;
+ this.outputOffsetLabelX.Text = "Output Offset";
+ this.outputOffsetLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // inputOffsetBoxX
+ //
+ this.inputOffsetBoxX.Location = new System.Drawing.Point(106, 245);
+ this.inputOffsetBoxX.Name = "inputOffsetBoxX";
+ this.inputOffsetBoxX.Size = new System.Drawing.Size(76, 20);
+ this.inputOffsetBoxX.TabIndex = 92;
+ //
+ // outputOffsetBoxX
+ //
+ this.outputOffsetBoxX.Location = new System.Drawing.Point(106, 245);
+ this.outputOffsetBoxX.Name = "outputOffsetBoxX";
+ this.outputOffsetBoxX.Size = new System.Drawing.Size(76, 20);
+ this.outputOffsetBoxX.TabIndex = 92;
//
// constantThreeLabelX
//
this.constantThreeLabelX.AutoSize = true;
- this.constantThreeLabelX.Location = new System.Drawing.Point(37, 303);
+ this.constantThreeLabelX.Location = new System.Drawing.Point(37, 330);
this.constantThreeLabelX.Name = "constantThreeLabelX";
this.constantThreeLabelX.Size = new System.Drawing.Size(47, 13);
this.constantThreeLabelX.TabIndex = 105;
@@ -1338,7 +1863,7 @@ namespace grapher
//
// midpointBoxX
//
- this.midpointBoxX.Location = new System.Drawing.Point(106, 300);
+ this.midpointBoxX.Location = new System.Drawing.Point(106, 327);
this.midpointBoxX.Name = "midpointBoxX";
this.midpointBoxX.Size = new System.Drawing.Size(76, 20);
this.midpointBoxX.TabIndex = 96;
@@ -1346,7 +1871,7 @@ namespace grapher
// limitLabelX
//
this.limitLabelX.AutoSize = true;
- this.limitLabelX.Location = new System.Drawing.Point(37, 247);
+ this.limitLabelX.Location = new System.Drawing.Point(37, 274);
this.limitLabelX.Name = "limitLabelX";
this.limitLabelX.Size = new System.Drawing.Size(28, 13);
this.limitLabelX.TabIndex = 101;
@@ -1355,56 +1880,32 @@ namespace grapher
//
// limitBoxX
//
- this.limitBoxX.Location = new System.Drawing.Point(106, 244);
+ this.limitBoxX.Location = new System.Drawing.Point(106, 271);
this.limitBoxX.Name = "limitBoxX";
this.limitBoxX.Size = new System.Drawing.Size(76, 20);
this.limitBoxX.TabIndex = 93;
//
- // weightBoxY
- //
- this.weightBoxY.Location = new System.Drawing.Point(332, 192);
- this.weightBoxY.Name = "weightBoxY";
- this.weightBoxY.Size = new System.Drawing.Size(76, 20);
- this.weightBoxY.TabIndex = 104;
- //
- // weightLabelX
- //
- this.weightLabelX.AutoSize = true;
- this.weightLabelX.Location = new System.Drawing.Point(37, 195);
- this.weightLabelX.Name = "weightLabelX";
- this.weightLabelX.Size = new System.Drawing.Size(41, 13);
- this.weightLabelX.TabIndex = 97;
- this.weightLabelX.Text = "Weight";
- this.weightLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
- //
- // weightBoxX
+ // inCapLabelXClassic
//
- this.weightBoxX.Location = new System.Drawing.Point(106, 192);
- this.weightBoxX.Name = "weightBoxX";
- this.weightBoxX.Size = new System.Drawing.Size(76, 20);
- this.weightBoxX.TabIndex = 90;
+ this.inCapLabelXClassic.AutoSize = true;
+ this.inCapLabelXClassic.Location = new System.Drawing.Point(37, 196);
+ this.inCapLabelXClassic.Name = "inCapLabelXClassic";
+ this.inCapLabelXClassic.Size = new System.Drawing.Size(56, 13);
+ this.inCapLabelXClassic.TabIndex = 94;
+ this.inCapLabelXClassic.Text = "Cap: Input";
+ this.inCapLabelXClassic.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
- // capLabelX
+ // inCapBoxXClassic
//
- this.capLabelX.AutoSize = true;
- this.capLabelX.Location = new System.Drawing.Point(37, 169);
- this.capLabelX.Name = "capLabelX";
- this.capLabelX.Size = new System.Drawing.Size(26, 13);
- this.capLabelX.TabIndex = 94;
- this.capLabelX.Text = "Cap";
- this.capLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // capBoxX
- //
- this.capBoxX.Location = new System.Drawing.Point(106, 166);
- this.capBoxX.Name = "capBoxX";
- this.capBoxX.Size = new System.Drawing.Size(76, 20);
- this.capBoxX.TabIndex = 89;
+ this.inCapBoxXClassic.Location = new System.Drawing.Point(106, 193);
+ this.inCapBoxXClassic.Name = "inCapBoxXClassic";
+ this.inCapBoxXClassic.Size = new System.Drawing.Size(76, 20);
+ this.inCapBoxXClassic.TabIndex = 89;
//
// constantOneLabelX
//
this.constantOneLabelX.AutoSize = true;
- this.constantOneLabelX.Location = new System.Drawing.Point(37, 143);
+ this.constantOneLabelX.Location = new System.Drawing.Point(37, 170);
this.constantOneLabelX.Name = "constantOneLabelX";
this.constantOneLabelX.Size = new System.Drawing.Size(66, 13);
this.constantOneLabelX.TabIndex = 91;
@@ -1413,7 +1914,7 @@ namespace grapher
//
// accelerationBoxX
//
- this.accelerationBoxX.Location = new System.Drawing.Point(106, 140);
+ this.accelerationBoxX.Location = new System.Drawing.Point(106, 167);
this.accelerationBoxX.Name = "accelerationBoxX";
this.accelerationBoxX.Size = new System.Drawing.Size(76, 20);
this.accelerationBoxX.TabIndex = 86;
@@ -1421,7 +1922,7 @@ namespace grapher
// rotationLabel
//
this.rotationLabel.AutoSize = true;
- this.rotationLabel.Location = new System.Drawing.Point(35, 78);
+ this.rotationLabel.Location = new System.Drawing.Point(35, 105);
this.rotationLabel.Name = "rotationLabel";
this.rotationLabel.Size = new System.Drawing.Size(47, 13);
this.rotationLabel.TabIndex = 87;
@@ -1429,7 +1930,7 @@ namespace grapher
//
// rotationBox
//
- this.rotationBox.Location = new System.Drawing.Point(106, 75);
+ this.rotationBox.Location = new System.Drawing.Point(106, 102);
this.rotationBox.Name = "rotationBox";
this.rotationBox.Size = new System.Drawing.Size(76, 20);
this.rotationBox.TabIndex = 83;
@@ -1447,13 +1948,13 @@ namespace grapher
//
this.sensitivityBoxX.Location = new System.Drawing.Point(106, 49);
this.sensitivityBoxX.Name = "sensitivityBoxX";
- this.sensitivityBoxX.Size = new System.Drawing.Size(34, 20);
+ this.sensitivityBoxX.Size = new System.Drawing.Size(76, 20);
this.sensitivityBoxX.TabIndex = 80;
//
// accelTypeDropX
//
this.accelTypeDropX.FormattingEnabled = true;
- this.accelTypeDropX.Location = new System.Drawing.Point(106, 113);
+ this.accelTypeDropX.Location = new System.Drawing.Point(106, 138);
this.accelTypeDropX.Name = "accelTypeDropX";
this.accelTypeDropX.Size = new System.Drawing.Size(76, 21);
this.accelTypeDropX.TabIndex = 84;
@@ -1554,7 +2055,7 @@ namespace grapher
//
this.advancedToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.AutoWriteMenuItem,
- this.UseSpecificDeviceMenuItem});
+ this.DeviceMenuItem});
this.advancedToolStripMenuItem.Name = "advancedToolStripMenuItem";
this.advancedToolStripMenuItem.Size = new System.Drawing.Size(72, 20);
this.advancedToolStripMenuItem.Text = "Advanced";
@@ -1565,14 +2066,14 @@ namespace grapher
this.AutoWriteMenuItem.CheckOnClick = true;
this.AutoWriteMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.AutoWriteMenuItem.Name = "AutoWriteMenuItem";
- this.AutoWriteMenuItem.Size = new System.Drawing.Size(210, 22);
- this.AutoWriteMenuItem.Text = "Apply Settings On Startup";
+ this.AutoWriteMenuItem.Size = new System.Drawing.Size(257, 22);
+ this.AutoWriteMenuItem.Text = "Apply Settings.json On GUI Startup";
//
- // UseSpecificDeviceMenuItem
+ // DeviceMenuItem
//
- this.UseSpecificDeviceMenuItem.Name = "UseSpecificDeviceMenuItem";
- this.UseSpecificDeviceMenuItem.Size = new System.Drawing.Size(210, 22);
- this.UseSpecificDeviceMenuItem.Text = "Use Specific Device";
+ this.DeviceMenuItem.Name = "DeviceMenuItem";
+ this.DeviceMenuItem.Size = new System.Drawing.Size(257, 22);
+ this.DeviceMenuItem.Text = "Device Menu";
//
// chartsPanel
//
@@ -1826,56 +2327,6 @@ namespace grapher
title6.Text = "Sensitivity";
this.AccelerationChart.Titles.Add(title6);
//
- // smoothBoxX
- //
- this.smoothBoxX.Location = new System.Drawing.Point(106, 672);
- this.smoothBoxX.Name = "smoothBoxX";
- this.smoothBoxX.Size = new System.Drawing.Size(76, 20);
- this.smoothBoxX.TabIndex = 188;
- //
- // smoothBoxY
- //
- this.smoothBoxY.Location = new System.Drawing.Point(332, 671);
- this.smoothBoxY.Name = "smoothBoxY";
- this.smoothBoxY.Size = new System.Drawing.Size(76, 20);
- this.smoothBoxY.TabIndex = 189;
- //
- // smoothLabelX
- //
- this.smoothLabelX.AutoSize = true;
- this.smoothLabelX.Location = new System.Drawing.Point(38, 677);
- this.smoothLabelX.Name = "smoothLabelX";
- this.smoothLabelX.Size = new System.Drawing.Size(43, 13);
- this.smoothLabelX.TabIndex = 190;
- this.smoothLabelX.Text = "Smooth";
- //
- // SmoothActiveXLabel
- //
- this.SmoothActiveXLabel.AutoSize = true;
- this.SmoothActiveXLabel.Location = new System.Drawing.Point(200, 677);
- this.SmoothActiveXLabel.Name = "SmoothActiveXLabel";
- this.SmoothActiveXLabel.Size = new System.Drawing.Size(13, 13);
- this.SmoothActiveXLabel.TabIndex = 191;
- this.SmoothActiveXLabel.Text = "0";
- //
- // smoothLabelY
- //
- this.smoothLabelY.AutoSize = true;
- this.smoothLabelY.Location = new System.Drawing.Point(266, 677);
- this.smoothLabelY.Name = "smoothLabelY";
- this.smoothLabelY.Size = new System.Drawing.Size(43, 13);
- this.smoothLabelY.TabIndex = 192;
- this.smoothLabelY.Text = "Smooth";
- //
- // SmoothActiveYLabel
- //
- this.SmoothActiveYLabel.AutoSize = true;
- this.SmoothActiveYLabel.Location = new System.Drawing.Point(414, 677);
- this.SmoothActiveYLabel.Name = "SmoothActiveYLabel";
- this.SmoothActiveYLabel.Size = new System.Drawing.Size(13, 13);
- this.SmoothActiveYLabel.TabIndex = 193;
- this.SmoothActiveYLabel.Text = "0";
- //
// RawAcceleration
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -1925,50 +2376,62 @@ namespace grapher
private System.Windows.Forms.Label OptionSetXTitle;
private System.Windows.Forms.Label constantThreeLabelY;
private System.Windows.Forms.Label limitLabelY;
- private System.Windows.Forms.Label offsetLabelY;
- private System.Windows.Forms.Label weightLabelY;
- private System.Windows.Forms.Label capLabelY;
+ private System.Windows.Forms.Label inputJumpLabelY;
+ private System.Windows.Forms.Label outputJumpLabelY;
+ private System.Windows.Forms.Label inputOffsetLabelY;
+ private System.Windows.Forms.Label outputOffsetLabelY;
+ private System.Windows.Forms.Label inCapLabelYClassic;
private System.Windows.Forms.Label constantOneLabelY;
private System.Windows.Forms.CheckBox ByComponentXYLock;
private System.Windows.Forms.Label MidpointActiveYLabel;
private System.Windows.Forms.Label LimitActiveYLabel;
- private System.Windows.Forms.Label OffsetActiveYLabel;
+ private System.Windows.Forms.Label InputJumpActiveYLabel;
+ private System.Windows.Forms.Label OutputJumpActiveYLabel;
+ private System.Windows.Forms.Label InputOffsetActiveYLabel;
+ private System.Windows.Forms.Label OutputOffsetActiveYLabel;
private System.Windows.Forms.Label AccelerationActiveLabelY;
private System.Windows.Forms.ComboBox accelTypeDropY;
private System.Windows.Forms.TextBox midpointBoxY;
private System.Windows.Forms.TextBox limitBoxY;
- private System.Windows.Forms.TextBox offsetBoxY;
+ private System.Windows.Forms.TextBox inputJumpBoxY;
+ private System.Windows.Forms.TextBox outputJumpBoxY;
+ private System.Windows.Forms.TextBox inputOffsetBoxY;
+ private System.Windows.Forms.TextBox outputOffsetBoxY;
private System.Windows.Forms.TextBox accelerationBoxY;
private System.Windows.Forms.Label MidpointActiveXLabel;
private System.Windows.Forms.Label LimitActiveXLabel;
- private System.Windows.Forms.Label OffsetActiveXLabel;
- private System.Windows.Forms.Label CapActiveYLabel;
- private System.Windows.Forms.Label WeightActiveYLabel;
- private System.Windows.Forms.Label WeightActiveXLabel;
- private System.Windows.Forms.Label CapActiveXLabel;
+ private System.Windows.Forms.Label InputJumpActiveXLabel;
+ private System.Windows.Forms.Label OutputJumpActiveXLabel;
+ private System.Windows.Forms.Label InputOffsetActiveXLabel;
+ private System.Windows.Forms.Label OutputOffsetActiveXLabel;
+ private System.Windows.Forms.Label InCapActiveYLabelClassic;
+ private System.Windows.Forms.Label InCapActiveXLabelClassic;
private System.Windows.Forms.Label AccelerationActiveLabelX;
private System.Windows.Forms.Label AccelTypeActiveLabelX;
private System.Windows.Forms.Label RotationActiveLabel;
- private System.Windows.Forms.Label SensitivityActiveYLabel;
- private System.Windows.Forms.Label SensitivityActiveXLabel;
+ private System.Windows.Forms.Label VertHorzRatioActiveLabel;
+ private System.Windows.Forms.Label SensitivityMultiplierActiveLabel;
private System.Windows.Forms.Label ActiveValueTitle;
private System.Windows.Forms.Label MouseLabel;
private System.Windows.Forms.Label LockXYLabel;
private System.Windows.Forms.CheckBox sensXYLock;
- private System.Windows.Forms.TextBox capBoxY;
- private System.Windows.Forms.TextBox sensitivityBoxY;
+ private System.Windows.Forms.TextBox inCapBoxYClassic;
+ private System.Windows.Forms.TextBox VertHorzRatioBox;
private System.Windows.Forms.Button writeButton;
- private System.Windows.Forms.Label offsetLabelX;
- private System.Windows.Forms.TextBox offsetBoxX;
+ private System.Windows.Forms.Label inputOffsetLabelX;
+ private System.Windows.Forms.Label outputOffsetLabelX;
+ private System.Windows.Forms.TextBox inputOffsetBoxX;
+ private System.Windows.Forms.TextBox outputOffsetBoxX;
+ private System.Windows.Forms.Label inputJumpLabelX;
+ private System.Windows.Forms.Label outputJumpLabelX;
+ private System.Windows.Forms.TextBox inputJumpBoxX;
+ private System.Windows.Forms.TextBox outputJumpBoxX;
private System.Windows.Forms.Label constantThreeLabelX;
private System.Windows.Forms.TextBox midpointBoxX;
private System.Windows.Forms.Label limitLabelX;
private System.Windows.Forms.TextBox limitBoxX;
- private System.Windows.Forms.TextBox weightBoxY;
- private System.Windows.Forms.Label weightLabelX;
- private System.Windows.Forms.TextBox weightBoxX;
- private System.Windows.Forms.Label capLabelX;
- private System.Windows.Forms.TextBox capBoxX;
+ private System.Windows.Forms.Label inCapLabelXClassic;
+ private System.Windows.Forms.TextBox inCapBoxXClassic;
private System.Windows.Forms.Label constantOneLabelX;
private System.Windows.Forms.TextBox accelerationBoxX;
private System.Windows.Forms.Label rotationLabel;
@@ -2016,7 +2479,7 @@ namespace grapher
private System.Windows.Forms.Label LpNormActiveValue;
private System.Windows.Forms.Label RangeActiveValueY;
private System.Windows.Forms.CheckBox FakeBox;
- private System.Windows.Forms.ToolStripMenuItem UseSpecificDeviceMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem DeviceMenuItem;
private System.Windows.Forms.Label LUTTextLabelX;
private System.Windows.Forms.Label LUTTextLabelY;
private System.Windows.Forms.CheckBox gainSwitchX;
@@ -2058,6 +2521,37 @@ namespace grapher
private System.Windows.Forms.Label smoothLabelX;
private System.Windows.Forms.TextBox smoothBoxY;
private System.Windows.Forms.TextBox smoothBoxX;
+ private System.Windows.Forms.Label VertHorzRatioLabel;
+ private System.Windows.Forms.ComboBox CapTypeDropdownYClassic;
+ private System.Windows.Forms.ComboBox CapTypeDropdownXClassic;
+ private System.Windows.Forms.Label CapTypeLabelYClassic;
+ private System.Windows.Forms.Label CapTypeLabelXClassic;
+ private System.Windows.Forms.Label outCapLabelYClassic;
+ private System.Windows.Forms.Label outCapLabelXClassic;
+ private System.Windows.Forms.TextBox outCapBoxYClassic;
+ private System.Windows.Forms.TextBox outCapBoxXClassic;
+ private System.Windows.Forms.Label OutCapActiveXLabelClassic;
+ private System.Windows.Forms.Label OutCapActiveYLabelClassic;
+ private System.Windows.Forms.Label CapTypeActiveYLabelClassic;
+ private System.Windows.Forms.Label CapTypeActiveXLabelClassic;
+ private System.Windows.Forms.ComboBox CapTypeDropdownYPower;
+ private System.Windows.Forms.ComboBox CapTypeDropdownXPower;
+ private System.Windows.Forms.Label OutCapActiveYLabelPower;
+ private System.Windows.Forms.Label InCapActiveYLabelPower;
+ private System.Windows.Forms.Label OutCapActiveXLabelPower;
+ private System.Windows.Forms.Label InCapActiveXLabelPower;
+ private System.Windows.Forms.Label CapTypeActiveYLabelPower;
+ private System.Windows.Forms.Label CapTypeActiveXLabelPower;
+ private System.Windows.Forms.Label outCapLabelYPower;
+ private System.Windows.Forms.Label inCapLabelYPower;
+ private System.Windows.Forms.Label CapTypeLabelYPower;
+ private System.Windows.Forms.Label outCapLabelXPower;
+ private System.Windows.Forms.Label inCapLabelXPower;
+ private System.Windows.Forms.Label CapTypeLabelXPower;
+ private System.Windows.Forms.TextBox outCapBoxYPower;
+ private System.Windows.Forms.TextBox outCapBoxXPower;
+ private System.Windows.Forms.TextBox inCapBoxYPower;
+ private System.Windows.Forms.TextBox inCapBoxXPower;
}
}
diff --git a/grapher/Form1.cs b/grapher/Form1.cs
index ba16a23..b36d511 100644
--- a/grapher/Form1.cs
+++ b/grapher/Form1.cs
@@ -15,6 +15,7 @@ using grapher.Models.Serialized;
using grapher.Models;
using System.Reflection;
using System.Diagnostics;
+using System.IO;
namespace grapher
{
@@ -33,14 +34,18 @@ namespace grapher
ToolStripMenuItem HelpMenuItem = new ToolStripMenuItem("&Help");
HelpMenuItem.DropDownItems.AddRange(new ToolStripItem[] {
- new ToolStripMenuItem("&About", null, (s, e) => new AboutBox(driverVersion).ShowDialog())
+ new ToolStripMenuItem("&About", null, (s, e) => {
+ using (var form = new AboutBox(driverVersion))
+ {
+ form.ShowDialog();
+ }
+ })
});
menuStrip1.Items.AddRange(new ToolStripItem[] { HelpMenuItem });
AccelGUI = AccelGUIFactory.Construct(
this,
- ManagedAccel.GetActive(),
AccelerationChart,
AccelerationChartY,
VelocityChart,
@@ -51,26 +56,40 @@ namespace grapher
accelTypeDropY,
XLutApplyDropdown,
YLutApplyDropdown,
+ CapTypeDropdownXClassic,
+ CapTypeDropdownYClassic,
+ CapTypeDropdownXPower,
+ CapTypeDropdownYPower,
writeButton,
toggleButton,
showVelocityGainToolStripMenuItem,
showLastMouseMoveToolStripMenuItem,
streamingModeToolStripMenuItem,
AutoWriteMenuItem,
- UseSpecificDeviceMenuItem,
+ DeviceMenuItem,
ScaleMenuItem,
DPITextBox,
PollRateTextBox,
DirectionalityPanel,
sensitivityBoxX,
- sensitivityBoxY,
+ VertHorzRatioBox,
rotationBox,
- weightBoxX,
- weightBoxY,
- capBoxX,
- capBoxY,
- offsetBoxX,
- offsetBoxY,
+ inCapBoxXClassic,
+ inCapBoxYClassic,
+ outCapBoxXClassic,
+ outCapBoxYClassic,
+ inCapBoxXPower,
+ inCapBoxYPower,
+ outCapBoxXPower,
+ outCapBoxYPower,
+ inputJumpBoxX,
+ inputJumpBoxY,
+ outputJumpBoxX,
+ outputJumpBoxY,
+ inputOffsetBoxX,
+ inputOffsetBoxY,
+ outputOffsetBoxX,
+ outputOffsetBoxY,
accelerationBoxX,
accelerationBoxY,
decayRateBoxX,
@@ -107,13 +126,28 @@ namespace grapher
YLutPointsBox,
LockXYLabel,
sensitivityLabel,
+ VertHorzRatioLabel,
rotationLabel,
- weightLabelX,
- weightLabelY,
- capLabelX,
- capLabelY,
- offsetLabelX,
- offsetLabelY,
+ inCapLabelXClassic,
+ inCapLabelYClassic,
+ outCapLabelXClassic,
+ outCapLabelYClassic,
+ CapTypeLabelXClassic,
+ CapTypeLabelYClassic,
+ inCapLabelXPower,
+ inCapLabelYPower,
+ outCapLabelXPower,
+ outCapLabelYPower,
+ CapTypeLabelXPower,
+ CapTypeLabelYPower,
+ inputJumpLabelX,
+ inputJumpLabelY,
+ outputJumpLabelX,
+ outputJumpLabelY,
+ inputOffsetLabelX,
+ inputOffsetLabelY,
+ outputOffsetLabelX,
+ outputOffsetLabelY,
constantOneLabelX,
constantOneLabelY,
decayRateLabelX,
@@ -136,15 +170,29 @@ namespace grapher
constantThreeLabelY,
ActiveValueTitle,
ActiveValueTitleY,
- SensitivityActiveXLabel,
- SensitivityActiveYLabel,
+ SensitivityMultiplierActiveLabel,
+ VertHorzRatioActiveLabel,
RotationActiveLabel,
- WeightActiveXLabel,
- WeightActiveYLabel,
- CapActiveXLabel,
- CapActiveYLabel,
- OffsetActiveXLabel,
- OffsetActiveYLabel,
+ InCapActiveXLabelClassic,
+ InCapActiveYLabelClassic,
+ OutCapActiveXLabelClassic,
+ OutCapActiveYLabelClassic,
+ CapTypeActiveXLabelClassic,
+ CapTypeActiveYLabelClassic,
+ InCapActiveXLabelPower,
+ InCapActiveYLabelPower,
+ OutCapActiveXLabelPower,
+ OutCapActiveYLabelPower,
+ CapTypeActiveXLabelPower,
+ CapTypeActiveYLabelPower,
+ InputJumpActiveXLabel,
+ InputJumpActiveYLabel,
+ OutputJumpActiveXLabel,
+ OutputJumpActiveYLabel,
+ InputOffsetActiveXLabel,
+ InputOffsetActiveYLabel,
+ OutputOffsetActiveXLabel,
+ OutputOffsetActiveYLabel,
AccelerationActiveLabelX,
AccelerationActiveLabelY,
DecayRateActiveXLabel,
@@ -210,7 +258,7 @@ namespace grapher
}
else if (m.Msg == 0x00fe) // WM_INPUT_DEVICE_CHANGE
{
- AccelGUI.UpdateInputManagers();
+ AccelGUI.Settings.OnDeviceChangeMessage();
}
}
@@ -243,6 +291,68 @@ namespace grapher
}
- #endregion Method
+ #endregion Method
+
+ static void MakeStartupShortcut(bool gui)
+ {
+ var startupFolder = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
+
+ if (string.IsNullOrEmpty(startupFolder))
+ {
+ throw new Exception("Startup folder does not exist");
+ }
+
+ //Windows Script Host Shell Object
+ Type t = Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8"));
+ dynamic shell = Activator.CreateInstance(t);
+
+ try
+ {
+ // Delete any other RA related startup shortcuts
+ var candidates = new[] { "rawaccel", "raw accel", "writer" };
+
+ foreach (string path in Directory.EnumerateFiles(startupFolder, "*.lnk")
+ .Where(f => candidates.Any(f.Substring(startupFolder.Length).ToLower().Contains)))
+ {
+ var link = shell.CreateShortcut(path);
+ try
+ {
+ string targetPath = link.TargetPath;
+
+ if (!(targetPath is null) &&
+ (targetPath.EndsWith("rawaccel.exe") ||
+ targetPath.EndsWith("writer.exe") &&
+ new FileInfo(targetPath).Directory.GetFiles("rawaccel.exe").Any()))
+ {
+ File.Delete(path);
+ }
+ }
+ finally
+ {
+ Marshal.FinalReleaseComObject(link);
+ }
+ }
+
+ var name = gui ? "rawaccel" : "writer";
+
+ var lnk = shell.CreateShortcut($@"{startupFolder}\{name}.lnk");
+
+ try
+ {
+ if (!gui) lnk.Arguments = Constants.DefaultSettingsFileName;
+ lnk.TargetPath = $@"{Application.StartupPath}\{name}.exe";
+ lnk.Save();
+ }
+ finally
+ {
+ Marshal.FinalReleaseComObject(lnk);
+ }
+
+ }
+ finally
+ {
+ Marshal.FinalReleaseComObject(shell);
+ }
+ }
}
}
diff --git a/grapher/Layouts/ClassicLayout.cs b/grapher/Layouts/ClassicLayout.cs
index fb8fa02..cb09fba 100644
--- a/grapher/Layouts/ClassicLayout.cs
+++ b/grapher/Layouts/ClassicLayout.cs
@@ -11,21 +11,22 @@ namespace grapher.Layouts
Mode = AccelMode.classic;
GainSwitchOptionLayout = new OptionLayout(true, Gain);
- AccelLayout = new OptionLayout(true, Acceleration);
+ ClassicCapLayout = new OptionLayout(true, CapType);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(true, Cap);
- WeightLayout = new OptionLayout(false, string.Empty);
- OffsetLayout = new OptionLayout(true, Offset);
+ InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(true, PowerClassic);
ExponentLayout = new OptionLayout(false, string.Empty);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
}
}
diff --git a/grapher/Layouts/DefaultLayout.cs b/grapher/Layouts/DefaultLayout.cs
index 29d28f7..357c36f 100644
--- a/grapher/Layouts/DefaultLayout.cs
+++ b/grapher/Layouts/DefaultLayout.cs
@@ -12,21 +12,22 @@ namespace grapher.Layouts
LogarithmicCharts = false;
GainSwitchOptionLayout = new OptionLayout(true, Gain);
- AccelLayout = new OptionLayout(true, Acceleration);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(true, DecayRate);
GrowthRateLayout = new OptionLayout(true, GrowthRate);
SmoothLayout = new OptionLayout(true, Smooth);
- ScaleLayout = new OptionLayout(true, Scale);
- CapLayout = new OptionLayout(true, Cap);
- WeightLayout = new OptionLayout(true, Weight);
- OffsetLayout = new OptionLayout(true, Offset);
+ InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(true, Limit);
PowerClassicLayout = new OptionLayout(true, PowerClassic);
ExponentLayout = new OptionLayout(true, Exponent);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(true, Midpoint);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
}
}
diff --git a/grapher/Layouts/JumpLayout.cs b/grapher/Layouts/JumpLayout.cs
index 277297c..453a2c7 100644
--- a/grapher/Layouts/JumpLayout.cs
+++ b/grapher/Layouts/JumpLayout.cs
@@ -12,21 +12,22 @@ namespace grapher.Layouts
LogarithmicCharts = false;
GainSwitchOptionLayout = new OptionLayout(true, Gain);
- AccelLayout = new OptionLayout(false, string.Empty);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(true, Smooth);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(true, Cap);
- WeightLayout = new OptionLayout(false, Weight);
- OffsetLayout = new OptionLayout(true, Offset);
+ InputOffsetLayout = new OptionLayout(false, InputOffset);
LimitLayout = new OptionLayout(false, Limit);
PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(true, Input);
+ OutputJumpLayout = new OptionLayout(true, Output);
}
}
}
diff --git a/grapher/Layouts/LUTLayout.cs b/grapher/Layouts/LUTLayout.cs
index 5848adb..8aa0dd5 100644
--- a/grapher/Layouts/LUTLayout.cs
+++ b/grapher/Layouts/LUTLayout.cs
@@ -20,21 +20,22 @@ namespace grapher.Layouts
Mode = AccelMode.lut;
GainSwitchOptionLayout = new OptionLayout(false, string.Empty);
- AccelLayout = new OptionLayout(false, Acceleration);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(false, Cap);
- WeightLayout = new OptionLayout(false, Weight);
- OffsetLayout = new OptionLayout(false, Offset);
+ InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, Exponent);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(true, string.Empty);
LutPanelLayout = new OptionLayout(true, string.Empty);
LutApplyOptionsLayout = new OptionLayout(true, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
public override string ActiveName => LUTActiveName;
diff --git a/grapher/Layouts/LayoutBase.cs b/grapher/Layouts/LayoutBase.cs
index 66260eb..e53b37e 100644
--- a/grapher/Layouts/LayoutBase.cs
+++ b/grapher/Layouts/LayoutBase.cs
@@ -9,29 +9,33 @@ namespace grapher.Layouts
public const string DecayRate = "Decay Rate";
public const string Scale = "Scale";
public const string Exponent = "Exponent";
+ public const string OutputOffset = "Output Offset";
public const string PowerClassic = "Power";
public const string Limit = "Limit";
public const string Midpoint = "Midpoint";
public const string Motivity = "Motivity";
- public const string Offset = "Offset";
- public const string Cap = "Cap";
+ public const string InputOffset = "Input Offset";
+ public const string CapType = "Cap Type";
public const string Weight = "Weight";
public const string Smooth = "Smooth";
public const string Gain = "Gain";
+ public const string Input = "Input";
+ public const string Output = "Output";
public LayoutBase()
{
- AccelLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(false, string.Empty);
- WeightLayout = new OptionLayout(false, string.Empty);
- OffsetLayout = new OptionLayout(false, string.Empty);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
@@ -49,21 +53,19 @@ namespace grapher.Layouts
public bool LogarithmicCharts { get; protected set; }
- protected OptionLayout AccelLayout { get; set; }
-
protected OptionLayout DecayRateLayout { get; set; }
protected OptionLayout GrowthRateLayout { get; set; }
protected OptionLayout SmoothLayout { get; set; }
- protected OptionLayout ScaleLayout { get; set; }
+ protected OptionLayout ClassicCapLayout { get; set; }
- protected OptionLayout CapLayout { get; set; }
+ protected OptionLayout PowerCapLayout { get; set; }
- protected OptionLayout WeightLayout { get; set; }
+ protected OptionLayout InputJumpLayout { get; set; }
- protected OptionLayout OffsetLayout { get; set; }
+ protected OptionLayout InputOffsetLayout { get; set; }
protected OptionLayout LimitLayout { get; set; }
@@ -71,6 +73,10 @@ namespace grapher.Layouts
protected OptionLayout ExponentLayout { get; set; }
+ protected OptionLayout OutputJumpLayout { get; set; }
+
+ protected OptionLayout OutputOffsetLayout { get; set; }
+
protected OptionLayout MidpointLayout { get; set; }
protected OptionLayout LutTextLayout { get; set; }
@@ -88,17 +94,18 @@ namespace grapher.Layouts
public void Layout(
IOption gainSwitchOption,
- IOption accelOption,
+ IOption classicCapOption,
+ IOption powerCapOption,
IOption decayRateOption,
IOption growthRateOption,
IOption smoothOption,
- IOption scaleOption,
- IOption capOption,
- IOption weightOption,
- IOption offsetOption,
+ IOption inputJumpOption,
+ IOption inputOffsetOption,
IOption limitOption,
IOption powerClassicOption,
IOption expOption,
+ IOption outputJumpOption,
+ IOption outputOffsetOption,
IOption midpointOption,
IOption lutTextOption,
IOption lutPanelOption,
@@ -110,17 +117,18 @@ namespace grapher.Layouts
foreach (var option in new (OptionLayout, IOption)[] {
(GainSwitchOptionLayout, gainSwitchOption),
- (AccelLayout, accelOption),
+ (ClassicCapLayout, classicCapOption),
+ (PowerCapLayout, powerCapOption),
(DecayRateLayout, decayRateOption),
(GrowthRateLayout, growthRateOption),
(SmoothLayout, smoothOption),
- (ScaleLayout, scaleOption),
- (CapLayout, capOption),
- (WeightLayout, weightOption),
- (OffsetLayout, offsetOption),
+ (InputJumpLayout, inputJumpOption),
+ (InputOffsetLayout, inputOffsetOption),
(LimitLayout, limitOption),
(PowerClassicLayout, powerClassicOption),
(ExponentLayout, expOption),
+ (OutputJumpLayout, outputJumpOption),
+ (OutputOffsetLayout, outputOffsetOption),
(MidpointLayout, midpointOption),
(LutTextLayout, lutTextOption),
(LutPanelLayout, lutPanelOption),
@@ -146,39 +154,41 @@ namespace grapher.Layouts
public void Layout(
IOption gainSwitchOption,
- IOption accelOption,
+ IOption classicCapOption,
+ IOption powerCapOption,
IOption decayRateOption,
IOption growthRateOption,
IOption smoothOption,
- IOption scaleOption,
- IOption capOption,
- IOption weightOption,
- IOption offsetOption,
+ IOption inputJumpOption,
+ IOption inputOffsetOption,
IOption limitOption,
IOption powerClassicOption,
IOption expOption,
+ IOption outputJumpOption,
+ IOption outputOffsetOption,
IOption midpointOption,
IOption lutTextOption,
IOption lutPanelOption,
IOption lutApplyOption)
{
Layout(gainSwitchOption,
- accelOption,
+ classicCapOption,
+ powerCapOption,
decayRateOption,
growthRateOption,
smoothOption,
- scaleOption,
- capOption,
- weightOption,
- offsetOption,
+ inputJumpOption,
+ inputOffsetOption,
limitOption,
powerClassicOption,
expOption,
+ outputJumpOption,
+ outputOffsetOption,
midpointOption,
lutTextOption,
lutPanelOption,
lutApplyOption,
- accelOption.Top);
+ gainSwitchOption.Top);
}
}
}
diff --git a/grapher/Layouts/LinearLayout.cs b/grapher/Layouts/LinearLayout.cs
index 6108a0b..ebace66 100644
--- a/grapher/Layouts/LinearLayout.cs
+++ b/grapher/Layouts/LinearLayout.cs
@@ -11,24 +11,24 @@ namespace grapher.Layouts
{
Name = LinearName;
Mode = AccelMode.classic;
- LogarithmicCharts = false;
GainSwitchOptionLayout = new OptionLayout(true, Gain);
- AccelLayout = new OptionLayout(true, Acceleration);
+ ClassicCapLayout = new OptionLayout(true, CapType);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(true, Cap);
- WeightLayout = new OptionLayout(false, Weight);
- OffsetLayout = new OptionLayout(true, Offset);
+ InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
}
}
diff --git a/grapher/Layouts/MotivityLayout.cs b/grapher/Layouts/MotivityLayout.cs
index 5443715..d4fd99c 100644
--- a/grapher/Layouts/MotivityLayout.cs
+++ b/grapher/Layouts/MotivityLayout.cs
@@ -17,21 +17,22 @@ namespace grapher.Layouts
LogarithmicCharts = true;
GainSwitchOptionLayout = new OptionLayout(true, Gain);
- AccelLayout = new OptionLayout(false, string.Empty);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(true, GrowthRate);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(false, string.Empty);
- WeightLayout = new OptionLayout(false, string.Empty);
- OffsetLayout = new OptionLayout(false, string.Empty);
+ InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(true, Motivity);
PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(true, Midpoint);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
}
}
diff --git a/grapher/Layouts/NaturalLayout.cs b/grapher/Layouts/NaturalLayout.cs
index 15166cb..03f2f82 100644
--- a/grapher/Layouts/NaturalLayout.cs
+++ b/grapher/Layouts/NaturalLayout.cs
@@ -12,21 +12,22 @@ namespace grapher.Layouts
LogarithmicCharts = false;
GainSwitchOptionLayout = new OptionLayout(true, Gain);
- AccelLayout = new OptionLayout(false, string.Empty);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(true, DecayRate);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(false, string.Empty);
- WeightLayout = new OptionLayout(false, string.Empty);
- OffsetLayout = new OptionLayout(true, Offset);
+ InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(true, Limit);
PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
}
}
diff --git a/grapher/Layouts/OffLayout.cs b/grapher/Layouts/OffLayout.cs
index d742ef8..482f87a 100644
--- a/grapher/Layouts/OffLayout.cs
+++ b/grapher/Layouts/OffLayout.cs
@@ -12,21 +12,22 @@ namespace grapher.Layouts
LogarithmicCharts = false;
GainSwitchOptionLayout = new OptionLayout(false, string.Empty);
- AccelLayout = new OptionLayout(false, string.Empty);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(false, string.Empty);
- WeightLayout = new OptionLayout(false, string.Empty);
- OffsetLayout = new OptionLayout(false, string.Empty);
+ InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
}
}
diff --git a/grapher/Layouts/PowerLayout.cs b/grapher/Layouts/PowerLayout.cs
index 03d9efa..fb88ab0 100644
--- a/grapher/Layouts/PowerLayout.cs
+++ b/grapher/Layouts/PowerLayout.cs
@@ -10,21 +10,22 @@
LogarithmicCharts = false;
GainSwitchOptionLayout = new OptionLayout(true, Gain);
- AccelLayout = new OptionLayout(false, string.Empty);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(true, CapType);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(true, Scale);
- CapLayout = new OptionLayout(false, string.Empty);
- WeightLayout = new OptionLayout(true, Weight);
- OffsetLayout = new OptionLayout(false, string.Empty);
+ InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(true, Exponent);
+ OutputOffsetLayout = new OptionLayout(true, OutputOffset);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
}
}
diff --git a/grapher/Layouts/UnsupportedLayout.cs b/grapher/Layouts/UnsupportedLayout.cs
index 4a401a4..a2d7ab5 100644
--- a/grapher/Layouts/UnsupportedLayout.cs
+++ b/grapher/Layouts/UnsupportedLayout.cs
@@ -17,21 +17,22 @@ namespace grapher.Layouts
Mode = AccelMode.noaccel + 1;
GainSwitchOptionLayout = new OptionLayout(false, string.Empty);
- AccelLayout = new OptionLayout(false, Acceleration);
+ ClassicCapLayout = new OptionLayout(false, string.Empty);
+ PowerCapLayout = new OptionLayout(false, string.Empty);
DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty);
- ScaleLayout = new OptionLayout(false, string.Empty);
- CapLayout = new OptionLayout(false, Cap);
- WeightLayout = new OptionLayout(false, Weight);
- OffsetLayout = new OptionLayout(false, Offset);
+ InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, Exponent);
+ OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(true, LUTLayoutText);
LutPanelLayout = new OptionLayout(false, string.Empty);
LutApplyOptionsLayout = new OptionLayout(false, string.Empty);
+ InputJumpLayout = new OptionLayout(false, string.Empty);
+ OutputJumpLayout = new OptionLayout(false, string.Empty);
}
}
} \ No newline at end of file
diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs
index 4ce6ed8..23d5017 100644
--- a/grapher/Models/AccelGUI.cs
+++ b/grapher/Models/AccelGUI.cs
@@ -4,6 +4,7 @@ using grapher.Models.Mouse;
using grapher.Models.Options;
using grapher.Models.Serialized;
using System;
+using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
@@ -25,7 +26,7 @@ namespace grapher
ButtonBase resetButton,
MouseWatcher mouseWatcher,
ToolStripMenuItem scaleMenuItem,
- DeviceIDManager deviceIDManager)
+ ToolStripMenuItem deviceMenuItem)
{
AccelForm = accelForm;
AccelCalculator = accelCalculator;
@@ -34,18 +35,19 @@ namespace grapher
WriteButton = writeButton;
ResetButton = (CheckBox)resetButton;
ScaleMenuItem = scaleMenuItem;
+ DeviceMenuItem = deviceMenuItem;
Settings = settings;
DefaultButtonFont = WriteButton.Font;
SmallButtonFont = new Font(WriteButton.Font.Name, WriteButton.Font.Size * Constants.SmallButtonSizeFactor);
MouseWatcher = mouseWatcher;
- DeviceIDManager = deviceIDManager;
+ DeviceMenuItem.Click += DeviceMenuItemClick;
ScaleMenuItem.Click += new System.EventHandler(OnScaleMenuItemClick);
WriteButton.Click += new System.EventHandler(OnWriteButtonClick);
ResetButton.Click += new System.EventHandler(ResetDriverEventHandler);
AccelForm.FormClosing += new FormClosingEventHandler(SaveGUISettingsOnClose);
- ButtonTimerInterval = Convert.ToInt32(DriverSettings.WriteDelayMs);
+ ButtonTimerInterval = Convert.ToInt32(DriverConfig.WriteDelayMs);
ButtonTimer = new Timer();
ButtonTimer.Tick += new System.EventHandler(OnButtonTimerTick);
@@ -85,7 +87,7 @@ namespace grapher
public ToolStripMenuItem ScaleMenuItem { get; }
- public DeviceIDManager DeviceIDManager { get; }
+ public ToolStripMenuItem DeviceMenuItem { get; }
private Timer ChartRefresh { get; }
@@ -112,21 +114,23 @@ namespace grapher
}
}
- public DriverSettings MakeSettingsFromFields()
+ public Profile MakeSettingsFromFields()
{
- var settings = new DriverSettings();
+ var settings = new Profile();
settings.rotation = ApplyOptions.Rotation.Field.Data;
- settings.sensitivity = new Vec2<double>
- {
- x = ApplyOptions.Sensitivity.Fields.X,
- y = ApplyOptions.Sensitivity.Fields.Y
- };
+ settings.sensitivity = ApplyOptions.Sensitivity.Field.Data;
+
+ // TODO - separate sensitivity fields, add new label for ratio
+ settings.yxSensRatio = ApplyOptions.YToXRatio.Value;
settings.combineMagnitudes = ApplyOptions.IsWhole;
- ApplyOptions.SetArgs(ref settings.args);
- settings.domainArgs = ApplyOptions.Directionality.GetDomainArgs();
+ ApplyOptions.SetArgsFromActiveValues(ref settings.argsX, ref settings.argsY);
+
+ var (domWeights, lpNorm) = ApplyOptions.Directionality.GetDomainArgs();
+ settings.domainXY = domWeights;
+ settings.lpNorm = lpNorm;
+
settings.rangeXY = ApplyOptions.Directionality.GetRangeXY();
- settings.deviceID = DeviceIDManager.ID;
Settings.SetHiddenOptions(settings);
@@ -141,16 +145,15 @@ namespace grapher
{
ButtonDelay(WriteButton);
- var settings = MakeSettingsFromFields();
- SettingsErrors errors = Settings.TryActivate(settings);
- if (errors.Empty())
+ if (!Settings.TryActivate(MakeSettingsFromFields(), out string errors))
{
- RefreshActive();
- return;
+ error_message = errors.ToString();
}
else
{
- error_message = errors.ToString();
+ RefreshActive();
+ Settings.SetActiveHandles();
+ return;
}
}
catch (ApplicationException e)
@@ -158,37 +161,30 @@ namespace grapher
error_message = e.Message;
}
- new MessageDialog(error_message, "bad input").ShowDialog();
- }
-
-
- public void UpdateInputManagers()
- {
- MouseWatcher.UpdateHandles(Settings.ActiveSettings.baseSettings.deviceID);
- DeviceIDManager.Update(Settings.ActiveSettings.baseSettings.deviceID);
+ using (var form = new MessageDialog(error_message, "bad input"))
+ {
+ form.ShowDialog();
+ }
}
public void RefreshActive()
{
- UpdateShownActiveValues(Settings.UserSettings);
+ UpdateShownActiveValues(Settings.ActiveProfile);
UpdateGraph();
- UpdateInputManagers();
}
public void RefreshUser()
{
- UpdateShownActiveValues(Settings.UserSettings);
+ UpdateShownActiveValues(Settings.UserProfile);
}
public void UpdateGraph()
{
- AccelCharts.Calculate(
- Settings.ActiveAccel,
- Settings.ActiveSettings.baseSettings);
+ AccelCharts.Calculate(Settings.ActiveAccel, Settings.ActiveProfile);
AccelCharts.Bind();
}
- public void UpdateShownActiveValues(DriverSettings args)
+ public void UpdateShownActiveValues(Profile args)
{
AccelForm.ResetAutoScroll();
AccelCharts.ShowActive(args);
@@ -207,7 +203,7 @@ namespace grapher
private void SetupButtons()
{
WriteButton.Top = Constants.SensitivityChartAloneHeight - Constants.ButtonVerticalOffset;
-
+
ResetButton.Appearance = Appearance.Button;
ResetButton.FlatStyle = FlatStyle.System;
ResetButton.TextAlign = ContentAlignment.MiddleCenter;
@@ -243,7 +239,7 @@ namespace grapher
private void ResetDriverEventHandler(object sender, EventArgs e)
{
ButtonDelay(ResetButton);
- Settings.DisableDriver();
+ Settings.ResetDriver();
RefreshActive();
}
@@ -251,10 +247,12 @@ namespace grapher
{
ButtonTimer.Stop();
SetButtonDefaults();
+ DeviceMenuItem.Enabled = true;
}
private void StartButtonTimer()
{
+ DeviceMenuItem.Enabled = false;
ButtonTimer.Interval = ButtonTimerInterval;
ButtonTimer.Start();
}
@@ -279,6 +277,18 @@ namespace grapher
MouseWatcher.UpdateLastMove();
}
+ private void DeviceMenuItemClick(object sender, EventArgs e)
+ {
+ using (var devMenu = new DeviceMenuForm(Settings))
+ {
+ if (devMenu.ShowDialog() == DialogResult.OK)
+ {
+ Settings.Submit(devMenu.defaultConfig, devMenu.Items);
+ UpdateActiveSettingsFromFields();
+ }
+ }
+ }
+
#endregion Methods
}
diff --git a/grapher/Models/AccelGUIFactory.cs b/grapher/Models/AccelGUIFactory.cs
index 7e5ae9b..5fc7b8b 100644
--- a/grapher/Models/AccelGUIFactory.cs
+++ b/grapher/Models/AccelGUIFactory.cs
@@ -2,6 +2,7 @@
using grapher.Models.Devices;
using grapher.Models.Mouse;
using grapher.Models.Options;
+using grapher.Models.Options.Cap;
using grapher.Models.Options.Directionality;
using grapher.Models.Options.LUT;
using grapher.Models.Serialized;
@@ -17,7 +18,6 @@ namespace grapher.Models
public static AccelGUI Construct(
RawAcceleration form,
- ManagedAccel activeAccel,
Chart accelerationChart,
Chart accelerationChartY,
Chart velocityChart,
@@ -28,13 +28,17 @@ namespace grapher.Models
ComboBox accelTypeDropY,
ComboBox lutApplyDropdownX,
ComboBox lutApplyDropdownY,
+ ComboBox capTypeDropdownXClassic,
+ ComboBox capTypeDropdownYClassic,
+ ComboBox capTypeDropdownXPower,
+ ComboBox capTypeDropdownYPower,
Button writeButton,
ButtonBase toggleButton,
ToolStripMenuItem showVelocityGainToolStripMenuItem,
ToolStripMenuItem showLastMouseMoveMenuItem,
ToolStripMenuItem streamingModeToolStripMenuItem,
ToolStripMenuItem autoWriteMenuItem,
- ToolStripMenuItem useSpecificDeviceMenuItem,
+ ToolStripMenuItem deviceMenuItem,
ToolStripMenuItem scaleMenuItem,
ToolStripTextBox dpiTextBox,
ToolStripTextBox pollRateTextBox,
@@ -42,12 +46,22 @@ namespace grapher.Models
TextBox sensitivityBoxX,
TextBox sensitivityBoxY,
TextBox rotationBox,
- TextBox weightBoxX,
- TextBox weightBoxY,
- TextBox capBoxX,
- TextBox capBoxY,
- TextBox offsetBoxX,
- TextBox offsetBoxY,
+ TextBox inCapBoxXClassic,
+ TextBox inCapBoxYClassic,
+ TextBox outCapBoxXClassic,
+ TextBox outCapBoxYClassic,
+ TextBox inCapBoxXPower,
+ TextBox inCapBoxYPower,
+ TextBox outCapBoxXPower,
+ TextBox outCapBoxYPower,
+ TextBox inputJumpBoxX,
+ TextBox inputJumpBoxY,
+ TextBox outputJumpBoxX,
+ TextBox outputJumpBoxY,
+ TextBox inputOffsetBoxX,
+ TextBox inputOffsetBoxY,
+ TextBox outputOffsetBoxX,
+ TextBox outputOffsetBoxY,
TextBox accelerationBoxX,
TextBox accelerationBoxY,
TextBox decayRateBoxX,
@@ -84,13 +98,28 @@ namespace grapher.Models
RichTextBox yLutPointsBox,
Label lockXYLabel,
Label sensitivityLabel,
+ Label yxRatioLabel,
Label rotationLabel,
- Label weightLabelX,
- Label weightLabelY,
- Label capLabelX,
- Label capLabelY,
- Label offsetLabelX,
- Label offsetLabelY,
+ Label inCapLabelXClassic,
+ Label inCapLabelYClassic,
+ Label outCapLabelXClassic,
+ Label outCapLabelYClassic,
+ Label capTypeLabelXClassic,
+ Label capTypeLabelYClassic,
+ Label inCapLabelXPower,
+ Label inCapLabelYPower,
+ Label outCapLabelXPower,
+ Label outCapLabelYPower,
+ Label capTypeLabelXPower,
+ Label capTypeLabelYPower,
+ Label inputJumpLabelX,
+ Label inputJumpLabelY,
+ Label outputJumpLabelX,
+ Label outputJumpLabelY,
+ Label inputOffsetLabelX,
+ Label inputOffsetLabelY,
+ Label outputOffsetLabelX,
+ Label outputOffsetLabelY,
Label constantOneLabelX,
Label constantOneLabelY,
Label decayRateLabelX,
@@ -113,15 +142,29 @@ namespace grapher.Models
Label constantThreeLabelY,
Label activeValueTitleX,
Label activeValueTitleY,
- Label sensitivityActiveXLabel,
- Label sensitivityActiveYLabel,
+ Label sensitivityActiveLabel,
+ Label yxRatioActiveLabel,
Label rotationActiveLabel,
- Label weightActiveXLabel,
- Label weightActiveYLabel,
- Label capActiveXLabel,
- Label capActiveYLabel,
- Label offsetActiveLabelX,
- Label offsetActiveLabelY,
+ Label inCapActiveXLabelClassic,
+ Label inCapActiveYLabelClassic,
+ Label outCapActiveXLabelClassic,
+ Label outCapActiveYLabelClassic,
+ Label capTypeActiveXLabelClassic,
+ Label capTypeActiveYLabelClassic,
+ Label inCapActiveXLabelPower,
+ Label inCapActiveYLabelPower,
+ Label outCapActiveXLabelPower,
+ Label outCapActiveYLabelPower,
+ Label capTypeActiveXLabelPower,
+ Label capTypeActiveYLabelPower,
+ Label inputJumpActiveLabelX,
+ Label inputJumpActiveLabelY,
+ Label outputJumpActiveLabelX,
+ Label outputJumpActiveLabelY,
+ Label inputOffsetActiveLabelX,
+ Label inputOffsetActiveLabelY,
+ Label outputOffsetActiveLabelX,
+ Label outputOffsetActiveLabelY,
Label accelerationActiveLabelX,
Label accelerationActiveLabelY,
Label decayRateActiveLabelX,
@@ -182,18 +225,27 @@ namespace grapher.Models
writeButton,
accelCalculator);
- var sensitivity = new OptionXY(
+ var sensitivity = new Option(
sensitivityBoxX,
- sensitivityBoxY,
- sensXYLock,
form,
1,
sensitivityLabel,
- new ActiveValueLabelXY(
- new ActiveValueLabel(sensitivityActiveXLabel, activeValueTitleX),
- new ActiveValueLabel(sensitivityActiveYLabel, activeValueTitleX)),
+ 0,
+ new ActiveValueLabel(sensitivityActiveLabel, activeValueTitleX),
"Sens Multiplier");
+ var yxRatio = new LockableOption(
+ new Option(
+ sensitivityBoxY,
+ form,
+ 1,
+ yxRatioLabel,
+ 0,
+ new ActiveValueLabel(yxRatioActiveLabel, activeValueTitleX),
+ "Y/X Ratio"),
+ sensXYLock,
+ 1);
+
var rotation = new Option(
rotationBox,
form,
@@ -207,58 +259,76 @@ namespace grapher.Models
var directionalityLeft = directionalityPanel.Left;
- var weightX = new Option(
- weightBoxX,
+ var inputJumpX = new Option(
+ inputJumpBoxX,
form,
- 1,
- weightLabelX,
0,
- new ActiveValueLabel(weightActiveXLabel, activeValueTitleX),
- "Weight");
+ inputJumpLabelX,
+ 0,
+ new ActiveValueLabel(inputJumpActiveLabelX, activeValueTitleX),
+ "Jump");
- var weightY = new Option(
- weightBoxY,
+ var inputJumpY = new Option(
+ inputJumpBoxY,
form,
- 1,
- weightLabelY,
+ 0,
+ inputJumpLabelY,
optionSetYLeft,
- new ActiveValueLabel(weightActiveYLabel, activeValueTitleY),
- "Weight");
+ new ActiveValueLabel(inputJumpActiveLabelY, activeValueTitleY),
+ "Jump");
- var capX = new Option(
- capBoxX,
+ var outputJumpX = new Option(
+ outputJumpBoxX,
form,
0,
- capLabelX,
+ outputJumpLabelX,
0,
- new ActiveValueLabel(capActiveXLabel, activeValueTitleX),
- "Cap");
+ new ActiveValueLabel(outputJumpActiveLabelX, activeValueTitleX),
+ "Jump");
- var capY = new Option(
- capBoxY,
+ var outputJumpY = new Option(
+ outputJumpBoxY,
form,
0,
- capLabelY,
+ outputJumpLabelY,
optionSetYLeft,
- new ActiveValueLabel(capActiveYLabel, activeValueTitleY),
- "Cap");
+ new ActiveValueLabel(outputJumpActiveLabelY, activeValueTitleY),
+ "Jump");
- var offsetX = new Option(
- offsetBoxX,
+ var inputOffsetX = new Option(
+ inputOffsetBoxX,
form,
0,
- offsetLabelX,
+ inputOffsetLabelX,
0,
- new ActiveValueLabel(offsetActiveLabelX, activeValueTitleX),
+ new ActiveValueLabel(inputOffsetActiveLabelX, activeValueTitleX),
"Offset");
- var offsetY = new Option(
- offsetBoxY,
+ var inputOffsetY = new Option(
+ inputOffsetBoxY,
form,
0,
- offsetLabelY,
+ inputOffsetLabelY,
optionSetYLeft,
- new ActiveValueLabel(offsetActiveLabelY, activeValueTitleY),
+ new ActiveValueLabel(inputOffsetActiveLabelY, activeValueTitleY),
+ "Offset");
+
+ var outputOffsetX = new Option(
+ outputOffsetBoxX,
+ form,
+ 0,
+ outputOffsetLabelX,
+ 0,
+ new ActiveValueLabel(outputOffsetActiveLabelX, activeValueTitleX),
+ "Offset");
+
+ var outputOffsetY = new Option(
+ outputOffsetBoxY,
+ form,
+ 0,
+ outputOffsetLabelY,
+ optionSetYLeft,
+ new ActiveValueLabel(outputOffsetActiveLabelY, activeValueTitleY),
"Offset");
var accelerationX = new Option(
@@ -369,6 +439,114 @@ namespace grapher.Models
new ActiveValueLabel(midpointActiveLabelY, activeValueTitleY),
optionSetYLeft);
+ var inCapXClassic = new Option(
+ inCapBoxXClassic,
+ form,
+ 0,
+ inCapLabelXClassic,
+ 0,
+ new ActiveValueLabel(inCapActiveXLabelClassic, activeValueTitleX),
+ "Cap: Input");
+
+ var inCapYClassic = new Option(
+ inCapBoxYClassic,
+ form,
+ 0,
+ inCapLabelYClassic,
+ optionSetYLeft,
+ new ActiveValueLabel(inCapActiveYLabelClassic, activeValueTitleY),
+ "Cap");
+
+ var outCapXClassic = new Option(
+ outCapBoxXClassic,
+ form,
+ 0,
+ outCapLabelXClassic,
+ 0,
+ new ActiveValueLabel(outCapActiveXLabelClassic, activeValueTitleX),
+ "Cap: Input");
+
+ var outCapYClassic = new Option(
+ outCapBoxYClassic,
+ form,
+ 0,
+ outCapLabelYClassic,
+ optionSetYLeft,
+ new ActiveValueLabel(outCapActiveYLabelClassic, activeValueTitleY),
+ "Cap");
+
+ var capTypeXClassic = new CapTypeOptions(
+ capTypeLabelXClassic,
+ capTypeDropdownXClassic,
+ new ActiveValueLabel(capTypeActiveXLabelClassic, activeValueTitleX),
+ 0);
+
+ var capTypeYClassic = new CapTypeOptions(
+ capTypeLabelYClassic,
+ capTypeDropdownYClassic,
+ new ActiveValueLabel(capTypeActiveYLabelClassic, activeValueTitleY),
+ optionSetYLeft);
+
+ var classicCapOptionsX = new CapOptions(
+ capTypeXClassic,
+ inCapXClassic,
+ outCapXClassic,
+ accelerationX);
+
+ var classicCapOptionsY = new CapOptions(
+ capTypeYClassic,
+ inCapYClassic,
+ outCapYClassic,
+ accelerationY);
+
+ var inCapXPower = new Option(
+ inCapBoxXPower,
+ form,
+ 0,
+ inCapLabelXPower,
+ 0,
+ new ActiveValueLabel(inCapActiveXLabelPower, activeValueTitleX),
+ "Cap: Input");
+
+ var inCapYPower = new Option(
+ inCapBoxYPower,
+ form,
+ 0,
+ inCapLabelYPower,
+ optionSetYLeft,
+ new ActiveValueLabel(inCapActiveYLabelPower, activeValueTitleY),
+ "Cap");
+
+ var outCapXPower = new Option(
+ outCapBoxXPower,
+ form,
+ 0,
+ outCapLabelXPower,
+ 0,
+ new ActiveValueLabel(outCapActiveXLabelPower, activeValueTitleX),
+ "Cap: Input");
+
+ var outCapYPower = new Option(
+ outCapBoxYPower,
+ form,
+ 0,
+ outCapLabelYPower,
+ optionSetYLeft,
+ new ActiveValueLabel(outCapActiveYLabelPower, activeValueTitleY),
+ "Cap");
+
+ var capTypeXPower = new CapTypeOptions(
+ capTypeLabelXPower,
+ capTypeDropdownXPower,
+ new ActiveValueLabel(capTypeActiveXLabelPower, activeValueTitleX),
+ 0);
+
+ var capTypeYPower = new CapTypeOptions(
+ capTypeLabelYPower,
+ capTypeDropdownYPower,
+ new ActiveValueLabel(capTypeActiveYLabelPower, activeValueTitleY),
+ optionSetYLeft);
+
var lpNorm = new Option(
new Field(lpNormBox, form, 2),
lpNormLabel,
@@ -409,17 +587,34 @@ namespace grapher.Models
gainSwitchY,
new ActiveValueLabel(gainSwitchActiveLabelY, activeValueTitleY));
+ var powerCapOptionsX = new CapOptions(
+ capTypeXPower,
+ inCapXPower,
+ outCapXPower,
+ scaleX,
+ outputOffsetX,
+ gainSwitchOptionX);
+
+ var powerCapOptionsY = new CapOptions(
+ capTypeYPower,
+ inCapYPower,
+ outCapYPower,
+ scaleY,
+ outputOffsetY,
+ gainSwitchOptionY);
+
var accelerationOptionsX = new AccelTypeOptions(
accelTypeDropX,
gainSwitchOptionX,
- accelerationX,
+ classicCapOptionsX,
+ powerCapOptionsX,
+ outputJumpX,
+ outputOffsetX,
decayRateX,
growthRateX,
smoothX,
- scaleX,
- capX,
- weightX,
- offsetX,
+ inputJumpX,
+ inputOffsetX,
limitX,
powerClassicX,
exponentX,
@@ -436,14 +631,15 @@ namespace grapher.Models
var accelerationOptionsY = new AccelTypeOptions(
accelTypeDropY,
gainSwitchOptionY,
- accelerationY,
+ classicCapOptionsY,
+ powerCapOptionsY,
+ outputJumpY,
+ outputOffsetY,
decayRateY,
growthRateY,
smoothY,
- scaleY,
- capY,
- weightY,
- offsetY,
+ inputJumpY,
+ inputOffsetY,
limitY,
powerClassicY,
exponentY,
@@ -488,21 +684,18 @@ namespace grapher.Models
optionsSetY,
directionalOptions,
sensitivity,
+ yxRatio,
rotation,
lockXYLabel,
accelCharts);
- var deviceIdManager = new DeviceIDManager(useSpecificDeviceMenuItem);
-
var settings = new SettingsManager(
- activeAccel,
accelCalculator.DPI,
accelCalculator.PollRate,
autoWriteMenuItem,
showLastMouseMoveMenuItem,
showVelocityGainToolStripMenuItem,
- streamingModeToolStripMenuItem,
- deviceIdManager);
+ streamingModeToolStripMenuItem);
var mouseWatcher = new MouseWatcher(form, mouseLabel, accelCharts, settings);
@@ -516,7 +709,7 @@ namespace grapher.Models
toggleButton,
mouseWatcher,
scaleMenuItem,
- deviceIdManager);
+ deviceMenuItem);
}
#endregion Methods
diff --git a/grapher/Models/Calculations/AccelCalculator.cs b/grapher/Models/Calculations/AccelCalculator.cs
index 574f55a..6b9cbf3 100644
--- a/grapher/Models/Calculations/AccelCalculator.cs
+++ b/grapher/Models/Calculations/AccelCalculator.cs
@@ -107,7 +107,7 @@ namespace grapher.Models.Calculations
continue;
}
- var output = accel.Accelerate(simulatedInputDatum.x, simulatedInputDatum.y, simulatedInputDatum.time);
+ var output = accel.Accelerate(simulatedInputDatum.x, simulatedInputDatum.y, 1, simulatedInputDatum.time);
var outMagnitude = DecimalCheck(Velocity(output.Item1, output.Item2, simulatedInputDatum.time));
var inDiff = Math.Round(simulatedInputDatum.velocity - lastInputMagnitude, 5);
var outDiff = Math.Round(outMagnitude - lastOutputMagnitude, 5);
@@ -193,7 +193,7 @@ namespace grapher.Models.Calculations
data.MinGain = minSlope;
}
- public void CalculateDirectional(AccelChartData[] dataByAngle, ManagedAccel accel, DriverSettings settings, IReadOnlyCollection<IReadOnlyCollection<SimulatedMouseInput>> simulatedInputData)
+ public void CalculateDirectional(AccelChartData[] dataByAngle, ManagedAccel accel, Profile settings, IReadOnlyCollection<IReadOnlyCollection<SimulatedMouseInput>> simulatedInputData)
{
double maxRatio = 0.0;
double minRatio = Double.MaxValue;
@@ -219,7 +219,7 @@ namespace grapher.Models.Calculations
continue;
}
- var output = accel.Accelerate(simulatedInputDatum.x, simulatedInputDatum.y, simulatedInputDatum.time);
+ var output = accel.Accelerate(simulatedInputDatum.x, simulatedInputDatum.y, 1, simulatedInputDatum.time);
var magnitude = DecimalCheck(Velocity(output.Item1, output.Item2, simulatedInputDatum.time));
var inDiff = Math.Round(simulatedInputDatum.velocity - lastInputMagnitude, 5);
var outDiff = Math.Round(magnitude - lastOutputMagnitude, 5);
@@ -246,7 +246,7 @@ namespace grapher.Models.Calculations
}
var ratio = DecimalCheck(magnitude / simulatedInputDatum.velocity);
- var slope = DecimalCheck(inDiff > 0 ? outDiff / inDiff : settings.sensitivity.x);
+ var slope = DecimalCheck(inDiff > 0 ? outDiff / inDiff : settings.sensitivity);
bool indexToMeasureExtrema = (angleIndex == 0) || (angleIndex == (Constants.AngleDivisions - 1));
@@ -477,16 +477,16 @@ namespace grapher.Models.Calculations
return Magnitude(x, y) / time;
}
- public static bool ShouldStripSens(ref DriverSettings settings) =>
- settings.sensitivity.x != settings.sensitivity.y;
+ public static bool ShouldStripSens(Profile settings) =>
+ settings.yxSensRatio != 1;
- public static bool ShouldStripRot(ref DriverSettings settings) =>
+ public static bool ShouldStripRot(Profile settings) =>
settings.rotation > 0;
- public static (double, double) GetSens(ref DriverSettings settings) =>
- (settings.sensitivity.x, settings.sensitivity.y);
+ public static (double, double) GetSens(Profile settings) =>
+ (settings.sensitivity, settings.sensitivity * settings.yxSensRatio);
- public static (double, double) GetRotVector(ref DriverSettings settings) =>
+ public static (double, double) GetRotVector(Profile settings) =>
(Math.Cos(settings.rotation), Math.Sin(settings.rotation));
public static (double, double) StripSens(double outputX, double outputY, double sensitivityX, double sensitivityY) =>
diff --git a/grapher/Models/Calculations/Data/AccelDataCombined.cs b/grapher/Models/Calculations/Data/AccelDataCombined.cs
index 8efb9ac..025a344 100644
--- a/grapher/Models/Calculations/Data/AccelDataCombined.cs
+++ b/grapher/Models/Calculations/Data/AccelDataCombined.cs
@@ -40,10 +40,10 @@ namespace grapher.Models.Calculations.Data
X.Clear();
}
- public void CreateGraphData(ManagedAccel accel, DriverSettings settings)
+ public void CreateGraphData(ManagedAccel accel, Profile settings)
{
Clear();
- Calculator.Calculate(X, accel, settings.sensitivity.x, Calculator.SimulatedInputCombined);
+ Calculator.Calculate(X, accel, settings.sensitivity, Calculator.SimulatedInputCombined);
}
}
}
diff --git a/grapher/Models/Calculations/Data/AccelDataXYComponential.cs b/grapher/Models/Calculations/Data/AccelDataXYComponential.cs
index 6231eb3..f954230 100644
--- a/grapher/Models/Calculations/Data/AccelDataXYComponential.cs
+++ b/grapher/Models/Calculations/Data/AccelDataXYComponential.cs
@@ -54,11 +54,12 @@ namespace grapher.Models.Calculations.Data
Y.Clear();
}
- public void CreateGraphData(ManagedAccel accel, DriverSettings settings)
+ public void CreateGraphData(ManagedAccel accel, Profile settings)
{
Clear();
- Calculator.Calculate(X, accel, settings.sensitivity.x, Calculator.SimulatedInputX);
- Calculator.Calculate(Y, accel, settings.sensitivity.y, Calculator.SimulatedInputY);
+ var sensY = settings.sensitivity * settings.yxSensRatio;
+ Calculator.Calculate(X, accel, settings.sensitivity, Calculator.SimulatedInputX);
+ Calculator.Calculate(Y, accel, sensY, Calculator.SimulatedInputY);
}
}
}
diff --git a/grapher/Models/Calculations/Data/AccelDataXYDirectional.cs b/grapher/Models/Calculations/Data/AccelDataXYDirectional.cs
index 8bd889d..b139719 100644
--- a/grapher/Models/Calculations/Data/AccelDataXYDirectional.cs
+++ b/grapher/Models/Calculations/Data/AccelDataXYDirectional.cs
@@ -67,7 +67,7 @@ namespace grapher.Models.Calculations.Data
}
}
- public void CreateGraphData(ManagedAccel accel, DriverSettings settings)
+ public void CreateGraphData(ManagedAccel accel, Profile settings)
{
Clear();
Calculator.CalculateDirectional(AngleToData, accel, settings, Calculator.SimulatedDirectionalInput);
diff --git a/grapher/Models/Calculations/Data/IAccelData.cs b/grapher/Models/Calculations/Data/IAccelData.cs
index 576e6df..2ae6716 100644
--- a/grapher/Models/Calculations/Data/IAccelData.cs
+++ b/grapher/Models/Calculations/Data/IAccelData.cs
@@ -10,7 +10,7 @@ namespace grapher.Models.Calculations.Data
{
void CalculateDots(double x, double y, double timeInMs);
- void CreateGraphData(ManagedAccel accel, DriverSettings settings);
+ void CreateGraphData(ManagedAccel accel, Profile settings);
void Clear();
diff --git a/grapher/Models/Charts/AccelCharts.cs b/grapher/Models/Charts/AccelCharts.cs
index 631c2e2..93c9218 100644
--- a/grapher/Models/Charts/AccelCharts.cs
+++ b/grapher/Models/Charts/AccelCharts.cs
@@ -121,9 +121,9 @@ namespace grapher
ChartState.Bind();
}
- public void ShowActive(DriverSettings driverSettings)
+ public void ShowActive(Profile args)
{
- ChartState = ChartStateManager.DetermineState(driverSettings);
+ ChartState = ChartStateManager.DetermineState(args);
ChartState.Activate();
Bind();
}
@@ -134,9 +134,9 @@ namespace grapher
ChartState.Redraw();
}
- public void Calculate(ManagedAccel accel, DriverSettings settings)
+ public void Calculate(ManagedAccel accel, Profile settings)
{
- ChartState.SetUpCalculate(settings);
+ ChartState.SetUpCalculate();
ChartState.Calculate(accel, settings);
}
diff --git a/grapher/Models/Charts/ChartState/ChartState.cs b/grapher/Models/Charts/ChartState/ChartState.cs
index a50eaf0..eca2e43 100644
--- a/grapher/Models/Charts/ChartState/ChartState.cs
+++ b/grapher/Models/Charts/ChartState/ChartState.cs
@@ -35,7 +35,7 @@ namespace grapher.Models.Charts.ChartState
public AccelCalculator Calculator { get; }
- public virtual DriverSettings Settings { get; set; }
+ public virtual Profile Settings { get; set; }
internal bool TwoDotsPerGraph { get; set; }
@@ -48,7 +48,7 @@ namespace grapher.Models.Charts.ChartState
public abstract void Activate();
- public virtual void Calculate(ManagedAccel accel, DriverSettings settings)
+ public virtual void Calculate(ManagedAccel accel, Profile settings)
{
Data.CreateGraphData(accel, settings);
}
@@ -60,7 +60,7 @@ namespace grapher.Models.Charts.ChartState
GainChart.Update();
}
- public virtual void SetUpCalculate(DriverSettings settings)
+ public virtual void SetUpCalculate()
{
Data.Clear();
Calculator.ScaleByMouseSettings();
diff --git a/grapher/Models/Charts/ChartState/ChartStateManager.cs b/grapher/Models/Charts/ChartState/ChartStateManager.cs
index 3d4bbec..1e5386c 100644
--- a/grapher/Models/Charts/ChartState/ChartStateManager.cs
+++ b/grapher/Models/Charts/ChartState/ChartStateManager.cs
@@ -50,14 +50,14 @@ namespace grapher.Models.Charts.ChartState
private XYTwoGraphState XYTwoGraphState { get; }
- public ChartState DetermineState(DriverSettings settings)
+ public ChartState DetermineState(Profile settings)
{
ChartState chartState;
if (settings.combineMagnitudes)
{
- if (settings.sensitivity.x != settings.sensitivity.y ||
- settings.domainArgs.domainXY.x != settings.domainArgs.domainXY.y ||
+ if (settings.yxSensRatio != 1 ||
+ settings.domainXY.x != settings.domainXY.y ||
settings.rangeXY.x != settings.rangeXY.y)
{
chartState = XYOneGraphState;
diff --git a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
index 5b6c2b8..387d1b1 100644
--- a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
+++ b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
@@ -23,7 +23,7 @@ namespace grapher.Models.Charts.ChartState
Data = new AccelDataXYComponential(xPoints, yPoints, accelCalculator);
}
- public override DriverSettings Settings { get; set; }
+ public override Profile Settings { get; set; }
public override void Activate()
{
diff --git a/grapher/Models/Devices/DeviceDialogItem.cs b/grapher/Models/Devices/DeviceDialogItem.cs
new file mode 100644
index 0000000..9ca5528
--- /dev/null
+++ b/grapher/Models/Devices/DeviceDialogItem.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher.Models.Devices
+{
+ public class DeviceDialogItem
+ {
+ public MultiHandleDevice device;
+ public DeviceSettings oldSettings;
+ public DeviceConfig newConfig;
+ public string newProfile;
+ public bool overrideDefaultConfig;
+
+ public override string ToString()
+ {
+ return string.IsNullOrWhiteSpace(device.name) ?
+ device.id :
+ device.name;
+ }
+ }
+}
diff --git a/grapher/Models/Devices/DeviceIDItem.cs b/grapher/Models/Devices/DeviceIDItem.cs
deleted file mode 100644
index 8f1587b..0000000
--- a/grapher/Models/Devices/DeviceIDItem.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace grapher.Models.Devices
-{
- public class DeviceIDItem
- {
- public DeviceIDItem(string name, string id, DeviceIDManager manager)
- {
- Name = name;
- ID = id;
- Manager = manager;
- DeviceIDMenuItem = new ToolStripMenuItem();
- DeviceIDMenuItem.Checked = false;
- DeviceIDMenuItem.Text = MenuItemText();
- DeviceIDMenuItem.Click += OnClicked;
- manager.DeviceIDsMenuItem.DropDownItems.Add(DeviceIDMenuItem);
- }
-
- private ToolStripMenuItem DeviceIDMenuItem { get; }
-
- public string Name { get; }
-
- public string ID { get; }
-
- private DeviceIDManager Manager { get; }
-
- public void SetActivated()
- {
- DeviceIDMenuItem.Checked = true;
- }
-
- public void SetDeactivated()
- {
- DeviceIDMenuItem.Checked = false;
- }
-
- private string MenuItemText() => string.IsNullOrEmpty(ID) ? $"{Name}" : ID.Replace("&", "&&");
-
- private string DisconnectedText() => $"Disconnected: {ID}";
-
- public void SetDisconnected()
- {
- DeviceIDMenuItem.ForeColor = Color.DarkGray;
- DeviceIDMenuItem.Text = DisconnectedText();
- }
-
- public void OnClicked(object sender, EventArgs e)
- {
- Manager.SetActive(this);
- }
-
- public override bool Equals(object obj)
- {
- return obj is DeviceIDItem item &&
- Name == item.Name &&
- ID == item.ID;
- }
-
- public override int GetHashCode()
- {
- int hashCode = -1692744877;
- hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Name);
- hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(ID);
- return hashCode;
- }
- }
-}
diff --git a/grapher/Models/Devices/DeviceIDManager.cs b/grapher/Models/Devices/DeviceIDManager.cs
deleted file mode 100644
index 39856a1..0000000
--- a/grapher/Models/Devices/DeviceIDManager.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Management;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace grapher.Models.Devices
-{
- public class DeviceIDManager
- {
- public DeviceIDManager(ToolStripMenuItem deviceIDs)
- {
- DeviceIDsMenuItem = deviceIDs;
- DeviceIDsMenuItem.Checked = false;
- }
-
- public ToolStripMenuItem DeviceIDsMenuItem { get; }
-
- public string ID { get => SelectedDeviceID.ID; }
-
- public DeviceIDItem SelectedDeviceID { get; private set; }
-
- public Dictionary<string, DeviceIDItem> DeviceIDs { get; private set; }
-
- public void SetActive(DeviceIDItem deviceIDItem)
- {
- if (SelectedDeviceID != null)
- {
- SelectedDeviceID.SetDeactivated();
- }
-
- SelectedDeviceID = deviceIDItem;
- SelectedDeviceID.SetActivated();
- }
-
- public void Update(string devID)
- {
- DeviceIDsMenuItem.DropDownItems.Clear();
-
- bool found = string.IsNullOrEmpty(devID);
-
- var anyDevice = new DeviceIDItem("Any", string.Empty, this);
-
- if (found) SetActive(anyDevice);
-
- foreach (string id in RawInputInterop.GetDeviceIDs())
- {
- var deviceItem = new DeviceIDItem(string.Empty, id, this);
- if (!found && deviceItem.ID.Equals(devID))
- {
- SetActive(deviceItem);
- found = true;
- }
- }
-
- if (!found)
- {
- var deviceItem = new DeviceIDItem(string.Empty, devID, this);
- deviceItem.SetDisconnected();
- SetActive(deviceItem);
- }
- }
-
- }
-}
diff --git a/grapher/Models/Mouse/MouseWatcher.cs b/grapher/Models/Mouse/MouseWatcher.cs
index c5c2ae5..fb34dd6 100644
--- a/grapher/Models/Mouse/MouseWatcher.cs
+++ b/grapher/Models/Mouse/MouseWatcher.cs
@@ -691,7 +691,9 @@ namespace grapher.Models.Mouse
AccelCharts = accelCharts;
SettingsManager = setMngr;
MouseData = new MouseData();
- DeviceHandles = new List<IntPtr>();
+
+ LastMoveDisplayFormat = Constants.MouseMoveDefaultFormat;
+ LastMoveNormalized = false;
RAWINPUTDEVICE device = new RAWINPUTDEVICE();
device.WindowHandle = ContainingForm.Handle;
@@ -722,9 +724,9 @@ namespace grapher.Models.Mouse
private Stopwatch Stopwatch { get; }
- private List<IntPtr> DeviceHandles { get; }
+ private string LastMoveDisplayFormat { get; set; }
- private bool AnyDevice { get; set; }
+ private bool LastMoveNormalized { get; set; }
private double PollTime
{
@@ -735,20 +737,10 @@ namespace grapher.Models.Mouse
#region Methods
- public void UpdateHandles(string devID)
- {
- DeviceHandles.Clear();
- AnyDevice = string.IsNullOrEmpty(devID);
- if (!AnyDevice)
- {
- RawInputInterop.AddHandlesFromID(devID, DeviceHandles);
- }
- }
-
public void UpdateLastMove()
{
MouseData.Get(out var x, out var y);
- Display.Text = $"Last (x, y): ({x}, {y})";
+ Display.Text = string.Format(LastMoveDisplayFormat, x, y);
}
public void ReadMouseMove(Message message)
@@ -758,7 +750,25 @@ namespace grapher.Models.Mouse
_ = GetRawInputData(message.LParam, RawInputCommand.Input, out rawInput, ref size, Marshal.SizeOf(typeof(RAWINPUTHEADER)));
bool relative = !rawInput.Data.Mouse.Flags.HasFlag(RawMouseFlags.MoveAbsolute);
- bool deviceMatch = AnyDevice || DeviceHandles.Contains(rawInput.Header.Device);
+
+ bool deviceMatch = false;
+ foreach (var (handle, normalized) in SettingsManager.ActiveNormTaggedHandles)
+ {
+ if (handle == rawInput.Header.Device)
+ {
+ deviceMatch = true;
+
+ if (normalized != LastMoveNormalized)
+ {
+ LastMoveDisplayFormat = normalized ?
+ Constants.MouseMoveNormalizedFormat :
+ Constants.MouseMoveDefaultFormat;
+ LastMoveNormalized = normalized;
+ }
+
+ break;
+ }
+ }
if (relative && deviceMatch && (rawInput.Data.Mouse.LastX != 0 || rawInput.Data.Mouse.LastY != 0))
{
@@ -772,8 +782,11 @@ namespace grapher.Models.Mouse
// strip negative directional multipliers, charts calculated from positive input
- Vec2<double> dirMults = SettingsManager.ActiveSettings.baseSettings
- .directionalMultipliers;
+ Vec2<double> dirMults = new Vec2<double>
+ {
+ x = SettingsManager.ActiveProfile.lrSensRatio,
+ y = SettingsManager.ActiveProfile.udSensRatio
+ };
if (dirMults.x > 0 && x < 0)
{
diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs
index 75eb017..3451402 100644
--- a/grapher/Models/Options/AccelOptionSet.cs
+++ b/grapher/Models/Options/AccelOptionSet.cs
@@ -99,7 +99,7 @@ namespace grapher.Models.Options
Options.Top = TopAnchor;
}
- public void SetArgs(ref AccelArgs args)
+ public void SetArgsFromActiveValues(ref AccelArgs args)
{
Options.SetArgs(ref args);
}
diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs
index 44c9ea8..359b6b8 100644
--- a/grapher/Models/Options/AccelTypeOptions.cs
+++ b/grapher/Models/Options/AccelTypeOptions.cs
@@ -1,10 +1,8 @@
using grapher.Layouts;
using grapher.Models.Options;
+using grapher.Models.Options.Cap;
using grapher.Models.Options.LUT;
-using grapher.Models.Serialized;
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Windows.Forms;
namespace grapher
@@ -21,7 +19,6 @@ namespace grapher
public static readonly LayoutBase Power = new PowerLayout();
public static readonly LayoutBase LUT = new LUTLayout();
public static readonly LayoutBase Off = new OffLayout();
- public static readonly LayoutBase Unsupported = new UnsupportedLayout();
#endregion Fields
@@ -30,14 +27,15 @@ namespace grapher
public AccelTypeOptions(
ComboBox accelDropdown,
CheckBoxOption gainSwitch,
- Option acceleration,
+ CapOptions classicCap,
+ CapOptions powerCap,
+ Option outputJump,
+ Option outputOffset,
Option decayRate,
Option growthRate,
Option smooth,
- Option scale,
- Option cap,
- Option weight,
- Option offset,
+ Option inputJump,
+ Option inputOffset,
Option limit,
Option powerClassic,
Option exponent,
@@ -66,17 +64,18 @@ namespace grapher
AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged);
GainSwitch = gainSwitch;
- Acceleration = acceleration;
DecayRate = decayRate;
GrowthRate = growthRate;
Smooth = smooth;
- Scale = scale;
- Cap = cap;
- Weight = weight;
- Offset = offset;
+ ClassicCap = classicCap;
+ PowerCap = powerCap;
+ InputJump = inputJump;
+ InputOffset = inputOffset;
Limit = limit;
PowerClassic = powerClassic;
Exponent = exponent;
+ OutputJump = outputJump;
+ OutputOffset = outputOffset;
Midpoint = midpoint;
WriteButton = writeButton;
AccelTypeActiveValue = accelTypeActiveValue;
@@ -86,7 +85,7 @@ namespace grapher
AccelTypeActiveValue.Left = AccelDropdown.Left + AccelDropdown.Width;
AccelTypeActiveValue.Height = AccelDropdown.Height;
- GainSwitch.Left = Acceleration.Field.Left;
+ GainSwitch.Left = DecayRate.Field.Left;
LutPanel.Left = AccelDropdown.Left;
LutPanel.Width = AccelDropdown.Width + AccelTypeActiveValue.Width;
@@ -109,21 +108,23 @@ namespace grapher
public ActiveValueLabel AccelTypeActiveValue { get; }
- public Option Acceleration { get; }
-
public Option DecayRate { get; }
public Option GrowthRate { get; }
public Option Smooth { get; }
- public Option Scale { get; }
+ public CapOptions ClassicCap { get; }
+
+ public CapOptions PowerCap { get; }
+
+ public Option InputJump { get; }
- public Option Cap { get; }
+ public Option OutputJump { get; }
- public Option Weight { get; }
+ public Option InputOffset { get; }
- public Option Offset { get; }
+ public Option OutputOffset { get; }
public Option Limit { get; }
@@ -229,14 +230,15 @@ namespace grapher
AccelTypeActiveValue.Hide();
GainSwitch.Hide();
- Acceleration.Hide();
DecayRate.Hide();
GrowthRate.Hide();
Smooth.Hide();
- Scale.Hide();
- Cap.Hide();
- Weight.Hide();
- Offset.Hide();
+ ClassicCap.Hide();
+ PowerCap.Hide();
+ OutputOffset.Hide();
+ InputOffset.Hide();
+ InputJump.Hide();
+ OutputJump.Hide();
Limit.Hide();
PowerClassic.Hide();
Exponent.Hide();
@@ -262,21 +264,30 @@ namespace grapher
{
AccelerationType = AccelTypeFromSettings(ref args);
AccelTypeActiveValue.SetValue(AccelerationType.ActiveName);
- GainSwitch.SetActiveValue(args.legacy);
- Weight.SetActiveValue(args.weight);
- Cap.SetActiveValue(args.cap);
- Offset.SetActiveValue(args.offset);
- Acceleration.SetActiveValue(args.accelClassic);
+ GainSwitch.SetActiveValue(args.gain);
+ ClassicCap.SetActiveValues(
+ args.acceleration,
+ args.cap.x,
+ args.cap.y,
+ args.capMode);
+ PowerCap.SetActiveValues(
+ args.scale,
+ args.cap.x,
+ args.cap.y,
+ args.capMode);
+ InputJump.SetActiveValue(args.cap.x);
+ OutputJump.SetActiveValue(args.cap.y);
+ OutputOffset.SetActiveValue(args.outputOffset);
+ InputOffset.SetActiveValue(args.inputOffset);
DecayRate.SetActiveValue(args.decayRate);
GrowthRate.SetActiveValue(args.growthRate);
Smooth.SetActiveValue(args.smooth);
- Scale.SetActiveValue(args.scale);
Limit.SetActiveValue((args.mode == AccelMode.motivity) ? args.motivity : args.limit);
- PowerClassic.SetActiveValue(args.power);
- Exponent.SetActiveValue(args.exponent);
+ PowerClassic.SetActiveValue(args.exponentClassic);
+ Exponent.SetActiveValue(args.exponentPower);
Midpoint.SetActiveValue(args.midpoint);
- LutPanel.SetActiveValues(args.tableData.points, args.tableData.length);
- LutApply.SetActiveValue(args.tableData.velocity);
+ LutPanel.SetActiveValues(args.data, args.length, args.mode);
+ LutApply.SetActiveValue(args.gain);
}
public void ShowFull()
@@ -286,8 +297,8 @@ namespace grapher
AccelDropdown.Text = Constants.AccelDropDownDefaultFullText;
}
- Left = Acceleration.Left + Constants.DropDownLeftSeparation;
- Width = Acceleration.Width - Constants.DropDownLeftSeparation;
+ Left = DecayRate.Left + Constants.DropDownLeftSeparation;
+ Width = DecayRate.Width - Constants.DropDownLeftSeparation;
LutText.Expand();
HandleLUTOptionsOnResize();
@@ -300,25 +311,38 @@ namespace grapher
AccelDropdown.Text = Constants.AccelDropDownDefaultShortText;
}
- Left = Acceleration.Field.Left;
- Width = Acceleration.Field.Width;
+ Left = DecayRate.Field.Left;
+ Width = DecayRate.Field.Width;
LutText.Shorten();
}
public void SetArgs(ref AccelArgs args)
{
- if (AccelerationType == Unsupported) throw new NotImplementedException();
-
args.mode = AccelerationType.Mode;
- args.legacy = !GainSwitch.CheckBox.Checked;
+ args.gain = LutPanel.Visible ?
+ LutApply.ApplyType == LutApplyOptions.LutApplyType.Velocity :
+ GainSwitch.CheckBox.Checked;
- if (Acceleration.Visible) args.accelClassic = Acceleration.Field.Data;
if (DecayRate.Visible) args.decayRate = DecayRate.Field.Data;
if (GrowthRate.Visible) args.growthRate = GrowthRate.Field.Data;
if (Smooth.Visible) args.smooth = Smooth.Field.Data;
- if (Scale.Visible) args.scale = Scale.Field.Data;
- if (Cap.Visible) args.cap = Cap.Field.Data;
+ if (ClassicCap.Visible)
+ {
+ args.acceleration = ClassicCap.Slope.Field.Data;
+ args.cap.x = ClassicCap.In.Field.Data;
+ args.cap.y = ClassicCap.Out.Field.Data;
+ args.capMode = ClassicCap.CapTypeOptions.GetSelectedCapMode();
+ }
+ if (PowerCap.Visible)
+ {
+ args.scale = PowerCap.Slope.Field.Data;
+ args.cap.x = PowerCap.In.Field.Data;
+ args.cap.y = PowerCap.Out.Field.Data;
+ args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode();
+ }
+ if (InputJump.Visible) args.cap.x = InputJump.Field.Data;
+ if (OutputJump.Visible) args.cap.y = OutputJump.Field.Data;
if (Limit.Visible)
{
if (args.mode == AccelMode.motivity)
@@ -328,34 +352,43 @@ namespace grapher
else
{
args.limit = Limit.Field.Data;
- }
+ }
}
- if (PowerClassic.Visible) args.power = PowerClassic.Field.Data;
- if (Exponent.Visible)args.exponent = Exponent.Field.Data;
- if (Offset.Visible) args.offset = Offset.Field.Data;
+ if (PowerClassic.Visible) args.exponentClassic = PowerClassic.Field.Data;
+ if (Exponent.Visible) args.exponentPower = Exponent.Field.Data;
+ if (InputOffset.Visible) args.inputOffset = InputOffset.Field.Data;
+ if (OutputOffset.Visible) args.outputOffset = OutputOffset.Field.Data;
+
if (Midpoint.Visible) args.midpoint = Midpoint.Field.Data;
- if (Weight.Visible) args.weight = Weight.Field.Data;
if (LutPanel.Visible)
{
(var points, var length) = LutPanel.GetPoints();
- args.tableData.points = points;
- args.tableData.length = length;
+ args.length = length * 2;
+
+ for (int i = 0; i < length; i++)
+ {
+ ref var p = ref points[i];
+ var data_idx = i * 2;
+ args.data[data_idx] = p.x;
+ args.data[data_idx + 1] = p.y;
+ }
}
- if (LutApply.Visible) args.tableData.velocity = LutApply.ApplyType == LutApplyOptions.LutApplyType.Velocity;
+
}
public override void AlignActiveValues()
{
AccelTypeActiveValue.Align();
GainSwitch.AlignActiveValues();
- Acceleration.AlignActiveValues();
DecayRate.AlignActiveValues();
GrowthRate.AlignActiveValues();
Smooth.AlignActiveValues();
- Scale.AlignActiveValues();
- Cap.AlignActiveValues();
- Offset.AlignActiveValues();
- Weight.AlignActiveValues();
+ ClassicCap.AlignActiveValues();
+ PowerCap.AlignActiveValues();
+ OutputOffset.AlignActiveValues();
+ InputOffset.AlignActiveValues();
+ OutputJump.AlignActiveValues();
+ InputJump.AlignActiveValues();
Limit.AlignActiveValues();
PowerClassic.AlignActiveValues();
Exponent.AlignActiveValues();
@@ -367,7 +400,7 @@ namespace grapher
{
LutText.Left = AccelDropdown.Left;
LutPanel.Left = GainSwitch.Left - 100;
- LutPanel.Width = Acceleration.ActiveValueLabel.CenteringLabel.Right - LutPanel.Left;
+ LutPanel.Width = DecayRate.ActiveValueLabel.CenteringLabel.Right - LutPanel.Left;
LutApply.Left = LutPanel.Left;
LutApply.Width = AccelDropdown.Right - LutPanel.Left;
}
@@ -387,17 +420,18 @@ namespace grapher
AccelerationType.Layout(
GainSwitch,
- Acceleration,
+ ClassicCap,
+ PowerCap,
DecayRate,
GrowthRate,
Smooth,
- Scale,
- Cap,
- Weight,
- Offset,
+ InputJump,
+ InputOffset,
Limit,
PowerClassic,
Exponent,
+ OutputJump,
+ OutputOffset,
Midpoint,
LutText,
LutPanel,
@@ -407,19 +441,9 @@ namespace grapher
private LayoutBase AccelTypeFromSettings(ref AccelArgs args)
{
- if (args.spacedTableArgs.mode != SpacedTableMode.off)
- {
- if (!AccelDropdown.Items.Contains(Unsupported))
- {
- AccelDropdown.Items.Add(Unsupported);
- }
-
- return Unsupported;
- }
-
switch (args.mode)
{
- case AccelMode.classic: return (args.power == 2) ? Linear : Classic;
+ case AccelMode.classic: return (args.exponentClassic == 2) ? Linear : Classic;
case AccelMode.jump: return Jump;
case AccelMode.natural: return Natural;
case AccelMode.motivity: return Motivity;
diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs
index 06854b8..4946414 100644
--- a/grapher/Models/Options/ApplyOptions.cs
+++ b/grapher/Models/Options/ApplyOptions.cs
@@ -15,7 +15,8 @@ namespace grapher.Models.Options
AccelOptionSet optionSetX,
AccelOptionSet optionSetY,
DirectionalityOptions directionalityOptions,
- OptionXY sensitivity,
+ Option sensitivity,
+ LockableOption yxRatio,
Option rotation,
Label lockXYLabel,
AccelCharts accelCharts)
@@ -34,6 +35,7 @@ namespace grapher.Models.Options
OptionSetX = optionSetX;
OptionSetY = optionSetY;
Sensitivity = sensitivity;
+ YToXRatio = yxRatio;
Rotation = rotation;
LockXYLabel = lockXYLabel;
AccelCharts = accelCharts;
@@ -44,7 +46,8 @@ namespace grapher.Models.Options
ByComponentVectorXYLock.CheckedChanged += new System.EventHandler(OnByComponentXYLockChecked);
ByComponentVectorXYLock.Checked = true;
- Rotation.SnapTo(Sensitivity);
+ YToXRatio.SnapTo(Sensitivity);
+ Rotation.SnapTo(YToXRatio);
EnableWholeApplication();
}
@@ -65,7 +68,9 @@ namespace grapher.Models.Options
public DirectionalityOptions Directionality { get; }
- public OptionXY Sensitivity { get; }
+ public Option Sensitivity { get; }
+
+ public LockableOption YToXRatio { get; }
public Option Rotation { get; }
@@ -81,30 +86,31 @@ namespace grapher.Models.Options
#region Methods
- public void SetArgs(ref Vec2<AccelArgs> args)
+ public void SetArgsFromActiveValues(ref AccelArgs argsX, ref AccelArgs argsY)
{
- OptionSetX.SetArgs(ref args.x);
+ OptionSetX.SetArgsFromActiveValues(ref argsX);
if (ByComponentVectorXYLock.Checked)
{
- OptionSetX.SetArgs(ref args.y);
+ OptionSetX.SetArgsFromActiveValues(ref argsY);
}
else
{
- OptionSetY.SetArgs(ref args.y);
+ OptionSetY.SetArgsFromActiveValues(ref argsY);
}
}
- public void SetActiveValues(DriverSettings settings)
+ public void SetActiveValues(Profile settings)
{
- Sensitivity.SetActiveValues(settings.sensitivity.x, settings.sensitivity.y);
+ Sensitivity.SetActiveValue(settings.sensitivity);
+ YToXRatio.SetActiveValue(settings.yxSensRatio);
Rotation.SetActiveValue(settings.rotation);
WholeVectorCheckBox.Checked = settings.combineMagnitudes;
ByComponentVectorCheckBox.Checked = !settings.combineMagnitudes;
- ByComponentVectorXYLock.Checked = settings.args.x.Equals(settings.args.y);
- OptionSetX.SetActiveValues(ref settings.args.x);
- OptionSetY.SetActiveValues(ref settings.args.y);
+ ByComponentVectorXYLock.Checked = settings.argsX.Equals(settings.argsY);
+ OptionSetX.SetActiveValues(ref settings.argsX);
+ OptionSetY.SetActiveValues(ref settings.argsY);
Directionality.SetActiveValues(settings);
@@ -210,8 +216,8 @@ namespace grapher.Models.Options
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;
- ByComponentVectorXYLock.Left = Sensitivity.Fields.LockCheckBox.Left;
+ YToXRatio.LockBox.Left = LockXYLabel.Left + LockXYLabel.Width / 2 - YToXRatio.LockBox.Width / 2;
+ ByComponentVectorXYLock.Left = YToXRatio.LockBox.Left;
AlignActiveValues();
}
diff --git a/grapher/Models/Options/Cap/CapOptions.cs b/grapher/Models/Options/Cap/CapOptions.cs
new file mode 100644
index 0000000..68326e5
--- /dev/null
+++ b/grapher/Models/Options/Cap/CapOptions.cs
@@ -0,0 +1,249 @@
+using System;
+using System.Windows.Forms;
+using static grapher.Models.Options.Cap.CapTypeOptions;
+
+namespace grapher.Models.Options.Cap
+{
+ public class CapOptions : OptionBase
+ {
+ #region Constants
+
+ public const string InCapLabel = "Cap: Input";
+ public const string OutCapLabel = "Cap: Output";
+
+ #endregion Constants
+
+ #region Fields
+
+ private int _top;
+
+ #endregion Fields
+
+ #region Constructors
+
+ public CapOptions(
+ CapTypeOptions capTypeOptions,
+ Option capIn,
+ Option capOut,
+ Option slope,
+ Option disableOptionInBoth = null,
+ CheckBoxOption disableInBoth = null)
+ {
+ CapTypeOptions = capTypeOptions;
+ In = capIn;
+ Out = capOut;
+ Slope = slope;
+ DisableOptionInBoth = disableOptionInBoth;
+ DisableInBoth = disableInBoth;
+
+ ShouldShow = true;
+ _top = Slope.Top;
+ BottomElement = In;
+ CapTypeOptions.OptionsDropdown.SelectedIndexChanged += OnCapTypeDropdownSelectedItemChanged;
+ CapTypeOptions.SelectedCapOption = InCap;
+
+ if (DisableInBoth != null)
+ {
+ DisableInBoth.CheckBox.CheckedChanged += OnDisableInBothCheckedChange;
+ }
+ }
+
+ #endregion Constructors
+
+ #region Properties
+
+ public CapTypeOptions CapTypeOptions { get; }
+
+ public Option In { get; }
+
+ public Option Out { get; }
+
+ public Option Slope { get; }
+
+ private Option DisableOptionInBoth { get; }
+
+ private CheckBoxOption DisableInBoth { get; }
+
+ public override int Left
+ {
+ get => In.Left;
+
+ set
+ {
+ In.Left = value;
+ Out.Left = value;
+ Slope.Left = value;
+ }
+ }
+
+ public override int Top
+ {
+ get => _top;
+ set
+ {
+ _top = value;
+ Layout(value);
+ }
+ }
+
+ public override int Height
+ {
+ get => BottomElement.Top + BottomElement.Height - Top;
+ }
+
+ public override int Width
+ {
+ get => CapTypeOptions.Width;
+
+ set
+ {
+ CapTypeOptions.Width = value;
+ In.Width = value;
+ Out.Width = value;
+ Slope.Width = value;
+ }
+ }
+
+ public override bool Visible
+ {
+ get => ShouldShow;
+ }
+
+ private bool ShouldShow { get; set; }
+
+ private IOption BottomElement { get; set; }
+
+ #endregion Properties
+
+ #region Methods
+
+ public override void AlignActiveValues()
+ {
+ Slope.AlignActiveValues();
+ CapTypeOptions.AlignActiveValues();
+ In.AlignActiveValues();
+ Out.AlignActiveValues();
+ }
+
+ public override void Show(string name)
+ {
+ ShouldShow = true;
+ Layout(Top, name);
+ }
+
+ public override void Hide()
+ {
+ ShouldShow = false;
+ CapTypeOptions.Hide();
+ Slope.Hide();
+ In.Hide();
+ Out.Hide();
+ }
+
+ public void SetActiveValues(
+ double scale,
+ double inCap,
+ double outCap,
+ CapMode capMode)
+ {
+ Slope.SetActiveValue(scale);
+ In.SetActiveValue(inCap);
+ Out.SetActiveValue(outCap);
+ CapTypeOptions.SetActiveValue(capMode);
+ }
+
+ private void Layout(int top, string name = null)
+ {
+ switch (CapTypeOptions.SelectedCapType)
+ {
+ case CapType.Input:
+ if (ShouldShow)
+ {
+ Slope.Show();
+ CapTypeOptions.Show(name);
+ ShowInCap();
+ Out.Hide();
+ }
+
+ Slope.Top = top;
+ CapTypeOptions.SnapTo(Slope);
+ In.SnapTo(CapTypeOptions);
+
+ BottomElement = In;
+ break;
+ case CapType.Output:
+ if (ShouldShow)
+ {
+ Slope.Show();
+ CapTypeOptions.Show(name);
+ In.Hide();
+ ShowOutCap();
+ }
+
+ Slope.Top = top;
+ CapTypeOptions.SnapTo(Slope);
+ Out.SnapTo(CapTypeOptions);
+
+ BottomElement = Out;
+ break;
+ case CapType.Both:
+ if (ShouldShow)
+ {
+ CapTypeOptions.Show(name);
+ Slope.Hide();
+ ShowInCap();
+ ShowOutCap();
+ }
+
+ CapTypeOptions.Top = top;
+ In.SnapTo(CapTypeOptions);
+ Out.SnapTo(In);
+
+ BottomElement = Out;
+ break;
+ }
+
+ DisableBuggedOptionIfApplicable();
+ }
+
+ private void DisableBuggedOptionIfApplicable()
+ {
+ if (DisableOptionInBoth != null)
+ {
+ if (CapTypeOptions.SelectedCapType == CapType.Both &&
+ DisableInBoth != null &&
+ !DisableInBoth.CheckBox.Checked)
+ {
+ DisableOptionInBoth.Field.SetToUnavailable();
+ }
+ else
+ {
+ DisableOptionInBoth.Field.SetToDefault();
+ }
+ }
+ }
+
+ private void ShowInCap()
+ {
+ In.Show(InCapLabel);
+ }
+
+ private void ShowOutCap()
+ {
+ Out.Show(OutCapLabel);
+ }
+
+ private void OnCapTypeDropdownSelectedItemChanged(object sender, EventArgs e)
+ {
+ Layout(Top);
+ CapTypeOptions.CheckIfDefault();
+ }
+
+ private void OnDisableInBothCheckedChange(object sender, EventArgs e)
+ {
+ DisableBuggedOptionIfApplicable();
+ }
+
+ #endregion Methods
+ }
+}
diff --git a/grapher/Models/Options/Cap/CapTypeOptions.cs b/grapher/Models/Options/Cap/CapTypeOptions.cs
new file mode 100644
index 0000000..6447feb
--- /dev/null
+++ b/grapher/Models/Options/Cap/CapTypeOptions.cs
@@ -0,0 +1,160 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher.Models.Options.Cap
+{
+ public class CapTypeOptions : ComboBoxOptionsBase
+ {
+ #region Enum
+
+ public enum CapType
+ {
+ Input,
+ Output,
+ Both,
+ }
+
+ #endregion Enum
+
+ #region Classes
+
+ public class CapTypeOption
+ {
+ public CapType Type { get; set; }
+
+ public string Name => Type.ToString();
+
+ public override string ToString() => Name;
+ }
+
+ #endregion Classes
+
+ #region Static
+
+ public static readonly CapTypeOption InCap = new CapTypeOption
+ {
+ Type = CapType.Input,
+ };
+
+ public static readonly CapTypeOption OutCap = new CapTypeOption
+ {
+ Type = CapType.Output,
+ };
+
+ public static readonly CapTypeOption BothCap = new CapTypeOption
+ {
+ Type = CapType.Both,
+ };
+
+ public static readonly CapTypeOption[] AllCapTypeOptions = new CapTypeOption[]
+ {
+ InCap,
+ OutCap,
+ BothCap
+ };
+
+ #endregion Static
+
+ #region Constructors
+
+ public CapTypeOptions(
+ Label label,
+ ComboBox dropdown,
+ ActiveValueLabel activeValueLabel,
+ int left)
+ : base(
+ label,
+ dropdown,
+ activeValueLabel)
+ {
+ OptionsDropdown.Items.AddRange(
+ new CapTypeOption[]
+ {
+ InCap,
+ OutCap,
+ BothCap
+ });
+
+ Default = OutCap;
+
+ label.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ label.Left = left;
+ label.Width = OptionsDropdown.Left - left - Constants.OptionLabelBoxSeperation;
+ label.Height = OptionsDropdown.Height;
+ }
+
+ #endregion Constructors
+
+ #region Properties
+
+ public CapType SelectedCapType => SelectedCapOption.Type;
+
+ public CapTypeOption SelectedCapOption
+ {
+ get
+ {
+ return OptionsDropdown.SelectedItem as CapTypeOption;
+ }
+ set
+ {
+ OptionsDropdown.SelectedItem = value;
+ }
+ }
+
+ private CapTypeOption Default { get; set; }
+
+ public CapMode GetSelectedCapMode()
+ {
+ switch(SelectedCapType)
+ {
+ case CapType.Output: return CapMode.output;
+ case CapType.Both: return CapMode.in_out;
+ case CapType.Input:
+ default: return CapMode.input;
+ }
+ }
+
+ #endregion Properties
+
+ #region Methods
+
+ public static CapTypeOption CapTypeOptionFromSettings(CapMode capMode)
+ {
+ switch (capMode)
+ {
+ case CapMode.output:
+ return OutCap;
+ case CapMode.in_out:
+ return BothCap;
+ case CapMode.input:
+ default:
+ return InCap;
+ }
+ }
+
+ public void SetActiveValue(CapMode capMode)
+ {
+ Default = CapTypeOptionFromSettings(capMode);
+ SelectedCapOption = Default;
+ ActiveValueLabel.SetValue(SelectedCapOption.Name);
+ }
+
+ public void CheckIfDefault()
+ {
+ if (SelectedCapOption.Equals(Default))
+ {
+ OptionsDropdown.ForeColor = System.Drawing.Color.Gray;
+ }
+ else
+ {
+ OptionsDropdown.ForeColor = System.Drawing.Color.Black;
+ }
+ }
+
+ #endregion Methods
+ }
+}
diff --git a/grapher/Models/Options/CheckBoxOption.cs b/grapher/Models/Options/CheckBoxOption.cs
index abf96d3..8c125ec 100644
--- a/grapher/Models/Options/CheckBoxOption.cs
+++ b/grapher/Models/Options/CheckBoxOption.cs
@@ -2,6 +2,9 @@
namespace grapher.Models.Options
{
+ /// <summary>
+ /// This is an option type that is just a checkbox.
+ /// </summary>
public class CheckBoxOption : OptionBase
{
public CheckBoxOption(
@@ -99,10 +102,10 @@ namespace grapher.Models.Options
ActiveValueLabel.Show();
}
- public void SetActiveValue(bool legacy)
+ public void SetActiveValue(bool gain)
{
- CheckBox.Checked = !legacy;
- var activeValueString = legacy ? "Legacy" : "Gain";
+ CheckBox.Checked = gain;
+ var activeValueString = gain ? "Gain" : "Legacy";
ActiveValueLabel.SetValue(activeValueString);
}
}
diff --git a/grapher/Models/Options/ComboBoxOptionsBase.cs b/grapher/Models/Options/ComboBoxOptionsBase.cs
new file mode 100644
index 0000000..6999e99
--- /dev/null
+++ b/grapher/Models/Options/ComboBoxOptionsBase.cs
@@ -0,0 +1,124 @@
+using System.Windows.Forms;
+
+namespace grapher.Models.Options
+{
+ public abstract class ComboBoxOptionsBase : OptionBase
+ {
+ #region Constructors
+
+ public ComboBoxOptionsBase(
+ Label label,
+ ComboBox dropdown,
+ ActiveValueLabel activeValueLabel)
+ {
+ OptionsDropdown = dropdown;
+ OptionsDropdown.Items.Clear();
+
+ Label = label;
+ Label.AutoSize = false;
+ Label.Width = 50;
+
+ ActiveValueLabel = activeValueLabel;
+ }
+
+ #endregion Constructors
+
+ #region Properties
+
+ public Label Label { get; }
+
+ public ActiveValueLabel ActiveValueLabel { get; }
+
+ public ComboBox OptionsDropdown { get; }
+
+ public override bool Visible
+ {
+ get
+ {
+ return Label.Visible || ShouldShow;
+ }
+ }
+
+ public override int Left
+ {
+ get
+ {
+ return Label.Left;
+ }
+ set
+ {
+ Label.Left = value;
+ OptionsDropdown.Left = Label.Left + Label.Width + Constants.OptionVerticalSeperation;
+ }
+ }
+
+ public override int Height
+ {
+ get
+ {
+ return OptionsDropdown.Height;
+ }
+ }
+
+ public override int Top
+ {
+ get
+ {
+ return OptionsDropdown.Top;
+ }
+ set
+ {
+ OptionsDropdown.Top = value;
+ Label.Top = (OptionsDropdown.Height - Label.Height) / 2 + OptionsDropdown.Top;
+ ActiveValueLabel.Top = value;
+ }
+ }
+
+ public override int Width
+ {
+ get
+ {
+ return Label.Width;
+ }
+ set
+ {
+ OptionsDropdown.Width = value - Label.Width - Constants.OptionLabelBoxSeperation;
+ }
+ }
+
+ protected bool ShouldShow { get; set; }
+
+ #endregion Properties
+
+ #region Methods
+
+ public override void Hide()
+ {
+ Label.Hide();
+ OptionsDropdown.Hide();
+ ActiveValueLabel.Hide();
+ ShouldShow = false;
+ }
+
+ public override void Show(string labelText)
+ {
+ Label.Show();
+
+ if (!string.IsNullOrWhiteSpace(labelText))
+ {
+ Label.Text = labelText;
+ }
+
+ OptionsDropdown.Show();
+ ActiveValueLabel.Show();
+ ShouldShow = true;
+ }
+
+ public override void AlignActiveValues()
+ {
+ ActiveValueLabel.Align();
+ }
+
+ #endregion Methods
+ }
+}
diff --git a/grapher/Models/Options/Directionality/DirectionalityOptions.cs b/grapher/Models/Options/Directionality/DirectionalityOptions.cs
index 9288132..35d2575 100644
--- a/grapher/Models/Options/Directionality/DirectionalityOptions.cs
+++ b/grapher/Models/Options/Directionality/DirectionalityOptions.cs
@@ -70,17 +70,16 @@ namespace grapher.Models.Options.Directionality
private bool IsHidden { get; set; }
- public DomainArgs GetDomainArgs()
+ public Tuple<Vec2<double>, double> GetDomainArgs()
{
- return new DomainArgs
+ var weights = new Vec2<double>
{
- domainXY = new Vec2<double>
- {
- x = Domain.Fields.X,
- y = Domain.Fields.Y,
- },
- lpNorm = ByComponentCheckBox.Checked ? 2 : LpNorm.Field.Data
+ x = Domain.Fields.X,
+ y = Domain.Fields.Y
};
+ double p = ByComponentCheckBox.Checked ? 2 : LpNorm.Field.Data;
+
+ return new Tuple<Vec2<double>, double>(weights, p);
}
public Vec2<double> GetRangeXY()
@@ -92,14 +91,14 @@ namespace grapher.Models.Options.Directionality
};
}
- public void SetActiveValues(DriverSettings settings)
+ public void SetActiveValues(Profile settings)
{
- Domain.SetActiveValues(settings.domainArgs.domainXY.x, settings.domainArgs.domainXY.y);
+ Domain.SetActiveValues(settings.domainXY.x, settings.domainXY.y);
Range.SetActiveValues(settings.rangeXY.x, settings.rangeXY.y);
if (settings.combineMagnitudes)
{
- LpNorm.SetActiveValue(settings.domainArgs.lpNorm);
+ LpNorm.SetActiveValue(settings.lpNorm);
}
else
{
diff --git a/grapher/Models/Options/LUT/LUTPanelOptions.cs b/grapher/Models/Options/LUT/LUTPanelOptions.cs
index 3690c76..eedcfa8 100644
--- a/grapher/Models/Options/LUT/LUTPanelOptions.cs
+++ b/grapher/Models/Options/LUT/LUTPanelOptions.cs
@@ -111,15 +111,26 @@ namespace grapher.Models.Options.LUT
// Nothing to do here.
}
- public void SetActiveValues(IEnumerable<Vec2<float>> activePoints, int length)
+ public void SetActiveValues(IEnumerable<float> rawData, int length, AccelMode mode)
{
- if (length > 0 && activePoints.First().x != 0)
+ if (mode == AccelMode.lut && length > 1 && rawData.First() != 0)
{
- ActiveValuesTextBox.Text = PointsToActiveValuesText(activePoints, length);
+ var pointsLen = length / 2;
+ var points = new Vec2<float>[pointsLen];
+ for (int i = 0; i < pointsLen; i++)
+ {
+ var data_idx = i * 2;
+ points[i] = new Vec2<float>
+ {
+ x = rawData.ElementAt(data_idx),
+ y = rawData.ElementAt(data_idx + 1)
+ };
+ }
+ ActiveValuesTextBox.Text = PointsToActiveValuesText(points, pointsLen);
if (string.IsNullOrWhiteSpace(PointsTextBox.Text))
{
- PointsTextBox.Text = PointsToEntryTextBoxText(activePoints, length);
+ PointsTextBox.Text = PointsToEntryTextBoxText(points, pointsLen);
}
}
else
@@ -135,14 +146,12 @@ namespace grapher.Models.Options.LUT
private static (Vec2<float>[], int length) UserTextToPoints(string userText)
{
- const int MaxPoints = 256;
-
if (string.IsNullOrWhiteSpace(userText))
{
throw new ApplicationException("Text must be entered in text box to fill Look Up Table.");
}
- Vec2<float>[] points = new Vec2<float>[MaxPoints];
+ Vec2<float>[] points = new Vec2<float>[AccelArgs.MaxLutPoints];
var userTextSplit = userText.Trim().Trim(';').Split(';');
int index = 0;
@@ -155,9 +164,9 @@ namespace grapher.Models.Options.LUT
throw new ApplicationException("At least 2 points required");
}
- if (pointsCount > MaxPoints)
+ if (pointsCount > AccelArgs.MaxLutPoints)
{
- throw new ApplicationException($"Number of points exceeds max ({MaxPoints})");
+ throw new ApplicationException($"Number of points exceeds max ({AccelArgs.MaxLutPoints})");
}
foreach(var pointEntry in userTextSplit)
diff --git a/grapher/Models/Options/LUT/LutApplyOptions.cs b/grapher/Models/Options/LUT/LutApplyOptions.cs
index 7d8c737..61cae61 100644
--- a/grapher/Models/Options/LUT/LutApplyOptions.cs
+++ b/grapher/Models/Options/LUT/LutApplyOptions.cs
@@ -7,10 +7,9 @@ using System.Windows.Forms;
namespace grapher.Models.Options.LUT
{
- public class LutApplyOptions : OptionBase
+ public class LutApplyOptions : ComboBoxOptionsBase
{
- public const string LUTApplyOptionsLabelText = "Apply as:";
- public const int LUTApplyLabelDropdownSeparation = 4;
+ #region Enum
public enum LutApplyType
{
@@ -18,6 +17,10 @@ namespace grapher.Models.Options.LUT
Velocity
}
+ #endregion Enum
+
+ #region Classes
+
public class LutApplyOption
{
public LutApplyType Type { get; set; }
@@ -27,6 +30,10 @@ namespace grapher.Models.Options.LUT
public override string ToString() => Name;
}
+ #endregion Classes
+
+ #region Static
+
public static readonly LutApplyOption Sensitivity = new LutApplyOption
{
Type = LutApplyType.Sensitivity,
@@ -37,129 +44,58 @@ namespace grapher.Models.Options.LUT
Type = LutApplyType.Velocity,
};
+ #endregion Static
+
+ #region Constructors
+
public LutApplyOptions(
Label label,
ComboBox applyOptionsDropdown,
ActiveValueLabel lutApplyActiveValue)
+ : base(
+ label,
+ applyOptionsDropdown,
+ lutApplyActiveValue)
{
- ApplyOptions = applyOptionsDropdown;
- ApplyOptions.Items.Clear();
- ApplyOptions.Items.AddRange(
+ OptionsDropdown.Items.AddRange(
new LutApplyOption[]
{
Sensitivity,
Velocity,
});
+ }
- Label = label;
- Label.Text = LUTApplyOptionsLabelText;
- Label.AutoSize = false;
- Label.Width = 50;
+ #endregion Constructors
- ActiveValueLabel = lutApplyActiveValue;
- }
+ #region Properties
public LutApplyType ApplyType { get => ApplyOption.Type; }
public LutApplyOption ApplyOption {
get
{
- return ApplyOptions.SelectedItem as LutApplyOption;
- }
- set
- {
- ApplyOptions.SelectedItem = value;
- }
- }
-
- public Label Label { get; }
-
- public ActiveValueLabel ActiveValueLabel { get; }
-
- public ComboBox ApplyOptions { get; }
-
- public override bool Visible
- {
- get
- {
- return Label.Visible || ShouldShow;
- }
- }
-
- public override int Left
- {
- get
- {
- return Label.Left;
+ return OptionsDropdown.SelectedItem as LutApplyOption;
}
set
{
- Label.Left = value;
- ApplyOptions.Left = Label.Left + Label.Width + LUTApplyLabelDropdownSeparation;
+ OptionsDropdown.SelectedItem = value;
}
}
- public override int Height
- {
- get
- {
- return Label.Height;
- }
- }
+ #endregion Properties
- public override int Top
- {
- get
- {
- return Label.Top;
- }
- set
- {
- ApplyOptions.Top = value;
- Label.Top = (ApplyOptions.Height - Label.Height) / 2 + ApplyOptions.Top;
- ActiveValueLabel.Top = value;
- }
- }
+ #region Methods
- public override int Width
+ public static LutApplyOption ApplyOptionFromSettings(bool applyAsVelocity)
{
- get
- {
- return Label.Width;
- }
- set
+ if (applyAsVelocity)
{
- ApplyOptions.Width = value - Label.Width - Constants.OptionLabelBoxSeperation;
+ return Velocity;
}
- }
-
- private bool ShouldShow { get; set; }
-
- public override void Hide()
- {
- Label.Hide();
- ApplyOptions.Hide();
- ActiveValueLabel.Hide();
- ShouldShow = false;
- }
-
- public override void Show(string labelText)
- {
- Label.Show();
-
- if (!string.IsNullOrWhiteSpace(labelText))
+ else
{
- Label.Text = labelText;
+ return Sensitivity;
}
-
- ApplyOptions.Show();
- ActiveValueLabel.Show();
- ShouldShow = true;
- }
-
- public override void AlignActiveValues()
- {
- ActiveValueLabel.Align();
}
public void SetActiveValue(bool applyAsVelocity)
@@ -168,16 +104,6 @@ namespace grapher.Models.Options.LUT
ActiveValueLabel.SetValue(ApplyOption.Name);
}
- public LutApplyOption ApplyOptionFromSettings(bool applyAsVelocity)
- {
- if (applyAsVelocity)
- {
- return Velocity;
- }
- else
- {
- return Sensitivity;
- }
- }
+ #endregion Methods
}
}
diff --git a/grapher/Models/Options/LockableOption.cs b/grapher/Models/Options/LockableOption.cs
new file mode 100644
index 0000000..6e78783
--- /dev/null
+++ b/grapher/Models/Options/LockableOption.cs
@@ -0,0 +1,137 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher.Models.Options
+{
+ /// <summary>
+ /// This is an option type that is a regular option with a checkbox that disables it.
+ /// </summary>
+ public class LockableOption : OptionBase
+ {
+ public LockableOption(
+ Option option,
+ CheckBox checkBox,
+ int lockedvalue)
+ {
+ Option = option;
+ LockBox = checkBox;
+ LockedValue = lockedvalue;
+
+ LockBox.Click += OnLockedBoxClicked;
+ LockBox.AutoCheck = false;
+
+ Option.Field.SetNewDefault(LockedValue);
+ SetLocked();
+ }
+
+ public Option Option { get; }
+
+ public CheckBox LockBox { get; }
+
+ public int LockedValue { get; }
+
+ public override int Left
+ {
+ get => Option.Left;
+
+ set
+ {
+ Option.Left = value;
+ }
+ }
+
+ public override int Top
+ {
+ get => Option.Top;
+
+ set
+ {
+ Option.Top = value;
+ LockBox.Top = value;
+ }
+ }
+
+ public override int Width
+ {
+ get => Option.Width;
+
+ set
+ {
+ Option.Width = value;
+ }
+ }
+
+ public override int Height
+ {
+ get => Option.Height;
+ }
+
+ public override bool Visible
+ {
+ get => Option.Visible;
+ }
+
+ public double Value
+ {
+ get => LockBox.Checked ? LockedValue : Option.Field.Data;
+ }
+
+ public void SetActiveValue(double activeValue)
+ {
+ Option.SetActiveValue(activeValue);
+
+ if (activeValue == LockedValue)
+ {
+ SetLocked();
+ }
+ else
+ {
+ SetUnlocked();
+ }
+ }
+
+ public override void AlignActiveValues()
+ {
+ Option.AlignActiveValues();
+ }
+
+ public override void Hide()
+ {
+ Option.Hide();
+ LockBox.Hide();
+ }
+
+ public override void Show(string Name)
+ {
+ Option.Show(Name);
+ LockBox.Show();
+ }
+ private void SetLocked()
+ {
+ LockBox.Checked = true;
+ Option.Field.SetToUnavailable();
+ }
+
+ private void SetUnlocked()
+ {
+ LockBox.Checked = false;
+ Option.Field.SetToDefault();
+ }
+
+ private void OnLockedBoxClicked(object sender, EventArgs e)
+ {
+ if (LockBox.Checked)
+ {
+ SetUnlocked();
+ }
+ else
+ {
+ SetLocked();
+ }
+ }
+ }
+}
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
+ }
+}
diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs
index 346bc9b..43550c5 100644
--- a/grapher/Models/Serialized/SettingsManager.cs
+++ b/grapher/Models/Serialized/SettingsManager.cs
@@ -6,6 +6,8 @@ using System.Threading;
using System.Text;
using System.Drawing;
using grapher.Models.Devices;
+using System.Collections.Generic;
+using System.Linq;
namespace grapher.Models.Serialized
{
@@ -14,14 +16,12 @@ namespace grapher.Models.Serialized
#region Constructors
public SettingsManager(
- ManagedAccel activeAccel,
Field dpiField,
Field pollRateField,
ToolStripMenuItem autoWrite,
ToolStripMenuItem showLastMouseMove,
ToolStripMenuItem showVelocityAndGain,
- ToolStripMenuItem streamingMode,
- DeviceIDManager deviceIDManager)
+ ToolStripMenuItem streamingMode)
{
DpiField = dpiField;
PollRateField = pollRateField;
@@ -29,9 +29,9 @@ namespace grapher.Models.Serialized
ShowLastMouseMoveMenuItem = showLastMouseMove;
ShowVelocityAndGainMoveMenuItem = showVelocityAndGain;
StreamingModeMenuItem = streamingMode;
- DeviceIDManager = deviceIDManager;
- SetActiveFields(activeAccel);
+ SystemDevices = new List<MultiHandleDevice>();
+ ActiveNormTaggedHandles = new List<(IntPtr, bool)>();
GuiSettings = GUISettings.MaybeLoad();
@@ -45,43 +45,92 @@ namespace grapher.Models.Serialized
UpdateFieldsFromGUISettings();
}
- UserSettings = InitUserSettings();
+ UserConfigField = InitActiveAndGetUserConfig();
}
#endregion Constructors
+ #region Fields
+
+ private EventHandler DeviceChangeField;
+
+ private DriverConfig ActiveConfigField;
+ private DriverConfig UserConfigField;
+
+ #endregion Fields
+
#region Properties
public GUISettings GuiSettings { get; private set; }
- public ManagedAccel ActiveAccel { get; private set; }
+ public event EventHandler DeviceChange
+ {
+ add => DeviceChangeField += value;
+ remove => DeviceChangeField -= value;
+ }
+
+ public DriverConfig ActiveConfig
+ {
+ get => ActiveConfigField;
+
+ private set
+ {
+ if (ActiveConfigField != value)
+ {
+ ActiveConfigField = value;
+ ActiveProfileNamesSet = new HashSet<string>(value.profiles.Select(p => p.name));
+ }
+ }
+ }
- public ExtendedSettings ActiveSettings { get; private set; }
+ public Profile ActiveProfile
+ {
+ get => ActiveConfigField.profiles[0];
+ private set => ActiveConfigField.SetProfileAt(0, value);
+ }
- public DriverSettings UserSettings { get; private set; }
+ public ManagedAccel ActiveAccel
+ {
+ get => ActiveConfig.accels[0];
+ }
+
+ public DriverConfig UserConfig
+ {
+ get => UserConfigField;
+ private set => UserConfigField = value;
+ }
+
+ public Profile UserProfile
+ {
+ get => UserConfigField.profiles[0];
+ private set => UserConfigField.SetProfileAt(0, value);
+ }
+
+ public HashSet<string> ActiveProfileNamesSet { get; private set; }
public Field DpiField { get; private set; }
public Field PollRateField { get; private set; }
- public DeviceIDManager DeviceIDManager { get; }
+ public IList<MultiHandleDevice> SystemDevices { get; private set; }
+
+ public List<(IntPtr, bool)> ActiveNormTaggedHandles { get; }
private ToolStripMenuItem AutoWriteMenuItem { get; set; }
private ToolStripMenuItem ShowLastMouseMoveMenuItem { get; set; }
private ToolStripMenuItem ShowVelocityAndGainMoveMenuItem { get; set; }
+
private ToolStripMenuItem StreamingModeMenuItem{ get; set; }
#endregion Properties
#region Methods
- public void DisableDriver()
+ public void ResetDriver()
{
- var defaultSettings = new ExtendedSettings();
- ActiveSettings = defaultSettings;
- ActiveAccel.Settings = defaultSettings;
- new Thread(() => ActiveAccel.Activate()).Start();
+ ActiveConfig = DriverConfig.GetDefault();
+ new Thread(() => DriverConfig.Deactivate()).Start();
}
public void UpdateFieldsFromGUISettings()
@@ -94,36 +143,44 @@ namespace grapher.Models.Serialized
AutoWriteMenuItem.Checked = GuiSettings.AutoWriteToDriverOnStartup;
}
- public SettingsErrors TryActivate(DriverSettings settings)
+ public bool TryActivate(Profile settings, out string errors)
{
- var errors = new SettingsErrors(settings);
+ var old = UserProfile;
+ UserProfile = settings;
+ bool success = TryActivate(UserConfig, out errors);
+ if (!success)
+ {
+ UserProfile = old;
+ }
+ return success;
+ }
+
+ public bool TryActivate(DriverConfig settings, out string errors)
+ {
+ errors = settings.Errors();
- if (errors.Empty())
+ if (errors == null)
{
GuiSettings = MakeGUISettingsFromFields();
GuiSettings.Save();
- UserSettings = settings;
- File.WriteAllText(Constants.DefaultSettingsFileName, RaConvert.Settings(settings));
+ UserConfig = settings;
+ ActiveConfig = settings;
+ File.WriteAllText(Constants.DefaultSettingsFileName, settings.ToJSON());
- ActiveSettings = new ExtendedSettings(settings);
- ActiveAccel.Settings = ActiveSettings;
-
- new Thread(() => ActiveAccel.Activate()).Start();
+ new Thread(() => ActiveConfig.Activate()).Start();
}
- return errors;
+ return errors == null;
}
- public void SetHiddenOptions(DriverSettings settings)
+ public void SetHiddenOptions(Profile settings)
{
- settings.snap = UserSettings.snap;
- settings.maximumSpeed = UserSettings.maximumSpeed;
- settings.minimumSpeed = UserSettings.minimumSpeed;
- settings.minimumTime = UserSettings.minimumTime;
- settings.maximumTime = UserSettings.maximumTime;
- settings.ignore = UserSettings.ignore;
- settings.directionalMultipliers = UserSettings.directionalMultipliers;
+ settings.snap = UserProfile.snap;
+ settings.maximumSpeed = UserProfile.maximumSpeed;
+ settings.minimumSpeed = UserProfile.minimumSpeed;
+ settings.lrSensRatio = UserProfile.lrSensRatio;
+ settings.udSensRatio = UserProfile.udSensRatio;
}
public GUISettings MakeGUISettingsFromFields()
@@ -139,33 +196,108 @@ namespace grapher.Models.Serialized
};
}
- public bool TableActive()
+ public void SetActiveHandles()
{
- return ActiveSettings.tables.x != null || ActiveSettings.tables.y != null;
+ ActiveNormTaggedHandles.Clear();
+
+ bool ActiveProfileIsFirst = ActiveProfile == ActiveConfig.profiles[0];
+
+ foreach (var sysDev in SystemDevices)
+ {
+ void AddHandlesFromSysDev(bool normalized)
+ {
+ ActiveNormTaggedHandles.AddRange(sysDev.handles.Select(h => (h, normalized)));
+ }
+
+ var settings = ActiveConfig.devices.Find(d => d.id == sysDev.id);
+
+ if (settings is null)
+ {
+ if (ActiveProfileIsFirst && !ActiveConfig.defaultDeviceConfig.disable)
+ {
+ AddHandlesFromSysDev(ActiveConfig.defaultDeviceConfig.dpi > 0);
+ }
+ }
+ else if (!settings.config.disable &&
+ ((ActiveProfileIsFirst &&
+ (string.IsNullOrEmpty(settings.profile) ||
+ !ActiveProfileNamesSet.Contains(settings.profile))) ||
+ ActiveProfile.name == settings.profile))
+ {
+ AddHandlesFromSysDev(settings.config.dpi > 0);
+ }
+ }
+ }
+
+ public void Submit(DeviceConfig newDefaultConfig, DeviceDialogItem[] items)
+ {
+ UserConfig.defaultDeviceConfig = newDefaultConfig;
+ foreach (var item in items)
+ {
+ if (item.overrideDefaultConfig)
+ {
+ if (item.oldSettings is null)
+ {
+ UserConfig.devices.Add(
+ new DeviceSettings
+ {
+ name = item.device.name,
+ profile = item.newProfile,
+ id = item.device.id,
+ config = item.newConfig
+ });
+ }
+ else
+ {
+ item.oldSettings.config = item.newConfig;
+ item.oldSettings.profile = item.newProfile;
+ }
+ }
+ else if (!(item.oldSettings is null))
+ {
+ UserConfig.devices.Remove(item.oldSettings);
+ }
+ }
}
- public void SetActiveFields(ManagedAccel activeAccel)
+ public void OnProfileSelectionChange()
{
- ActiveAccel = activeAccel;
- ActiveSettings = activeAccel.Settings;
+ SetActiveHandles();
}
- private DriverSettings InitUserSettings()
+ public void OnDeviceChangeMessage()
+ {
+ SystemDevices = MultiHandleDevice.GetList();
+ SetActiveHandles();
+
+ DeviceChangeField?.Invoke(this, EventArgs.Empty);
+ }
+
+ private DriverConfig InitActiveAndGetUserConfig()
{
var path = Constants.DefaultSettingsFileName;
if (File.Exists(path))
{
try
{
- DriverSettings settings = RaConvert.Settings(File.ReadAllText(path));
+ var (cfg, err) = DriverConfig.Convert(File.ReadAllText(path));
- if (!GuiSettings.AutoWriteToDriverOnStartup ||
- TableActive() ||
- TryActivate(settings).Empty())
+ if (err == null)
{
- return settings;
+ if (GuiSettings.AutoWriteToDriverOnStartup)
+ {
+ if (!TryActivate(cfg, out string _))
+ {
+ throw new Exception("deserialization succeeded but TryActivate failed");
+ }
+ }
+ else
+ {
+ ActiveConfig = DriverConfig.GetActive();
+ }
+
+ return cfg;
}
-
}
catch (JsonException e)
{
@@ -173,17 +305,9 @@ namespace grapher.Models.Serialized
}
}
- if (!TableActive())
- {
- File.WriteAllText(path, RaConvert.Settings(ActiveSettings.baseSettings));
- return ActiveSettings.baseSettings;
- }
- else
- {
- var defaultSettings = new DriverSettings();
- File.WriteAllText(path, RaConvert.Settings(defaultSettings));
- return defaultSettings;
- }
+ ActiveConfig = DriverConfig.GetActive();
+ File.WriteAllText(path, ActiveConfig.ToJSON());
+ return ActiveConfig;
}
#endregion Methods
diff --git a/grapher/grapher.csproj b/grapher/grapher.csproj
index 7b0ab02..51c7fb6 100644
--- a/grapher/grapher.csproj
+++ b/grapher/grapher.csproj
@@ -78,6 +78,9 @@
<DependentUpon>AboutBox.cs</DependentUpon>
</Compile>
<Compile Include="Constants\Constants.cs" />
+ <Compile Include="DeviceMenuForm.cs">
+ <SubType>Form</SubType>
+ </Compile>
<Compile Include="Layouts\LUTLayout.cs" />
<Compile Include="Layouts\MotivityLayout.cs" />
<Compile Include="Layouts\JumpLayout.cs" />
@@ -103,8 +106,7 @@
<Compile Include="Models\Charts\EstimatedPoints.cs" />
<Compile Include="Models\Charts\ChartState\XYOneGraphState.cs" />
<Compile Include="Models\Charts\ChartState\XYTwoGraphState.cs" />
- <Compile Include="Models\Devices\DeviceIDItem.cs" />
- <Compile Include="Models\Devices\DeviceIDManager.cs" />
+ <Compile Include="Models\Devices\DeviceDialogItem.cs" />
<Compile Include="Models\Mouse\MouseData.cs" />
<Compile Include="Models\Mouse\MouseWatcher.cs" />
<Compile Include="Models\Mouse\PointData.cs" />
@@ -129,8 +131,12 @@
<Compile Include="Layouts\NaturalLayout.cs" />
<Compile Include="Layouts\OffLayout.cs" />
<Compile Include="Layouts\PowerLayout.cs" />
+ <Compile Include="Models\Options\Cap\CapOptions.cs" />
+ <Compile Include="Models\Options\Cap\CapTypeOptions.cs" />
<Compile Include="Models\Options\CheckBoxOption.cs" />
+ <Compile Include="Models\Options\ComboBoxOptionsBase.cs" />
<Compile Include="Models\Options\Directionality\DirectionalityOptions.cs" />
+ <Compile Include="Models\Options\LockableOption.cs" />
<Compile Include="Models\Options\LUT\LutApplyOptions.cs" />
<Compile Include="Models\Options\IOption.cs" />
<Compile Include="Models\Options\LUT\LUTPanelOptions.cs" />
@@ -139,6 +145,7 @@
<Compile Include="Layouts\OptionLayout.cs" />
<Compile Include="Models\Options\OptionBase.cs" />
<Compile Include="Models\Options\OptionXY.cs" />
+ <Compile Include="Models\Options\SwitchOption.cs" />
<Compile Include="Models\Options\TextOption.cs" />
<Compile Include="Models\Serialized\GUISettings.cs" />
<Compile Include="Models\Serialized\SettingsManager.cs" />