/// <summary>
    /// Sets the color of the FIGlet text.
    /// </summary>
    /// <param name="text">The text.</param>
    /// <param name="color">The color.</param>
    /// <returns>The same instance so that multiple calls can be chained.</returns>
    public static FigletText Color(this FigletText text, Color?color)
    {
        if (text is null)
        {
            throw new ArgumentNullException(nameof(text));
        }

        text.Color = color ?? Console.Color.Default;
        return(text);
    }
Exemplo n.º 2
0
        public async Task Should_Render_Wrapped_Text_Correctly()
        {
            // Given
            var console = new FakeConsole(width: 70);
            var text    = new FigletText(FigletFont.Default, "Spectre.Console");

            // When
            console.Render(text);

            // Then
            await Verifier.Verify(console.Output);
        }
Exemplo n.º 3
0
        public async Task Should_Render_Text_Correctly()
        {
            // Given
            var console = new FakeConsole(width: 70);
            var text    = new FigletText(FigletFont.Default, "Patrik was here");

            // When
            console.Write(text);

            // Then
            await Verifier.Verify(console.Output);
        }
Exemplo n.º 4
0
        public async Task Should_Render_Right_Aligned_Text_Correctly()
        {
            // Given
            var console = new FakeConsole(width: 120);
            var text    = new FigletText(FigletFont.Default, "Spectre.Console")
                          .Alignment(Justify.Right);

            // When
            console.Render(text);

            // Then
            await Verifier.Verify(console.Output);
        }
Exemplo n.º 5
0
        public async Task Should_Load_Font_From_Stream()
        {
            // Given
            var console = new FakeConsole(width: 180);
            var font    = FigletFont.Load(EmbeddedResourceReader.LoadResourceStream("Spectre.Console.Tests/Data/starwars.flf"));
            var text    = new FigletText(font, "Patrik was here");

            // When
            console.Render(text);

            // Then
            await Verifier.Verify(console.Output);
        }
Exemplo n.º 6
0
        public async Task Should_Render_Centered_Text_Correctly()
        {
            // Given
            var console = new TestConsole().Width(120);
            var text    = new FigletText(FigletFont.Default, "Spectre.Console")
                          .Alignment(Justify.Center);

            // When
            console.Write(text);

            // Then
            await Verifier.Verify(console.Output);
        }
Exemplo n.º 7
0
        public static string Ascii(string str, FigletFont fnt, string startColor = null, string endColor = null)
        {
            startColor = string.IsNullOrEmpty(startColor) ? DefaultStartColor : startColor;
            endColor   = string.IsNullOrEmpty(endColor) ? DefaultEndColor : endColor;

            var colors              = GetGradients(System.Drawing.ColorTranslator.FromHtml(startColor), System.Drawing.ColorTranslator.FromHtml(endColor), ColorSteps);
            var markup              = string.Empty;
            var renderSegments      = new List <Queue <Segment> >();
            var characterColorWidth = 1.0f / str.Length;
            var colorWidth          = 1.0f / ColorSteps;

            for (int i = 0; i < str.Length; i++)
            {
                var colorPos = colors.ElementAt((int)((i * characterColorWidth) / colorWidth));
                var txt      = new FigletText(fnt, str[i].ToString()).Color(new Color(colorPos.R, colorPos.G, colorPos.B));
                var segments = txt.GetSegments(AnsiConsole.Console);

                if (!renderSegments.Any())
                {
                    renderSegments.AddRange(Enumerable.Repeat(0, fnt.Height).Select(x => new Queue <Segment>()));
                }

                for (int idx = 0; idx < renderSegments.Count; idx++)
                {
                    renderSegments[idx].Enqueue(segments.ElementAt(2 * idx));
                }
            }

            foreach (var renderSegment in renderSegments)
            {
                foreach (var seg in renderSegment)
                {
                    markup += $"[#{seg.Style.Foreground.ToHex()}]{seg.Text}[/]";
                }
                markup += "\r\n";
            }

            return(markup);
        }