public void RenderToRegion( Span span, Region region) { if (region == null) { throw new ArgumentNullException(nameof(region)); } if (span == null) { span = Span.Empty(); } else if (_resetAfterRender) { span = new ContainerSpan( span, ForegroundColorSpan.Reset(), BackgroundColorSpan.Reset()); } SpanVisitor visitor = null; if (_mode == OutputMode.Auto) { _mode = _terminal?.DetectOutputMode() ?? OutputMode.PlainText; } switch (_mode) { case OutputMode.NonAnsi: visitor = new NonAnsiRenderingSpanVisitor( _terminal, region); break; case OutputMode.Ansi: visitor = new AnsiRenderingSpanVisitor( _console, region); break; case OutputMode.PlainText: visitor = new FileRenderingSpanVisitor( _console.Out, new Region(region.Left, region.Top, region.Width, region.Height, false)); break; default: throw new NotSupportedException(); } visitor.Visit(span); }
public ConsoleRenderer( IConsole console = null, OutputMode mode = OutputMode.Auto, bool resetAfterRender = false) { _console = console ?? SystemConsole.Create(); _terminal = console as ITerminal; _resetAfterRender = resetAfterRender; Mode = mode == OutputMode.Auto ? _terminal.DetectOutputMode() : mode; }
public ConsoleRenderer( IConsole console = null, OutputMode mode = OutputMode.Auto, bool resetAfterRender = false) { _console = console ?? new SystemTerminal(); _terminal = console as ITerminal; _resetAfterRender = resetAfterRender; if (mode == OutputMode.Auto) { Mode = _terminal?.DetectOutputMode() ?? OutputMode.File; } else { Mode = mode; } }