https://git.reactos.org/?p=reactos.git;a=commitdiff;h=238ea69ca0cc1c01332ea…
commit 238ea69ca0cc1c01332ea9f6211bb2ce3ffb371a
Author: Yaroslav Kibysh <yanet.prod(a)gmail.com>
AuthorDate: Tue Aug 20 02:52:25 2019 +0300
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
CommitDate: Tue Aug 20 01:52:25 2019 +0200
[NTOS:INBV] Refactor boot screen code and resources (#1649)
* [NTOS:INBV] Move typedefs to the only single file where they are used.
* [NTOS:INBV] Refactor code & resources
Remove garbage
* [NTOS:INBV] Reduce fade time and remove wait for animation.
---
ntoskrnl/inbv/inbv.c | 69 +++++++++++++++------
ntoskrnl/inbv/logo/1.bmp | Bin 20498 -> 0 bytes
ntoskrnl/inbv/logo/5.bmp | Bin 16678 -> 0 bytes
.../inbv/{logo/4.bmp => resources/barserver.bmp} | Bin
.../inbv/{logo/8.bmp => resources/barwksta.bmp} | Bin
ntoskrnl/inbv/resources/copyright.bmp | Bin 0 -> 1712 bytes
.../inbv/{logo/15.bmp => resources/fserver.bmp} | Bin
ntoskrnl/inbv/{logo/7.bmp => resources/fwksta.bmp} | Bin
.../inbv/{logo/2.bmp => resources/hibernate.bmp} | Bin
.../inbv/{logo/14.bmp => resources/hserver.bmp} | Bin
ntoskrnl/inbv/{logo/6.bmp => resources/hwksta.bmp} | Bin
ntoskrnl/inbv/{logo => resources}/line.bmp | Bin
ntoskrnl/inbv/resources/line_pal.bmp | Bin 0 -> 322 bytes
ntoskrnl/inbv/resources/logo.bmp | Bin 0 -> 16518 bytes
ntoskrnl/inbv/resources/progress.bmp | Bin 0 -> 358 bytes
.../inbv/{logo/3.bmp => resources/shutdown.bmp} | Bin
ntoskrnl/include/internal/inbv.h | 21 -------
ntoskrnl/include/resource.h | 4 +-
ntoskrnl/ntoskrnl.rc | 25 ++++----
19 files changed, 67 insertions(+), 52 deletions(-)
diff --git a/ntoskrnl/inbv/inbv.c b/ntoskrnl/inbv/inbv.c
index 5e96c978c2b..f5cd5652493 100644
--- a/ntoskrnl/inbv/inbv.c
+++ b/ntoskrnl/inbv/inbv.c
@@ -32,6 +32,27 @@
*/
// #define REACTOS_SKUS
+typedef struct _INBV_PROGRESS_STATE
+{
+ ULONG Floor;
+ ULONG Ceiling;
+ ULONG Bias;
+} INBV_PROGRESS_STATE;
+
+typedef struct _BT_PROGRESS_INDICATOR
+{
+ ULONG Count;
+ ULONG Expected;
+ ULONG Percentage;
+} BT_PROGRESS_INDICATOR, *PBT_PROGRESS_INDICATOR;
+
+typedef enum _ROT_BAR_TYPE
+{
+ RB_UNSPECIFIED,
+ RB_SQUARE_CELLS,
+ RB_PROGRESS_BAR
+} ROT_BAR_TYPE;
+
/*
* Screen resolution (for default VGA)
*/
@@ -155,8 +176,8 @@ typedef struct tagRGBQUAD
static RGBQUAD MainPalette[16];
-#define PALETTE_FADE_STEPS 15
-#define PALETTE_FADE_TIME (20 * 1000) /* 20 ms */
+#define PALETTE_FADE_STEPS 12
+#define PALETTE_FADE_TIME (15 * 1000) /* 15 ms */
/** From bootvid/precomp.h **/
//
@@ -1062,7 +1083,7 @@ VOID
NTAPI
DisplayBootBitmap(IN BOOLEAN TextMode)
{
- PVOID Header = NULL, Footer = NULL, Screen = NULL;
+ PVOID BootCopy = NULL, BootProgress = NULL, BootLogo = NULL, Header = NULL, Footer =
NULL;
#ifdef INBV_ROTBAR_IMPLEMENTED
UCHAR Buffer[24 * 9];
@@ -1155,8 +1176,8 @@ DisplayBootBitmap(IN BOOLEAN TextMode)
*/
MmChangeKernelResourceSectionProtection(MM_READWRITE);
- /* Load the standard boot screen */
- Screen = InbvGetResourceAddress(IDB_BOOT_SCREEN);
+ /* Load boot screen logo */
+ BootLogo = InbvGetResourceAddress(IDB_LOGO_DEFAULT);
#ifdef REACTOS_SKUS
Text = NULL;
@@ -1197,15 +1218,19 @@ DisplayBootBitmap(IN BOOLEAN TextMode)
#endif
/* Make sure we have a logo */
- if (Screen)
+ if (BootLogo)
{
/* Save the main image palette for implementing the fade-in effect */
- PBITMAPINFOHEADER BitmapInfoHeader = Screen;
- LPRGBQUAD Palette = (LPRGBQUAD)((PUCHAR)Screen +
BitmapInfoHeader->biSize);
+ PBITMAPINFOHEADER BitmapInfoHeader = BootLogo;
+ LPRGBQUAD Palette = (LPRGBQUAD)((PUCHAR)BootLogo +
BitmapInfoHeader->biSize);
RtlCopyMemory(MainPalette, Palette, sizeof(MainPalette));
- /* Blit the background */
- BitBltPalette(Screen, TRUE, 0, 0);
+ /* Draw the logo at the center of the screen */
+ BitBltAligned(BootLogo,
+ TRUE,
+ AL_HORIZONTAL_CENTER,
+ AL_VERTICAL_CENTER,
+ 0, 0, 0, 34);
#ifdef INBV_ROTBAR_IMPLEMENTED
/* Choose progress bar */
@@ -1230,6 +1255,22 @@ DisplayBootBitmap(IN BOOLEAN TextMode)
#endif
}
+ /* Load and draw progress bar bitmap */
+ BootProgress = InbvGetResourceAddress(IDB_PROGRESS_BAR);
+ BitBltAligned(BootProgress,
+ TRUE,
+ AL_HORIZONTAL_CENTER,
+ AL_VERTICAL_CENTER,
+ 0, 118, 0, 0);
+
+ /* Load and draw copyright text bitmap */
+ BootCopy = InbvGetResourceAddress(IDB_COPYRIGHT);
+ BitBltAligned(BootCopy,
+ TRUE,
+ AL_HORIZONTAL_LEFT,
+ AL_VERTICAL_BOTTOM,
+ 22, 0, 0, 20);
+
#ifdef REACTOS_SKUS
/* Draw the SKU text if it exits */
if (Text) BitBltPalette(Text, TRUE, 180, 121);
@@ -1309,14 +1350,6 @@ DisplayBootBitmap(IN BOOLEAN TextMode)
RotBarSelection = TempRotBarSelection;
InbvRotBarInit();
InbvReleaseLock();
-
- // FIXME: This was added to allow animation start before the processor hangs
- if (TempRotBarSelection != RB_UNSPECIFIED)
- {
- LARGE_INTEGER Delay;
- Delay.QuadPart = -3000000; // 300 ms
- KeDelayExecutionThread(KernelMode, FALSE, &Delay);
- }
}
#endif
}
diff --git a/ntoskrnl/inbv/logo/1.bmp b/ntoskrnl/inbv/logo/1.bmp
deleted file mode 100644
index dcc0ae71a55..00000000000
Binary files a/ntoskrnl/inbv/logo/1.bmp and /dev/null differ
diff --git a/ntoskrnl/inbv/logo/5.bmp b/ntoskrnl/inbv/logo/5.bmp
deleted file mode 100644
index 94fb7a9dfde..00000000000
Binary files a/ntoskrnl/inbv/logo/5.bmp and /dev/null differ
diff --git a/ntoskrnl/inbv/logo/4.bmp b/ntoskrnl/inbv/resources/barserver.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/4.bmp
rename to ntoskrnl/inbv/resources/barserver.bmp
diff --git a/ntoskrnl/inbv/logo/8.bmp b/ntoskrnl/inbv/resources/barwksta.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/8.bmp
rename to ntoskrnl/inbv/resources/barwksta.bmp
diff --git a/ntoskrnl/inbv/resources/copyright.bmp
b/ntoskrnl/inbv/resources/copyright.bmp
new file mode 100644
index 00000000000..080e462c659
Binary files /dev/null and b/ntoskrnl/inbv/resources/copyright.bmp differ
diff --git a/ntoskrnl/inbv/logo/15.bmp b/ntoskrnl/inbv/resources/fserver.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/15.bmp
rename to ntoskrnl/inbv/resources/fserver.bmp
diff --git a/ntoskrnl/inbv/logo/7.bmp b/ntoskrnl/inbv/resources/fwksta.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/7.bmp
rename to ntoskrnl/inbv/resources/fwksta.bmp
diff --git a/ntoskrnl/inbv/logo/2.bmp b/ntoskrnl/inbv/resources/hibernate.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/2.bmp
rename to ntoskrnl/inbv/resources/hibernate.bmp
diff --git a/ntoskrnl/inbv/logo/14.bmp b/ntoskrnl/inbv/resources/hserver.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/14.bmp
rename to ntoskrnl/inbv/resources/hserver.bmp
diff --git a/ntoskrnl/inbv/logo/6.bmp b/ntoskrnl/inbv/resources/hwksta.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/6.bmp
rename to ntoskrnl/inbv/resources/hwksta.bmp
diff --git a/ntoskrnl/inbv/logo/line.bmp b/ntoskrnl/inbv/resources/line.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/line.bmp
rename to ntoskrnl/inbv/resources/line.bmp
diff --git a/ntoskrnl/inbv/resources/line_pal.bmp b/ntoskrnl/inbv/resources/line_pal.bmp
new file mode 100644
index 00000000000..5209c246efb
Binary files /dev/null and b/ntoskrnl/inbv/resources/line_pal.bmp differ
diff --git a/ntoskrnl/inbv/resources/logo.bmp b/ntoskrnl/inbv/resources/logo.bmp
new file mode 100644
index 00000000000..53ec10c20c4
Binary files /dev/null and b/ntoskrnl/inbv/resources/logo.bmp differ
diff --git a/ntoskrnl/inbv/resources/progress.bmp b/ntoskrnl/inbv/resources/progress.bmp
new file mode 100644
index 00000000000..35fd2066714
Binary files /dev/null and b/ntoskrnl/inbv/resources/progress.bmp differ
diff --git a/ntoskrnl/inbv/logo/3.bmp b/ntoskrnl/inbv/resources/shutdown.bmp
similarity index 100%
rename from ntoskrnl/inbv/logo/3.bmp
rename to ntoskrnl/inbv/resources/shutdown.bmp
diff --git a/ntoskrnl/include/internal/inbv.h b/ntoskrnl/include/internal/inbv.h
index 3fb6669a584..4f9903e2501 100644
--- a/ntoskrnl/include/internal/inbv.h
+++ b/ntoskrnl/include/internal/inbv.h
@@ -1,26 +1,5 @@
#pragma once
-typedef struct _INBV_PROGRESS_STATE
-{
- ULONG Floor;
- ULONG Ceiling;
- ULONG Bias;
-} INBV_PROGRESS_STATE;
-
-typedef struct _BT_PROGRESS_INDICATOR
-{
- ULONG Count;
- ULONG Expected;
- ULONG Percentage;
-} BT_PROGRESS_INDICATOR, *PBT_PROGRESS_INDICATOR;
-
-typedef enum _ROT_BAR_TYPE
-{
- RB_UNSPECIFIED,
- RB_SQUARE_CELLS,
- RB_PROGRESS_BAR
-} ROT_BAR_TYPE;
-
INIT_FUNCTION
VOID
NTAPI
diff --git a/ntoskrnl/include/resource.h b/ntoskrnl/include/resource.h
index bb400bb3151..e2537b465f5 100644
--- a/ntoskrnl/include/resource.h
+++ b/ntoskrnl/include/resource.h
@@ -40,5 +40,7 @@
/* ReactOS additions */
#define IDB_ROTATING_LINE 19
+#define IDB_PROGRESS_BAR 20
+#define IDB_COPYRIGHT 21
-#define IDB_MAX_RESOURCE IDB_ROTATING_LINE
+#define IDB_MAX_RESOURCE IDB_COPYRIGHT
diff --git a/ntoskrnl/ntoskrnl.rc b/ntoskrnl/ntoskrnl.rc
index 0a01fe32228..8f1888516ec 100644
--- a/ntoskrnl/ntoskrnl.rc
+++ b/ntoskrnl/ntoskrnl.rc
@@ -28,17 +28,18 @@
#include <bugcodes.rc>
-IDB_BOOT_SCREEN BITMAP "inbv/logo/1.bmp"
-IDB_HIBERNATE_BAR BITMAP "inbv/logo/2.bmp"
-IDB_SHUTDOWN_MSG BITMAP "inbv/logo/3.bmp"
-IDB_BAR_DEFAULT BITMAP "inbv/logo/4.bmp"
-IDB_LOGO_DEFAULT BITMAP "inbv/logo/5.bmp"
-IDB_WKSTA_HEADER BITMAP "inbv/logo/6.bmp"
-IDB_WKSTA_FOOTER BITMAP "inbv/logo/7.bmp"
-IDB_BAR_WKSTA BITMAP "inbv/logo/8.bmp"
-IDB_SERVER_LOGO BITMAP "inbv/logo/5.bmp"
-IDB_SERVER_HEADER BITMAP "inbv/logo/14.bmp"
-IDB_SERVER_FOOTER BITMAP "inbv/logo/15.bmp"
+IDB_HIBERNATE_BAR BITMAP "inbv/resources/hibernate.bmp"
+IDB_SHUTDOWN_MSG BITMAP "inbv/resources/shutdown.bmp"
+IDB_BAR_DEFAULT BITMAP "inbv/resources/barserver.bmp"
+IDB_LOGO_DEFAULT BITMAP "inbv/resources/logo.bmp"
+IDB_WKSTA_HEADER BITMAP "inbv/resources/hwksta.bmp"
+IDB_WKSTA_FOOTER BITMAP "inbv/resources/fwksta.bmp"
+IDB_BAR_WKSTA BITMAP "inbv/resources/barwksta.bmp"
+IDB_SERVER_LOGO BITMAP "inbv/resources/logo.bmp"
+IDB_SERVER_HEADER BITMAP "inbv/resources/hserver.bmp"
+IDB_SERVER_FOOTER BITMAP "inbv/resources/fserver.bmp"
/* ReactOS additions */
-IDB_ROTATING_LINE BITMAP "inbv/logo/line.bmp"
+IDB_ROTATING_LINE BITMAP "inbv/resources/line.bmp"
+IDB_PROGRESS_BAR BITMAP "inbv/resources/progress.bmp"
+IDB_COPYRIGHT BITMAP "inbv/resources/copyright.bmp"