Added max saturation setting for rainbow lightbar mode

Related to issue #802
This commit is contained in:
Travis Nickles 2019-09-06 10:50:20 -05:00
parent 114b07699a
commit 9b25bb83cb
5 changed files with 5206 additions and 1272 deletions

View File

@ -76,10 +76,17 @@ namespace DS4Windows
else if (counters[deviceNum] > 180000) else if (counters[deviceNum] > 180000)
counters[deviceNum] = 0; counters[deviceNum] = 0;
double maxSat = GetMaxSatRainbow(deviceNum);
if (getLedAsBatteryIndicator(deviceNum)) if (getLedAsBatteryIndicator(deviceNum))
color = HuetoRGB((float)counters[deviceNum] % 360, (byte)(device.getBattery() * 2.55)); {
byte useSat = (byte)(maxSat == 1.0 ?
device.getBattery() * 2.55 :
device.getBattery() * 2.55 * maxSat);
color = HuetoRGB((float)counters[deviceNum] % 360, useSat);
}
else else
color = HuetoRGB((float)counters[deviceNum] % 360, 255); color = HuetoRGB((float)counters[deviceNum] % 360,
(byte)(maxSat == 1.0 ? 255 : 255 * maxSat));
} }
else if (getLedAsBatteryIndicator(deviceNum)) else if (getLedAsBatteryIndicator(deviceNum))

View File

@ -759,6 +759,12 @@ namespace DS4Windows
return m_Config.rainbow[index]; return m_Config.rainbow[index];
} }
public static double[] MaxSatRainbow => m_Config.maxRainbowSat;
public static double GetMaxSatRainbow(int index)
{
return m_Config.maxRainbowSat[index];
}
public static bool[] FlushHIDQueue => m_Config.flushHIDQueue; public static bool[] FlushHIDQueue => m_Config.flushHIDQueue;
public static bool getFlushHIDQueue(int index) public static bool getFlushHIDQueue(int index)
{ {
@ -1879,6 +1885,8 @@ namespace DS4Windows
new DS4Color(Color.Blue) new DS4Color(Color.Blue)
}; };
public double[] maxRainbowSat = new double[5] { 1.0, 1.0, 1.0, 1.0, 1.0 };
public int[] chargingType = new int[5] { 0, 0, 0, 0, 0 }; public int[] chargingType = new int[5] { 0, 0, 0, 0, 0 };
public string[] launchProgram = new string[5] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; public string[] launchProgram = new string[5] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty };
public bool[] dinputOnly = new bool[5] { false, false, false, false, false }; public bool[] dinputOnly = new bool[5] { false, false, false, false, false };
@ -2217,6 +2225,7 @@ namespace DS4Windows
XmlNode xmlR2Maxzone = m_Xdoc.CreateNode(XmlNodeType.Element, "R2MaxZone", null); xmlR2Maxzone.InnerText = r2ModInfo[device].maxZone.ToString(); Node.AppendChild(xmlR2Maxzone); XmlNode xmlR2Maxzone = m_Xdoc.CreateNode(XmlNodeType.Element, "R2MaxZone", null); xmlR2Maxzone.InnerText = r2ModInfo[device].maxZone.ToString(); Node.AppendChild(xmlR2Maxzone);
XmlNode xmlButtonMouseSensitivity = m_Xdoc.CreateNode(XmlNodeType.Element, "ButtonMouseSensitivity", null); xmlButtonMouseSensitivity.InnerText = buttonMouseSensitivity[device].ToString(); Node.AppendChild(xmlButtonMouseSensitivity); XmlNode xmlButtonMouseSensitivity = m_Xdoc.CreateNode(XmlNodeType.Element, "ButtonMouseSensitivity", null); xmlButtonMouseSensitivity.InnerText = buttonMouseSensitivity[device].ToString(); Node.AppendChild(xmlButtonMouseSensitivity);
XmlNode xmlRainbow = m_Xdoc.CreateNode(XmlNodeType.Element, "Rainbow", null); xmlRainbow.InnerText = rainbow[device].ToString(); Node.AppendChild(xmlRainbow); XmlNode xmlRainbow = m_Xdoc.CreateNode(XmlNodeType.Element, "Rainbow", null); xmlRainbow.InnerText = rainbow[device].ToString(); Node.AppendChild(xmlRainbow);
XmlNode xmlMaxSatRainbow = m_Xdoc.CreateNode(XmlNodeType.Element, "MaxSatRainbow", null); xmlMaxSatRainbow.InnerText = Convert.ToInt32(maxRainbowSat[device] * 100.0).ToString(); Node.AppendChild(xmlMaxSatRainbow);
XmlNode xmlLSD = m_Xdoc.CreateNode(XmlNodeType.Element, "LSDeadZone", null); xmlLSD.InnerText = lsModInfo[device].deadZone.ToString(); Node.AppendChild(xmlLSD); XmlNode xmlLSD = m_Xdoc.CreateNode(XmlNodeType.Element, "LSDeadZone", null); xmlLSD.InnerText = lsModInfo[device].deadZone.ToString(); Node.AppendChild(xmlLSD);
XmlNode xmlRSD = m_Xdoc.CreateNode(XmlNodeType.Element, "RSDeadZone", null); xmlRSD.InnerText = rsModInfo[device].deadZone.ToString(); Node.AppendChild(xmlRSD); XmlNode xmlRSD = m_Xdoc.CreateNode(XmlNodeType.Element, "RSDeadZone", null); xmlRSD.InnerText = rsModInfo[device].deadZone.ToString(); Node.AppendChild(xmlRSD);
XmlNode xmlLSAD = m_Xdoc.CreateNode(XmlNodeType.Element, "LSAntiDeadZone", null); xmlLSAD.InnerText = lsModInfo[device].antiDeadZone.ToString(); Node.AppendChild(xmlLSAD); XmlNode xmlLSAD = m_Xdoc.CreateNode(XmlNodeType.Element, "LSAntiDeadZone", null); xmlLSAD.InnerText = lsModInfo[device].antiDeadZone.ToString(); Node.AppendChild(xmlLSAD);
@ -2974,6 +2983,11 @@ namespace DS4Windows
catch { missingSetting = true; } catch { missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Rainbow"); double.TryParse(Item.InnerText, out rainbow[device]); } try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/Rainbow"); double.TryParse(Item.InnerText, out rainbow[device]); }
catch { rainbow[device] = 0; missingSetting = true; } catch { rainbow[device] = 0; missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/MaxSatRainbow");
int.TryParse(Item.InnerText, out int temp);
maxRainbowSat[device] = Math.Max(0, Math.Min(100, temp)) / 100.0;
}
catch { maxRainbowSat[device] = 1.0; missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LSDeadZone"); int.TryParse(Item.InnerText, out lsModInfo[device].deadZone); } try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LSDeadZone"); int.TryParse(Item.InnerText, out lsModInfo[device].deadZone); }
catch { lsModInfo[device].deadZone = 10; missingSetting = true; } catch { lsModInfo[device].deadZone = 10; missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/RSDeadZone"); int.TryParse(Item.InnerText, out rsModInfo[device].deadZone); } try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/RSDeadZone"); int.TryParse(Item.InnerText, out rsModInfo[device].deadZone); }
@ -4566,6 +4580,7 @@ namespace DS4Windows
scrollSensitivity[device] = 0; scrollSensitivity[device] = 0;
touchpadInvert[device] = 0; touchpadInvert[device] = 0;
rainbow[device] = 0; rainbow[device] = 0;
maxRainbowSat[device] = 1.0;
flashAt[device] = 0; flashAt[device] = 0;
mouseAccel[device] = false; mouseAccel[device] = false;
btPollRate[device] = 4; btPollRate[device] = 4;

View File

@ -256,8 +256,6 @@
this.lbWhileCharging = new System.Windows.Forms.Label(); this.lbWhileCharging = new System.Windows.Forms.Label();
this.panel5 = new System.Windows.Forms.Panel(); this.panel5 = new System.Windows.Forms.Panel();
this.btnRainbow = new System.Windows.Forms.Button(); this.btnRainbow = new System.Windows.Forms.Button();
this.lbRainbowB = new System.Windows.Forms.Label();
this.nUDRainbowB = new System.Windows.Forms.NumericUpDown();
this.nUDRainbow = new System.Windows.Forms.NumericUpDown(); this.nUDRainbow = new System.Windows.Forms.NumericUpDown();
this.lbspc = new System.Windows.Forms.Label(); this.lbspc = new System.Windows.Forms.Label();
this.tabAxis = new System.Windows.Forms.TabPage(); this.tabAxis = new System.Windows.Forms.TabPage();
@ -454,6 +452,8 @@
this.panel12 = new System.Windows.Forms.Panel(); this.panel12 = new System.Windows.Forms.Panel();
this.OutContTypeCb = new System.Windows.Forms.ComboBox(); this.OutContTypeCb = new System.Windows.Forms.ComboBox();
this.outcontLb = new System.Windows.Forms.Label(); this.outcontLb = new System.Windows.Forms.Label();
this.maxRainSatTB = new System.Windows.Forms.TrackBar();
this.label1 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.nUDTap)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDTap)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nUDScroll)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDScroll)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nUDTouch)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDTouch)).BeginInit();
@ -501,7 +501,6 @@
((System.ComponentModel.ISupportInitialize)(this.nUDflashLED)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDflashLED)).BeginInit();
this.panel4.SuspendLayout(); this.panel4.SuspendLayout();
this.panel5.SuspendLayout(); this.panel5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nUDRainbowB)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nUDRainbow)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDRainbow)).BeginInit();
this.tabAxis.SuspendLayout(); this.tabAxis.SuspendLayout();
this.flowLayoutPanel3.SuspendLayout(); this.flowLayoutPanel3.SuspendLayout();
@ -570,6 +569,7 @@
((System.ComponentModel.ISupportInitialize)(this.nUDIdleDisconnect)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDIdleDisconnect)).BeginInit();
this.panel11.SuspendLayout(); this.panel11.SuspendLayout();
this.panel12.SuspendLayout(); this.panel12.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.maxRainSatTB)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// cBLightbyBattery // cBLightbyBattery
@ -2712,9 +2712,9 @@
// //
// panel5 // panel5
// //
this.panel5.Controls.Add(this.label1);
this.panel5.Controls.Add(this.maxRainSatTB);
this.panel5.Controls.Add(this.btnRainbow); this.panel5.Controls.Add(this.btnRainbow);
this.panel5.Controls.Add(this.lbRainbowB);
this.panel5.Controls.Add(this.nUDRainbowB);
this.panel5.Controls.Add(this.nUDRainbow); this.panel5.Controls.Add(this.nUDRainbow);
this.panel5.Controls.Add(this.lbspc); this.panel5.Controls.Add(this.lbspc);
resources.ApplyResources(this.panel5, "panel5"); resources.ApplyResources(this.panel5, "panel5");
@ -2727,26 +2727,6 @@
this.btnRainbow.Name = "btnRainbow"; this.btnRainbow.Name = "btnRainbow";
this.btnRainbow.UseVisualStyleBackColor = true; this.btnRainbow.UseVisualStyleBackColor = true;
// //
// lbRainbowB
//
resources.ApplyResources(this.lbRainbowB, "lbRainbowB");
this.lbRainbowB.Name = "lbRainbowB";
//
// nUDRainbowB
//
resources.ApplyResources(this.nUDRainbowB, "nUDRainbowB");
this.nUDRainbowB.Maximum = new decimal(new int[] {
150,
0,
0,
0});
this.nUDRainbowB.Name = "nUDRainbowB";
this.nUDRainbowB.Value = new decimal(new int[] {
100,
0,
0,
0});
//
// nUDRainbow // nUDRainbow
// //
resources.ApplyResources(this.nUDRainbow, "nUDRainbow"); resources.ApplyResources(this.nUDRainbow, "nUDRainbow");
@ -4717,6 +4697,19 @@
resources.ApplyResources(this.outcontLb, "outcontLb"); resources.ApplyResources(this.outcontLb, "outcontLb");
this.outcontLb.Name = "outcontLb"; this.outcontLb.Name = "outcontLb";
// //
// maxRainSatTB
//
resources.ApplyResources(this.maxRainSatTB, "maxRainSatTB");
this.maxRainSatTB.Maximum = 100;
this.maxRainSatTB.Name = "maxRainSatTB";
this.maxRainSatTB.TickStyle = System.Windows.Forms.TickStyle.None;
this.maxRainSatTB.Value = 100;
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// Options // Options
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@ -4785,7 +4778,6 @@
this.panel4.PerformLayout(); this.panel4.PerformLayout();
this.panel5.ResumeLayout(false); this.panel5.ResumeLayout(false);
this.panel5.PerformLayout(); this.panel5.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nUDRainbowB)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nUDRainbow)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDRainbow)).EndInit();
this.tabAxis.ResumeLayout(false); this.tabAxis.ResumeLayout(false);
this.flowLayoutPanel3.ResumeLayout(false); this.flowLayoutPanel3.ResumeLayout(false);
@ -4871,6 +4863,7 @@
this.panel11.PerformLayout(); this.panel11.PerformLayout();
this.panel12.ResumeLayout(false); this.panel12.ResumeLayout(false);
this.panel12.PerformLayout(); this.panel12.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.maxRainSatTB)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@ -5103,8 +5096,6 @@
private System.Windows.Forms.Label lbWhileCharging; private System.Windows.Forms.Label lbWhileCharging;
private System.Windows.Forms.Panel panel5; private System.Windows.Forms.Panel panel5;
private System.Windows.Forms.Button btnRainbow; private System.Windows.Forms.Button btnRainbow;
private System.Windows.Forms.Label lbRainbowB;
private System.Windows.Forms.NumericUpDown nUDRainbowB;
private System.Windows.Forms.NumericUpDown nUDRainbow; private System.Windows.Forms.NumericUpDown nUDRainbow;
private System.Windows.Forms.Label lbspc; private System.Windows.Forms.Label lbspc;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
@ -5300,5 +5291,7 @@
private System.Windows.Forms.LinkLabel lbSixZCurveEditorURL; private System.Windows.Forms.LinkLabel lbSixZCurveEditorURL;
private System.Windows.Forms.TextBox tBSixXCustomOutputCurve; private System.Windows.Forms.TextBox tBSixXCustomOutputCurve;
private System.Windows.Forms.LinkLabel lbSixXCurveEditorURL; private System.Windows.Forms.LinkLabel lbSixXCurveEditorURL;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TrackBar maxRainSatTB;
} }
} }

View File

@ -438,6 +438,7 @@ namespace DS4Windows.Forms
cBLightbyBattery.Click += ledAsBatteryIndicator_CheckedChanged; cBLightbyBattery.Click += ledAsBatteryIndicator_CheckedChanged;
btnRainbow.Click += btnRainbow_Click; btnRainbow.Click += btnRainbow_Click;
nUDRainbow.ValueChanged += numUDRainbow_ValueChanged; nUDRainbow.ValueChanged += numUDRainbow_ValueChanged;
maxRainSatTB.ValueChanged += MaxRainSatTB_ValueChanged;
// Other events // Other events
nUDRumbleBoost.ValueChanged += rumbleBoostBar_ValueChanged; nUDRumbleBoost.ValueChanged += rumbleBoostBar_ValueChanged;
@ -457,6 +458,14 @@ namespace DS4Windows.Forms
OutContTypeCb.SelectedIndexChanged += OutContTypeCb_SelectedIndexChanged; OutContTypeCb.SelectedIndexChanged += OutContTypeCb_SelectedIndexChanged;
} }
private void MaxRainSatTB_ValueChanged(object sender, EventArgs e)
{
if (loading == false)
{
MaxSatRainbow[device] = maxRainSatTB.Value / 100.0;
}
}
private void LbSixZCurveEditorURL_Click(object sender, EventArgs e) private void LbSixZCurveEditorURL_Click(object sender, EventArgs e)
{ {
string customDefinition = szOutBezierCurveObj[device].ToString(); string customDefinition = szOutBezierCurveObj[device].ToString();
@ -625,6 +634,8 @@ namespace DS4Windows.Forms
else else
btnFlashColor.BackColor = Color.FromArgb(fColor.red, fColor.green, fColor.blue); btnFlashColor.BackColor = Color.FromArgb(fColor.red, fColor.green, fColor.blue);
maxRainSatTB.Value = (int)(MaxSatRainbow[device] * 100.0);
nUDRumbleBoost.Value = RumbleBoost[device]; nUDRumbleBoost.Value = RumbleBoost[device];
nUDTouch.Value = TouchSensitivity[device]; nUDTouch.Value = TouchSensitivity[device];
cBSlide.Checked = TouchSensitivity[device] > 0; cBSlide.Checked = TouchSensitivity[device] > 0;
@ -1095,6 +1106,7 @@ namespace DS4Windows.Forms
pBHoveredButton.Image = null; pBHoveredButton.Image = null;
nUDRainbow.Value = 0; nUDRainbow.Value = 0;
maxRainSatTB.Value = 100;
nUDL2.Value = 0; nUDL2.Value = 0;
nUDR2.Value = 0; nUDR2.Value = 0;
nUDL2Maxzone.Value = 1; nUDL2Maxzone.Value = 1;
@ -1643,6 +1655,7 @@ namespace DS4Windows.Forms
IdleDisconnectTimeout[device] = (int)(nUDIdleDisconnect.Value * 60); IdleDisconnectTimeout[device] = (int)(nUDIdleDisconnect.Value * 60);
Rainbow[device] = (int)nUDRainbow.Value; Rainbow[device] = (int)nUDRainbow.Value;
MaxSatRainbow[device] = maxRainSatTB.Value / 100.0;
RSModInfo[device].deadZone = (int)Math.Round((nUDRS.Value * 127), 0); RSModInfo[device].deadZone = (int)Math.Round((nUDRS.Value * 127), 0);
LSModInfo[device].deadZone = (int)Math.Round((nUDLS.Value * 127), 0); LSModInfo[device].deadZone = (int)Math.Round((nUDLS.Value * 127), 0);
LSModInfo[device].antiDeadZone = (int)(nUDLSAntiDead.Value * 100); LSModInfo[device].antiDeadZone = (int)(nUDLSAntiDead.Value * 100);

File diff suppressed because it is too large Load Diff