mirror of
https://github.com/RawAccelOfficial/rawaccel.git
synced 2025-05-15 13:59:05 +02:00
519 lines
18 KiB
C#
519 lines
18 KiB
C#
using grapher.Models.Calculations;
|
|
using grapher.Models.Devices;
|
|
using grapher.Models.Mouse;
|
|
using grapher.Models.Options;
|
|
using grapher.Models.Options.Directionality;
|
|
using grapher.Models.Options.LUT;
|
|
using grapher.Models.Serialized;
|
|
using System;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms.DataVisualization.Charting;
|
|
|
|
namespace grapher.Models
|
|
{
|
|
public static class AccelGUIFactory
|
|
{
|
|
#region Methods
|
|
|
|
public static AccelGUI Construct(
|
|
RawAcceleration form,
|
|
Chart accelerationChart,
|
|
Chart accelerationChartY,
|
|
Chart velocityChart,
|
|
Chart velocityChartY,
|
|
Chart gainChart,
|
|
Chart gainChartY,
|
|
ComboBox accelTypeDropX,
|
|
ComboBox accelTypeDropY,
|
|
ComboBox lutApplyDropdownX,
|
|
ComboBox lutApplyDropdownY,
|
|
Button writeButton,
|
|
ButtonBase toggleButton,
|
|
ToolStripMenuItem showVelocityGainToolStripMenuItem,
|
|
ToolStripMenuItem showLastMouseMoveMenuItem,
|
|
ToolStripMenuItem streamingModeToolStripMenuItem,
|
|
ToolStripMenuItem autoWriteMenuItem,
|
|
ToolStripMenuItem deviceMenuItem,
|
|
ToolStripMenuItem scaleMenuItem,
|
|
ToolStripTextBox dpiTextBox,
|
|
ToolStripTextBox pollRateTextBox,
|
|
Panel directionalityPanel,
|
|
TextBox sensitivityBoxX,
|
|
TextBox sensitivityBoxY,
|
|
TextBox rotationBox,
|
|
TextBox weightBoxX,
|
|
TextBox weightBoxY,
|
|
TextBox capBoxX,
|
|
TextBox capBoxY,
|
|
TextBox offsetBoxX,
|
|
TextBox offsetBoxY,
|
|
TextBox accelerationBoxX,
|
|
TextBox accelerationBoxY,
|
|
TextBox decayRateBoxX,
|
|
TextBox decayRateBoxY,
|
|
TextBox growthRateBoxX,
|
|
TextBox growthRateBoxY,
|
|
TextBox smoothBoxX,
|
|
TextBox smoothBoxY,
|
|
TextBox scaleBoxX,
|
|
TextBox scaleBoxY,
|
|
TextBox limitBoxX,
|
|
TextBox limitBoxY,
|
|
TextBox powerClassicBoxX,
|
|
TextBox powerClassicBoxY,
|
|
TextBox expBoxX,
|
|
TextBox expBoxY,
|
|
TextBox midpointBoxX,
|
|
TextBox midpointBoxY,
|
|
TextBox domainBoxX,
|
|
TextBox domainBoxY,
|
|
TextBox rangeBoxX,
|
|
TextBox rangeBoxY,
|
|
TextBox lpNormBox,
|
|
CheckBox sensXYLock,
|
|
CheckBox byComponentXYLock,
|
|
CheckBox fakeBox,
|
|
CheckBox wholeCheckBox,
|
|
CheckBox byComponentCheckBox,
|
|
CheckBox gainSwitchX,
|
|
CheckBox gainSwitchY,
|
|
RichTextBox xLutActiveValuesBox,
|
|
RichTextBox yLutActiveValuesBox,
|
|
RichTextBox xLutPointsBox,
|
|
RichTextBox yLutPointsBox,
|
|
Label lockXYLabel,
|
|
Label sensitivityLabel,
|
|
Label rotationLabel,
|
|
Label weightLabelX,
|
|
Label weightLabelY,
|
|
Label capLabelX,
|
|
Label capLabelY,
|
|
Label offsetLabelX,
|
|
Label offsetLabelY,
|
|
Label constantOneLabelX,
|
|
Label constantOneLabelY,
|
|
Label decayRateLabelX,
|
|
Label decayRateLabelY,
|
|
Label growthRateLabelX,
|
|
Label growthRateLabelY,
|
|
Label smoothLabelX,
|
|
Label smoothLabelY,
|
|
Label scaleLabelX,
|
|
Label scaleLabelY,
|
|
Label limitLabelX,
|
|
Label limitLabelY,
|
|
Label powerClassicLabelX,
|
|
Label powerClassicLabelY,
|
|
Label expLabelX,
|
|
Label expLabelY,
|
|
Label lutTextLabelX,
|
|
Label lutTextLabelY,
|
|
Label constantThreeLabelX,
|
|
Label constantThreeLabelY,
|
|
Label activeValueTitleX,
|
|
Label activeValueTitleY,
|
|
Label sensitivityActiveXLabel,
|
|
Label sensitivityActiveYLabel,
|
|
Label rotationActiveLabel,
|
|
Label weightActiveXLabel,
|
|
Label weightActiveYLabel,
|
|
Label capActiveXLabel,
|
|
Label capActiveYLabel,
|
|
Label offsetActiveLabelX,
|
|
Label offsetActiveLabelY,
|
|
Label accelerationActiveLabelX,
|
|
Label accelerationActiveLabelY,
|
|
Label decayRateActiveLabelX,
|
|
Label decayRateActiveLabelY,
|
|
Label growthRateActiveLabelX,
|
|
Label growthRateActiveLabelY,
|
|
Label smoothActiveLabelX,
|
|
Label smoothActiveLabelY,
|
|
Label scaleActiveLabelX,
|
|
Label scaleActiveLabelY,
|
|
Label limitActiveLabelX,
|
|
Label limitActiveLabelY,
|
|
Label powerClassicActiveLabelX,
|
|
Label powerClassicActiveLabelY,
|
|
Label expActiveLabelX,
|
|
Label expActiveLabelY,
|
|
Label midpointActiveLabelX,
|
|
Label midpointActiveLabelY,
|
|
Label accelTypeActiveLabelX,
|
|
Label accelTypeActiveLabelY,
|
|
Label gainSwitchActiveLabelX,
|
|
Label gainSwitchActiveLabelY,
|
|
Label optionSetXTitle,
|
|
Label optionSetYTitle,
|
|
Label mouseLabel,
|
|
Label directionalityLabel,
|
|
Label directionalityX,
|
|
Label directionalityY,
|
|
Label direcionalityActiveValueTitle,
|
|
Label lpNormLabel,
|
|
Label lpNormActiveLabel,
|
|
Label domainLabel,
|
|
Label domainActiveValueX,
|
|
Label domainActiveValueY,
|
|
Label rangeLabel,
|
|
Label rangeActiveValueX,
|
|
Label rangeActiveValueY,
|
|
Label lutApplyLabelX,
|
|
Label lutApplyLabelY,
|
|
Label lutApplyActiveValueX,
|
|
Label lutApplyActiveValueY)
|
|
{
|
|
fakeBox.Checked = false;
|
|
fakeBox.Hide();
|
|
|
|
var accelCalculator = new AccelCalculator(
|
|
new Field(dpiTextBox.TextBox, form, Constants.DefaultDPI, 1),
|
|
new Field(pollRateTextBox.TextBox, form, Constants.DefaultPollRate, 1));
|
|
|
|
var accelCharts = new AccelCharts(
|
|
form,
|
|
new ChartXY(accelerationChart, accelerationChartY, Constants.SensitivityChartTitle),
|
|
new ChartXY(velocityChart, velocityChartY, Constants.VelocityChartTitle),
|
|
new ChartXY(gainChart, gainChartY, Constants.GainChartTitle),
|
|
showVelocityGainToolStripMenuItem,
|
|
showLastMouseMoveMenuItem,
|
|
streamingModeToolStripMenuItem,
|
|
writeButton,
|
|
accelCalculator);
|
|
|
|
var sensitivity = new OptionXY(
|
|
sensitivityBoxX,
|
|
sensitivityBoxY,
|
|
sensXYLock,
|
|
form,
|
|
1,
|
|
sensitivityLabel,
|
|
new ActiveValueLabelXY(
|
|
new ActiveValueLabel(sensitivityActiveXLabel, activeValueTitleX),
|
|
new ActiveValueLabel(sensitivityActiveYLabel, activeValueTitleX)),
|
|
"Sens Multiplier");
|
|
|
|
var rotation = new Option(
|
|
rotationBox,
|
|
form,
|
|
0,
|
|
rotationLabel,
|
|
0,
|
|
new ActiveValueLabel(rotationActiveLabel, activeValueTitleX),
|
|
"Rotation");
|
|
|
|
var optionSetYLeft = activeValueTitleX.Left + activeValueTitleX.Width;
|
|
|
|
var directionalityLeft = directionalityPanel.Left;
|
|
|
|
var weightX = new Option(
|
|
weightBoxX,
|
|
form,
|
|
1,
|
|
weightLabelX,
|
|
0,
|
|
new ActiveValueLabel(weightActiveXLabel, activeValueTitleX),
|
|
"Weight");
|
|
|
|
var weightY = new Option(
|
|
weightBoxY,
|
|
form,
|
|
1,
|
|
weightLabelY,
|
|
optionSetYLeft,
|
|
new ActiveValueLabel(weightActiveYLabel, activeValueTitleY),
|
|
"Weight");
|
|
|
|
var capX = new Option(
|
|
capBoxX,
|
|
form,
|
|
0,
|
|
capLabelX,
|
|
0,
|
|
new ActiveValueLabel(capActiveXLabel, activeValueTitleX),
|
|
"Cap");
|
|
|
|
var capY = new Option(
|
|
capBoxY,
|
|
form,
|
|
0,
|
|
capLabelY,
|
|
optionSetYLeft,
|
|
new ActiveValueLabel(capActiveYLabel, activeValueTitleY),
|
|
"Cap");
|
|
|
|
var offsetX = new Option(
|
|
offsetBoxX,
|
|
form,
|
|
0,
|
|
offsetLabelX,
|
|
0,
|
|
new ActiveValueLabel(offsetActiveLabelX, activeValueTitleX),
|
|
"Offset");
|
|
|
|
var offsetY = new Option(
|
|
offsetBoxY,
|
|
form,
|
|
0,
|
|
offsetLabelY,
|
|
optionSetYLeft,
|
|
new ActiveValueLabel(offsetActiveLabelY, activeValueTitleY),
|
|
"Offset");
|
|
|
|
var accelerationX = new Option(
|
|
new Field(accelerationBoxX, form, 0),
|
|
constantOneLabelX,
|
|
new ActiveValueLabel(accelerationActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var accelerationY = new Option(
|
|
new Field(accelerationBoxY, form, 0),
|
|
constantOneLabelY,
|
|
new ActiveValueLabel(accelerationActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var decayRateX = new Option(
|
|
new Field(decayRateBoxX, form, 0),
|
|
decayRateLabelX,
|
|
new ActiveValueLabel(decayRateActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var decayRateY = new Option(
|
|
new Field(decayRateBoxY, form, 0),
|
|
decayRateLabelY,
|
|
new ActiveValueLabel(decayRateActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var growthRateX = new Option(
|
|
new Field(growthRateBoxX, form, 0),
|
|
growthRateLabelX,
|
|
new ActiveValueLabel(growthRateActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var growthRateY = new Option(
|
|
new Field(growthRateBoxY, form, 0),
|
|
growthRateLabelY,
|
|
new ActiveValueLabel(growthRateActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var smoothX = new Option(
|
|
new Field(smoothBoxX, form, 0),
|
|
smoothLabelX,
|
|
new ActiveValueLabel(smoothActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var smoothY = new Option(
|
|
new Field(smoothBoxY, form, 0),
|
|
smoothLabelY,
|
|
new ActiveValueLabel(smoothActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var scaleX = new Option(
|
|
new Field(scaleBoxX, form, 0),
|
|
scaleLabelX,
|
|
new ActiveValueLabel(scaleActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var scaleY = new Option(
|
|
new Field(scaleBoxY, form, 0),
|
|
scaleLabelY,
|
|
new ActiveValueLabel(scaleActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var limitX = new Option(
|
|
new Field(limitBoxX, form, 2),
|
|
limitLabelX,
|
|
new ActiveValueLabel(limitActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var limitY = new Option(
|
|
new Field(limitBoxY, form, 2),
|
|
limitLabelY,
|
|
new ActiveValueLabel(limitActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var powerClassicX = new Option(
|
|
new Field(powerClassicBoxX, form, 2),
|
|
powerClassicLabelX,
|
|
new ActiveValueLabel(powerClassicActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var powerClassicY = new Option(
|
|
new Field(powerClassicBoxY, form, 2),
|
|
powerClassicLabelY,
|
|
new ActiveValueLabel(powerClassicActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var exponentX = new Option(
|
|
new Field(expBoxX, form, 2),
|
|
expLabelX,
|
|
new ActiveValueLabel(expActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var exponentY = new Option(
|
|
new Field(expBoxY, form, 2),
|
|
expLabelY,
|
|
new ActiveValueLabel(expActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var midpointX = new Option(
|
|
new Field(midpointBoxX, form, 0),
|
|
constantThreeLabelX,
|
|
new ActiveValueLabel(midpointActiveLabelX, activeValueTitleX),
|
|
0);
|
|
|
|
var midpointY = new Option(
|
|
new Field(midpointBoxY, form, 0),
|
|
constantThreeLabelY,
|
|
new ActiveValueLabel(midpointActiveLabelY, activeValueTitleY),
|
|
optionSetYLeft);
|
|
|
|
var lpNorm = new Option(
|
|
new Field(lpNormBox, form, 2),
|
|
lpNormLabel,
|
|
new ActiveValueLabel(lpNormActiveLabel, direcionalityActiveValueTitle),
|
|
directionalityLeft);
|
|
|
|
var domain = new OptionXY(
|
|
domainBoxX,
|
|
domainBoxY,
|
|
fakeBox,
|
|
form,
|
|
1,
|
|
domainLabel,
|
|
new ActiveValueLabelXY(
|
|
new ActiveValueLabel(domainActiveValueX, direcionalityActiveValueTitle),
|
|
new ActiveValueLabel(domainActiveValueY, direcionalityActiveValueTitle)),
|
|
false);
|
|
|
|
var range = new OptionXY(
|
|
rangeBoxX,
|
|
rangeBoxY,
|
|
fakeBox,
|
|
form,
|
|
1,
|
|
rangeLabel,
|
|
new ActiveValueLabelXY(
|
|
new ActiveValueLabel(rangeActiveValueX, direcionalityActiveValueTitle),
|
|
new ActiveValueLabel(rangeActiveValueY, direcionalityActiveValueTitle)),
|
|
false);
|
|
|
|
|
|
var lutTextX = new TextOption(lutTextLabelX);
|
|
var lutTextY = new TextOption(lutTextLabelY);
|
|
var gainSwitchOptionX = new CheckBoxOption(
|
|
gainSwitchX,
|
|
new ActiveValueLabel(gainSwitchActiveLabelX, activeValueTitleX));
|
|
var gainSwitchOptionY = new CheckBoxOption(
|
|
gainSwitchY,
|
|
new ActiveValueLabel(gainSwitchActiveLabelY, activeValueTitleY));
|
|
|
|
var accelerationOptionsX = new AccelTypeOptions(
|
|
accelTypeDropX,
|
|
gainSwitchOptionX,
|
|
accelerationX,
|
|
decayRateX,
|
|
growthRateX,
|
|
smoothX,
|
|
scaleX,
|
|
capX,
|
|
weightX,
|
|
offsetX,
|
|
limitX,
|
|
powerClassicX,
|
|
exponentX,
|
|
midpointX,
|
|
lutTextX,
|
|
new LUTPanelOptions(xLutPointsBox, xLutActiveValuesBox),
|
|
new LutApplyOptions(
|
|
lutApplyLabelX,
|
|
lutApplyDropdownX,
|
|
new ActiveValueLabel(lutApplyActiveValueX, activeValueTitleX)),
|
|
writeButton,
|
|
new ActiveValueLabel(accelTypeActiveLabelX, activeValueTitleX));
|
|
|
|
var accelerationOptionsY = new AccelTypeOptions(
|
|
accelTypeDropY,
|
|
gainSwitchOptionY,
|
|
accelerationY,
|
|
decayRateY,
|
|
growthRateY,
|
|
smoothY,
|
|
scaleY,
|
|
capY,
|
|
weightY,
|
|
offsetY,
|
|
limitY,
|
|
powerClassicY,
|
|
exponentY,
|
|
midpointY,
|
|
lutTextY,
|
|
new LUTPanelOptions(yLutPointsBox, yLutActiveValuesBox),
|
|
new LutApplyOptions(
|
|
lutApplyLabelY,
|
|
lutApplyDropdownY,
|
|
new ActiveValueLabel(lutApplyActiveValueY, activeValueTitleY)),
|
|
writeButton,
|
|
new ActiveValueLabel(accelTypeActiveLabelY, activeValueTitleY));
|
|
|
|
var optionsSetX = new AccelOptionSet(
|
|
optionSetXTitle,
|
|
activeValueTitleX,
|
|
rotationBox.Top + rotationBox.Height + Constants.OptionVerticalSeperation,
|
|
accelerationOptionsX);
|
|
|
|
var optionsSetY = new AccelOptionSet(
|
|
optionSetYTitle,
|
|
activeValueTitleY,
|
|
rotationBox.Top + rotationBox.Height + Constants.OptionVerticalSeperation,
|
|
accelerationOptionsY);
|
|
|
|
var directionalOptions = new DirectionalityOptions(
|
|
directionalityPanel,
|
|
directionalityLabel,
|
|
directionalityX,
|
|
directionalityY,
|
|
direcionalityActiveValueTitle,
|
|
lpNorm,
|
|
domain,
|
|
range,
|
|
wholeCheckBox,
|
|
byComponentCheckBox,
|
|
Constants.DirectionalityVerticalOffset);
|
|
|
|
var applyOptions = new ApplyOptions(
|
|
byComponentXYLock,
|
|
optionsSetX,
|
|
optionsSetY,
|
|
directionalOptions,
|
|
sensitivity,
|
|
rotation,
|
|
lockXYLabel,
|
|
accelCharts);
|
|
|
|
var settings = new SettingsManager(
|
|
accelCalculator.DPI,
|
|
accelCalculator.PollRate,
|
|
autoWriteMenuItem,
|
|
showLastMouseMoveMenuItem,
|
|
showVelocityGainToolStripMenuItem,
|
|
streamingModeToolStripMenuItem,
|
|
deviceMenuItem);
|
|
|
|
var mouseWatcher = new MouseWatcher(form, mouseLabel, accelCharts, settings);
|
|
|
|
return new AccelGUI(
|
|
form,
|
|
accelCalculator,
|
|
accelCharts,
|
|
settings,
|
|
applyOptions,
|
|
writeButton,
|
|
toggleButton,
|
|
mouseWatcher,
|
|
scaleMenuItem);
|
|
}
|
|
|
|
#endregion Methods
|
|
}
|
|
}
|