mirror of
https://github.com/reactos/reactos.git
synced 2025-04-13 17:07:26 +00:00
[BOOTVID] Factor out the common code that is used before setting pixels.
This commit is contained in:
parent
4f76cffb59
commit
93e9877225
1 changed files with 17 additions and 32 deletions
|
@ -87,6 +87,19 @@ ReadWriteMode(IN UCHAR Mode)
|
||||||
__outpb(VGA_BASE_IO_PORT + GRAPH_DATA_PORT, Mode | Value);
|
__outpb(VGA_BASE_IO_PORT + GRAPH_DATA_PORT, Mode | Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
PrepareForSetPixel(VOID)
|
||||||
|
{
|
||||||
|
/* Switch to mode 10 */
|
||||||
|
ReadWriteMode(10);
|
||||||
|
|
||||||
|
/* Clear the 4 planes (we're already in unchained mode here) */
|
||||||
|
__outpw(VGA_BASE_IO_PORT + SEQ_ADDRESS_PORT, 0x0F02);
|
||||||
|
|
||||||
|
/* Select the color don't care register */
|
||||||
|
__outpw(VGA_BASE_IO_PORT + GRAPH_ADDRESS_PORT, 7);
|
||||||
|
}
|
||||||
|
|
||||||
FORCEINLINE
|
FORCEINLINE
|
||||||
VOID
|
VOID
|
||||||
SetPixel(IN ULONG Left,
|
SetPixel(IN ULONG Left,
|
||||||
|
@ -133,14 +146,7 @@ DisplayCharacter(IN CHAR Character,
|
||||||
ULONG Height;
|
ULONG Height;
|
||||||
UCHAR Shift;
|
UCHAR Shift;
|
||||||
|
|
||||||
/* Switch to mode 10 */
|
PrepareForSetPixel();
|
||||||
ReadWriteMode(10);
|
|
||||||
|
|
||||||
/* Clear the 4 planes (we're already in unchained mode here) */
|
|
||||||
__outpw(VGA_BASE_IO_PORT + SEQ_ADDRESS_PORT, 0x0F02);
|
|
||||||
|
|
||||||
/* Select the color don't care register */
|
|
||||||
__outpw(VGA_BASE_IO_PORT + GRAPH_ADDRESS_PORT, 7);
|
|
||||||
|
|
||||||
/* Calculate shift */
|
/* Calculate shift */
|
||||||
Shift = Left & 7;
|
Shift = Left & 7;
|
||||||
|
@ -427,14 +433,7 @@ BitBlt(IN ULONG Left,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Switch to mode 10 */
|
PrepareForSetPixel();
|
||||||
ReadWriteMode(10);
|
|
||||||
|
|
||||||
/* Clear the 4 planes (we're already in unchained mode here) */
|
|
||||||
__outpw(VGA_BASE_IO_PORT + SEQ_ADDRESS_PORT, 0x0F02);
|
|
||||||
|
|
||||||
/* Select the color don't care register */
|
|
||||||
__outpw(VGA_BASE_IO_PORT + GRAPH_ADDRESS_PORT, 7);
|
|
||||||
|
|
||||||
/* 4bpp blitting */
|
/* 4bpp blitting */
|
||||||
for (dy = Top; dy < Bottom; ++dy)
|
for (dy = Top; dy < Bottom; ++dy)
|
||||||
|
@ -473,14 +472,7 @@ RleBitBlt(IN ULONG Left,
|
||||||
ULONG i, j;
|
ULONG i, j;
|
||||||
ULONG Code;
|
ULONG Code;
|
||||||
|
|
||||||
/* Switch to mode 10 */
|
PrepareForSetPixel();
|
||||||
ReadWriteMode(10);
|
|
||||||
|
|
||||||
/* Clear the 4 planes (we're already in unchained mode here) */
|
|
||||||
__outpw(VGA_BASE_IO_PORT + SEQ_ADDRESS_PORT, 0x0F02);
|
|
||||||
|
|
||||||
/* Select the color don't care register */
|
|
||||||
__outpw(VGA_BASE_IO_PORT + GRAPH_ADDRESS_PORT, 7);
|
|
||||||
|
|
||||||
/* Set Y height and current X value and start loop */
|
/* Set Y height and current X value and start loop */
|
||||||
YDelta = Top + Height - 1;
|
YDelta = Top + Height - 1;
|
||||||
|
@ -1034,14 +1026,7 @@ VidSolidColorFill(IN ULONG Left,
|
||||||
/* If there is no distance, then combine the right and left masks */
|
/* If there is no distance, then combine the right and left masks */
|
||||||
if (!Distance) lMask &= rMask;
|
if (!Distance) lMask &= rMask;
|
||||||
|
|
||||||
/* Switch to mode 10 */
|
PrepareForSetPixel();
|
||||||
ReadWriteMode(10);
|
|
||||||
|
|
||||||
/* Clear the 4 planes (we're already in unchained mode here) */
|
|
||||||
__outpw(VGA_BASE_IO_PORT + SEQ_ADDRESS_PORT, 0x0F02);
|
|
||||||
|
|
||||||
/* Select the color don't care register */
|
|
||||||
__outpw(VGA_BASE_IO_PORT + GRAPH_ADDRESS_PORT, 7);
|
|
||||||
|
|
||||||
/* Calculate pixel position for the read */
|
/* Calculate pixel position for the read */
|
||||||
Offset = (PUCHAR)(VgaBase + (Top * (SCREEN_WIDTH / 8)) + LeftOffset);
|
Offset = (PUCHAR)(VgaBase + (Top * (SCREEN_WIDTH / 8)) + LeftOffset);
|
||||||
|
|
Loading…
Reference in a new issue