Compare commits

..

12 Commits

Author SHA1 Message Date
seerge
f4d066d407 Merge branch 'main' of https://github.com/seerge/g14-helper 2023-02-19 21:52:04 +01:00
seerge
cc96ca9946 Supressed crash on failed battery charge limit setting 2023-02-19 21:52:01 +01:00
seerge
fb95d9abb2 Update README.md 2023-02-19 21:06:22 +01:00
seerge
15112cb5c8 Added cycling through aura modes by FN+F4 2023-02-19 19:40:49 +01:00
seerge
2632a1b46d Merge branch 'main' of https://github.com/seerge/g14-helper 2023-02-19 18:59:42 +01:00
seerge
66a2a1d083 Added basic aura control, animation modes and colors 2023-02-19 18:59:38 +01:00
seerge
aad708d686 Update README.md 2023-02-19 11:55:24 +01:00
seerge
dba6dae254 New screenshot 2023-02-19 11:51:48 +01:00
seerge
b26ceccc42 Merge pull request #4 from astronaut701/gui-edits
Fix minor misspelled text in UI
2023-02-19 11:48:01 +01:00
seerge
4ad0857ec6 Performance mode trycatch wrap 2023-02-19 11:47:20 +01:00
Astronaut701
d49136a542 Fix text 2023-02-19 03:17:58 +00:00
seerge
4bbd5da4af Another attempt to fix icon sizing 2023-02-19 00:04:30 +01:00
10 changed files with 457 additions and 152 deletions

View File

@@ -30,6 +30,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="hidlibrary" Version="3.3.40" />
<PackageReference Include="System.Management" Version="7.0.0" />
<PackageReference Include="TaskScheduler" Version="2.10.1" />
</ItemGroup>

View File

@@ -1,14 +1,9 @@
using Microsoft.Win32.TaskScheduler;
using System;
using System.Diagnostics;
using System.Management;
using System.Runtime.InteropServices;
using HidLibrary;
using System.Text.Json;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Text.RegularExpressions;
using System.Drawing;
public class ASUSWmi
{
@@ -219,54 +214,6 @@ public class AppConfig
}
public class PowerPlan {
static void RunCommands(List<string> cmds, string workingDirectory = "")
{
var process = new Process();
var psi = new ProcessStartInfo();
psi.FileName = "powershell";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.WorkingDirectory = workingDirectory;
process.StartInfo = psi;
process.Start();
process.OutputDataReceived += (sender, e) => { Debug.WriteLine(e.Data); };
process.ErrorDataReceived += (sender, e) => { Debug.WriteLine(e.Data); };
process.BeginOutputReadLine();
process.BeginErrorReadLine();
using (StreamWriter sw = process.StandardInput)
{
foreach (var cmd in cmds)
{
sw.WriteLine(cmd);
}
}
process.WaitForExit();
}
public static int getBoostStatus()
{
List<string> cmds = new List<string>
{
"$asGuid = [regex]::Match((powercfg /getactivescheme),'(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}').Value",
"$statusFull = (powercfg /QUERY $asGuid 54533251-82be-4824-96c1-47b60b740d00 be337238-0d82-4146-a960-4f3749d470c7) -match 'Current AC Power Setting Index'",
"[regex]::Match($statusFull,'(0x.{8})').Value"
};
RunCommands(cmds);
return 0;
}
}
public class NativeMethods
{
@@ -456,7 +403,7 @@ public class NativeMethods
GUID_BOOST, out AcValueIndex);
return AcValueIndex.ToInt32();
}
public static void SetCPUBoost(int boost = 0)
@@ -472,8 +419,73 @@ public class NativeMethods
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
}
}
public class Aura
{
static byte[] MESSAGE_SET = { 0x5d, 0xb5 };
static byte[] MESSAGE_APPLY = { 0x5d, 0xb4 };
public const int Static = 0;
public const int Breathe = 1;
public const int Strobe = 2;
public const int Rainbow = 3;
public const int SpeedSlow = 0;
public const int SpeedMedium = 1;
public const int SpeedHigh = 2;
public static int Mode = Static;
public static Color Color1 = Color.White;
public static Color Color2 = Color.Black;
public static int Speed = SpeedSlow;
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed)
{
byte[] msg = new byte[17];
msg[0] = 0x5d;
msg[1] = 0xb3;
msg[2] = 0x00; // Zone
msg[3] = (byte)mode; // Aura Mode
msg[4] = (byte)(color.R); // R
msg[5] = (byte)(color.G); // G
msg[6] = (byte)(color.B); // B
msg[7] = (byte)speed; // aura.speed as u8;
msg[8] = 0; // aura.direction as u8;
msg[10] = (byte)(color2.R); // R
msg[11] = (byte)(color2.G); // G
msg[12] = (byte)(color2.B); // B
return msg;
}
public static void ApplyAura()
{
HidDevice[] HidDeviceList;
int[] deviceIds = { 0x1854, 0x1869, 0x1866, 0x19b6 };
HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
foreach (HidDevice device in HidDeviceList)
{
if (device.IsConnected)
{
if (device.Description.IndexOf("HID") >= 0)
{
device.OpenDevice();
byte[] msg = AuraMessage(Mode, Color1, Color2, Speed);
device.Write(msg);
device.Write(MESSAGE_SET);
device.Write(MESSAGE_APPLY);
device.CloseDevice();
}
}
}
}
}
@@ -512,6 +524,7 @@ namespace GHelper
settingsForm.InitGPUMode();
settingsForm.InitBoost();
settingsForm.InitAura();
settingsForm.SetPerformanceMode(config.getConfig("performance_mode"));
settingsForm.SetBatteryChargeLimit(config.getConfig("charge_limit"));
@@ -545,6 +558,12 @@ namespace GHelper
settingsForm.CyclePerformanceMode();
});
return;
case 179: // FN+F4
settingsForm.BeginInvoke(delegate
{
settingsForm.CycleAuraMode();
});
return;
case 87: // Battery
settingsForm.BeginInvoke(delegate
{
@@ -577,6 +596,8 @@ namespace GHelper
settingsForm.Show();
settingsForm.Activate();
}
trayIcon.Icon = trayIcon.Icon; // refreshing icon as it get's blurred when screen resolution changes
}
}

View File

@@ -80,6 +80,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_keyboard_48 {
get {
object obj = ResourceManager.GetObject("icons8-keyboard-48", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View File

@@ -121,6 +121,9 @@
<data name="eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-keyboard-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-keyboard-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ultimate" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ultimate.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>

View File

@@ -22,12 +22,18 @@ Profiles are **same** as in Armory Crate, including default fan curves
## Extras
1. **Maximum battery charge rate** limit (60% / 80% / 100%) to preserve your battery
2. CPU and GPU relative fan speed monitoring
3. Automatic switching of Standard/Eco GPU modes when laptop is plugged / unplugged!
4. FN+F5 an M4 (Rog) keys cycle through Performance modes
5. Screen resolution and display overdrive switching
6. Run on startup (optional)
1. Keyboard backlight control (basic aura modes and colors)
2. **Maximum battery charge rate** limit (60% / 80% / 100%) to preserve your battery
3. CPU and GPU relative fan speed monitoring
4. Automatic switching of Standard/Eco GPU modes when laptop is plugged / unplugged!
5. FN+F5 an M4 (Rog) keys cycle through Performance modes
6. Screen resolution and display overdrive switching
7. Run on startup (optional)
## Things still missing
1. Custom fan profiles
2. Anime matrix control
## How to install

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

245
Settings.Designer.cs generated
View File

@@ -28,6 +28,7 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
this.checkStartup = new System.Windows.Forms.CheckBox();
this.trackBattery = new System.Windows.Forms.TrackBar();
this.labelBattery = new System.Windows.Forms.Label();
@@ -56,6 +57,11 @@
this.button60Hz = new System.Windows.Forms.Button();
this.checkScreen = new System.Windows.Forms.CheckBox();
this.checkBoost = new System.Windows.Forms.CheckBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.comboKeyboard = new System.Windows.Forms.ComboBox();
this.buttonKeyboardColor = new System.Windows.Forms.Button();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.trackBattery)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBattery)).BeginInit();
this.tableGPU.SuspendLayout();
@@ -64,13 +70,16 @@
((System.ComponentModel.ISupportInitialize)(this.picturePerf)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureScreen)).BeginInit();
this.tableScreen.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.SuspendLayout();
//
// checkStartup
//
this.checkStartup.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.checkStartup.AutoSize = true;
this.checkStartup.Location = new System.Drawing.Point(34, 852);
this.checkStartup.Location = new System.Drawing.Point(31, 1022);
this.checkStartup.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.checkStartup.Name = "checkStartup";
this.checkStartup.Size = new System.Drawing.Size(206, 36);
this.checkStartup.TabIndex = 2;
@@ -83,11 +92,12 @@
this.trackBattery.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.trackBattery.LargeChange = 20;
this.trackBattery.Location = new System.Drawing.Point(23, 766);
this.trackBattery.Location = new System.Drawing.Point(20, 919);
this.trackBattery.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.trackBattery.Maximum = 100;
this.trackBattery.Minimum = 50;
this.trackBattery.Name = "trackBattery";
this.trackBattery.Size = new System.Drawing.Size(672, 90);
this.trackBattery.Size = new System.Drawing.Size(690, 90);
this.trackBattery.SmallChange = 10;
this.trackBattery.TabIndex = 3;
this.trackBattery.TickFrequency = 10;
@@ -98,7 +108,8 @@
//
this.labelBattery.AutoSize = true;
this.labelBattery.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
this.labelBattery.Location = new System.Drawing.Point(83, 723);
this.labelBattery.Location = new System.Drawing.Point(82, 876);
this.labelBattery.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelBattery.Name = "labelBattery";
this.labelBattery.Size = new System.Drawing.Size(248, 32);
this.labelBattery.TabIndex = 4;
@@ -108,7 +119,8 @@
//
this.labelBatteryLimit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.labelBatteryLimit.AutoSize = true;
this.labelBatteryLimit.Location = new System.Drawing.Point(617, 721);
this.labelBatteryLimit.Location = new System.Drawing.Point(633, 874);
this.labelBatteryLimit.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelBatteryLimit.Name = "labelBatteryLimit";
this.labelBatteryLimit.Size = new System.Drawing.Size(73, 32);
this.labelBatteryLimit.TabIndex = 5;
@@ -116,11 +128,12 @@
//
// pictureBattery
//
this.pictureBattery.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBattery.BackgroundImage")));
this.pictureBattery.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureBattery.Image = global::GHelper.Properties.Resources.icons8_charging_battery_48;
this.pictureBattery.Location = new System.Drawing.Point(32, 715);
this.pictureBattery.Location = new System.Drawing.Point(30, 868);
this.pictureBattery.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.pictureBattery.Name = "pictureBattery";
this.pictureBattery.Size = new System.Drawing.Size(48, 48);
this.pictureBattery.Size = new System.Drawing.Size(48, 47);
this.pictureBattery.TabIndex = 6;
this.pictureBattery.TabStop = false;
//
@@ -128,7 +141,8 @@
//
this.labelGPUFan.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.labelGPUFan.AutoSize = true;
this.labelGPUFan.Location = new System.Drawing.Point(536, 260);
this.labelGPUFan.Location = new System.Drawing.Point(546, 262);
this.labelGPUFan.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelGPUFan.Name = "labelGPUFan";
this.labelGPUFan.Size = new System.Drawing.Size(155, 32);
this.labelGPUFan.TabIndex = 8;
@@ -145,11 +159,12 @@
this.tableGPU.Controls.Add(this.buttonUltimate, 2, 0);
this.tableGPU.Controls.Add(this.buttonStandard, 1, 0);
this.tableGPU.Controls.Add(this.buttonEco, 0, 0);
this.tableGPU.Location = new System.Drawing.Point(23, 302);
this.tableGPU.Location = new System.Drawing.Point(22, 303);
this.tableGPU.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.tableGPU.Name = "tableGPU";
this.tableGPU.RowCount = 1;
this.tableGPU.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 106F));
this.tableGPU.Size = new System.Drawing.Size(672, 106);
this.tableGPU.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 107F));
this.tableGPU.Size = new System.Drawing.Size(690, 107);
this.tableGPU.TabIndex = 7;
//
// buttonUltimate
@@ -158,10 +173,10 @@
this.buttonUltimate.Dock = System.Windows.Forms.DockStyle.Fill;
this.buttonUltimate.FlatAppearance.BorderSize = 0;
this.buttonUltimate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonUltimate.Location = new System.Drawing.Point(458, 10);
this.buttonUltimate.Margin = new System.Windows.Forms.Padding(10);
this.buttonUltimate.Location = new System.Drawing.Point(469, 11);
this.buttonUltimate.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.buttonUltimate.Name = "buttonUltimate";
this.buttonUltimate.Size = new System.Drawing.Size(204, 86);
this.buttonUltimate.Size = new System.Drawing.Size(212, 85);
this.buttonUltimate.TabIndex = 2;
this.buttonUltimate.Text = "Ultimate";
this.buttonUltimate.UseVisualStyleBackColor = false;
@@ -172,10 +187,10 @@
this.buttonStandard.Dock = System.Windows.Forms.DockStyle.Fill;
this.buttonStandard.FlatAppearance.BorderSize = 0;
this.buttonStandard.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonStandard.Location = new System.Drawing.Point(234, 10);
this.buttonStandard.Margin = new System.Windows.Forms.Padding(10);
this.buttonStandard.Location = new System.Drawing.Point(239, 11);
this.buttonStandard.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.buttonStandard.Name = "buttonStandard";
this.buttonStandard.Size = new System.Drawing.Size(204, 86);
this.buttonStandard.Size = new System.Drawing.Size(212, 85);
this.buttonStandard.TabIndex = 1;
this.buttonStandard.Text = "Standard";
this.buttonStandard.UseVisualStyleBackColor = false;
@@ -187,10 +202,10 @@
this.buttonEco.Dock = System.Windows.Forms.DockStyle.Fill;
this.buttonEco.FlatAppearance.BorderSize = 0;
this.buttonEco.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonEco.Location = new System.Drawing.Point(10, 10);
this.buttonEco.Margin = new System.Windows.Forms.Padding(10);
this.buttonEco.Location = new System.Drawing.Point(9, 11);
this.buttonEco.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.buttonEco.Name = "buttonEco";
this.buttonEco.Size = new System.Drawing.Size(204, 86);
this.buttonEco.Size = new System.Drawing.Size(212, 85);
this.buttonEco.TabIndex = 0;
this.buttonEco.Text = "Eco";
this.buttonEco.UseVisualStyleBackColor = false;
@@ -199,7 +214,8 @@
//
this.labelGPU.AutoSize = true;
this.labelGPU.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
this.labelGPU.Location = new System.Drawing.Point(82, 260);
this.labelGPU.Location = new System.Drawing.Point(84, 265);
this.labelGPU.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelGPU.Name = "labelGPU";
this.labelGPU.Size = new System.Drawing.Size(136, 32);
this.labelGPU.TabIndex = 9;
@@ -207,11 +223,12 @@
//
// pictureGPU
//
this.pictureGPU.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.pictureGPU.Image = global::GHelper.Properties.Resources.icons8_video_card_48;
this.pictureGPU.Location = new System.Drawing.Point(32, 252);
this.pictureGPU.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureGPU.BackgroundImage")));
this.pictureGPU.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureGPU.Location = new System.Drawing.Point(32, 256);
this.pictureGPU.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.pictureGPU.Name = "pictureGPU";
this.pictureGPU.Size = new System.Drawing.Size(48, 48);
this.pictureGPU.Size = new System.Drawing.Size(48, 47);
this.pictureGPU.TabIndex = 10;
this.pictureGPU.TabStop = false;
//
@@ -219,7 +236,8 @@
//
this.labelCPUFan.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.labelCPUFan.AutoSize = true;
this.labelCPUFan.Location = new System.Drawing.Point(538, 39);
this.labelCPUFan.Location = new System.Drawing.Point(546, 38);
this.labelCPUFan.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelCPUFan.Name = "labelCPUFan";
this.labelCPUFan.Size = new System.Drawing.Size(154, 32);
this.labelCPUFan.TabIndex = 12;
@@ -236,11 +254,12 @@
this.tablePerf.Controls.Add(this.buttonTurbo, 2, 0);
this.tablePerf.Controls.Add(this.buttonBalanced, 1, 0);
this.tablePerf.Controls.Add(this.buttonSilent, 0, 0);
this.tablePerf.Location = new System.Drawing.Point(23, 79);
this.tablePerf.Location = new System.Drawing.Point(22, 79);
this.tablePerf.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.tablePerf.Name = "tablePerf";
this.tablePerf.RowCount = 1;
this.tablePerf.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 106F));
this.tablePerf.Size = new System.Drawing.Size(672, 106);
this.tablePerf.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 107F));
this.tablePerf.Size = new System.Drawing.Size(690, 107);
this.tablePerf.TabIndex = 11;
//
// buttonTurbo
@@ -250,10 +269,10 @@
this.buttonTurbo.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.buttonTurbo.FlatAppearance.BorderSize = 0;
this.buttonTurbo.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonTurbo.Location = new System.Drawing.Point(458, 10);
this.buttonTurbo.Margin = new System.Windows.Forms.Padding(10);
this.buttonTurbo.Location = new System.Drawing.Point(469, 11);
this.buttonTurbo.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.buttonTurbo.Name = "buttonTurbo";
this.buttonTurbo.Size = new System.Drawing.Size(204, 86);
this.buttonTurbo.Size = new System.Drawing.Size(212, 85);
this.buttonTurbo.TabIndex = 2;
this.buttonTurbo.Text = "Turbo";
this.buttonTurbo.UseVisualStyleBackColor = false;
@@ -265,10 +284,10 @@
this.buttonBalanced.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192)))));
this.buttonBalanced.FlatAppearance.BorderSize = 0;
this.buttonBalanced.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonBalanced.Location = new System.Drawing.Point(234, 10);
this.buttonBalanced.Margin = new System.Windows.Forms.Padding(10);
this.buttonBalanced.Location = new System.Drawing.Point(239, 11);
this.buttonBalanced.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.buttonBalanced.Name = "buttonBalanced";
this.buttonBalanced.Size = new System.Drawing.Size(204, 86);
this.buttonBalanced.Size = new System.Drawing.Size(212, 85);
this.buttonBalanced.TabIndex = 1;
this.buttonBalanced.Text = "Balanced";
this.buttonBalanced.UseVisualStyleBackColor = false;
@@ -281,21 +300,23 @@
this.buttonSilent.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.buttonSilent.FlatAppearance.BorderSize = 0;
this.buttonSilent.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonSilent.Location = new System.Drawing.Point(10, 10);
this.buttonSilent.Margin = new System.Windows.Forms.Padding(10);
this.buttonSilent.Location = new System.Drawing.Point(9, 11);
this.buttonSilent.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.buttonSilent.Name = "buttonSilent";
this.buttonSilent.Size = new System.Drawing.Size(204, 86);
this.buttonSilent.Size = new System.Drawing.Size(212, 85);
this.buttonSilent.TabIndex = 0;
this.buttonSilent.Text = "Silent";
this.buttonSilent.UseVisualStyleBackColor = false;
//
// picturePerf
//
this.picturePerf.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.picturePerf.Image = global::GHelper.Properties.Resources.icons8_speed_48;
this.picturePerf.Location = new System.Drawing.Point(32, 29);
this.picturePerf.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("picturePerf.BackgroundImage")));
this.picturePerf.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.picturePerf.InitialImage = null;
this.picturePerf.Location = new System.Drawing.Point(32, 32);
this.picturePerf.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.picturePerf.Name = "picturePerf";
this.picturePerf.Size = new System.Drawing.Size(48, 48);
this.picturePerf.Size = new System.Drawing.Size(48, 47);
this.picturePerf.TabIndex = 14;
this.picturePerf.TabStop = false;
//
@@ -303,7 +324,8 @@
//
this.labelPerf.AutoSize = true;
this.labelPerf.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
this.labelPerf.Location = new System.Drawing.Point(83, 37);
this.labelPerf.Location = new System.Drawing.Point(84, 41);
this.labelPerf.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelPerf.Name = "labelPerf";
this.labelPerf.Size = new System.Drawing.Size(234, 32);
this.labelPerf.TabIndex = 13;
@@ -312,11 +334,13 @@
// checkGPU
//
this.checkGPU.AutoSize = true;
this.checkGPU.Location = new System.Drawing.Point(34, 410);
this.checkGPU.ForeColor = System.Drawing.SystemColors.GrayText;
this.checkGPU.Location = new System.Drawing.Point(33, 410);
this.checkGPU.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.checkGPU.Name = "checkGPU";
this.checkGPU.Size = new System.Drawing.Size(614, 36);
this.checkGPU.Size = new System.Drawing.Size(550, 36);
this.checkGPU.TabIndex = 15;
this.checkGPU.Text = "Switch to Eco on battery and Standard when plugged";
this.checkGPU.Text = "Set Eco on battery and Standard when plugged";
this.checkGPU.UseVisualStyleBackColor = true;
this.checkGPU.CheckedChanged += new System.EventHandler(this.checkGPU_CheckedChanged);
//
@@ -324,20 +348,22 @@
//
this.buttonQuit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonQuit.BackColor = System.Drawing.SystemColors.ButtonFace;
this.buttonQuit.Location = new System.Drawing.Point(572, 846);
this.buttonQuit.Location = new System.Drawing.Point(591, 1011);
this.buttonQuit.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.buttonQuit.Name = "buttonQuit";
this.buttonQuit.Size = new System.Drawing.Size(120, 46);
this.buttonQuit.Size = new System.Drawing.Size(121, 47);
this.buttonQuit.TabIndex = 16;
this.buttonQuit.Text = "Quit";
this.buttonQuit.UseVisualStyleBackColor = false;
//
// pictureScreen
//
this.pictureScreen.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.pictureScreen.Image = global::GHelper.Properties.Resources.icons8_laptop_48;
this.pictureScreen.Location = new System.Drawing.Point(32, 485);
this.pictureScreen.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureScreen.BackgroundImage")));
this.pictureScreen.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureScreen.Location = new System.Drawing.Point(32, 489);
this.pictureScreen.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.pictureScreen.Name = "pictureScreen";
this.pictureScreen.Size = new System.Drawing.Size(48, 48);
this.pictureScreen.Size = new System.Drawing.Size(48, 47);
this.pictureScreen.TabIndex = 18;
this.pictureScreen.TabStop = false;
//
@@ -345,7 +371,8 @@
//
this.labelSreen.AutoSize = true;
this.labelSreen.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
this.labelSreen.Location = new System.Drawing.Point(82, 493);
this.labelSreen.Location = new System.Drawing.Point(84, 497);
this.labelSreen.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelSreen.Name = "labelSreen";
this.labelSreen.Size = new System.Drawing.Size(176, 32);
this.labelSreen.TabIndex = 17;
@@ -361,11 +388,12 @@
this.tableScreen.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableScreen.Controls.Add(this.button120Hz, 1, 0);
this.tableScreen.Controls.Add(this.button60Hz, 0, 0);
this.tableScreen.Location = new System.Drawing.Point(23, 535);
this.tableScreen.Location = new System.Drawing.Point(22, 535);
this.tableScreen.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.tableScreen.Name = "tableScreen";
this.tableScreen.RowCount = 1;
this.tableScreen.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 106F));
this.tableScreen.Size = new System.Drawing.Size(672, 103);
this.tableScreen.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 107F));
this.tableScreen.Size = new System.Drawing.Size(690, 102);
this.tableScreen.TabIndex = 19;
//
// button120Hz
@@ -375,10 +403,10 @@
this.button120Hz.FlatAppearance.BorderColor = System.Drawing.SystemColors.ActiveBorder;
this.button120Hz.FlatAppearance.BorderSize = 0;
this.button120Hz.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button120Hz.Location = new System.Drawing.Point(234, 10);
this.button120Hz.Margin = new System.Windows.Forms.Padding(10);
this.button120Hz.Location = new System.Drawing.Point(239, 11);
this.button120Hz.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.button120Hz.Name = "button120Hz";
this.button120Hz.Size = new System.Drawing.Size(204, 86);
this.button120Hz.Size = new System.Drawing.Size(212, 85);
this.button120Hz.TabIndex = 1;
this.button120Hz.Text = "120Hz + OD";
this.button120Hz.UseVisualStyleBackColor = false;
@@ -392,10 +420,10 @@
this.button60Hz.FlatAppearance.BorderSize = 0;
this.button60Hz.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button60Hz.ForeColor = System.Drawing.SystemColors.ControlText;
this.button60Hz.Location = new System.Drawing.Point(10, 10);
this.button60Hz.Margin = new System.Windows.Forms.Padding(10);
this.button60Hz.Location = new System.Drawing.Point(9, 11);
this.button60Hz.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.button60Hz.Name = "button60Hz";
this.button60Hz.Size = new System.Drawing.Size(204, 86);
this.button60Hz.Size = new System.Drawing.Size(212, 85);
this.button60Hz.TabIndex = 0;
this.button60Hz.Text = "60Hz";
this.button60Hz.UseVisualStyleBackColor = false;
@@ -403,28 +431,98 @@
// checkScreen
//
this.checkScreen.AutoSize = true;
this.checkScreen.Location = new System.Drawing.Point(34, 640);
this.checkScreen.ForeColor = System.Drawing.SystemColors.GrayText;
this.checkScreen.Location = new System.Drawing.Point(33, 638);
this.checkScreen.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.checkScreen.Name = "checkScreen";
this.checkScreen.Size = new System.Drawing.Size(562, 36);
this.checkScreen.Size = new System.Drawing.Size(527, 36);
this.checkScreen.TabIndex = 20;
this.checkScreen.Text = "Switch 60Hz on battery, and back when plugged";
this.checkScreen.Text = "Set 60Hz on battery, and back when plugged";
this.checkScreen.UseVisualStyleBackColor = true;
//
// checkBoost
//
this.checkBoost.AutoSize = true;
this.checkBoost.Location = new System.Drawing.Point(34, 188);
this.checkBoost.ForeColor = System.Drawing.SystemColors.GrayText;
this.checkBoost.Location = new System.Drawing.Point(33, 186);
this.checkBoost.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.checkBoost.Name = "checkBoost";
this.checkBoost.Size = new System.Drawing.Size(250, 36);
this.checkBoost.TabIndex = 21;
this.checkBoost.Text = "CPU Boost enabled";
this.checkBoost.UseVisualStyleBackColor = true;
//
// pictureBox1
//
this.pictureBox1.BackgroundImage = global::GHelper.Properties.Resources.icons8_keyboard_48;
this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureBox1.Location = new System.Drawing.Point(33, 720);
this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(42, 42);
this.pictureBox1.TabIndex = 23;
this.pictureBox1.TabStop = false;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
this.label1.Location = new System.Drawing.Point(84, 723);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(210, 32);
this.label1.TabIndex = 22;
this.label1.Text = "Laptop Keyboard";
//
// comboKeyboard
//
this.comboKeyboard.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.comboKeyboard.FormattingEnabled = true;
this.comboKeyboard.ItemHeight = 32;
this.comboKeyboard.Items.AddRange(new object[] {
"Static",
"Breathe",
"Strobe",
"Rainbow"});
this.comboKeyboard.Location = new System.Drawing.Point(40, 778);
this.comboKeyboard.Name = "comboKeyboard";
this.comboKeyboard.Size = new System.Drawing.Size(198, 40);
this.comboKeyboard.TabIndex = 24;
this.comboKeyboard.TabStop = false;
//
// buttonKeyboardColor
//
this.buttonKeyboardColor.BackColor = System.Drawing.SystemColors.ButtonHighlight;
this.buttonKeyboardColor.FlatAppearance.BorderColor = System.Drawing.Color.Red;
this.buttonKeyboardColor.FlatAppearance.BorderSize = 4;
this.buttonKeyboardColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonKeyboardColor.ForeColor = System.Drawing.SystemColors.ControlText;
this.buttonKeyboardColor.Location = new System.Drawing.Point(261, 773);
this.buttonKeyboardColor.Margin = new System.Windows.Forms.Padding(0);
this.buttonKeyboardColor.Name = "buttonKeyboardColor";
this.buttonKeyboardColor.Size = new System.Drawing.Size(212, 50);
this.buttonKeyboardColor.TabIndex = 25;
this.buttonKeyboardColor.Text = "Color";
this.buttonKeyboardColor.UseVisualStyleBackColor = false;
//
// pictureBox2
//
this.pictureBox2.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.pictureBox2.Location = new System.Drawing.Point(32, 773);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(212, 50);
this.pictureBox2.TabIndex = 26;
this.pictureBox2.TabStop = false;
//
// SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(13F, 32F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(726, 916);
this.ClientSize = new System.Drawing.Size(744, 1085);
this.Controls.Add(this.buttonKeyboardColor);
this.Controls.Add(this.comboKeyboard);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.label1);
this.Controls.Add(this.checkBoost);
this.Controls.Add(this.checkScreen);
this.Controls.Add(this.tableScreen);
@@ -445,12 +543,14 @@
this.Controls.Add(this.labelBattery);
this.Controls.Add(this.trackBattery);
this.Controls.Add(this.checkStartup);
this.Controls.Add(this.pictureBox2);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.MaximizeBox = false;
this.MdiChildrenMinimizedAnchorBottom = false;
this.MinimizeBox = false;
this.Name = "SettingsForm";
this.Padding = new System.Windows.Forms.Padding(10);
this.Padding = new System.Windows.Forms.Padding(9, 11, 9, 11);
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
@@ -464,6 +564,8 @@
((System.ComponentModel.ISupportInitialize)(this.picturePerf)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureScreen)).EndInit();
this.tableScreen.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -498,5 +600,10 @@
private Button button60Hz;
private CheckBox checkScreen;
private CheckBox checkBoost;
private PictureBox pictureBox1;
private Label label1;
private ComboBox comboKeyboard;
private Button buttonKeyboardColor;
private PictureBox pictureBox2;
}
}

View File

@@ -1,7 +1,8 @@
using System.Collections.Generic;
using Microsoft.VisualBasic.ApplicationServices;
using System.Diagnostics;
using System.Text.Json;
using System.Management;
using System.Timers;
using System.Windows.Forms;
namespace GHelper
{
@@ -53,11 +54,94 @@ namespace GHelper
checkScreen.CheckedChanged += checkScreen_CheckedChanged;
comboKeyboard.DropDownStyle = ComboBoxStyle.DropDownList;
comboKeyboard.SelectedIndex = 0;
comboKeyboard.SelectedValueChanged += ComboKeyboard_SelectedValueChanged;
buttonKeyboardColor.Click += ButtonKeyboardColor_Click;
SetTimer();
}
private void ButtonKeyboardColor_Click(object? sender, EventArgs e)
{
Button but = (Button)sender;
ColorDialog colorDlg = new ColorDialog();
colorDlg.AllowFullOpen = false;
colorDlg.Color = but.FlatAppearance.BorderColor;
if (colorDlg.ShowDialog() == DialogResult.OK)
{
SetAuraColor(colorDlg.Color);
}
}
public void InitAura()
{
int mode = Program.config.getConfig("aura_mode");
int colorCode = Program.config.getConfig("aura_color");
int speed = Program.config.getConfig("aura_speed");
Color color = Color.FromArgb(255, 255, 255);
if (mode == -1)
mode = 0;
if (colorCode != -1)
color = Color.FromArgb(colorCode);
SetAuraColor(color, false);
SetAuraMode(mode, false);
Aura.Mode = mode;
}
public void SetAuraColor(Color color, bool apply = true)
{
Aura.Color1 = color;
Program.config.setConfig("aura_color", color.ToArgb());
if (apply)
Aura.ApplyAura();
buttonKeyboardColor.FlatAppearance.BorderColor = color;
}
public void SetAuraMode (int mode = 0, bool apply = true)
{
if (mode > 3) mode = 0;
if (Aura.Mode == mode) return; // same mode
Aura.Mode = mode;
Program.config.setConfig("aura_mode", mode);
if (apply)
Aura.ApplyAura();
else
comboKeyboard.SelectedIndex = mode;
}
public void CycleAuraMode ()
{
SetAuraMode(Program.config.getConfig("aura_mode") + 1);
}
private void ComboKeyboard_SelectedValueChanged(object? sender, EventArgs e)
{
ComboBox cmb = (ComboBox)sender;
SetAuraMode(cmb.SelectedIndex);
}
private void CheckBoost_Click(object? sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
@@ -92,12 +176,12 @@ namespace GHelper
frequency = 120;
}
if (frequency > 0)
if (frequency > 0)
NativeMethods.SetRefreshRate(frequency);
if (overdrive > 0)
Program.wmi.DeviceSet(ASUSWmi.ScreenOverdrive, overdrive);
InitScreen();
}
@@ -114,10 +198,11 @@ namespace GHelper
int frequency = NativeMethods.GetRefreshRate();
int maxFrequency = Program.config.getConfig("max_frequency");
if (frequency < 0) {
button60Hz.Enabled= false;
if (frequency < 0)
{
button60Hz.Enabled = false;
button120Hz.Enabled = false;
labelSreen.Text = "Latop Screen: Turned off";
labelSreen.Text = "Laptop Screen: Turned off";
button60Hz.BackColor = SystemColors.ControlLight;
button120Hz.BackColor = SystemColors.ControlLight;
}
@@ -127,7 +212,7 @@ namespace GHelper
button120Hz.Enabled = true;
button60Hz.BackColor = SystemColors.ControlLightLight;
button120Hz.BackColor = SystemColors.ControlLightLight;
labelSreen.Text = "Latop Screen";
labelSreen.Text = "Laptop Screen";
}
int overdrive = Program.wmi.DeviceGet(ASUSWmi.ScreenOverdrive);
@@ -138,11 +223,12 @@ namespace GHelper
if (frequency == 60)
{
button60Hz.FlatAppearance.BorderSize = buttonActive;
} else
}
else
{
if (frequency > 60)
maxFrequency = frequency;
Program.config.setConfig("max_frequency", maxFrequency);
button120Hz.FlatAppearance.BorderSize = buttonActive;
}
@@ -235,22 +321,28 @@ namespace GHelper
{
case ASUSWmi.PerformanceSilent:
buttonSilent.FlatAppearance.BorderSize = buttonActive;
labelPerf.Text = "Peformance Mode: Silent";
labelPerf.Text = "Performance Mode: Silent";
break;
case ASUSWmi.PerformanceTurbo:
buttonTurbo.FlatAppearance.BorderSize = buttonActive;
labelPerf.Text = "Peformance Mode: Turbo";
labelPerf.Text = "Performance Mode: Turbo";
break;
default:
buttonBalanced.FlatAppearance.BorderSize = buttonActive;
labelPerf.Text = "Peformance Mode: Balanced";
labelPerf.Text = "Performance Mode: Balanced";
PerformanceMode = ASUSWmi.PerformanceBalanced;
break;
}
Program.config.setConfig("performance_mode", PerformanceMode);
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode);
try
{
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode);
} catch
{
labelPerf.Text = "Performance Mode: not supported";
}
}
@@ -260,11 +352,11 @@ namespace GHelper
SetPerformanceMode(Program.config.getConfig("performance_mode") + 1);
}
public void AutoScreen (int Plugged = 1)
public void AutoScreen(int Plugged = 1)
{
int ScreenAuto = Program.config.getConfig("screen_auto");
if (ScreenAuto != 1) return;
if (Plugged == 1)
SetScreen(1000, 1);
else
@@ -392,7 +484,7 @@ namespace GHelper
}
public void VisualiseGPUAuto(int GPUAuto)
public void VisualiseGPUAuto(int GPUAuto)
{
checkGPU.Checked = (GPUAuto == 1);
}
@@ -413,17 +505,17 @@ namespace GHelper
{
case ASUSWmi.GPUModeEco:
buttonEco.FlatAppearance.BorderSize = buttonActive;
labelGPU.Text = "GPU Mode: Eco (iGPU only)";
labelGPU.Text = "GPU Mode: iGPU only";
Program.trayIcon.Icon = GHelper.Properties.Resources.eco;
break;
case ASUSWmi.GPUModeUltimate:
buttonUltimate.FlatAppearance.BorderSize = buttonActive;
labelGPU.Text = "GPU Mode: Ultimate (dGPU is main)";
labelGPU.Text = "GPU Mode: dGPU exclusive";
Program.trayIcon.Icon = GHelper.Properties.Resources.ultimate;
break;
default:
buttonStandard.FlatAppearance.BorderSize = buttonActive;
labelGPU.Text = "GPU Mode: Eco (iGPU and dGPU)";
labelGPU.Text = "GPU Mode: iGPU and dGPU";
Program.trayIcon.Icon = GHelper.Properties.Resources.standard;
break;
}
@@ -473,14 +565,20 @@ namespace GHelper
}
}
public void SetBatteryChargeLimit (int limit = 100)
public void SetBatteryChargeLimit(int limit = 100)
{
if (limit < 50 || limit > 100) limit = 100;
labelBatteryLimit.Text = limit.ToString() + "%";
trackBattery.Value = limit;
Program.wmi.DeviceSet(ASUSWmi.BatteryLimit, limit);
try
{
Program.wmi.DeviceSet(ASUSWmi.BatteryLimit, limit);
} catch
{
Debug.WriteLine("Can't set battery charge limit");
}
Program.config.setConfig("charge_limit", limit);
}
@@ -510,6 +608,7 @@ namespace GHelper
Program.config.setConfig("screen_auto", 0);
}
}

View File

@@ -57,4 +57,62 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBattery.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DAAACwwBP0AiyAAAAY1JREFUaEPtlz1OAzEQhVdIFFyCH0EFDQ1wAhDcgxPACYCOA/BzGTo6aKGKFOAE
0FCABO9FsbSK3uI8J9kFMZ/0FdmMZ+xovLGrIAiCIAiCQLIMr+EL/IRfM5Y1WOsKsvZE7ME3qAq1IWvv
wiJWYJeTT77CJWjDtlEJu/AS2rAPVbIufII2bWzYceVcbFQix1V4CKe1j2xUEscEN+ANVDGONiqJY505
eATfoYp15N48gFnUYEfFOryDKt7xGWZRA0flhHbgOewNnyWbmIcn8APW412zqEGj8u9+ASY24Rl8GHz6
mS34CFXeccyiBik5iW2Yg4vi4rjIBBfPH0HlzZlFDWqS7XAK2R5N1OPZbmw7tt/G8JlrFjUo5z3khBQq
vtSpbWIlX5XHkK/OOiq2RE5+H2ZRgx1v4RpMqBhHG5XElccIHie4EPW9o82fP8yx11SyLuxDm9L38yy8
gDa8UP+WK+UiLIIXaiZQiduQtYsv9Qme53kn5bWujY3NGqzFtin+5YMgCIIgCP4PVfUNWXMTLz5Z0sYA
AAAASUVORK5CYII=
</value>
</data>
<data name="pictureGPU.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DAAACwwBP0AiyAAAAZVJREFUaEPtmTtOxDAURYcGGtgAsCJo6PisACE2ALTAvvgVsB0KQBRwT2HJGl3y
EtloHPCRjiKNfJ/sOLGV8aLT6XSa4Fa+ya/MD3kjm2dNvsq888l3OQu408szkJwlfQCr5k8NoAVZEV/k
vhyFK9KKBzLEBVvxWYa4YCuO2ptcsCVDXKim9/JQbst1uSOP5IN07ZcNcaEafspTOcSZpJ3LJ0NcCC8k
d8zB75fS5ZJR5xMMwuWTIS6Em3KILelyeCen8ChdHQxxIeQOD83AlXQ55JmfwrF0dTDEhUrlhZ0CL7ar
gyEuVOpPM/cTG9LVwRAXKnXqDOxKVwdDXAhLViHW+SmcSFcHQ1wIS1YhNqmx8Jn7JF0dDHEhLFmFkPV9
DOfS5ZMhLlRDdthoEHT+13biWrJJsc7zojJzXHnmhx6b3BAXaskQF2rF2X8PzP6LbE+GuOAq5V8J7vyo
zkMeniX/ZgB5u5oWM7ZY3q6mxYwtxsuVt61hlTOJdFbAdQjOFWoOglrXshg6xqnNLI6YOp1OZ1UsFt/W
cWCm8IATjAAAAABJRU5ErkJggg==
</value>
</data>
<data name="picturePerf.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DAAACwwBP0AiyAAAA31JREFUaEPt2NnrTkEcx/HHmj37hTWJP0BCSe5ESSnklivJUsiuXFiSIlsS98qW
CLmTP0FKUkqkrNn37f2p39T07fucmfM85/eQzqdexW/mzJlzzpyZeU6jTp06df6L9MQsbMdF3MVrfOui
f+tvF7ANM6Fj/nrGYT+e4HdJj7EPY9HxjMBJfIXXuTK+4ASGoyNZjpfwOtOOF1iGbktv6K57J6/Scehc
laY/rsI7YfADt7EReqFHow8GYCJmYzNu4ju8NoIr0Dkrie5GUec/4QDU4dzMh9dWTBdRyZMoGjbnMR5l
oxfWa886hraiF9Zr+Cc05/dAHF3MGtzAPXzARzzCNWzAAmit8Nr1LEFL0VTpzTbqvC4sjuby09B7YOsX
UVvrMBA7u/5mPccwlE6zoaM7H2cR3sGrW0SdX4mQIfDqSemhpBXWW6Q05uNhsxbqiK2XYjuvrIdXV7TY
jUF2tD2wjWi2iV9Y3fmqOq//p9rai6z0gre30VQZojFfxbBRcjovmgiyNoBahOzBejnjef4MbJ2UnM6f
w1BonfAWuxlIRi+pPVArbIiGUSuzTc6dn4cQrdhxmWxBMpdgD9T8HaIX15YX+YVViNNs2MTn2Qpbrkkk
Gf3wsAdqWIVchy23NINp36OZYxDiNOu8aMsSor2TLb+DZF7BHjgKIfdhy61mj7qo8/IQIZNgy7XlTsab
//siJGf28ebswSjqvGjrEaLV2ZZrPUhGleyB8TB4D1tueRegqderG9PNCdEF2/KsC9Dewx44BSEPYMst
bwh5L6Wl4RkyFbb8GZLxXuI5CNFO05ZbGoa6CD0J0b9zfj9rxxoyF7Y86yXWYmIP3ISQstNoGasRoou2
5WeRzA7YA28hZAJSPwlboTbjvZYWT1tH35SSmQ57oBofiRDt/W2ddp1CiLYt3mo/Dclow/QU9uB4M6ft
9lvYOq16g/gD10HYOvoQZn8BNs0e2AY+I37E2nCV3RN5tDYsRIguRFt3W283sqOO6pumbUTfNuO7oEZt
nbLijqltby+mGSx+Qlk5AtuQ6LdryGR4dcrQliFkF7w6h1E6emm9fZEe+QpopVTDtrysQ1BbzfZJ2v+0
/N10MWyDnbYUbUVfjr2GO+Eo2o5+I5f5EFWVyj4tKvrQehneibqDZqJ+qDR6EnrhcjZlrVLbOofOVadO
nTr/fBqNP4sju3bXhjy/AAAAAElFTkSuQmCC
</value>
</data>
<data name="pictureScreen.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DAAACwwBP0AiyAAAANBJREFUaEPt2DESAUEUhOF1PQQuxd1wHAGi1U8galU9ktej+qv6M71myyZriYiI
+Fd7dEFPtDZV311n2KEhdXh2wc4OSHZF7CKdnZGs87H51gPJ2AUckrGxQzI2dkjGxg7J2NghGRs7JGNj
h2Rs7JCMjR2SsbFDMjZ2SMbGDsnY2CEZGzskY2OHZGzskIyNHZKxsUOy6V8pp3+pr/9h2EU626IhdRN1
191/bNUZhg8fMeiE7og9h47VWY/obYNuiH3QuTrzR93NtL9ARET8aFleMDJURjd/4/oAAAAASUVORK5C
YII=
</value>
</data>
</root>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 813 KiB

After

Width:  |  Height:  |  Size: 813 KiB