Added on/off control for aura lightbar, lid and logo

This commit is contained in:
Serge
2023-05-05 11:44:33 +02:00
parent c6faec9628
commit 7740678cd4
9 changed files with 165 additions and 84 deletions

View File

@@ -1,14 +1,10 @@
// Source thanks to https://github.com/vddCore/Starlight with some adjustments from me
using Starlight.Communication;
using System.Management;
using System.Drawing.Drawing2D;
using System.Text;
using System.Globalization;
using System;
using System.Drawing;
using OSD;
using System.Diagnostics;
using System.Management;
using System.Text;
namespace Starlight.AnimeMatrix
{
@@ -331,7 +327,7 @@ namespace Starlight.AnimeMatrix
int second = DateTime.Now.Second;
if (CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern.Contains("H"))
PresentTextDiagonal(DateTime.Now.ToString("H" + ((second % 2 == 0)?":":" ") + "mm"));
PresentTextDiagonal(DateTime.Now.ToString("H" + ((second % 2 == 0) ? ":" : " ") + "mm"));
else
PresentTextDiagonal(DateTime.Now.ToString("h" + ((second % 2 == 0) ? ":" : " ") + "mmtt"));
}
@@ -348,14 +344,14 @@ namespace Starlight.AnimeMatrix
using (Font font = new Font("Arial", 24F, GraphicsUnit.Pixel))
{
SizeF textSize = g.MeasureString(text1, font);
g.DrawString(text1, font, Brushes.White, (MaxColumns*3 - textSize.Width)+3, -3);
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -3);
}
if (text2.Length > 0)
using (Font font = new Font("Arial", 18F, GraphicsUnit.Pixel))
{
SizeF textSize = g.MeasureString(text2, font);
g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width)+1, 25);
g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 1, 25);
}
}
@@ -369,7 +365,7 @@ namespace Starlight.AnimeMatrix
public void GenerateFrame(Image image, InterpolationMode interpolation = InterpolationMode.High)
{
int width = MaxColumns/2 * 6;
int width = MaxColumns / 2 * 6;
int height = MaxRows;
int targetWidth = MaxColumns * 2;
@@ -396,7 +392,7 @@ namespace Starlight.AnimeMatrix
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
if (x % 2 == (y+dx) % 2)
if (x % 2 == (y + dx) % 2)
{
var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3;
@@ -411,9 +407,9 @@ namespace Starlight.AnimeMatrix
public void SetLedDiagonal(int x, int y, byte color, int delta = 10)
{
//x+=delta;
y-=delta;
y -= delta;
int dx = (x - y)/2;
int dx = (x - y) / 2;
int dy = x + y;
SetLedPlanar(dx, dy, color);
}
@@ -442,11 +438,11 @@ namespace Starlight.AnimeMatrix
for (int y = 0; y < bmp.Height; y++)
{
for (int x = 0; x < bmp.Width; x++)
{
var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3;
SetLedDiagonal(x, y, (byte)color);
}
{
var pixel = bmp.GetPixel(x, y);
var color = (pixel.R + pixel.G + pixel.B) / 3;
SetLedDiagonal(x, y, (byte)color);
}
}
}

View File

@@ -208,25 +208,37 @@ namespace GHelper
List<AuraDev19b6> flags = new List<AuraDev19b6>();
if (awake) flags.Add(AuraDev19b6.AwakeKeyb);
if (boot) flags.Add(AuraDev19b6.BootKeyb);
if (sleep) flags.Add(AuraDev19b6.SleepKeyb);
if (shutdown) flags.Add(AuraDev19b6.ShutdownKeyb);
if (awake)
{
flags.Add(AuraDev19b6.AwakeKeyb);
flags.Add(AuraDev19b6.AwakeBar);
flags.Add(AuraDev19b6.AwakeLid);
flags.Add(AuraDev19b6.AwakeLogo);
}
flags.Add(AuraDev19b6.AwakeBar);
flags.Add(AuraDev19b6.BootBar);
flags.Add(AuraDev19b6.SleepBar);
flags.Add(AuraDev19b6.ShutdownBar);
if (boot)
{
flags.Add(AuraDev19b6.BootKeyb);
flags.Add(AuraDev19b6.BootBar);
flags.Add(AuraDev19b6.BootLid);
flags.Add(AuraDev19b6.BootLogo);
}
flags.Add(AuraDev19b6.AwakeLid);
flags.Add(AuraDev19b6.BootLid);
flags.Add(AuraDev19b6.SleepLid);
flags.Add(AuraDev19b6.ShutdownLid);
if (sleep)
{
flags.Add(AuraDev19b6.SleepKeyb);
flags.Add(AuraDev19b6.SleepBar);
flags.Add(AuraDev19b6.SleepLid);
flags.Add(AuraDev19b6.SleepLogo);
}
flags.Add(AuraDev19b6.AwakeLogo);
flags.Add(AuraDev19b6.BootLogo);
flags.Add(AuraDev19b6.SleepLogo);
flags.Add(AuraDev19b6.ShutdownLogo);
if (shutdown)
{
flags.Add(AuraDev19b6.ShutdownKeyb);
flags.Add(AuraDev19b6.ShutdownBar);
flags.Add(AuraDev19b6.ShutdownLid);
flags.Add(AuraDev19b6.ShutdownLogo);
}
byte[] msg = AuraDev19b6Extensions.ToBytes(flags.ToArray());

View File

@@ -1,8 +1,7 @@
using CustomControls;
using WinFormsSliderBar;
using System.Drawing.Drawing2D;
using System.Windows.Forms.DataVisualization.Charting;
using System.Windows.Forms;
using WinFormsSliderBar;
public static class ControlHelper
{

View File

@@ -30,6 +30,11 @@ namespace CustomControls
public bool darkTheme = false;
public RForm()
{
DoubleBuffered = true;
}
public static void InitColors(bool darkTheme)
{
if (darkTheme)
@@ -97,7 +102,7 @@ namespace CustomControls
}
public class RComboBox : ComboBox
public class RComboBox : ComboBox
{
private Color borderColor = Color.Gray;
[DefaultValue(typeof(Color), "Gray")]
@@ -332,8 +337,9 @@ namespace CustomControls
public RButton()
{
this.FlatStyle = FlatStyle.Flat;
this.FlatAppearance.BorderSize = 0;
DoubleBuffered = true;
FlatStyle = FlatStyle.Flat;
FlatAppearance.BorderSize = 0;
}
private GraphicsPath GetFigurePath(Rectangle rect, int radius)

View File

@@ -1,7 +1,6 @@
using System.Diagnostics;
using CustomControls;
using System.Diagnostics;
using System.Windows.Forms.DataVisualization.Charting;
using CustomControls;
using GHelper.Gpu;
namespace GHelper
{

View File

@@ -155,14 +155,16 @@ public static class HardwareMonitor
}
_gpuControl.Dispose();
/*
_gpuControl = new AmdGpuControl();
if (_gpuControl.IsValid)
{
GpuControl = _gpuControl;
return;
}
_gpuControl.Dispose();
*/
GpuControl = null;
}

View File

@@ -5,7 +5,6 @@ using System.Management;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Windows.Forms;
using Tools;
namespace GHelper
@@ -173,11 +172,15 @@ namespace GHelper
SettingsToggle();
}
settingsForm.RefreshSensors();
Application.Run();
}
static void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
{
@@ -373,6 +376,7 @@ namespace GHelper
{
SettingsToggle();
}
}

View File

@@ -1,11 +1,11 @@
using CustomControls;
using Starlight.AnimeMatrix;
using System;
using System.Diagnostics;
using System.Drawing.Imaging;
using System.Globalization;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text.Json;
using System.Threading;
using System.Timers;
using Tools;
@@ -16,7 +16,7 @@ namespace GHelper
{
private ContextMenuStrip contextMenuStrip = new CustomContextMenu();
private ToolStripMenuItem menuSilent, menuBalanced, menuTurbo;
private ToolStripMenuItem menuSilent, menuBalanced, menuTurbo, menuEco, menuStandard, menuUltimate, menuOptimized;
public static System.Timers.Timer aTimer = default!;
public static Point trayPoint;
@@ -132,6 +132,7 @@ namespace GHelper
aTimer = new System.Timers.Timer(1000);
aTimer.Elapsed += OnTimedEvent;
aTimer.Enabled = true;
SetVersionLabel(Properties.Strings.VersionLabel + ": " + Assembly.GetExecutingAssembly().GetName().Version);
@@ -141,7 +142,7 @@ namespace GHelper
labelModel.Text = model;
this.TopMost = Program.config.getConfig("topmost") == 1;
TopMost = Program.config.getConfig("topmost") == 1;
SetContextMenu();
@@ -151,18 +152,49 @@ namespace GHelper
CheckForUpdatesAsync();
});
}
private void SetContextMenu()
public void SetContextMenu()
{
contextMenuStrip.Items.Clear();
Padding padding = new Padding(5, 5, 5, 5);
var menuTitle = new ToolStripMenuItem(Properties.Strings.PerformanceMode);
menuTitle.Margin = padding;
menuTitle.Enabled = false;
contextMenuStrip.Items.Add(menuTitle);
/*
TableLayoutPanel[] tables = { tablePerf, tableGPU };
string[] titles = { Properties.Strings.PerformanceMode, Properties.Strings.GPUMode};
int index = 0;
foreach (TableLayoutPanel table in tables)
{
var title = new ToolStripMenuItem(titles[index]);
title.Margin = padding;
title.Enabled = false;
contextMenuStrip.Items.Add(title);
foreach (Control control in table.Controls)
{
var button = control as RButton;
if (button != null && !button.Secondary && button.Enabled)
{
var menu = new ToolStripMenuItem(button.Text);
menu.Margin = padding;
menu.Checked = button.Activated;
menu.Click += delegate { button.PerformClick(); };
contextMenuStrip.Items.Add(menu);
}
}
contextMenuStrip.Items.Add("-");
index++;
}*/
var title = new ToolStripMenuItem(Properties.Strings.PerformanceMode);
title.Margin = padding;
title.Enabled = false;
contextMenuStrip.Items.Add(title);
menuSilent = new ToolStripMenuItem(Properties.Strings.Silent);
menuSilent.Click += ButtonSilent_Click;
@@ -180,6 +212,40 @@ namespace GHelper
menuTurbo.Margin = padding;
contextMenuStrip.Items.Add(menuTurbo);
contextMenuStrip.Items.Add("-");
var titleGPU = new ToolStripMenuItem(Properties.Strings.GPUMode);
titleGPU.Margin = padding;
titleGPU.Enabled = false;
contextMenuStrip.Items.Add(titleGPU);
menuEco = new ToolStripMenuItem(Properties.Strings.EcoMode);
menuEco.Click += ButtonEco_Click;
menuEco.Margin = padding;
contextMenuStrip.Items.Add(menuEco);
menuStandard = new ToolStripMenuItem(Properties.Strings.StandardMode);
menuStandard.Click += ButtonStandard_Click;
menuStandard.Margin = padding;
contextMenuStrip.Items.Add(menuStandard);
menuUltimate = new ToolStripMenuItem(Properties.Strings.UltimateMode);
menuUltimate.Click += ButtonUltimate_Click;
menuUltimate.Margin = padding;
contextMenuStrip.Items.Add(menuUltimate);
menuOptimized = new ToolStripMenuItem(Properties.Strings.Optimized);
menuOptimized.Click += ButtonOptimized_Click;
menuOptimized.Margin = padding;
contextMenuStrip.Items.Add(menuOptimized);
contextMenuStrip.Items.Add("-");
var quit = new ToolStripMenuItem(Properties.Strings.Quit);
quit.Click += ButtonQuit_Click;
quit.Margin = padding;
contextMenuStrip.Items.Add(quit);
contextMenuStrip.ShowCheckMargin = true;
contextMenuStrip.RenderMode = ToolStripRenderMode.System;
@@ -199,7 +265,8 @@ namespace GHelper
if (Program.wmi.DeviceGet(ASUSWmi.GPUXG) == 1)
{
Program.wmi.DeviceSet(ASUSWmi.GPUXG, 0, "GPU XGM");
} else
}
else
{
Program.wmi.DeviceSet(ASUSWmi.GPUXG, 1, "GPU XGM");
}
@@ -562,7 +629,7 @@ namespace GHelper
break;
default:
mat.SetBuiltInAnimation(true, animation);
Logger.WriteLine("Matrix builtin "+animation.AsByte);
Logger.WriteLine("Matrix builtin " + animation.AsByte);
break;
}
@@ -802,7 +869,7 @@ namespace GHelper
ButtonEnabled(buttonMiniled, screenEnabled);
labelSreen.Text = screenEnabled
? Properties.Strings.LaptopScreen + ": " + frequency + "Hz" + ((overdrive == 1) ? " + " + Properties.Strings.Overdrive : "")
? Properties.Strings.LaptopScreen + ": " + frequency + "Hz" + ((overdrive == 1 && overdriveSetting) ? " + " + Properties.Strings.Overdrive : "")
: Properties.Strings.LaptopScreen + ": " + Properties.Strings.TurnedOff;
button60Hz.Activated = false;
@@ -826,7 +893,8 @@ namespace GHelper
{
button120Hz.Text = maxFrequency.ToString() + "Hz" + (overdriveSetting ? " + OD" : "");
panelScreen.Visible = true;
} else if (maxFrequency > 0)
}
else if (maxFrequency > 0)
{
panelScreen.Visible = false;
}
@@ -876,8 +944,7 @@ namespace GHelper
SetGPUMode(ASUSWmi.GPUModeEco);
}
private void RefreshSensors(bool force = false)
public void RefreshSensors(bool force = false)
{
if (!force && Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastRefresh) < 2000) return;
@@ -893,7 +960,7 @@ namespace GHelper
cpuTemp = ": " + Math.Round((decimal)HardwareMonitor.cpuTemp).ToString() + "°C ";
if (HardwareMonitor.batteryDischarge > 0)
battery = Properties.Strings.Discharging +": " + Math.Round((decimal)HardwareMonitor.batteryDischarge, 1).ToString() + "W";
battery = Properties.Strings.Discharging + ": " + Math.Round((decimal)HardwareMonitor.batteryDischarge, 1).ToString() + "W";
if (HardwareMonitor.gpuTemp > 0)
{
@@ -930,11 +997,7 @@ namespace GHelper
this.Top = Screen.FromControl(this).WorkingArea.Height - 10 - this.Height;
this.Activate();
Task.Run(async () =>
{
await Task.Delay(TimeSpan.FromSeconds(1));
aTimer.Enabled = true;
});
aTimer.Enabled = true;
}
else
@@ -946,7 +1009,7 @@ namespace GHelper
private void SetPerformanceLabel()
{
labelPerf.Text = Properties.Strings.PerformanceMode + (customFans?"+":"") + ((customPower > 0) ? " "+customPower+"W" : "");
labelPerf.Text = Properties.Strings.PerformanceMode + (customFans ? "+" : "") + ((customPower > 0) ? " " + customPower + "W" : "");
}
public void SetPower()
@@ -1074,30 +1137,27 @@ namespace GHelper
buttonBalanced.Activated = false;
buttonTurbo.Activated = false;
menuSilent.Checked = false;
menuBalanced.Checked = false;
menuTurbo.Checked = false;
switch (PerformanceMode)
{
case ASUSWmi.PerformanceSilent:
buttonSilent.Activated = true;
menuSilent.Checked = true;
perfName = Properties.Strings.Silent;
break;
case ASUSWmi.PerformanceTurbo:
buttonTurbo.Activated = true;
menuTurbo.Checked = true;
perfName = Properties.Strings.Turbo;
break;
default:
buttonBalanced.Activated = true;
menuBalanced.Checked = true;
PerformanceMode = ASUSWmi.PerformanceBalanced;
perfName = Properties.Strings.Balanced;
break;
}
menuSilent.Checked = buttonSilent.Activated;
menuBalanced.Checked = buttonBalanced.Activated;
menuTurbo.Checked = buttonTurbo.Activated;
int oldMode = Program.config.getConfig("performance_mode");
Program.config.setConfig("performance_" + (int)SystemInformation.PowerStatus.PowerLineStatus, PerformanceMode);
Program.config.setConfig("performance_mode", PerformanceMode);
@@ -1268,6 +1328,7 @@ namespace GHelper
tablePerf.ColumnCount = 0;
tableGPU.ColumnCount = 0;
tableScreen.ColumnCount = 0;
menuUltimate.Visible = false;
}
//tableLayoutMatrix.ColumnCount = 0;
@@ -1278,7 +1339,7 @@ namespace GHelper
int connected = Program.wmi.DeviceGet(ASUSWmi.GPUXGConnected);
int enabled = Program.wmi.DeviceGet(ASUSWmi.GPUXG);
buttonXGM.Visible = (connected == 1);
buttonXGM.Enabled = buttonXGM.Visible = (connected == 1);
buttonXGM.Activated = (enabled == 1);
}
@@ -1332,7 +1393,7 @@ namespace GHelper
ButtonEnabled(buttonStandard, false);
ButtonEnabled(buttonUltimate, false);
labelGPU.Text = Properties.Strings.GPUMode + ": "+ Properties.Strings.GPUChanging + " ...";
labelGPU.Text = Properties.Strings.GPUMode + ": " + Properties.Strings.GPUChanging + " ...";
Thread t = new Thread(() =>
{
@@ -1461,6 +1522,10 @@ namespace GHelper
break;
}
menuEco.Checked = buttonEco.Activated;
menuStandard.Checked = buttonStandard.Activated;
menuUltimate.Checked = buttonUltimate.Activated;
menuOptimized.Checked = buttonOptimized.Activated;
}

View File

@@ -4,9 +4,7 @@
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<!-- UAC Manifest Options
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.