public RenderLineEngine(int line, int width) { var c = ScreenSymbol.Create(' ', null, null); _theLine = new ScreenSymbol[width]; for (var x = 0; x < _theLine.Length; x++) { _theLine[x] = c; } }
public IEnumerable <ScreenSymbol> RenderLine(IUiWindow uiWindow) { var backgroundColor = uiWindow.BackgroundColor; var foregroundColor = uiWindow.ForegroundColor; var result = new List <ScreenSymbol>(); foreach (var action in _actions) { switch (action) { case ChangeBackgroundColorCommand cbc: backgroundColor = cbc.Color; continue; case ChangeForegroundColorCommand cfc: foregroundColor = cfc.Color; continue; case ResetColorCommand _: backgroundColor = uiWindow.BackgroundColor; foregroundColor = uiWindow.ForegroundColor; break; case string str: { foreach (var c in str) { result.Add(ScreenSymbol.Create(c, backgroundColor, foregroundColor)); if (result.Count >= uiWindow.Width) { return(result); } } break; } } } ScreenSymbol sc = null; while (result.Count < uiWindow.Width) { if (sc == null) { sc = ScreenSymbol.Create(' ', backgroundColor, foregroundColor); } result.Add(sc); } return(result); }