Improved color graph lines

This commit is contained in:
Paolo Ghibaudo 2024-06-29 14:17:16 +02:00
parent 3ba027bd16
commit 9973a116d1
3 changed files with 44 additions and 9 deletions

View file

@ -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

View file

@ -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(() =>
{

View file

@ -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;