Fallback to default buffer size

Also fixes a bug when using Spectre.Console in GitHub Actions.
This commit is contained in:
Patrik Svensson
2020-08-28 11:12:23 +02:00
committed by Patrik Svensson
parent ab73d16583
commit a16daade6c
13 changed files with 222 additions and 63 deletions

View File

@ -38,6 +38,17 @@ namespace Spectre.Console
LegacyConsole = legacyConsole;
}
/// <summary>
/// Checks whether the current capabilities supports
/// the specified color system.
/// </summary>
/// <param name="colorSystem">The color system to check.</param>
/// <returns><c>true</c> if the color system is supported, otherwise <c>false</c>.</returns>
public bool Supports(ColorSystem colorSystem)
{
return (int)colorSystem <= (int)ColorSystem;
}
/// <inheritdoc/>
public override string ToString()
{

View File

@ -21,7 +21,7 @@ namespace Spectre.Console.Internal
{
if (_out.IsStandardOut())
{
return System.Console.BufferWidth;
return ConsoleHelper.GetSafeBufferWidth(Constants.DefaultBufferWidth);
}
return Constants.DefaultBufferWidth;
@ -34,7 +34,7 @@ namespace Spectre.Console.Internal
{
if (_out.IsStandardOut())
{
return System.Console.BufferHeight;
return ConsoleHelper.GetSafeBufferHeight(Constants.DefaultBufferHeight);
}
return Constants.DefaultBufferHeight;

View File

@ -3,7 +3,7 @@ using System.Diagnostics.CodeAnalysis;
namespace Spectre.Console.Internal
{
internal static class ConsoleExtensions
internal static class AnsiConsoleExtensions
{
public static IDisposable PushStyle(this IAnsiConsole console, Style style)
{

View File

@ -24,7 +24,7 @@ namespace Spectre.Console.Internal
{
if (_out.IsStandardOut())
{
return System.Console.BufferWidth;
return ConsoleHelper.GetSafeBufferWidth(Constants.DefaultBufferWidth);
}
return Constants.DefaultBufferWidth;
@ -37,7 +37,7 @@ namespace Spectre.Console.Internal
{
if (_out.IsStandardOut())
{
return System.Console.BufferHeight;
return ConsoleHelper.GetSafeBufferHeight(Constants.DefaultBufferHeight);
}
return Constants.DefaultBufferHeight;

View File

@ -0,0 +1,44 @@
using System.IO;
using System.Runtime.InteropServices;
namespace Spectre.Console.Internal
{
internal static class ConsoleHelper
{
public static int GetSafeBufferWidth(int defaultValue = Constants.DefaultBufferWidth)
{
try
{
var width = System.Console.BufferWidth;
if (width == 0)
{
width = defaultValue;
}
return width;
}
catch (IOException)
{
return defaultValue;
}
}
public static int GetSafeBufferHeight(int defaultValue = Constants.DefaultBufferWidth)
{
try
{
var height = System.Console.BufferHeight;
if (height == 0)
{
height = defaultValue;
}
return height;
}
catch (IOException)
{
return defaultValue;
}
}
}
}