refactor: rewrite Views.CommitGraph.Render

This commit is contained in:
leo 2024-08-28 13:26:46 +08:00
parent ddcab64940
commit 45212ebc28
No known key found for this signature in database

View file

@ -439,6 +439,10 @@ namespace SourceGit.Views
{ {
base.Render(context); base.Render(context);
var graph = Graph;
if (graph == null)
return;
var histories = this.FindAncestorOfType<Histories>(); var histories = this.FindAncestorOfType<Histories>();
if (histories == null) if (histories == null)
return; return;
@ -447,25 +451,20 @@ namespace SourceGit.Views
if (list == null) if (list == null)
return; return;
var graph = Graph; // Calculate drawing area.
if (graph == null) double width = Bounds.Width - 156 - 96 - histories.AuthorNameColumnWidth.Value;
return; double height = Bounds.Height;
double rowHeight = 28;
double startY = list.Scroll?.Offset.Y ?? 0; double startY = list.Scroll?.Offset.Y ?? 0;
double maxWidth = Bounds.Width - 156 - 96 - histories.AuthorNameColumnWidth.Value; double endY = startY + height + 28;
// Apply scroll offset.
context.PushClip(new Rect(Bounds.Left, Bounds.Top, maxWidth, Bounds.Height));
context.PushTransform(Matrix.CreateTranslation(0, -startY));
// Calculate bounds.
var top = startY;
var bottom = startY + Bounds.Height + rowHeight * 2;
// Apply scroll offset and clip.
using (context.PushClip(new Rect(0, 0, width, height)))
using (context.PushTransform(Matrix.CreateTranslation(0, -startY)))
{
// Draw contents // Draw contents
DrawCurves(context, graph, top, bottom); DrawCurves(context, graph, startY, endY);
DrawAnchors(context, graph, top, bottom); DrawAnchors(context, graph, startY, endY);
}
} }
private void DrawCurves(DrawingContext context, Models.CommitGraph graph, double top, double bottom) private void DrawCurves(DrawingContext context, Models.CommitGraph graph, double top, double bottom)