mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 09:47:58 +01:00
Change LineCanvas interpretation of Length=0
This commit is contained in:
@@ -199,8 +199,8 @@ namespace Terminal.Gui.Graphs {
|
||||
}
|
||||
|
||||
// TODO: Remove these two once we have all of the below ported to IntersectionRuneResolvers
|
||||
var useDouble = intersects.Any (i => i.Line.Style == BorderStyle.Double && i.Line.Length != 0);
|
||||
var useRounded = intersects.Any (i => i.Line.Style == BorderStyle.Rounded && i.Line.Length != 0);
|
||||
var useDouble = intersects.Any (i => i.Line.Style == BorderStyle.Double);
|
||||
var useRounded = intersects.Any (i => i.Line.Style == BorderStyle.Rounded);
|
||||
|
||||
// TODO: maybe make these resolvers to for simplicity?
|
||||
// or for dotted lines later on or that kind of thing?
|
||||
@@ -220,13 +220,6 @@ namespace Terminal.Gui.Graphs {
|
||||
|
||||
private IntersectionRuneType GetRuneTypeForIntersects (IntersectionDefinition [] intersects)
|
||||
{
|
||||
if (intersects.All (i => i.Line.Length == 0)) {
|
||||
return IntersectionRuneType.Dot;
|
||||
}
|
||||
|
||||
// ignore dots
|
||||
intersects = intersects.Where (i => i.Type != IntersectionType.Dot).ToArray ();
|
||||
|
||||
var set = new HashSet<IntersectionType> (intersects.Select (i => i.Type));
|
||||
|
||||
#region Crosshair Conditions
|
||||
@@ -504,7 +497,7 @@ namespace Terminal.Gui.Graphs {
|
||||
|
||||
return new IntersectionDefinition (
|
||||
Start,
|
||||
Length < 0 ? IntersectionType.StartLeft : IntersectionType.StartRight,
|
||||
GetTypeByLength(IntersectionType.StartLeft, IntersectionType.PassOverHorizontal,IntersectionType.StartRight),
|
||||
this
|
||||
);
|
||||
|
||||
@@ -597,11 +590,6 @@ namespace Terminal.Gui.Graphs {
|
||||
{
|
||||
return Start.X == x && Start.Y == y;
|
||||
}
|
||||
|
||||
private bool IsDot ()
|
||||
{
|
||||
return Length == 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,20 +15,6 @@ namespace Terminal.Gui.CoreTests {
|
||||
this.output = output;
|
||||
}
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void TestLineCanvas_Dot ()
|
||||
{
|
||||
var v = GetCanvas (out var canvas);
|
||||
canvas.AddLine (new Point (0, 0), 0, Orientation.Horizontal, BorderStyle.Single);
|
||||
|
||||
v.Redraw (v.Bounds);
|
||||
|
||||
string looksLike =
|
||||
@"
|
||||
.";
|
||||
TestHelpers.AssertDriverContentsAre (looksLike, output);
|
||||
}
|
||||
|
||||
[InlineData (BorderStyle.Single)]
|
||||
[InlineData (BorderStyle.Rounded)]
|
||||
[Theory, AutoInitShutdown]
|
||||
@@ -326,10 +312,10 @@ namespace Terminal.Gui.CoreTests {
|
||||
//LHS line down
|
||||
lc.AddLine (new Point (0, 0), 5, Orientation.Vertical, BorderStyle.Double);
|
||||
|
||||
//Vertical line before Title (must cover 3 squares so it results in a ╡ intersection
|
||||
lc.AddLine (new Point (1, -1), 3, Orientation.Vertical, BorderStyle.Single);
|
||||
//Vertical line after Title (must cover 3 squares so it results in a ╞ intersection
|
||||
lc.AddLine (new Point (6, -1), 3, Orientation.Vertical, BorderStyle.Single);
|
||||
//Vertical line before Title, results in a ╡
|
||||
lc.AddLine (new Point (1, 0), 0, Orientation.Vertical, BorderStyle.Single);
|
||||
//Vertical line after Title, results in a ╞
|
||||
lc.AddLine (new Point (6, 0), 0, Orientation.Vertical, BorderStyle.Single);
|
||||
|
||||
// remainder of title
|
||||
lc.AddLine (new Point (6, 0), 3, Orientation.Horizontal, BorderStyle.Double);
|
||||
@@ -345,29 +331,86 @@ namespace Terminal.Gui.CoreTests {
|
||||
TestHelpers.AssertDriverContentsAre (looksLike, output);
|
||||
}
|
||||
|
||||
|
||||
[Fact, AutoInitShutdown]
|
||||
public void TestLineCanvas_CreateT_With_1Length_Plus_0Length ()
|
||||
[InlineData(0,0,0, Orientation.Horizontal,BorderStyle.Double,"═")]
|
||||
[InlineData(0,0,0, Orientation.Vertical,BorderStyle.Double,"║")]
|
||||
[InlineData(0,0,0, Orientation.Horizontal,BorderStyle.Single,"─")]
|
||||
[InlineData(0,0,0, Orientation.Vertical,BorderStyle.Single,"│")]
|
||||
[AutoInitShutdown, Theory]
|
||||
public void TestLineCanvas_1LineTests(
|
||||
int x1, int y1,int l1, Orientation o1, BorderStyle s1,
|
||||
string expected
|
||||
)
|
||||
{
|
||||
// Draw at 1,1 within client area of View (i.e. leave a top and left margin of 1)
|
||||
var v = GetCanvas (out var lc);
|
||||
v.Width = 10;
|
||||
v.Height = 1;
|
||||
v.Bounds = new Rect (0, 0, 10, 1);
|
||||
v.Height = 10;
|
||||
v.Bounds = new Rect (0, 0, 10, 10);
|
||||
|
||||
// Create ═╡ with:
|
||||
// A 1 width horizontal
|
||||
lc.AddLine (new Point (0, 0), 1, Orientation.Horizontal, BorderStyle.Double);
|
||||
// And a 0 length vertical
|
||||
lc.AddLine (new Point (1, 0), 0, Orientation.Vertical, BorderStyle.Single);
|
||||
lc.AddLine (new Point (x1, y1), l1, o1, s1);
|
||||
|
||||
v.Redraw (v.Bounds);
|
||||
|
||||
string looksLike =
|
||||
@"═╡";
|
||||
TestHelpers.AssertDriverContentsAre (looksLike, output);
|
||||
|
||||
TestHelpers.AssertDriverContentsAre (expected, output);
|
||||
}
|
||||
|
||||
|
||||
[Theory, AutoInitShutdown]
|
||||
[InlineData(
|
||||
0,0,1,Orientation.Horizontal,BorderStyle.Double,
|
||||
1,0,0, Orientation.Vertical,BorderStyle.Single, "═╡"
|
||||
)]
|
||||
[InlineData(
|
||||
0,0,0, Orientation.Vertical,BorderStyle.Single,
|
||||
0,0,1,Orientation.Horizontal,BorderStyle.Double,
|
||||
"╞═"
|
||||
)]
|
||||
[InlineData(
|
||||
0,0,1, Orientation.Vertical,BorderStyle.Single,
|
||||
0,0,0,Orientation.Horizontal,BorderStyle.Double,
|
||||
@"
|
||||
╤
|
||||
│"
|
||||
)]
|
||||
[InlineData(
|
||||
0,0,1, Orientation.Vertical,BorderStyle.Single,
|
||||
0,1,0,Orientation.Horizontal,BorderStyle.Double,
|
||||
@"
|
||||
│
|
||||
╧
|
||||
"
|
||||
)]
|
||||
[InlineData(
|
||||
0,0,0, Orientation.Vertical,BorderStyle.Single,
|
||||
0,0,0,Orientation.Horizontal,BorderStyle.Single,
|
||||
@"┼
|
||||
"
|
||||
)]
|
||||
[InlineData(
|
||||
0,0,0, Orientation.Vertical,BorderStyle.Double,
|
||||
0,0,0,Orientation.Horizontal,BorderStyle.Double,
|
||||
@"╬
|
||||
"
|
||||
)]
|
||||
public void TestLineCanvas_2LineTests(
|
||||
int x1, int y1,int l1, Orientation o1, BorderStyle s1,
|
||||
int x2, int y2, int l2, Orientation o2, BorderStyle s2,
|
||||
string expected
|
||||
)
|
||||
{
|
||||
var v = GetCanvas (out var lc);
|
||||
v.Width = 10;
|
||||
v.Height = 10;
|
||||
v.Bounds = new Rect (0, 0, 10, 10);
|
||||
|
||||
lc.AddLine (new Point (x1, y1), l1, o1, s1);
|
||||
lc.AddLine (new Point (x2, y2), l2, o2, s2);
|
||||
|
||||
v.Redraw (v.Bounds);
|
||||
|
||||
TestHelpers.AssertDriverContentsAre (expected, output);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new <see cref="View"/> into which a <see cref="LineCanvas"/> is rendered
|
||||
/// at <see cref="View.DrawContentComplete"/> time.
|
||||
|
||||
Reference in New Issue
Block a user