mirror of
https://github.com/icsharpcode/ILSpy.git
synced 2026-10-12 02:15:58 +00:00
58 lines
1.3 KiB
C#
58 lines
1.3 KiB
C#
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Media;
|
|
|
|
namespace ICSharpCode.TreeView
|
|
{
|
|
class LinesRenderer : FrameworkElement
|
|
{
|
|
static LinesRenderer()
|
|
{
|
|
pen = new Pen(Brushes.LightGray, 1);
|
|
pen.Freeze();
|
|
}
|
|
|
|
static Pen pen;
|
|
|
|
SharpTreeNodeView NodeView
|
|
{
|
|
get { return TemplatedParent as SharpTreeNodeView; }
|
|
}
|
|
|
|
protected override void OnRender(DrawingContext dc)
|
|
{
|
|
var indent = NodeView.CalculateIndent();
|
|
var p = new Point(indent + 4.5, 0);
|
|
|
|
if (!NodeView.Node.IsRoot || NodeView.ParentTreeView.ShowRootExpander) {
|
|
dc.DrawLine(pen, new Point(p.X, ActualHeight / 2), new Point(p.X + 10, ActualHeight / 2));
|
|
}
|
|
|
|
if (NodeView.Node.IsRoot) return;
|
|
|
|
if (NodeView.Node.IsLast) {
|
|
dc.DrawLine(pen, p, new Point(p.X, ActualHeight / 2));
|
|
}
|
|
else {
|
|
dc.DrawLine(pen, p, new Point(p.X, ActualHeight));
|
|
}
|
|
|
|
var current = NodeView.Node;
|
|
while (true) {
|
|
p.X -= 19;
|
|
current = current.Parent;
|
|
if (p.X < 0) break;
|
|
if (!current.IsLast) {
|
|
dc.DrawLine(pen, p, new Point(p.X, ActualHeight));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|