namespace Spectre.Console { /// /// Represents console capabilities. /// public sealed class Capabilities { /// /// Gets a value indicating whether or not /// the console supports Ansi. /// public bool SupportsAnsi { get; } /// /// Gets the color system. /// public ColorSystem ColorSystem { get; } /// /// Gets a value indicating whether or not /// this is a legacy console (cmd.exe). /// /// /// Only relevant when running on Microsoft Windows. /// public bool LegacyConsole { get; } internal Capabilities(bool supportsAnsi, ColorSystem colorSystem, bool legacyConsole) { SupportsAnsi = supportsAnsi; ColorSystem = colorSystem; LegacyConsole = legacyConsole; } /// public override string ToString() { var supportsAnsi = SupportsAnsi ? "Yes" : "No"; var legacyConsole = LegacyConsole ? "Legacy" : "Modern"; var bits = ColorSystem switch { ColorSystem.NoColors => "1 bit", ColorSystem.Legacy => "3 bits", ColorSystem.Standard => "4 bits", ColorSystem.EightBit => "8 bits", ColorSystem.TrueColor => "24 bits", _ => "?" }; return $"ANSI={supportsAnsi}, Colors={ColorSystem}, Kind={legacyConsole} ({bits})"; } } }