From 0d002edf65070425898fe9d9f73001d2d35c896a Mon Sep 17 00:00:00 2001 From: seerge Date: Tue, 28 Mar 2023 16:05:24 +0200 Subject: [PATCH] Animatrix fix for 2020/2021 models --- app/AnimeMatrix/AnimeMatrixDevice.cs | 54 ++++++++++++++-------------- app/GHelper.csproj | 2 +- app/Settings.cs | 23 +++++++++++- 3 files changed, 51 insertions(+), 28 deletions(-) diff --git a/app/AnimeMatrix/AnimeMatrixDevice.cs b/app/AnimeMatrix/AnimeMatrixDevice.cs index 2fca7539..f33bfd26 100644 --- a/app/AnimeMatrix/AnimeMatrixDevice.cs +++ b/app/AnimeMatrix/AnimeMatrixDevice.cs @@ -1,9 +1,8 @@ // Source thanks to https://github.com/vddCore/Starlight with some adjustments from me using Starlight.Communication; -using System.Diagnostics; using System.Management; -using System.Runtime.CompilerServices; +using System.Drawing.Drawing2D; using System.Text; namespace Starlight.AnimeMatrix @@ -104,13 +103,14 @@ namespace Starlight.AnimeMatrix _model = AnimeType.GA401; MaxColumns = 33; - dx = 0; + dx = 1; //FullRows = 7; //FullEvenRows = 3; MaxRows = 55; - LedCount = 1214; + LedCount = 1245; + UpdatePageLength = 410; } @@ -179,7 +179,8 @@ namespace Starlight.AnimeMatrix if (y < 11) { return 0; - } else + } + else { return (y) / 2 - 5; } @@ -359,43 +360,44 @@ namespace Starlight.AnimeMatrix - public void PresentText(string text, float fontSize = 8.5F) + public void PresentText(string text1, string text2 = "") { using (Bitmap bmp = new Bitmap(MaxColumns * 3, MaxRows)) { using (Graphics g = Graphics.FromImage(bmp)) { - using (Font font = new Font("Arial", fontSize)) + g.CompositingQuality = CompositingQuality.HighQuality; + g.SmoothingMode = SmoothingMode.AntiAlias; + + using (Font font = new Font("Arial", 12F)) { - - g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; - g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; - - /* - SizeF textSize = g.MeasureString(text, font); - g.TranslateTransform(bmp.Width / 2, bmp.Height / 2); - g.RotateTransform(33); - g.DrawString(text, font, Brushes.White, -textSize.Width/2, -textSize.Height / 2); - */ - - g.DrawString(text, font, Brushes.White, 5, -2); + SizeF textSize = g.MeasureString(text1, font); + g.DrawString(text1, font, Brushes.White, (MaxColumns*3 - textSize.Width)+3, -5); } + + if (text2.Length > 0) + using (Font font = new Font("Arial", 9F)) + { + SizeF textSize = g.MeasureString(text2, font); + g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width), 25); + } + } - GenerateFrame(bmp, System.Drawing.Drawing2D.InterpolationMode.Bicubic); + GenerateFrame(bmp, InterpolationMode.Bicubic); Present(); } } - public void GenerateFrame(Image image, System.Drawing.Drawing2D.InterpolationMode interpolation = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic) + public void GenerateFrame(Image image, InterpolationMode interpolation = InterpolationMode.HighQualityBicubic) { - int width = MaxColumns * 3; + int width = MaxColumns/2 * 6; int height = MaxRows; int targetWidth = MaxColumns * 2; - + float scale; using (Bitmap bmp = new Bitmap(targetWidth, height)) @@ -408,8 +410,8 @@ namespace Starlight.AnimeMatrix var scaleHeight = (float)(image.Height * scale); graph.InterpolationMode = interpolation; - graph.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; - graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; + 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); @@ -418,7 +420,7 @@ namespace Starlight.AnimeMatrix for (int y = 0; y < bmp.Height; y++) { for (int x = 0; x < bmp.Width; x++) - if (x % 2 == y % 2) + if (x % 2 == (y+dx) % 2) { var pixel = bmp.GetPixel(x, y); var color = (pixel.R + pixel.G + pixel.B) / 3; diff --git a/app/GHelper.csproj b/app/GHelper.csproj index a329ca8a..695220a8 100644 --- a/app/GHelper.csproj +++ b/app/GHelper.csproj @@ -16,7 +16,7 @@ x64 False True - 0.40 + 0.41 diff --git a/app/Settings.cs b/app/Settings.cs index 031c087f..f97963b7 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -26,6 +26,7 @@ namespace GHelper public Keyboard keyb; static AnimeMatrixDevice mat; + static int matrixTick = 0; static long lastRefresh; public SettingsForm() @@ -356,7 +357,27 @@ namespace GHelper mat.PresentNextFrame(); break; case 3: - mat.PresentText(DateTime.Now.ToString("H:mm:ss")); + string format1, format2; + if (CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern.Contains("H")) + { + format1 = "H:mm"; + format2 = ""; + } else + { + format1 = "h:mm"; + format2 = "tt"; + } + + if (matrixTick > 0) + { + format1 = format1.Replace(":", " "); + matrixTick = 0; + } else + { + matrixTick++; + } + + mat.PresentText(DateTime.Now.ToString(format1), DateTime.Now.ToString(format2)); break; }