ReactOS 0.4.16-dev-2122-g1628f5e
console.c File Reference
#include "precomp.h"
Include dependency graph for console.c:

Go to the source code of this file.

Functions

VOID NTAPI VidResetDisplay (_In_ BOOLEAN SetMode)
 
ULONG NTAPI VidSetTextColor (_In_ ULONG Color)
 
VOID NTAPI VidSetScrollRegion (_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom)
 
VOID NTAPI VidDisplayStringXY (_In_ PCSTR String, _In_ ULONG Left, _In_ ULONG Top, _In_ BOOLEAN Transparent)
 
VOID NTAPI VidDisplayString (_In_ PCSTR String)
 

Variables

UCHAR VidpTextColor = BV_COLOR_WHITE
 
ULONG VidpCurrentX = 0
 
ULONG VidpCurrentY = 0
 
URECT VidpScrollRegion = {0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1}
 
static BOOLEAN ClearRow = FALSE
 

Function Documentation

◆ VidDisplayString()

VOID NTAPI VidDisplayString ( _In_ PCSTR  String)

Definition at line 98 of file console.c.

100{
101 /* Start looping the string */
102 for (; *String; ++String)
103 {
104 /* Treat new-line separately */
105 if (*String == '\n')
106 {
107 /* Modify Y position */
110 {
111 /* Scroll the view and clear the current row */
115 }
116 else
117 {
118 /* Preserve the current row */
120 }
121
122 /* Update current X */
124
125 /* No need to clear this row */
126 ClearRow = FALSE;
127 }
128 else if (*String == '\r')
129 {
130 /* Update current X */
132
133 /* If a new-line does not follow we will clear the current row */
134 if (String[1] != '\n')
135 ClearRow = TRUE;
136 }
137 else
138 {
139 /* Clear the current row if we had a return-carriage without a new-line */
140 if (ClearRow)
141 {
143 ClearRow = FALSE;
144 }
145
146 /* Display this character */
149
150 /* Check if we should scroll */
152 {
153 /* Update Y position and check if we should scroll it */
156 {
157 /* Scroll the view and clear the current row */
161 }
162 else
163 {
164 /* Preserve the current row */
166 }
167
168 /* Update current X */
170 }
171 }
172 }
173}
VOID PreserveRow(_In_ ULONG CurrentTop, _In_ ULONG TopDelta, _In_ BOOLEAN Restore)
Definition: bootvid.c:159
VOID DisplayCharacter(_In_ CHAR Character, _In_ ULONG Left, _In_ ULONG Top, _In_ ULONG TextColor, _In_ ULONG BackColor)
Definition: bootvid.c:67
VOID DoScroll(_In_ ULONG Scroll)
Definition: bootvid.c:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
UCHAR VidpTextColor
Definition: console.c:14
ULONG VidpCurrentY
Definition: console.c:16
ULONG VidpCurrentX
Definition: console.c:15
URECT VidpScrollRegion
Definition: console.c:17
static BOOLEAN ClearRow
Definition: console.c:19
#define BOOTCHAR_HEIGHT
Definition: precomp.h:35
#define BOOTCHAR_WIDTH
Definition: precomp.h:36
#define BV_COLOR_NONE
Definition: display.h:31
ULONG Right
Definition: precomp.h:64
ULONG Bottom
Definition: precomp.h:65
ULONG Left
Definition: precomp.h:62
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2439

Referenced by InbvDisplayString().

◆ VidDisplayStringXY()

VOID NTAPI VidDisplayStringXY ( _In_ PCSTR  String,
_In_ ULONG  Left,
_In_ ULONG  Top,
_In_ BOOLEAN  Transparent 
)

Definition at line 74 of file console.c.

79{
80 ULONG BackColor;
81
82 /*
83 * If the caller wanted transparent, then send the special value (16),
84 * else use our default and call the helper routine.
85 */
86 BackColor = Transparent ? BV_COLOR_NONE : BV_COLOR_LIGHT_CYAN;
87
88 /* Loop every character and adjust the position */
89 for (; *String; ++String, Left += BOOTCHAR_WIDTH)
90 {
91 /* Display a character */
93 }
94}
static LPHIST_ENTRY Top
Definition: history.c:53
#define BV_COLOR_LIGHT_CYAN
Definition: display.h:29
#define BV_COLOR_LIGHT_BLUE
Definition: display.h:27
uint32_t ULONG
Definition: typedefs.h:59

◆ VidResetDisplay()

VOID NTAPI VidResetDisplay ( _In_ BOOLEAN  SetMode)

Definition at line 25 of file console.c.

27{
28 /* Clear the current position */
29 VidpCurrentX = 0;
30 VidpCurrentY = 0;
31
32 /* Invoke the hardware-specific routine */
33 ResetDisplay(SetMode);
34}
VOID ResetDisplay(_In_ BOOLEAN SetMode)
Definition: bootvid.c:263

Referenced by InbvResetDisplay(), and VidInitialize().

◆ VidSetScrollRegion()

VOID NTAPI VidSetScrollRegion ( _In_ ULONG  Left,
_In_ ULONG  Top,
_In_ ULONG  Right,
_In_ ULONG  Bottom 
)

Definition at line 51 of file console.c.

56{
57 /* Assert alignment */
58 ASSERT((Left % BOOTCHAR_WIDTH) == 0);
59 ASSERT((Right % BOOTCHAR_WIDTH) == BOOTCHAR_WIDTH - 1);
60
61 /* Set the scroll region */
64 VidpScrollRegion.Right = Right;
66
67 /* Set the current X and Y */
68 VidpCurrentX = Left;
70}
static LPHIST_ENTRY Bottom
Definition: history.c:54
#define ASSERT(a)
Definition: mode.c:44
ULONG Top
Definition: precomp.h:63

Referenced by InbvSetScrollRegion().

◆ VidSetTextColor()

ULONG NTAPI VidSetTextColor ( _In_ ULONG  Color)

Definition at line 38 of file console.c.

40{
41 ULONG OldColor;
42
43 /* Save the old color and set the new one */
44 OldColor = VidpTextColor;
46 return OldColor;
47}

Referenced by InbvSetTextColor().

Variable Documentation

◆ ClearRow

BOOLEAN ClearRow = FALSE
static

Definition at line 19 of file console.c.

Referenced by VidDisplayString().

◆ VidpCurrentX

ULONG VidpCurrentX = 0

Definition at line 15 of file console.c.

Referenced by VidDisplayString(), VidInitialize(), VidResetDisplay(), and VidSetScrollRegion().

◆ VidpCurrentY

ULONG VidpCurrentY = 0

Definition at line 16 of file console.c.

Referenced by VidDisplayString(), VidInitialize(), VidResetDisplay(), and VidSetScrollRegion().

◆ VidpScrollRegion

URECT VidpScrollRegion = {0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1}

Definition at line 17 of file console.c.

Referenced by DoScroll(), VidDisplayString(), and VidSetScrollRegion().

◆ VidpTextColor

UCHAR VidpTextColor = BV_COLOR_WHITE

Definition at line 14 of file console.c.

Referenced by VidDisplayString(), and VidSetTextColor().