/// <summary> /// Renders the middle portion of the progress bar that contains the message and progress fill. You must have called Render() ahead of time for this /// to make sense. /// </summary> public void Update() { var maxMessageLength = Width - 4; renderedMessage = Message; renderedMessage = renderedMessage.Replace("{%}", Math.Round(Progress * 100, 1) + " %"); if (renderedMessage.Length > maxMessageLength) { renderedMessage = renderedMessage.Substring(0, maxMessageLength - 3) + "..."; } while (renderedMessage.Length < maxMessageLength) { renderedMessage += " "; } if (indeterminateHighlightIndex < 0) { int toHighlight = (int)Math.Round(Progress * renderedMessage.Length); renderedMessage = renderedMessage.HighlightSubstring(0, toHighlight, MessageFillColor, FillColor); } else { renderedMessage = renderedMessage.HighlightSubstring(indeterminateHighlightIndex, 1, MessageFillColor, FillColor); } messageStart.Restore(); Console.Write(renderedMessage); wiper.MoveCursorToLineAfterBottom(); }