mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Anime Matrix Editor
This commit is contained in:
@@ -2,7 +2,9 @@
|
|||||||
using NAudio.Wave;
|
using NAudio.Wave;
|
||||||
using Starlight.AnimeMatrix;
|
using Starlight.AnimeMatrix;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
using System.Drawing.Imaging;
|
using System.Drawing.Imaging;
|
||||||
|
using System.IO;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
|
||||||
namespace GHelper.AnimeMatrix
|
namespace GHelper.AnimeMatrix
|
||||||
@@ -14,30 +16,32 @@ namespace GHelper.AnimeMatrix
|
|||||||
SettingsForm settings;
|
SettingsForm settings;
|
||||||
|
|
||||||
System.Timers.Timer matrixTimer = default!;
|
System.Timers.Timer matrixTimer = default!;
|
||||||
AnimeMatrixDevice? mat;
|
public AnimeMatrixDevice? device;
|
||||||
|
|
||||||
double[]? AudioValues;
|
double[]? AudioValues;
|
||||||
WasapiCapture? AudioDevice;
|
WasapiCapture? AudioDevice;
|
||||||
|
|
||||||
public bool IsValid => mat != null;
|
public bool IsValid => device != null;
|
||||||
|
|
||||||
private long lastPresent;
|
private long lastPresent;
|
||||||
private List<double> maxes = new List<double>();
|
private List<double> maxes = new List<double>();
|
||||||
|
|
||||||
|
private MemoryStream ms = new MemoryStream();
|
||||||
|
|
||||||
public AniMatrixControl(SettingsForm settingsForm)
|
public AniMatrixControl(SettingsForm settingsForm)
|
||||||
{
|
{
|
||||||
settings = settingsForm;
|
settings = settingsForm;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
mat = new AnimeMatrixDevice();
|
device = new AnimeMatrixDevice();
|
||||||
Task.Run(mat.WakeUp);
|
Task.Run(device.WakeUp);
|
||||||
matrixTimer = new System.Timers.Timer(100);
|
matrixTimer = new System.Timers.Timer(100);
|
||||||
matrixTimer.Elapsed += MatrixTimer_Elapsed;
|
matrixTimer.Elapsed += MatrixTimer_Elapsed;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
mat = null;
|
device = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -67,24 +71,26 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
mat.SetProvider();
|
device.SetProvider();
|
||||||
} catch (Exception ex) {
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
Logger.WriteLine(ex.Message);
|
Logger.WriteLine(ex.Message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wakeUp && AppConfig.ContainsModel("401")) mat.WakeUp();
|
if (wakeUp && AppConfig.ContainsModel("401")) device.WakeUp();
|
||||||
|
|
||||||
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
|
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
|
||||||
{
|
{
|
||||||
mat.SetDisplayState(false);
|
device.SetDisplayState(false);
|
||||||
mat.SetDisplayState(false); // some devices are dumb
|
device.SetDisplayState(false); // some devices are dumb
|
||||||
Logger.WriteLine("Matrix Off");
|
Logger.WriteLine("Matrix Off");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mat.SetDisplayState(true);
|
device.SetDisplayState(true);
|
||||||
mat.SetBrightness((BrightnessMode)brightness);
|
device.SetBrightness((BrightnessMode)brightness);
|
||||||
|
|
||||||
switch (running)
|
switch (running)
|
||||||
{
|
{
|
||||||
@@ -98,7 +104,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
SetMatrixAudio();
|
SetMatrixAudio();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mat.SetBuiltInAnimation(true, animation);
|
device.SetBuiltInAnimation(true, animation);
|
||||||
Logger.WriteLine("Matrix builtin " + animation.AsByte);
|
Logger.WriteLine("Matrix builtin " + animation.AsByte);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -127,10 +133,10 @@ namespace GHelper.AnimeMatrix
|
|||||||
switch (AppConfig.Get("matrix_running"))
|
switch (AppConfig.Get("matrix_running"))
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
mat.PresentNextFrame();
|
device.PresentNextFrame();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
mat.PresentClock();
|
device.PresentClock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,7 +145,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
public void SetMatrixClock()
|
public void SetMatrixClock()
|
||||||
{
|
{
|
||||||
mat.SetBuiltInAnimation(false);
|
device.SetBuiltInAnimation(false);
|
||||||
StartMatrixTimer(1000);
|
StartMatrixTimer(1000);
|
||||||
Logger.WriteLine("Matrix Clock");
|
Logger.WriteLine("Matrix Clock");
|
||||||
}
|
}
|
||||||
@@ -169,7 +175,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
{
|
{
|
||||||
if (!IsValid) return;
|
if (!IsValid) return;
|
||||||
|
|
||||||
mat.SetBuiltInAnimation(false);
|
device.SetBuiltInAnimation(false);
|
||||||
StopMatrixTimer();
|
StopMatrixTimer();
|
||||||
StopMatrixAudio();
|
StopMatrixAudio();
|
||||||
|
|
||||||
@@ -238,8 +244,8 @@ namespace GHelper.AnimeMatrix
|
|||||||
for (int x = 0; x < 2 - (y % 2); x++)
|
for (int x = 0; x < 2 - (y % 2); x++)
|
||||||
{
|
{
|
||||||
//color = (byte)(Math.Min(1,(h - y - 2)*2) * 255);
|
//color = (byte)(Math.Min(1,(h - y - 2)*2) * 255);
|
||||||
mat.SetLedPlanar(x + dx, dy + y, (byte)(h * 255 / 30));
|
device.SetLedPlanar(x + dx, dy + y, (byte)(h * 255 / 30));
|
||||||
mat.SetLedPlanar(x + dx, dy - y, 255);
|
device.SetLedPlanar(x + dx, dy - y, 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,7 +255,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastPresent) < 70) return;
|
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastPresent) < 70) return;
|
||||||
lastPresent = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
lastPresent = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||||
|
|
||||||
mat.Clear();
|
device.Clear();
|
||||||
|
|
||||||
int size = 20;
|
int size = 20;
|
||||||
double[] bars = new double[size];
|
double[] bars = new double[size];
|
||||||
@@ -267,7 +273,7 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
for (int i = 0; i < size; i++) DrawBar(20 - i, bars[i] * 20 / maxAverage);
|
for (int i = 0; i < size; i++) DrawBar(20 - i, bars[i] * 20 / maxAverage);
|
||||||
|
|
||||||
mat.Present();
|
device.Present();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -302,22 +308,27 @@ namespace GHelper.AnimeMatrix
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMatrixPicture(string fileName)
|
public void SetMatrixPicture(string fileName, bool visualise = true)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!IsValid) return;
|
if (!IsValid) return;
|
||||||
StopMatrixTimer();
|
StopMatrixTimer();
|
||||||
|
|
||||||
Image image;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var fs = new FileStream(fileName, FileMode.Open))
|
using (var fs = new FileStream(fileName, FileMode.Open))
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
ms.SetLength(0);
|
||||||
fs.CopyTo(ms);
|
fs.CopyTo(ms);
|
||||||
ms.Position = 0;
|
ms.Position = 0;
|
||||||
image = Image.FromStream(ms);
|
|
||||||
|
using (Image image = Image.FromStream(ms))
|
||||||
|
{
|
||||||
|
ProcessPicture(image);
|
||||||
|
Logger.WriteLine("Matrix " + fileName);
|
||||||
|
if (visualise) settings.VisualiseMatrix(image);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
@@ -326,30 +337,47 @@ namespace GHelper.AnimeMatrix
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mat.SetBuiltInAnimation(false);
|
}
|
||||||
mat.ClearFrames();
|
|
||||||
|
protected void ProcessPicture(Image image)
|
||||||
|
{
|
||||||
|
device.SetBuiltInAnimation(false);
|
||||||
|
device.ClearFrames();
|
||||||
|
|
||||||
|
int matrixX = AppConfig.Get("matrix_x", 0);
|
||||||
|
int matrixY = AppConfig.Get("matrix_y", 0);
|
||||||
|
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||||
|
InterpolationMode matrixQuality = (InterpolationMode)AppConfig.Get("matrix_quality", 0);
|
||||||
|
|
||||||
|
|
||||||
FrameDimension dimension = new FrameDimension(image.FrameDimensionsList[0]);
|
FrameDimension dimension = new FrameDimension(image.FrameDimensionsList[0]);
|
||||||
int frameCount = image.GetFrameCount(dimension);
|
int frameCount = image.GetFrameCount(dimension);
|
||||||
|
|
||||||
if (frameCount > 1)
|
if (frameCount > 1)
|
||||||
{
|
{
|
||||||
|
var delayPropertyBytes = image.GetPropertyItem(0x5100).Value;
|
||||||
|
var frameDelay = BitConverter.ToInt32(delayPropertyBytes) * 10;
|
||||||
|
|
||||||
for (int i = 0; i < frameCount; i++)
|
for (int i = 0; i < frameCount; i++)
|
||||||
{
|
{
|
||||||
image.SelectActiveFrame(dimension, i);
|
image.SelectActiveFrame(dimension, i);
|
||||||
mat.GenerateFrame(image);
|
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||||
mat.AddFrame();
|
device.AddFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
StartMatrixTimer();
|
|
||||||
Logger.WriteLine("Matrix GIF " + fileName);
|
Logger.WriteLine("GIF Delay:" + frameDelay);
|
||||||
|
StartMatrixTimer(Math.Max(50, frameDelay));
|
||||||
|
|
||||||
|
//image.SelectActiveFrame(dimension, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mat.GenerateFrame(image);
|
device.GenerateFrame(image, matrixZoom, matrixX, matrixY, matrixQuality);
|
||||||
mat.Present();
|
device.Present();
|
||||||
Logger.WriteLine("Matrix " + fileName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
// Source thanks to https://github.com/vddCore/Starlight with some adjustments from me
|
// Source thanks to https://github.com/vddCore/Starlight with some adjustments from me
|
||||||
|
|
||||||
|
using GHelper;
|
||||||
using GHelper.AnimeMatrix.Communication;
|
using GHelper.AnimeMatrix.Communication;
|
||||||
using System.Drawing.Drawing2D;
|
using System.Drawing.Drawing2D;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
using System.Drawing.Text;
|
using System.Drawing.Text;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Management;
|
using System.Management;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
|
||||||
|
|
||||||
namespace Starlight.AnimeMatrix
|
namespace Starlight.AnimeMatrix
|
||||||
{
|
{
|
||||||
@@ -103,12 +106,10 @@ namespace Starlight.AnimeMatrix
|
|||||||
string model = GetModel();
|
string model = GetModel();
|
||||||
if (model.Contains("401"))
|
if (model.Contains("401"))
|
||||||
{
|
{
|
||||||
|
|
||||||
_model = AnimeType.GA401;
|
_model = AnimeType.GA401;
|
||||||
|
|
||||||
MaxColumns = 33;
|
MaxColumns = 33;
|
||||||
dx = 1;
|
dx = 1;
|
||||||
|
|
||||||
MaxRows = 55;
|
MaxRows = 55;
|
||||||
LedCount = 1245;
|
LedCount = 1245;
|
||||||
|
|
||||||
@@ -392,8 +393,9 @@ namespace Starlight.AnimeMatrix
|
|||||||
{
|
{
|
||||||
g.CompositingQuality = CompositingQuality.HighQuality;
|
g.CompositingQuality = CompositingQuality.HighQuality;
|
||||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||||
|
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
|
||||||
|
|
||||||
using (Font font = new Font("Consolas", 21F, FontStyle.Regular, GraphicsUnit.Pixel))
|
using (Font font = new Font("Consolas", 22F, FontStyle.Regular, GraphicsUnit.Pixel))
|
||||||
{
|
{
|
||||||
SizeF textSize = g.MeasureString(text1, font);
|
SizeF textSize = g.MeasureString(text1, font);
|
||||||
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -4);
|
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -4);
|
||||||
@@ -408,39 +410,16 @@ namespace Starlight.AnimeMatrix
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GenerateFrame(bmp, InterpolationMode.Bicubic);
|
GenerateFrame(bmp);
|
||||||
Present();
|
Present();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GenerateFrame(Image image, InterpolationMode interpolation = InterpolationMode.High)
|
public void GenerateFrame(Image image, float zoom = 1, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default)
|
||||||
{
|
{
|
||||||
|
using (Bitmap bmp = GeneratePicture(image, zoom, panX, panY, quality))
|
||||||
int width = MaxColumns / 2 * 6;
|
|
||||||
int height = MaxRows;
|
|
||||||
|
|
||||||
int targetWidth = MaxColumns * 2;
|
|
||||||
|
|
||||||
float scale;
|
|
||||||
|
|
||||||
using (Bitmap bmp = new Bitmap(targetWidth, height))
|
|
||||||
{
|
{
|
||||||
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height);
|
|
||||||
|
|
||||||
using (var graph = Graphics.FromImage(bmp))
|
|
||||||
{
|
|
||||||
var scaleWidth = (float)(image.Width * scale);
|
|
||||||
var scaleHeight = (float)(image.Height * scale);
|
|
||||||
|
|
||||||
graph.InterpolationMode = interpolation;
|
|
||||||
graph.CompositingQuality = CompositingQuality.HighQuality;
|
|
||||||
graph.SmoothingMode = SmoothingMode.AntiAlias;
|
|
||||||
|
|
||||||
graph.DrawImage(image, (float)Math.Round(targetWidth - scaleWidth * targetWidth / width), 0, (float)Math.Round(scaleWidth * targetWidth / width), scaleHeight);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int y = 0; y < bmp.Height; y++)
|
for (int y = 0; y < bmp.Height; y++)
|
||||||
{
|
{
|
||||||
for (int x = 0; x < bmp.Width; x++)
|
for (int x = 0; x < bmp.Width; x++)
|
||||||
@@ -456,9 +435,40 @@ namespace Starlight.AnimeMatrix
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Bitmap GeneratePicture(Image image, float zoom = 100, int panX = 0, int panY = 0, InterpolationMode quality = InterpolationMode.Default)
|
||||||
|
{
|
||||||
|
|
||||||
|
int width = MaxColumns * 3;
|
||||||
|
int height = MaxRows;
|
||||||
|
|
||||||
|
int targetWidth = MaxColumns * 2;
|
||||||
|
|
||||||
|
float scale;
|
||||||
|
|
||||||
|
Bitmap bmp = new Bitmap(targetWidth, height);
|
||||||
|
{
|
||||||
|
scale = Math.Min((float)width / (float)image.Width, (float)height / (float)image.Height) * zoom / 100;
|
||||||
|
|
||||||
|
using (var graph = Graphics.FromImage(bmp))
|
||||||
|
{
|
||||||
|
var scaleWidth = (float)(image.Width * scale);
|
||||||
|
var scaleHeight = (float)(image.Height * scale);
|
||||||
|
|
||||||
|
graph.InterpolationMode = quality;
|
||||||
|
graph.CompositingQuality = CompositingQuality.HighQuality;
|
||||||
|
graph.SmoothingMode = SmoothingMode.AntiAlias;
|
||||||
|
|
||||||
|
graph.DrawImage(image, (float)Math.Round(targetWidth - (scaleWidth + panX) * targetWidth / width), -panY, (float)Math.Round(scaleWidth * targetWidth / width), scaleHeight);
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void SetLedDiagonal(int x, int y, byte color, int delta = 10)
|
public void SetLedDiagonal(int x, int y, byte color, int delta = 10)
|
||||||
{
|
{
|
||||||
//x+=delta;
|
//x += delta;
|
||||||
y -= delta;
|
y -= delta;
|
||||||
|
|
||||||
int dx = (x - y) / 2;
|
int dx = (x - y) / 2;
|
||||||
@@ -471,25 +481,8 @@ namespace Starlight.AnimeMatrix
|
|||||||
|
|
||||||
Clear();
|
Clear();
|
||||||
|
|
||||||
|
|
||||||
InstalledFontCollection installedFontCollection = new InstalledFontCollection();
|
|
||||||
|
|
||||||
|
|
||||||
string familyName;
|
|
||||||
string familyList = "";
|
|
||||||
FontFamily[] fontFamilies;
|
|
||||||
// Get the array of FontFamily objects.
|
|
||||||
fontFamilies = installedFontCollection.Families;
|
|
||||||
|
|
||||||
int count = fontFamilies.Length;
|
|
||||||
for (int j = 0; j < count; ++j)
|
|
||||||
{
|
|
||||||
familyName = fontFamilies[j].Name;
|
|
||||||
familyList = familyList + familyName;
|
|
||||||
familyList = familyList + ", ";
|
|
||||||
}
|
|
||||||
|
|
||||||
int maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
|
int maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
|
||||||
|
int textHeight;
|
||||||
|
|
||||||
using (Bitmap bmp = new Bitmap(maxX, MaxRows))
|
using (Bitmap bmp = new Bitmap(maxX, MaxRows))
|
||||||
{
|
{
|
||||||
@@ -497,11 +490,13 @@ namespace Starlight.AnimeMatrix
|
|||||||
{
|
{
|
||||||
g.CompositingQuality = CompositingQuality.HighQuality;
|
g.CompositingQuality = CompositingQuality.HighQuality;
|
||||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||||
|
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
|
||||||
|
|
||||||
using (Font font = new Font("Consolas", 13F, FontStyle.Regular, GraphicsUnit.Pixel))
|
using (Font font = new Font("Consolas", 11, FontStyle.Regular, GraphicsUnit.Pixel))
|
||||||
{
|
{
|
||||||
SizeF textSize = g.MeasureString(text, font);
|
SizeF textSize = g.MeasureString(text, font);
|
||||||
g.DrawString(text, font, Brushes.White, 4, 1);
|
textHeight = (int)textSize.Height;
|
||||||
|
g.DrawString(text, font, Brushes.White, 4, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,7 +506,7 @@ namespace Starlight.AnimeMatrix
|
|||||||
{
|
{
|
||||||
var pixel = bmp.GetPixel(x, y);
|
var pixel = bmp.GetPixel(x, y);
|
||||||
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
var color = (pixel.R + pixel.G + pixel.B) / 3;
|
||||||
SetLedDiagonal(x, y, (byte)color);
|
SetLedDiagonal(x, y, (byte)color, textHeight - 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -383,7 +383,7 @@ public static class AppConfig
|
|||||||
|
|
||||||
public static bool IsNoGPUModes()
|
public static bool IsNoGPUModes()
|
||||||
{
|
{
|
||||||
return ContainsModel("GV301RA");
|
return ContainsModel("GV301RA") || ContainsModel("GV302XA");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,8 +59,11 @@ public class AsusACPI
|
|||||||
public const uint VivoBookMode = 0x00110019; // Vivobook performance modes
|
public const uint VivoBookMode = 0x00110019; // Vivobook performance modes
|
||||||
|
|
||||||
public const uint GPUEco = 0x00090020;
|
public const uint GPUEco = 0x00090020;
|
||||||
|
|
||||||
|
public const uint GPUXGInit = 0x00090017;
|
||||||
public const uint GPUXGConnected = 0x00090018;
|
public const uint GPUXGConnected = 0x00090018;
|
||||||
public const uint GPUXG = 0x00090019;
|
public const uint GPUXG = 0x00090019;
|
||||||
|
|
||||||
public const uint GPUMux = 0x00090016;
|
public const uint GPUMux = 0x00090016;
|
||||||
|
|
||||||
public const uint BatteryLimit = 0x00120057;
|
public const uint BatteryLimit = 0x00120057;
|
||||||
@@ -508,8 +511,9 @@ public class AsusACPI
|
|||||||
public void TUFKeyboardRGB(int mode, Color color, int speed)
|
public void TUFKeyboardRGB(int mode, Color color, int speed)
|
||||||
{
|
{
|
||||||
|
|
||||||
byte[] setting = new byte[12];
|
byte[] setting = new byte[6];
|
||||||
setting[0] = (byte)0xB4;
|
|
||||||
|
setting[0] = (byte)0xb4;
|
||||||
setting[1] = (byte)mode;
|
setting[1] = (byte)mode;
|
||||||
setting[2] = color.R;
|
setting[2] = color.R;
|
||||||
setting[3] = color.G;
|
setting[3] = color.G;
|
||||||
@@ -517,6 +521,12 @@ public class AsusACPI
|
|||||||
setting[5] = (byte)speed;
|
setting[5] = (byte)speed;
|
||||||
|
|
||||||
DeviceSet(TUF_KB, setting, "TUF RGB");
|
DeviceSet(TUF_KB, setting, "TUF RGB");
|
||||||
|
|
||||||
|
/*
|
||||||
|
setting[0] = (byte)0xb4;
|
||||||
|
DeviceSet(TUF_KB, setting, "TUF RGB");
|
||||||
|
*/
|
||||||
|
|
||||||
//Debug.WriteLine(BitConverter.ToString(setting));
|
//Debug.WriteLine(BitConverter.ToString(setting));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -641,11 +641,17 @@ namespace GHelper
|
|||||||
|
|
||||||
public static void InitXGM()
|
public static void InitXGM()
|
||||||
{
|
{
|
||||||
SetXGM(LED_INIT1);
|
byte[] ASUS_INIT = Encoding.ASCII.GetBytes("^ASUS Tech.Inc.");
|
||||||
SetXGM(LED_INIT2);
|
|
||||||
SetXGM(LED_INIT3);
|
SetXGM(ASUS_INIT);
|
||||||
SetXGM(LED_INIT4);
|
SetXGM(new byte[] { 0x5e, 0xd0, 0x02 });
|
||||||
SetXGM(LED_INIT5);
|
SetXGM(new byte[] { 0x5e, 0xd0, 0x03 });
|
||||||
|
SetXGM(ASUS_INIT);
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xd1, 0x02 }); // reset fan
|
||||||
|
SetXGM(ASUS_INIT);
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xce, 0x03 });
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xd0, 0x04 });
|
||||||
|
SetXGM(new byte[] { 0x5e, 0xd0, 0x01 });
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ApplyXGMLight(bool status)
|
public static void ApplyXGMLight(bool status)
|
||||||
|
|||||||
17
app/Fans.cs
17
app/Fans.cs
@@ -78,15 +78,19 @@ namespace GHelper
|
|||||||
|
|
||||||
chartCPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.CPU);
|
chartCPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.CPU);
|
||||||
chartCPU.MouseUp += ChartCPU_MouseUp;
|
chartCPU.MouseUp += ChartCPU_MouseUp;
|
||||||
|
chartCPU.MouseLeave += ChartCPU_MouseLeave;
|
||||||
|
|
||||||
chartGPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.GPU);
|
chartGPU.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.GPU);
|
||||||
chartGPU.MouseUp += ChartCPU_MouseUp;
|
chartGPU.MouseUp += ChartCPU_MouseUp;
|
||||||
|
chartGPU.MouseLeave += ChartCPU_MouseLeave;
|
||||||
|
|
||||||
chartMid.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.Mid);
|
chartMid.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.Mid);
|
||||||
chartMid.MouseUp += ChartCPU_MouseUp;
|
chartMid.MouseUp += ChartCPU_MouseUp;
|
||||||
|
chartMid.MouseLeave += ChartCPU_MouseLeave;
|
||||||
|
|
||||||
chartXGM.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.XGM);
|
chartXGM.MouseMove += (sender, e) => ChartCPU_MouseMove(sender, e, AsusFan.XGM);
|
||||||
chartXGM.MouseUp += ChartCPU_MouseUp;
|
chartXGM.MouseUp += ChartCPU_MouseUp;
|
||||||
|
chartXGM.MouseLeave += ChartCPU_MouseLeave;
|
||||||
|
|
||||||
chartCPU.MouseClick += ChartCPU_MouseClick;
|
chartCPU.MouseClick += ChartCPU_MouseClick;
|
||||||
chartGPU.MouseClick += ChartCPU_MouseClick;
|
chartGPU.MouseClick += ChartCPU_MouseClick;
|
||||||
@@ -141,6 +145,7 @@ namespace GHelper
|
|||||||
trackGPUMemory.MouseUp += TrackGPU_MouseUp;
|
trackGPUMemory.MouseUp += TrackGPU_MouseUp;
|
||||||
trackGPUBoost.MouseUp += TrackGPU_MouseUp;
|
trackGPUBoost.MouseUp += TrackGPU_MouseUp;
|
||||||
trackGPUTemp.MouseUp += TrackGPU_MouseUp;
|
trackGPUTemp.MouseUp += TrackGPU_MouseUp;
|
||||||
|
|
||||||
trackGPUClockLimit.MouseUp += TrackGPU_MouseUp;
|
trackGPUClockLimit.MouseUp += TrackGPU_MouseUp;
|
||||||
|
|
||||||
//labelInfo.MaximumSize = new Size(280, 0);
|
//labelInfo.MaximumSize = new Size(280, 0);
|
||||||
@@ -201,6 +206,7 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void ChartCPU_MouseClick(object? sender, MouseEventArgs e)
|
private void ChartCPU_MouseClick(object? sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (sender is null) return;
|
if (sender is null) return;
|
||||||
@@ -984,7 +990,7 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
|
private void Chart_Save()
|
||||||
{
|
{
|
||||||
curPoint = null;
|
curPoint = null;
|
||||||
curIndex = -1;
|
curIndex = -1;
|
||||||
@@ -1001,8 +1007,17 @@ namespace GHelper
|
|||||||
SaveProfile(seriesXGM, AsusFan.XGM);
|
SaveProfile(seriesXGM, AsusFan.XGM);
|
||||||
|
|
||||||
modeControl.AutoFans();
|
modeControl.AutoFans();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
Chart_Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void ChartCPU_MouseLeave(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Chart_Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChartCPU_MouseMove(object? sender, MouseEventArgs e, AsusFan device)
|
private void ChartCPU_MouseMove(object? sender, MouseEventArgs e, AsusFan device)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<AssemblyVersion>0.118</AssemblyVersion>
|
<AssemblyVersion>0.119</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
|||||||
@@ -276,6 +276,16 @@ namespace GHelper.Gpu
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void InitXGM()
|
||||||
|
{
|
||||||
|
if (Program.acpi.IsXGConnected())
|
||||||
|
{
|
||||||
|
//Program.acpi.DeviceSet(AsusACPI.GPUXGInit, 1, "XG Init");
|
||||||
|
AsusUSB.InitXGM();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void ToggleXGM()
|
public void ToggleXGM()
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -299,7 +309,8 @@ namespace GHelper.Gpu
|
|||||||
{
|
{
|
||||||
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
|
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
|
||||||
|
|
||||||
AsusUSB.ResetXGM();
|
InitXGM();
|
||||||
|
|
||||||
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
|
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
|
||||||
|
|
||||||
await Task.Delay(TimeSpan.FromSeconds(15));
|
await Task.Delay(TimeSpan.FromSeconds(15));
|
||||||
|
|||||||
@@ -507,6 +507,9 @@ namespace GHelper.Input
|
|||||||
case 56: // M4 / Rog button
|
case 56: // M4 / Rog button
|
||||||
KeyProcess("m4");
|
KeyProcess("m4");
|
||||||
return;
|
return;
|
||||||
|
case 55: // Arconym
|
||||||
|
KeyProcess("m6");
|
||||||
|
return;
|
||||||
case 181: // FN + Numpad Enter
|
case 181: // FN + Numpad Enter
|
||||||
KeyProcess("fne");
|
KeyProcess("fne");
|
||||||
return;
|
return;
|
||||||
|
|||||||
258
app/Matrix.Designer.cs
generated
Normal file
258
app/Matrix.Designer.cs
generated
Normal file
@@ -0,0 +1,258 @@
|
|||||||
|
namespace GHelper
|
||||||
|
{
|
||||||
|
partial class Matrix
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
pictureMatrix = new PictureBox();
|
||||||
|
trackZoom = new TrackBar();
|
||||||
|
buttonPicture = new UI.RButton();
|
||||||
|
panelPicture = new Panel();
|
||||||
|
panelMain = new Panel();
|
||||||
|
panelButtons = new Panel();
|
||||||
|
buttonReset = new UI.RButton();
|
||||||
|
panelScaling = new Panel();
|
||||||
|
comboScaling = new UI.RComboBox();
|
||||||
|
labelScaling = new Label();
|
||||||
|
panelZoom = new Panel();
|
||||||
|
labelZoom = new Label();
|
||||||
|
labelZoomTitle = new Label();
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureMatrix).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)trackZoom).BeginInit();
|
||||||
|
panelPicture.SuspendLayout();
|
||||||
|
panelMain.SuspendLayout();
|
||||||
|
panelButtons.SuspendLayout();
|
||||||
|
panelScaling.SuspendLayout();
|
||||||
|
panelZoom.SuspendLayout();
|
||||||
|
SuspendLayout();
|
||||||
|
//
|
||||||
|
// pictureMatrix
|
||||||
|
//
|
||||||
|
pictureMatrix.BackColor = Color.Black;
|
||||||
|
pictureMatrix.Cursor = Cursors.SizeAll;
|
||||||
|
pictureMatrix.Location = new Point(731, 27);
|
||||||
|
pictureMatrix.Name = "pictureMatrix";
|
||||||
|
pictureMatrix.Size = new Size(81, 73);
|
||||||
|
pictureMatrix.TabIndex = 0;
|
||||||
|
pictureMatrix.TabStop = false;
|
||||||
|
//
|
||||||
|
// trackZoom
|
||||||
|
//
|
||||||
|
trackZoom.LargeChange = 50;
|
||||||
|
trackZoom.Location = new Point(16, 52);
|
||||||
|
trackZoom.Maximum = 200;
|
||||||
|
trackZoom.Minimum = 10;
|
||||||
|
trackZoom.Name = "trackZoom";
|
||||||
|
trackZoom.Size = new Size(782, 90);
|
||||||
|
trackZoom.SmallChange = 10;
|
||||||
|
trackZoom.TabIndex = 2;
|
||||||
|
trackZoom.TickFrequency = 20;
|
||||||
|
trackZoom.TickStyle = TickStyle.TopLeft;
|
||||||
|
trackZoom.Value = 100;
|
||||||
|
//
|
||||||
|
// buttonPicture
|
||||||
|
//
|
||||||
|
buttonPicture.Activated = false;
|
||||||
|
buttonPicture.BackColor = SystemColors.ControlLight;
|
||||||
|
buttonPicture.BorderColor = Color.Transparent;
|
||||||
|
buttonPicture.BorderRadius = 5;
|
||||||
|
buttonPicture.FlatAppearance.BorderSize = 0;
|
||||||
|
buttonPicture.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonPicture.Image = Properties.Resources.icons8_matrix_32;
|
||||||
|
buttonPicture.Location = new Point(16, 19);
|
||||||
|
buttonPicture.Name = "buttonPicture";
|
||||||
|
buttonPicture.Secondary = true;
|
||||||
|
buttonPicture.Size = new Size(258, 56);
|
||||||
|
buttonPicture.TabIndex = 3;
|
||||||
|
buttonPicture.Text = "Picture / Gif";
|
||||||
|
buttonPicture.TextAlign = ContentAlignment.MiddleRight;
|
||||||
|
buttonPicture.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||||
|
buttonPicture.UseVisualStyleBackColor = false;
|
||||||
|
//
|
||||||
|
// panelPicture
|
||||||
|
//
|
||||||
|
panelPicture.BackColor = Color.Black;
|
||||||
|
panelPicture.Controls.Add(pictureMatrix);
|
||||||
|
panelPicture.Dock = DockStyle.Top;
|
||||||
|
panelPicture.Location = new Point(0, 0);
|
||||||
|
panelPicture.Name = "panelPicture";
|
||||||
|
panelPicture.Size = new Size(834, 419);
|
||||||
|
panelPicture.TabIndex = 4;
|
||||||
|
//
|
||||||
|
// panelMain
|
||||||
|
//
|
||||||
|
panelMain.Controls.Add(panelButtons);
|
||||||
|
panelMain.Controls.Add(panelScaling);
|
||||||
|
panelMain.Controls.Add(panelZoom);
|
||||||
|
panelMain.Controls.Add(panelPicture);
|
||||||
|
panelMain.Dock = DockStyle.Top;
|
||||||
|
panelMain.Location = new Point(20, 20);
|
||||||
|
panelMain.Name = "panelMain";
|
||||||
|
panelMain.Size = new Size(834, 924);
|
||||||
|
panelMain.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// panelButtons
|
||||||
|
//
|
||||||
|
panelButtons.Controls.Add(buttonReset);
|
||||||
|
panelButtons.Controls.Add(buttonPicture);
|
||||||
|
panelButtons.Dock = DockStyle.Top;
|
||||||
|
panelButtons.Location = new Point(0, 642);
|
||||||
|
panelButtons.Name = "panelButtons";
|
||||||
|
panelButtons.Size = new Size(834, 94);
|
||||||
|
panelButtons.TabIndex = 6;
|
||||||
|
//
|
||||||
|
// buttonReset
|
||||||
|
//
|
||||||
|
buttonReset.Activated = false;
|
||||||
|
buttonReset.BackColor = SystemColors.ControlLight;
|
||||||
|
buttonReset.BorderColor = Color.Transparent;
|
||||||
|
buttonReset.BorderRadius = 5;
|
||||||
|
buttonReset.FlatAppearance.BorderSize = 0;
|
||||||
|
buttonReset.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonReset.Image = Properties.Resources.icons8_refresh_32;
|
||||||
|
buttonReset.Location = new Point(290, 19);
|
||||||
|
buttonReset.Name = "buttonReset";
|
||||||
|
buttonReset.Secondary = true;
|
||||||
|
buttonReset.Size = new Size(258, 56);
|
||||||
|
buttonReset.TabIndex = 4;
|
||||||
|
buttonReset.Text = "Reset";
|
||||||
|
buttonReset.TextAlign = ContentAlignment.MiddleRight;
|
||||||
|
buttonReset.TextImageRelation = TextImageRelation.ImageBeforeText;
|
||||||
|
buttonReset.UseVisualStyleBackColor = false;
|
||||||
|
//
|
||||||
|
// panelScaling
|
||||||
|
//
|
||||||
|
panelScaling.Controls.Add(comboScaling);
|
||||||
|
panelScaling.Controls.Add(labelScaling);
|
||||||
|
panelScaling.Dock = DockStyle.Top;
|
||||||
|
panelScaling.Location = new Point(0, 564);
|
||||||
|
panelScaling.Name = "panelScaling";
|
||||||
|
panelScaling.Size = new Size(834, 78);
|
||||||
|
panelScaling.TabIndex = 7;
|
||||||
|
//
|
||||||
|
// comboScaling
|
||||||
|
//
|
||||||
|
comboScaling.BorderColor = Color.White;
|
||||||
|
comboScaling.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||||
|
comboScaling.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
comboScaling.FormattingEnabled = true;
|
||||||
|
comboScaling.ItemHeight = 32;
|
||||||
|
comboScaling.Items.AddRange(new object[] { "Default", "Low", "High", "Bilinear", "Bicubic", "NearestNeighbor", "HighQualityBilinear", "HighQualityBicubic" });
|
||||||
|
comboScaling.Location = new Point(229, 17);
|
||||||
|
comboScaling.Margin = new Padding(4, 11, 4, 8);
|
||||||
|
comboScaling.Name = "comboScaling";
|
||||||
|
comboScaling.Size = new Size(322, 40);
|
||||||
|
comboScaling.TabIndex = 17;
|
||||||
|
//
|
||||||
|
// labelScaling
|
||||||
|
//
|
||||||
|
labelScaling.AutoSize = true;
|
||||||
|
labelScaling.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
labelScaling.Location = new Point(16, 20);
|
||||||
|
labelScaling.Name = "labelScaling";
|
||||||
|
labelScaling.Size = new Size(185, 32);
|
||||||
|
labelScaling.TabIndex = 4;
|
||||||
|
labelScaling.Text = "Scaling Quality";
|
||||||
|
//
|
||||||
|
// panelZoom
|
||||||
|
//
|
||||||
|
panelZoom.AutoSize = true;
|
||||||
|
panelZoom.Controls.Add(labelZoom);
|
||||||
|
panelZoom.Controls.Add(labelZoomTitle);
|
||||||
|
panelZoom.Controls.Add(trackZoom);
|
||||||
|
panelZoom.Dock = DockStyle.Top;
|
||||||
|
panelZoom.Location = new Point(0, 419);
|
||||||
|
panelZoom.Name = "panelZoom";
|
||||||
|
panelZoom.Size = new Size(834, 145);
|
||||||
|
panelZoom.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// labelZoom
|
||||||
|
//
|
||||||
|
labelZoom.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
|
labelZoom.AutoSize = true;
|
||||||
|
labelZoom.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
labelZoom.Location = new Point(731, 17);
|
||||||
|
labelZoom.Name = "labelZoom";
|
||||||
|
labelZoom.Size = new Size(77, 32);
|
||||||
|
labelZoom.TabIndex = 4;
|
||||||
|
labelZoom.Text = "Zoom";
|
||||||
|
//
|
||||||
|
// labelZoomTitle
|
||||||
|
//
|
||||||
|
labelZoomTitle.AutoSize = true;
|
||||||
|
labelZoomTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
labelZoomTitle.Location = new Point(16, 17);
|
||||||
|
labelZoomTitle.Name = "labelZoomTitle";
|
||||||
|
labelZoomTitle.Size = new Size(81, 32);
|
||||||
|
labelZoomTitle.TabIndex = 3;
|
||||||
|
labelZoomTitle.Text = "Zoom";
|
||||||
|
//
|
||||||
|
// Matrix
|
||||||
|
//
|
||||||
|
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||||
|
AutoScaleMode = AutoScaleMode.Dpi;
|
||||||
|
AutoSize = true;
|
||||||
|
ClientSize = new Size(874, 978);
|
||||||
|
Controls.Add(panelMain);
|
||||||
|
MaximizeBox = false;
|
||||||
|
MinimizeBox = false;
|
||||||
|
MinimumSize = new Size(900, 0);
|
||||||
|
Name = "Matrix";
|
||||||
|
Padding = new Padding(20);
|
||||||
|
ShowIcon = false;
|
||||||
|
ShowInTaskbar = false;
|
||||||
|
Text = "Matrix";
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureMatrix).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)trackZoom).EndInit();
|
||||||
|
panelPicture.ResumeLayout(false);
|
||||||
|
panelMain.ResumeLayout(false);
|
||||||
|
panelMain.PerformLayout();
|
||||||
|
panelButtons.ResumeLayout(false);
|
||||||
|
panelScaling.ResumeLayout(false);
|
||||||
|
panelScaling.PerformLayout();
|
||||||
|
panelZoom.ResumeLayout(false);
|
||||||
|
panelZoom.PerformLayout();
|
||||||
|
ResumeLayout(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private PictureBox pictureMatrix;
|
||||||
|
private TrackBar trackZoom;
|
||||||
|
private UI.RButton buttonPicture;
|
||||||
|
private Panel panelPicture;
|
||||||
|
private Panel panelMain;
|
||||||
|
private Panel panelZoom;
|
||||||
|
private Label labelZoom;
|
||||||
|
private Label labelZoomTitle;
|
||||||
|
private Panel panelButtons;
|
||||||
|
private UI.RButton buttonReset;
|
||||||
|
private Panel panelScaling;
|
||||||
|
private Label labelScaling;
|
||||||
|
private UI.RComboBox comboScaling;
|
||||||
|
}
|
||||||
|
}
|
||||||
190
app/Matrix.cs
Normal file
190
app/Matrix.cs
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
using GHelper.AnimeMatrix;
|
||||||
|
using GHelper.UI;
|
||||||
|
|
||||||
|
namespace GHelper
|
||||||
|
{
|
||||||
|
public partial class Matrix : RForm
|
||||||
|
{
|
||||||
|
|
||||||
|
public AniMatrixControl matrixControl = Program.settingsForm.matrixControl;
|
||||||
|
|
||||||
|
private bool Dragging;
|
||||||
|
private int xPos;
|
||||||
|
private int yPos;
|
||||||
|
|
||||||
|
private int baseX;
|
||||||
|
private int baseY;
|
||||||
|
|
||||||
|
private float uiScale;
|
||||||
|
|
||||||
|
public Matrix()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
InitTheme(true);
|
||||||
|
|
||||||
|
Shown += Matrix_Shown;
|
||||||
|
FormClosing += Matrix_FormClosed;
|
||||||
|
|
||||||
|
buttonPicture.Click += ButtonPicture_Click;
|
||||||
|
buttonReset.Click += ButtonReset_Click;
|
||||||
|
|
||||||
|
pictureMatrix.MouseUp += PictureMatrix_MouseUp;
|
||||||
|
pictureMatrix.MouseMove += PictureMatrix_MouseMove;
|
||||||
|
pictureMatrix.MouseDown += PictureMatrix_MouseDown;
|
||||||
|
|
||||||
|
trackZoom.MouseUp += TrackZoom_MouseUp;
|
||||||
|
trackZoom.ValueChanged += TrackZoom_Changed;
|
||||||
|
|
||||||
|
trackZoom.Value = Math.Min(trackZoom.Maximum, AppConfig.Get("matrix_zoom", 100));
|
||||||
|
VisualiseZoom();
|
||||||
|
|
||||||
|
comboScaling.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||||
|
comboScaling.SelectedIndex = AppConfig.Get("matrix_quality", 0);
|
||||||
|
comboScaling.SelectedValueChanged += ComboScaling_SelectedValueChanged;
|
||||||
|
|
||||||
|
uiScale = panelPicture.Width / matrixControl.device.MaxColumns / 3;
|
||||||
|
panelPicture.Height = (int)(matrixControl.device.MaxRows * uiScale);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ComboScaling_SelectedValueChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AppConfig.Set("matrix_quality", comboScaling.SelectedIndex);
|
||||||
|
SetMatrixPicture(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Matrix_FormClosed(object? sender, FormClosingEventArgs e)
|
||||||
|
{
|
||||||
|
if (pictureMatrix.Image is not null) pictureMatrix.Image.Dispose();
|
||||||
|
pictureMatrix.Dispose();
|
||||||
|
Dispose();
|
||||||
|
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void VisualiseZoom()
|
||||||
|
{
|
||||||
|
labelZoom.Text = trackZoom.Value + "%";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonReset_Click(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AppConfig.Set("matrix_zoom", 100);
|
||||||
|
AppConfig.Set("matrix_x", 0);
|
||||||
|
AppConfig.Set("matrix_y", 0);
|
||||||
|
|
||||||
|
trackZoom.Value = 100;
|
||||||
|
|
||||||
|
SetMatrixPicture();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TrackZoom_MouseUp(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AppConfig.Set("matrix_zoom", trackZoom.Value);
|
||||||
|
SetMatrixPicture();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TrackZoom_Changed(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
VisualiseZoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void PictureMatrix_MouseDown(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
Dragging = true;
|
||||||
|
xPos = e.X;
|
||||||
|
yPos = e.Y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PictureMatrix_MouseMove(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
Control c = sender as Control;
|
||||||
|
if (Dragging && c != null)
|
||||||
|
{
|
||||||
|
c.Top = e.Y + c.Top - yPos;
|
||||||
|
c.Left = e.X + c.Left - xPos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PictureMatrix_MouseUp(object? sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
Dragging = false;
|
||||||
|
|
||||||
|
Control c = sender as Control;
|
||||||
|
|
||||||
|
int matrixX = (int)((baseX - c.Left) / uiScale);
|
||||||
|
int matrixY = (int)((baseY - c.Top) / uiScale);
|
||||||
|
|
||||||
|
AppConfig.Set("matrix_x", matrixX);
|
||||||
|
AppConfig.Set("matrix_y", matrixY);
|
||||||
|
|
||||||
|
SetMatrixPicture(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Matrix_Shown(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
FormPosition();
|
||||||
|
SetMatrixPicture();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetMatrixPicture(bool visualise = true)
|
||||||
|
{
|
||||||
|
matrixControl.SetMatrixPicture(AppConfig.GetString("matrix_picture"), visualise);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonPicture_Click(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
matrixControl.OpenMatrixPicture();
|
||||||
|
|
||||||
|
}
|
||||||
|
public void FormPosition()
|
||||||
|
{
|
||||||
|
if (Height > Program.settingsForm.Height)
|
||||||
|
{
|
||||||
|
Top = Program.settingsForm.Top + Program.settingsForm.Height - Height;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Height = Program.settingsForm.Height;
|
||||||
|
Top = Program.settingsForm.Top;
|
||||||
|
}
|
||||||
|
|
||||||
|
Left = Program.settingsForm.Left - Width - 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void VisualiseMatrix(Image picture)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (pictureMatrix.Image is not null) pictureMatrix.Image.Dispose();
|
||||||
|
|
||||||
|
int width = picture.Width;
|
||||||
|
int height = picture.Height;
|
||||||
|
|
||||||
|
int matrixX = AppConfig.Get("matrix_x", 0);
|
||||||
|
int matrixY = AppConfig.Get("matrix_y", 0);
|
||||||
|
int matrixZoom = AppConfig.Get("matrix_zoom", 100);
|
||||||
|
|
||||||
|
|
||||||
|
float scale = Math.Min((float)panelPicture.Width / (float)width, (float)panelPicture.Height / (float)height) * matrixZoom / 100;
|
||||||
|
|
||||||
|
pictureMatrix.Width = (int)(width * scale);
|
||||||
|
pictureMatrix.Height = (int)(height * scale);
|
||||||
|
|
||||||
|
baseX = panelPicture.Width - pictureMatrix.Width;
|
||||||
|
baseY = 0;
|
||||||
|
|
||||||
|
pictureMatrix.Left = baseX - (int)(matrixX * uiScale);
|
||||||
|
pictureMatrix.Top = baseY - (int)(matrixY * uiScale);
|
||||||
|
|
||||||
|
pictureMatrix.SizeMode = PictureBoxSizeMode.Zoom;
|
||||||
|
pictureMatrix.Image = (Image)picture.Clone();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
120
app/Matrix.resx
Normal file
120
app/Matrix.resx
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
@@ -134,6 +134,7 @@ namespace GHelper.Mode
|
|||||||
bool xgmFan = false;
|
bool xgmFan = false;
|
||||||
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected())
|
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected())
|
||||||
{
|
{
|
||||||
|
//AsusUSB.InitXGM();
|
||||||
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
|
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
|
||||||
xgmFan = true;
|
xgmFan = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ namespace GHelper
|
|||||||
settingsForm.InitAura();
|
settingsForm.InitAura();
|
||||||
settingsForm.InitMatrix();
|
settingsForm.InitMatrix();
|
||||||
|
|
||||||
|
gpuControl.InitXGM();
|
||||||
|
|
||||||
SetAutoModes();
|
SetAutoModes();
|
||||||
|
|
||||||
@@ -164,6 +165,8 @@ namespace GHelper
|
|||||||
if (settingsForm.updates is not null && settingsForm.updates.Text != "")
|
if (settingsForm.updates is not null && settingsForm.updates.Text != "")
|
||||||
settingsForm.updates.InitTheme();
|
settingsForm.updates.InitTheme();
|
||||||
|
|
||||||
|
if (settingsForm.matrix is not null && settingsForm.matrix.Text != "")
|
||||||
|
settingsForm.matrix.InitTheme();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -194,7 +197,7 @@ namespace GHelper
|
|||||||
BatteryControl.SetBatteryChargeLimit();
|
BatteryControl.SetBatteryChargeLimit();
|
||||||
|
|
||||||
settingsForm.AutoKeyboard();
|
settingsForm.AutoKeyboard();
|
||||||
settingsForm.matrix.SetMatrix(true);
|
settingsForm.matrixControl.SetMatrix(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
||||||
|
|||||||
10
app/Properties/Resources.Designer.cs
generated
10
app/Properties/Resources.Designer.cs
generated
@@ -629,5 +629,15 @@ namespace GHelper.Properties {
|
|||||||
return ((System.Drawing.Icon)(obj));
|
return ((System.Drawing.Icon)(obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Vector_3 {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Vector 3", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,6 +130,9 @@
|
|||||||
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="icons8-hibernate-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\icons8-hibernate-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="icons8-quit-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icons8-quit-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-quit-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\icons8-quit-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -286,7 +289,7 @@
|
|||||||
<data name="icons8_rocket_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="icons8_rocket_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-rocket-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\icons8-rocket-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="icons8-hibernate-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Vector 3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons8-hibernate-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Vector 3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
BIN
app/Resources/Vector 3.png
Normal file
BIN
app/Resources/Vector 3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
@@ -10,6 +10,7 @@ using GHelper.Peripherals;
|
|||||||
using GHelper.Peripherals.Mouse;
|
using GHelper.Peripherals.Mouse;
|
||||||
using GHelper.UI;
|
using GHelper.UI;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
|
||||||
namespace GHelper
|
namespace GHelper
|
||||||
@@ -27,10 +28,11 @@ namespace GHelper
|
|||||||
|
|
||||||
AsusMouseSettings? mouseSettings;
|
AsusMouseSettings? mouseSettings;
|
||||||
|
|
||||||
public AniMatrixControl matrix;
|
public AniMatrixControl matrixControl;
|
||||||
|
|
||||||
public static System.Timers.Timer sensorTimer = default!;
|
public static System.Timers.Timer sensorTimer = default!;
|
||||||
|
|
||||||
|
public Matrix? matrix;
|
||||||
public Fans? fans;
|
public Fans? fans;
|
||||||
public Extra? keyb;
|
public Extra? keyb;
|
||||||
public Updates? updates;
|
public Updates? updates;
|
||||||
@@ -49,7 +51,7 @@ namespace GHelper
|
|||||||
|
|
||||||
gpuControl = new GPUModeControl(this);
|
gpuControl = new GPUModeControl(this);
|
||||||
updateControl = new AutoUpdateControl(this);
|
updateControl = new AutoUpdateControl(this);
|
||||||
matrix = new AniMatrixControl(this);
|
matrixControl = new AniMatrixControl(this);
|
||||||
|
|
||||||
buttonSilent.Text = Properties.Strings.Silent;
|
buttonSilent.Text = Properties.Strings.Silent;
|
||||||
buttonBalanced.Text = Properties.Strings.Balanced;
|
buttonBalanced.Text = Properties.Strings.Balanced;
|
||||||
@@ -269,6 +271,12 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void VisualiseMatrix(Image image)
|
||||||
|
{
|
||||||
|
if (matrix == null || matrix.Text == "") return;
|
||||||
|
matrix.VisualiseMatrix(image);
|
||||||
|
}
|
||||||
|
|
||||||
protected override void WndProc(ref Message m)
|
protected override void WndProc(ref Message m)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -506,14 +514,29 @@ namespace GHelper
|
|||||||
private void CheckMatrix_CheckedChanged(object? sender, EventArgs e)
|
private void CheckMatrix_CheckedChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("matrix_auto", checkMatrix.Checked ? 1 : 0);
|
AppConfig.Set("matrix_auto", checkMatrix.Checked ? 1 : 0);
|
||||||
matrix.SetMatrix();
|
matrixControl.SetMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void ButtonMatrix_Click(object? sender, EventArgs e)
|
private void ButtonMatrix_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
matrix.OpenMatrixPicture();
|
|
||||||
|
if (matrix == null || matrix.Text == "")
|
||||||
|
{
|
||||||
|
matrix = new Matrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (matrix.Visible)
|
||||||
|
{
|
||||||
|
matrix.Close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
matrix.FormPosition();
|
||||||
|
matrix.Show();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMatrixRunning(int mode)
|
public void SetMatrixRunning(int mode)
|
||||||
@@ -527,14 +550,14 @@ namespace GHelper
|
|||||||
private void ComboMatrixRunning_SelectedValueChanged(object? sender, EventArgs e)
|
private void ComboMatrixRunning_SelectedValueChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("matrix_running", comboMatrixRunning.SelectedIndex);
|
AppConfig.Set("matrix_running", comboMatrixRunning.SelectedIndex);
|
||||||
matrix.SetMatrix();
|
matrixControl.SetMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void ComboMatrix_SelectedValueChanged(object? sender, EventArgs e)
|
private void ComboMatrix_SelectedValueChanged(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AppConfig.Set("matrix_brightness", comboMatrix.SelectedIndex);
|
AppConfig.Set("matrix_brightness", comboMatrix.SelectedIndex);
|
||||||
matrix.SetMatrix();
|
matrixControl.SetMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -682,7 +705,7 @@ namespace GHelper
|
|||||||
public void InitMatrix()
|
public void InitMatrix()
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!matrix.IsValid)
|
if (!matrixControl.IsValid)
|
||||||
{
|
{
|
||||||
panelMatrix.Visible = false;
|
panelMatrix.Visible = false;
|
||||||
return;
|
return;
|
||||||
@@ -786,7 +809,7 @@ namespace GHelper
|
|||||||
|
|
||||||
private void ButtonQuit_Click(object? sender, EventArgs e)
|
private void ButtonQuit_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
matrix.Dispose();
|
matrixControl.Dispose();
|
||||||
Close();
|
Close();
|
||||||
Program.trayIcon.Visible = false;
|
Program.trayIcon.Visible = false;
|
||||||
Application.Exit();
|
Application.Exit();
|
||||||
|
|||||||
Reference in New Issue
Block a user