From d5bc282e16aba0b5d2c436752d417fe0664a7cbb Mon Sep 17 00:00:00 2001 From: Aurumaker72 <48759429+Aurumaker72@users.noreply.github.com> Date: Sat, 16 May 2026 08:20:55 +0200 Subject: [PATCH] feat: dark mode --- .../VariablePanel/VariablePanel.Renderer.cs | 19 +++++++++++++++---- STROOP/Program.cs | 3 ++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/STROOP/Controls/VariablePanel/VariablePanel.Renderer.cs b/STROOP/Controls/VariablePanel/VariablePanel.Renderer.cs index 3c317dafa..f40209a97 100644 --- a/STROOP/Controls/VariablePanel/VariablePanel.Renderer.cs +++ b/STROOP/Controls/VariablePanel/VariablePanel.Renderer.cs @@ -192,6 +192,12 @@ protected override void OnPaint(PaintEventArgs e) bufferedGraphics.Render(e.Graphics); } + public static Brush ForegroundBrushForBackground(Color background) + { + int yiq = ((background.R * 299) + (background.G * 587) + (background.B * 114)) / 1000; + return yiq >= 128 ? Brushes.Black : Brushes.White; + } + public void Draw() { //Return if not focused and recently enough refreshed to save CPU @@ -335,7 +341,8 @@ void GetColumn(int offset, int width, bool clip = true) else ctrlData.nameTextOffset = 0; - g.DrawString(cell.control.VarName, varNameFont, cell.control.IsSelected ? Brushes.White : Brushes.Black, txtPoint); + var backgroundColor = cell.control.IsSelected ? Color.Blue : cell.control.currentColor; + g.DrawString(cell.control.VarName, varNameFont, ForegroundBrushForBackground(backgroundColor), txtPoint); } ResetIterators(); @@ -363,7 +370,8 @@ void GetColumn(int offset, int width, bool clip = true) else { var txtPoint = new Point((x + 1) * elementWidth - elementMarginLeftRight, yCoord + elementMarginTopBottom); - g.DrawString(cell.GetValueText(), Font, cell.control.IsSelected ? Brushes.White : Brushes.Black, txtPoint, rightAlignFormat); + var backgroundColor = cell.control.IsSelected ? Color.Blue : cell.control.currentColor; + g.DrawString(cell.GetValueText(), Font, ForegroundBrushForBackground(backgroundColor), txtPoint, rightAlignFormat); } DrawFixImage(cell, x * elementWidth + elementNameWidth, yCoord); @@ -448,7 +456,10 @@ void DrawMovingVariables() elementNameWidth, elementHeight)); var txtPoint = new Point((int)ctrlData.positionWhileMoving.X + elementMarginLeftRight, yCoord + elementMarginTopBottom); - g.DrawString(cell.control.VarName, varNameFont, Brushes.Black, txtPoint); + + var backgroundColor = cell.control.currentColor; + var foregroundBrush = ForegroundBrushForBackground(backgroundColor); + g.DrawString(cell.control.VarName, varNameFont, foregroundBrush, txtPoint); var valueX = (int)ctrlData.positionWhileMoving.X + elementNameWidth; g.Clip = new Region( @@ -458,7 +469,7 @@ void DrawMovingVariables() elementValueWidth, elementHeight)); txtPoint = new Point((int)ctrlData.positionWhileMoving.X + elementWidth - elementMarginLeftRight, yCoord + elementMarginTopBottom); - g.DrawString(cell.GetValueText(), Font, Brushes.Black, txtPoint, rightAlignFormat); + g.DrawString(cell.GetValueText(), Font, foregroundBrush, txtPoint, rightAlignFormat); DrawFixImage(cell, valueX, yCoord); g.ResetClip(); diff --git a/STROOP/Program.cs b/STROOP/Program.cs index 708b46e08..5a4e57429 100644 --- a/STROOP/Program.cs +++ b/STROOP/Program.cs @@ -1,4 +1,4 @@ -using STROOP.Core; +using STROOP.Core; using STROOP.Forms; using System; using System.Drawing; @@ -38,6 +38,7 @@ static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); + Application.SetColorMode(SystemColorMode.System); StroopMainForm mainForm; Initialize(out mainForm);