From 9973a116d12cf0a043ed415c0dcd276d4a277c04 Mon Sep 17 00:00:00 2001
From: Paolo Ghibaudo
Date: Sat, 29 Jun 2024 14:17:16 +0200
Subject: [PATCH] Improved color graph lines
---
src/Models/CommitGraph.cs | 50 ++++++++++++++++++++++++++++++------
src/ViewModels/Repository.cs | 2 +-
src/Views/Histories.axaml.cs | 1 +
3 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/src/Models/CommitGraph.cs b/src/Models/CommitGraph.cs
index 6b26eba5..ea00d691 100644
--- a/src/Models/CommitGraph.cs
+++ b/src/Models/CommitGraph.cs
@@ -8,15 +8,49 @@ namespace SourceGit.Models
{
public class CommitGraph
{
+ static SolidColorBrush CreateBrushFromHex(string hex)
+ {
+ // Rimuove il carattere '#' se presente all'inizio del codice esadecimale
+ if (hex.StartsWith("#"))
+ {
+ hex = hex.Substring(1);
+ }
+
+ // Converte il codice esadecimale in un valore ARGB
+ uint argb = uint.Parse(hex, System.Globalization.NumberStyles.HexNumber);
+
+ // Estrae i componenti del colore
+ byte a = (byte)((argb >> 24) & 0xFF);
+ byte r = (byte)((argb >> 16) & 0xFF);
+ byte g = (byte)((argb >> 8) & 0xFF);
+ byte b = (byte)(argb & 0xFF);
+
+ // Crea un oggetto Color
+ Color color = Color.FromArgb(a, r, g, b);
+
+ // Crea e restituisce un SolidColorBrush usando il colore ottenuto
+ return new SolidColorBrush(color);
+ }
+
public static readonly Pen[] Pens = [
- new Pen(Brushes.Orange, 2),
- new Pen(Brushes.ForestGreen, 2),
- new Pen(Brushes.Gold, 2),
- new Pen(Brushes.Magenta, 2),
- new Pen(Brushes.Red, 2),
- new Pen(Brushes.Gray, 2),
- new Pen(Brushes.Turquoise, 2),
- new Pen(Brushes.Olive, 2),
+ new Pen(CreateBrushFromHex("#ff15a0bf")),
+ new Pen(CreateBrushFromHex("#ff0669f7")),
+ new Pen(CreateBrushFromHex("#ff8e00c2")),
+ new Pen(CreateBrushFromHex("#ffc517b6")),
+ new Pen(CreateBrushFromHex("#ffd90171")),
+ new Pen(CreateBrushFromHex("#ffcd0101")),
+ new Pen(CreateBrushFromHex("#fff25d2e")),
+ new Pen(CreateBrushFromHex("#fff2ca33")),
+ new Pen(CreateBrushFromHex("#ff7bd938")),
+ new Pen(CreateBrushFromHex("#ff2ece9d")),
+ //new Pen(Brushes.Orange, 2),
+ //new Pen(Brushes.ForestGreen, 2),
+ //new Pen(Brushes.Gold, 2),
+ //new Pen(Brushes.Magenta, 2),
+ //new Pen(Brushes.Red, 2),
+ //new Pen(Brushes.Gray, 2),
+ //new Pen(Brushes.Turquoise, 2),
+ //new Pen(Brushes.Olive, 2),
];
public class Path
diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs
index d4bffa0d..30e5710a 100644
--- a/src/ViewModels/Repository.cs
+++ b/src/ViewModels/Repository.cs
@@ -685,7 +685,7 @@ namespace SourceGit.ViewModels
}
var commits = new Commands.QueryCommits(FullPath, limits).Result();
- var graph = Models.CommitGraph.Parse(commits, 8);
+ var graph = Models.CommitGraph.Parse(commits, 10);
Dispatcher.UIThread.Invoke(() =>
{
diff --git a/src/Views/Histories.axaml.cs b/src/Views/Histories.axaml.cs
index 37ad441d..161bec31 100644
--- a/src/Views/Histories.axaml.cs
+++ b/src/Views/Histories.axaml.cs
@@ -158,6 +158,7 @@ namespace SourceGit.Views
var geo = new StreamGeometry();
var pen = Models.CommitGraph.Pens[line.Color];
+ pen.Thickness = 2.5;
using (var ctx = geo.Open())
{
var started = false;