https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d749b45e2a9bef3eae437…
commit d749b45e2a9bef3eae437f960690e31b63ec0e49
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Fri Jan 7 22:48:51 2022 +0100
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sun Feb 6 17:52:43 2022 +0100
[FREELDR:UI] Cleanup for the ProgressBar functions.
- Remove duplicated code from directui.c and use the one from
TUI instead, with the latter properly #ifdef'ed for _M_ARM.
- Fix their title color.
- Add SAL annotations.
---
boot/freeldr/freeldr/include/ui.h | 20 ++++++++++--
boot/freeldr/freeldr/include/ui/minitui.h | 20 ++++++++++--
boot/freeldr/freeldr/include/ui/noui.h | 21 ++++++++++--
boot/freeldr/freeldr/include/ui/tui.h | 21 ++++++++++--
boot/freeldr/freeldr/ui/directui.c | 54 ++++++++-----------------------
boot/freeldr/freeldr/ui/minitui.c | 35 ++++++++++++++++----
boot/freeldr/freeldr/ui/noui.c | 16 +++++++--
boot/freeldr/freeldr/ui/tui.c | 27 +++++++++++++---
boot/freeldr/freeldr/ui/ui.c | 16 +++++++--
9 files changed, 168 insertions(+), 62 deletions(-)
diff --git a/boot/freeldr/freeldr/include/ui.h b/boot/freeldr/freeldr/include/ui.h
index 8ee46293eed..4308b95c0f4 100644
--- a/boot/freeldr/freeldr/include/ui.h
+++ b/boot/freeldr/freeldr/include/ui.h
@@ -94,8 +94,24 @@ VOID UiUpdateDateTime(VOID); //
Updates th
VOID UiInfoBox(PCSTR MessageText); // Displays a info box
on the screen
VOID UiMessageBox(PCSTR Format, ...); // Displays a message box
on the screen with an ok button
VOID UiMessageBoxCritical(PCSTR MessageText); // Displays a message box
on the screen with an ok button using no system resources
-VOID UiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText);
// Draws the progress bar showing nPos percent filled
-VOID UiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG
Position, ULONG Range, PCHAR ProgressText); // Draws the progress bar showing
nPos percent filled
+
+/* Draws the progress bar showing nPos percent filled */
+VOID
+UiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText);
+
+/* Draws the progress bar showing nPos percent filled */
+VOID
+UiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText);
// Displays all the message boxes in a given section.
VOID
diff --git a/boot/freeldr/freeldr/include/ui/minitui.h
b/boot/freeldr/freeldr/include/ui/minitui.h
index 1a64c5569ba..eba12bc1ec6 100644
--- a/boot/freeldr/freeldr/include/ui/minitui.h
+++ b/boot/freeldr/freeldr/include/ui/minitui.h
@@ -16,8 +16,24 @@
VOID MiniTuiDrawBackdrop(VOID);
VOID MiniTuiDrawStatusText(PCSTR StatusText);
-VOID MiniTuiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText);
-VOID MiniTuiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG
Position, ULONG Range, PCHAR ProgressText);
+
+/* Draws the progress bar showing nPos percent filled */
+VOID
+MiniTuiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText);
+
+/* Draws the progress bar showing nPos percent filled */
+VOID
+MiniTuiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText);
///////////////////////////////////////////////////////////////////////////////////////
//
diff --git a/boot/freeldr/freeldr/include/ui/noui.h
b/boot/freeldr/freeldr/include/ui/noui.h
index 99b8bfa4ec5..1bd560ad25d 100644
--- a/boot/freeldr/freeldr/include/ui/noui.h
+++ b/boot/freeldr/freeldr/include/ui/noui.h
@@ -53,8 +53,25 @@ VOID NoUiDrawStatusText(PCSTR StatusText);
VOID NoUiUpdateDateTime(VOID);
VOID NoUiMessageBox(PCSTR MessageText);
VOID NoUiMessageBoxCritical(PCSTR MessageText);
-VOID NoUiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText);
-VOID NoUiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG
Position, ULONG Range, PCHAR ProgressText);
+
+/* Draws the progress bar showing nPos percent filled */
+VOID
+NoUiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText);
+
+/* Draws the progress bar showing nPos percent filled */
+VOID
+NoUiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText);
+
BOOLEAN NoUiEditBox(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length);
UCHAR NoUiTextToColor(PCSTR ColorText);
UCHAR NoUiTextToFillStyle(PCSTR FillStyleText);
diff --git a/boot/freeldr/freeldr/include/ui/tui.h
b/boot/freeldr/freeldr/include/ui/tui.h
index 729db425572..a486ef5cdec 100644
--- a/boot/freeldr/freeldr/include/ui/tui.h
+++ b/boot/freeldr/freeldr/include/ui/tui.h
@@ -75,8 +75,25 @@ VOID TuiSaveScreen(PUCHAR Buffer); //
Saves the sc
VOID TuiRestoreScreen(PUCHAR Buffer); // Restores the screen
from a previous save
VOID TuiMessageBox(PCSTR MessageText); // Displays a message
box on the screen with an ok button
VOID TuiMessageBoxCritical(PCSTR MessageText); // Displays a message
box on the screen with an ok button using no system resources
-VOID TuiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText);
// Draws the progress bar showing nPos percent filled
-VOID TuiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG
Position, ULONG Range, PCHAR ProgressText); // Draws the progress bar showing
nPos percent filled
+
+/* Draws the progress bar showing nPos percent filled */
+VOID
+TuiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText);
+
+/* Draws the progress bar showing nPos percent filled */
+VOID
+TuiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText);
+
BOOLEAN TuiEditBox(PCSTR MessageText, PCHAR EditTextBuffer, ULONG Length);
UCHAR TuiTextToColor(PCSTR ColorText); // Converts the text
color into it's equivalent color value
UCHAR TuiTextToFillStyle(PCSTR FillStyleText); // Converts the text
fill into it's equivalent fill value
diff --git a/boot/freeldr/freeldr/ui/directui.c b/boot/freeldr/freeldr/ui/directui.c
index 8a132842041..cd4b07dcf94 100644
--- a/boot/freeldr/freeldr/ui/directui.c
+++ b/boot/freeldr/freeldr/ui/directui.c
@@ -109,51 +109,25 @@ UiMessageBoxCritical(IN PCSTR MessageText)
}
VOID
-UiDrawProgressBarCenter(IN ULONG Position,
- IN ULONG Range,
- IN PCHAR ProgressText)
+UiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
- ULONG Left, Top, Right, Bottom, Width, Height;
-
- /* Build the coordinates and sizes */
- Height = 2;
- Width = UiScreenWidth;
- Left = 0;
- Right = (Left + Width) - 1;
- Top = UiScreenHeight - Height - 4;
- Bottom = Top + Height + 1;
-
- /* Draw the progress bar */
- UiDrawProgressBar(Left, Top, Right, Bottom, Position, Range, ProgressText);
+ MiniTuiDrawProgressBarCenter(Position, Range, ProgressText);
}
VOID
-UiDrawProgressBar(IN ULONG Left,
- IN ULONG Top,
- IN ULONG Right,
- IN ULONG Bottom,
- IN ULONG Position,
- IN ULONG Range,
- IN PCHAR ProgressText)
+UiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR 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));
- }
+ MiniTuiDrawProgressBar(Left, Top, Right, Bottom, Position, Range, ProgressText);
}
VOID
diff --git a/boot/freeldr/freeldr/ui/minitui.c b/boot/freeldr/freeldr/ui/minitui.c
index 8a164602cba..cc967f9b753 100644
--- a/boot/freeldr/freeldr/ui/minitui.c
+++ b/boot/freeldr/freeldr/ui/minitui.c
@@ -7,9 +7,10 @@
* Hervé Poussineau
*/
-#ifndef _M_ARM
#include <freeldr.h>
+#ifndef _M_ARM
+
VOID MiniTuiDrawBackdrop(VOID)
{
/* Fill in a black background */
@@ -24,7 +25,13 @@ VOID MiniTuiDrawStatusText(PCSTR StatusText)
/* Minimal UI doesn't have a status bar */
}
-VOID MiniTuiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText)
+#endif // _M_ARM
+
+VOID
+MiniTuiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
ULONG Left, Top, Right, Bottom, Width, Height;
@@ -40,18 +47,30 @@ VOID MiniTuiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR
ProgressTex
MiniTuiDrawProgressBar(Left, Top, Right, Bottom, Position, Range, ProgressText);
}
-VOID MiniTuiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG
Position, ULONG Range, PCHAR ProgressText)
+VOID
+MiniTuiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
- ULONG i;
- ULONG ProgressBarWidth = (Right - Left) - 3;
+ ULONG ProgressBarWidth, i;
+
+ /* Calculate the width of the bar proper */
+ ProgressBarWidth = (Right - Left) - 3;
/* First make sure the progress bar text fits */
UiTruncateStringEllipsis(ProgressText, ProgressBarWidth - 4);
+
+ /* Clip the position */
if (Position > Range)
Position = Range;
/* Draw the "Loading..." text */
- TuiDrawCenteredText(Left + 2, Top + 1, Right - 2, Top + 1, ProgressText,
ATTR(COLOR_GRAY, COLOR_BLACK));
+ TuiDrawCenteredText(Left + 2, Top + 1, Right - 2, Top + 1, ProgressText,
ATTR(UiTextColor, UiMenuBgColor));
/* Draw the percent complete */
for (i = 0; i < (Position * ProgressBarWidth) / Range; i++)
@@ -60,10 +79,14 @@ VOID MiniTuiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG
Bottom, UL
TuiDrawText(Left + 2 + i, Top + 2, "\xDB", ATTR(UiTextColor,
UiMenuBgColor));
}
+#ifndef _M_ARM
TuiUpdateDateTime();
VideoCopyOffScreenBufferToVRAM();
+#endif
}
+#ifndef _M_ARM
+
VOID
MiniTuiDrawMenu(PUI_MENU_INFO MenuInfo)
{
diff --git a/boot/freeldr/freeldr/ui/noui.c b/boot/freeldr/freeldr/ui/noui.c
index 1cbb42d40e9..e0e1b4b97e4 100644
--- a/boot/freeldr/freeldr/ui/noui.c
+++ b/boot/freeldr/freeldr/ui/noui.c
@@ -100,11 +100,23 @@ VOID NoUiMessageBoxCritical(PCSTR MessageText)
MachConsGetCh();
}
-VOID NoUiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText)
+VOID
+NoUiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
}
-VOID NoUiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG
Position, ULONG Range, PCHAR ProgressText)
+VOID
+NoUiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
}
diff --git a/boot/freeldr/freeldr/ui/tui.c b/boot/freeldr/freeldr/ui/tui.c
index 310c872172d..9da79931b94 100644
--- a/boot/freeldr/freeldr/ui/tui.c
+++ b/boot/freeldr/freeldr/ui/tui.c
@@ -683,29 +683,46 @@ VOID TuiMessageBoxCritical(PCSTR MessageText)
}
}
-VOID TuiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText)
+VOID
+TuiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
ULONG Left, Top, Right, Bottom;
ULONG Width = 50; // Allow for 50 "bars"
ULONG Height = 2;
+ /* Build the coordinates and sizes */
Left = (UiScreenWidth - Width - 4) / 2;
Right = Left + Width + 3;
Top = (UiScreenHeight - Height - 2) / 2;
Top += 2;
Bottom = Top + Height + 1;
+ /* Draw the progress bar */
TuiDrawProgressBar(Left, Top, Right, Bottom, Position, Range, ProgressText);
}
-VOID TuiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG Position,
ULONG Range, PCHAR ProgressText)
+VOID
+TuiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
- ULONG i;
- ULONG ProgressBarWidth = (Right - Left) - 3;
+ ULONG ProgressBarWidth, i;
+
+ /* Calculate the width of the bar proper */
+ ProgressBarWidth = (Right - Left) - 3;
/* First make sure the progress bar text fits */
UiTruncateStringEllipsis(ProgressText, ProgressBarWidth - 4);
+ /* Clip the position */
if (Position > Range)
Position = Range;
@@ -728,8 +745,10 @@ VOID TuiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG
Bottom, ULONG
TuiDrawText(Left + 2 + i, Top + 2, "\xB2", ATTR(UiTextColor,
UiMenuBgColor));
}
+#ifndef _M_ARM
TuiUpdateDateTime();
VideoCopyOffScreenBufferToVRAM();
+#endif
}
UCHAR TuiTextToColor(PCSTR ColorText)
diff --git a/boot/freeldr/freeldr/ui/ui.c b/boot/freeldr/freeldr/ui/ui.c
index de1d959d05a..b2a08f27c9f 100644
--- a/boot/freeldr/freeldr/ui/ui.c
+++ b/boot/freeldr/freeldr/ui/ui.c
@@ -369,12 +369,24 @@ UCHAR UiTextToFillStyle(PCSTR FillStyleText)
return UiVtbl.TextToFillStyle(FillStyleText);
}
-VOID UiDrawProgressBarCenter(ULONG Position, ULONG Range, PCHAR ProgressText)
+VOID
+UiDrawProgressBarCenter(
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
UiVtbl.DrawProgressBarCenter(Position, Range, ProgressText);
}
-VOID UiDrawProgressBar(ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, ULONG Position,
ULONG Range, PCHAR ProgressText)
+VOID
+UiDrawProgressBar(
+ _In_ ULONG Left,
+ _In_ ULONG Top,
+ _In_ ULONG Right,
+ _In_ ULONG Bottom,
+ _In_ ULONG Position,
+ _In_ ULONG Range,
+ _Inout_z_ PSTR ProgressText)
{
UiVtbl.DrawProgressBar(Left, Top, Right, Bottom, Position, Range, ProgressText);
}