diff --git a/drivers/base/bootvid/arm/bootvid.c b/drivers/base/bootvid/arm/bootvid.c index 2d2cbd0c5d8..fa374726b18 100644 --- a/drivers/base/bootvid/arm/bootvid.c +++ b/drivers/base/bootvid/arm/bootvid.c @@ -117,18 +117,18 @@ DoScroll( PUSHORT i, j; /* Set memory positions of the scroll */ - SourceOffset = &VgaArmBase[(VidpScrollRegion[1] * (SCREEN_WIDTH / 8)) + (VidpScrollRegion[0] >> 3)]; + SourceOffset = &VgaArmBase[(VidpScrollRegion.Top * (SCREEN_WIDTH / 8)) + (VidpScrollRegion.Left >> 3)]; DestOffset = &SourceOffset[Scroll * (SCREEN_WIDTH / 8)]; /* Start loop */ - for (Top = VidpScrollRegion[1]; Top <= VidpScrollRegion[3]; ++Top) + for (Top = VidpScrollRegion.Top; Top <= VidpScrollRegion.Bottom; ++Top) { /* Set number of bytes to loop and start offset */ - Offset = VidpScrollRegion[0] >> 3; + Offset = VidpScrollRegion.Left >> 3; j = SourceOffset; /* Check if this is part of the scroll region */ - if (Offset <= (VidpScrollRegion[2] >> 3)) + if (Offset <= (VidpScrollRegion.Right >> 3)) { /* Update position */ i = (PUSHORT)(DestOffset - SourceOffset); @@ -146,7 +146,7 @@ DoScroll( Offset++; /* Make sure we don't go past the scroll region */ - } while (Offset <= (VidpScrollRegion[2] >> 3)); + } while (Offset <= (VidpScrollRegion.Right >> 3)); } /* Move to the next line */ diff --git a/drivers/base/bootvid/console.c b/drivers/base/bootvid/console.c index 51b514330bc..dcf77e6c73c 100644 --- a/drivers/base/bootvid/console.c +++ b/drivers/base/bootvid/console.c @@ -12,17 +12,9 @@ /* GLOBALS ********************************************************************/ UCHAR VidpTextColor = BV_COLOR_WHITE; - ULONG VidpCurrentX = 0; ULONG VidpCurrentY = 0; - -ULONG VidpScrollRegion[4] = -{ - 0, - 0, - SCREEN_WIDTH - 1, - SCREEN_HEIGHT - 1 -}; +URECT VidpScrollRegion = {0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1}; static BOOLEAN ClearRow = FALSE; @@ -66,13 +58,13 @@ VidSetScrollRegion( ASSERT((Left % BOOTCHAR_WIDTH) == 0); ASSERT((Right % BOOTCHAR_WIDTH) == BOOTCHAR_WIDTH - 1); - /* Set Scroll Region */ - VidpScrollRegion[0] = Left; - VidpScrollRegion[1] = Top; - VidpScrollRegion[2] = Right; - VidpScrollRegion[3] = Bottom; + /* Set the scroll region */ + VidpScrollRegion.Left = Left; + VidpScrollRegion.Top = Top; + VidpScrollRegion.Right = Right; + VidpScrollRegion.Bottom = Bottom; - /* Set current X and Y */ + /* Set the current X and Y */ VidpCurrentX = Left; VidpCurrentY = Top; } @@ -114,7 +106,7 @@ VidDisplayString( { /* Modify Y position */ VidpCurrentY += BOOTCHAR_HEIGHT + 1; - if (VidpCurrentY + BOOTCHAR_HEIGHT > VidpScrollRegion[3]) + if (VidpCurrentY + BOOTCHAR_HEIGHT > VidpScrollRegion.Bottom) { /* Scroll the view and clear the current row */ DoScroll(BOOTCHAR_HEIGHT + 1); @@ -128,7 +120,7 @@ VidDisplayString( } /* Update current X */ - VidpCurrentX = VidpScrollRegion[0]; + VidpCurrentX = VidpScrollRegion.Left; /* No need to clear this row */ ClearRow = FALSE; @@ -136,7 +128,7 @@ VidDisplayString( else if (*String == '\r') { /* Update current X */ - VidpCurrentX = VidpScrollRegion[0]; + VidpCurrentX = VidpScrollRegion.Left; /* If a new-line does not follow we will clear the current row */ if (String[1] != '\n') @@ -156,11 +148,11 @@ VidDisplayString( VidpCurrentX += BOOTCHAR_WIDTH; /* Check if we should scroll */ - if (VidpCurrentX + BOOTCHAR_WIDTH - 1 > VidpScrollRegion[2]) + if (VidpCurrentX + BOOTCHAR_WIDTH - 1 > VidpScrollRegion.Right) { /* Update Y position and check if we should scroll it */ VidpCurrentY += BOOTCHAR_HEIGHT + 1; - if (VidpCurrentY + BOOTCHAR_HEIGHT > VidpScrollRegion[3]) + if (VidpCurrentY + BOOTCHAR_HEIGHT > VidpScrollRegion.Bottom) { /* Scroll the view and clear the current row */ DoScroll(BOOTCHAR_HEIGHT + 1); @@ -174,7 +166,7 @@ VidDisplayString( } /* Update current X */ - VidpCurrentX = VidpScrollRegion[0]; + VidpCurrentX = VidpScrollRegion.Left; } } } diff --git a/drivers/base/bootvid/i386/pc/vga.c b/drivers/base/bootvid/i386/pc/vga.c index 25102a94869..568c0cb3a05 100644 --- a/drivers/base/bootvid/i386/pc/vga.c +++ b/drivers/base/bootvid/i386/pc/vga.c @@ -244,14 +244,14 @@ DoScroll( /* Set Mode 1 */ ReadWriteMode(1); - RowSize = (VidpScrollRegion[2] - VidpScrollRegion[0] + 1) / 8; + RowSize = (VidpScrollRegion.Right - VidpScrollRegion.Left + 1) / 8; /* Calculate the position in memory for the row */ - OldPosition = (PUCHAR)(VgaBase + (VidpScrollRegion[1] + Scroll) * (SCREEN_WIDTH / 8) + VidpScrollRegion[0] / 8); - NewPosition = (PUCHAR)(VgaBase + VidpScrollRegion[1] * (SCREEN_WIDTH / 8) + VidpScrollRegion[0] / 8); + OldPosition = (PUCHAR)(VgaBase + (VidpScrollRegion.Top + Scroll) * (SCREEN_WIDTH / 8) + VidpScrollRegion.Left / 8); + NewPosition = (PUCHAR)(VgaBase + VidpScrollRegion.Top * (SCREEN_WIDTH / 8) + VidpScrollRegion.Left / 8); /* Start loop */ - for (Top = VidpScrollRegion[1]; Top <= VidpScrollRegion[3]; ++Top) + for (Top = VidpScrollRegion.Top; Top <= VidpScrollRegion.Bottom; ++Top) { #if defined(_M_IX86) || defined(_M_AMD64) __movsb(NewPosition, OldPosition, RowSize); diff --git a/drivers/base/bootvid/i386/pc98/bootvid.c b/drivers/base/bootvid/i386/pc98/bootvid.c index edc8ce67d1d..383e84757a1 100644 --- a/drivers/base/bootvid/i386/pc98/bootvid.c +++ b/drivers/base/bootvid/i386/pc98/bootvid.c @@ -328,11 +328,11 @@ DoScroll( USHORT i, Line; PUCHAR Src, Dst; PULONG SrcWide, DstWide; - USHORT PixelCount = (VidpScrollRegion[2] - VidpScrollRegion[0]) + 1; - ULONG_PTR SourceOffset = FrameBuffer + FB_OFFSET(VidpScrollRegion[0], VidpScrollRegion[1] + Scroll); - ULONG_PTR DestinationOffset = FrameBuffer + FB_OFFSET(VidpScrollRegion[0], VidpScrollRegion[1]); + USHORT PixelCount = (VidpScrollRegion.Right - VidpScrollRegion.Left) + 1; + ULONG_PTR SourceOffset = FrameBuffer + FB_OFFSET(VidpScrollRegion.Left, VidpScrollRegion.Top + Scroll); + ULONG_PTR DestinationOffset = FrameBuffer + FB_OFFSET(VidpScrollRegion.Left, VidpScrollRegion.Top); - for (Line = VidpScrollRegion[1]; Line <= VidpScrollRegion[3]; Line++) + for (Line = VidpScrollRegion.Top; Line <= VidpScrollRegion.Bottom; Line++) { SrcWide = (PULONG)SourceOffset; DstWide = (PULONG)DestinationOffset; diff --git a/drivers/base/bootvid/i386/xbox/bootvid.c b/drivers/base/bootvid/i386/xbox/bootvid.c index 105959f5945..93690b7aea4 100644 --- a/drivers/base/bootvid/i386/xbox/bootvid.c +++ b/drivers/base/bootvid/i386/xbox/bootvid.c @@ -313,21 +313,21 @@ VOID DoScroll( _In_ ULONG Scroll) { - ULONG RowSize = VidpScrollRegion[2] - VidpScrollRegion[0] + 1; + ULONG RowSize = VidpScrollRegion.Right - VidpScrollRegion.Left + 1; /* Calculate the position in memory for the row */ - PUCHAR OldPosition = BackBuffer + BB_OFFSET(VidpScrollRegion[0], VidpScrollRegion[1] + Scroll); - PUCHAR NewPosition = BackBuffer + BB_OFFSET(VidpScrollRegion[0], VidpScrollRegion[1]); + PUCHAR OldPosition = BackBuffer + BB_OFFSET(VidpScrollRegion.Left, VidpScrollRegion.Top + Scroll); + PUCHAR NewPosition = BackBuffer + BB_OFFSET(VidpScrollRegion.Left, VidpScrollRegion.Top); /* Start loop */ - for (ULONG Top = VidpScrollRegion[1]; Top <= VidpScrollRegion[3]; ++Top) + for (ULONG Top = VidpScrollRegion.Top; Top <= VidpScrollRegion.Bottom; ++Top) { ULONG i; /* Scroll the row */ RtlCopyMemory(NewPosition, OldPosition, RowSize); - PULONG Frame = (PULONG)(FrameBufferStart + FB_OFFSET(VidpScrollRegion[0], Top)); + PULONG Frame = (PULONG)(FrameBufferStart + FB_OFFSET(VidpScrollRegion.Left, Top)); for (i = 0; i < RowSize; ++i) Frame[i] = CachedPalette[NewPosition[i]]; diff --git a/drivers/base/bootvid/precomp.h b/drivers/base/bootvid/precomp.h index f62c5fb1e1c..bd89136915e 100644 --- a/drivers/base/bootvid/precomp.h +++ b/drivers/base/bootvid/precomp.h @@ -57,13 +57,21 @@ typedef struct tagBITMAPINFOHEADER typedef ULONG RGBQUAD; +typedef struct _URECT +{ + ULONG Left; + ULONG Top; + ULONG Right; + ULONG Bottom; +} URECT; + /* * Globals */ extern UCHAR VidpTextColor; extern ULONG VidpCurrentX; extern ULONG VidpCurrentY; -extern ULONG VidpScrollRegion[4]; +extern URECT VidpScrollRegion; extern const UCHAR VidpFontData[256 * BOOTCHAR_HEIGHT]; extern const RGBQUAD VidpDefaultPalette[BV_MAX_COLORS];