-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTextBlockBuilder.cs
More file actions
68 lines (48 loc) · 1.98 KB
/
TextBlockBuilder.cs
File metadata and controls
68 lines (48 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Developed by Bulat Bagaviev (@sunnyyssh).
// This file is licensed to you under the MIT license.
namespace Sunnyyssh.ConsoleUI;
public sealed class TextBlockBuilder : IUIElementBuilder<TextBlock>
{
public string? StartingText { get; init; }
public Color Background { get; init; } = Color.Default;
public Color Foreground { get; init; } = Color.Default;
public VerticalAligning TextVerticalAligning { get; init; } = VerticalAligning.Center;
public HorizontalAligning TextHorizontalAligning { get; init; } = HorizontalAligning.Center;
public bool WordWrap { get; init; } = true;
public OverlappingPriority OverlappingPriority { get; init; } = OverlappingPriority.Medium;
public Size Size { get; }
public TextBlock Build(UIElementBuildArgs args)
{
ArgumentNullException.ThrowIfNull(args, nameof(args));
int width = args.Width;
int height = args.Height;
var resultTextBlock = new TextBlock(width, height, OverlappingPriority)
{
Background = Background,
Foreground = Foreground,
TextVerticalAligning = TextVerticalAligning,
TextHorizontalAligning = TextHorizontalAligning,
WordWrap = WordWrap,
Text = StartingText,
};
return resultTextBlock;
}
UIElement IUIElementBuilder.Build(UIElementBuildArgs args) => Build(args);
public TextBlockBuilder(int width, int height)
: this(new Size(width, height))
{ }
public TextBlockBuilder(int width, double heightRelation)
: this(new Size(width, heightRelation))
{ }
public TextBlockBuilder(double widthRelation, int height)
: this(new Size(widthRelation, height))
{ }
public TextBlockBuilder(double widthRelation, double heightRelation)
: this(new Size(widthRelation, heightRelation))
{ }
public TextBlockBuilder(Size size)
{
ArgumentNullException.ThrowIfNull(size, nameof(size));
Size = size;
}
}