VOID UiInfoBox(PCSTR MessageText) { ULONG TextLength; ULONG BoxWidth; ULONG BoxHeight; ULONG LineBreakCount; ULONG Index; ULONG LastIndex; ULONG Left; ULONG Top; ULONG Right; ULONG Bottom; TextLength = strlen(MessageText); // Count the new lines and the box width LineBreakCount = 0; BoxWidth = 0; LastIndex = 0; for (Index=0; Index<TextLength; Index++) { if (MessageText[Index] == '\n') { LastIndex = Index; LineBreakCount++; } else { if ((Index - LastIndex) > BoxWidth) { BoxWidth = (Index - LastIndex); } } } // Calc the box width & height BoxWidth += 6; BoxHeight = LineBreakCount + 4; // Calc the box coordinates Left = (UiScreenWidth / 2) - (BoxWidth / 2); Top =(UiScreenHeight / 2) - (BoxHeight / 2); Right = (UiScreenWidth / 2) + (BoxWidth / 2); Bottom = (UiScreenHeight / 2) + (BoxHeight / 2); // Draw the box UiDrawBox(Left, Top, Right, Bottom, VERT, HORZ, TRUE, TRUE, ATTR(UiMenuFgColor, UiMenuBgColor) ); // Draw the text UiDrawCenteredText(Left, Top, Right, Bottom, MessageText, ATTR(UiTextColor, UiMenuBgColor)); }
VOID UiDrawProgressBar(IN ULONG Left, IN ULONG Top, IN ULONG Right, IN ULONG Bottom, IN ULONG Position, IN ULONG Range, IN PCHAR ProgressText) { ULONG i, ProgressBarWidth; /* Calculate the width of the bar proper */ ProgressBarWidth = (Right - Left) - 3; /* First make sure the progress bar text fits */ UiTruncateStringEllipsis(ProgressText, ProgressBarWidth - 4); if (Position > Range) Position = Range; /* Draw the "Loading..." text */ UiDrawCenteredText(Left + 2, Top + 1, Right - 2, Top + 1, ProgressText, ATTR(7, 0)); /* Draw the percent complete */ for (i = 0; i < (Position * ProgressBarWidth) / Range; i++) { /* Use the fill character */ UiDrawText(Left + 2 + i, Top + 2, "\xDB", ATTR(UiTextColor, UiMenuBgColor)); } }