xref: /freebsd-src/sys/contrib/edk2/Include/Protocol/SimpleTextOut.h (revision 0d1ba6657e90b1f9b76e1c393b1555d6cf6cf260)
1*0d1ba665SWarner Losh /** @file
2*0d1ba665SWarner Losh   Simple Text Out protocol from the UEFI 2.0 specification.
3*0d1ba665SWarner Losh 
4*0d1ba665SWarner Losh   Abstraction of a very simple text based output device like VGA text mode or
5*0d1ba665SWarner Losh   a serial terminal. The Simple Text Out protocol instance can represent
6*0d1ba665SWarner Losh   a single hardware device or a virtual device that is an aggregation
7*0d1ba665SWarner Losh   of multiple physical devices.
8*0d1ba665SWarner Losh 
9*0d1ba665SWarner Losh Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
10*0d1ba665SWarner Losh This program and the accompanying materials are licensed and made available under
11*0d1ba665SWarner Losh the terms and conditions of the BSD License that accompanies this distribution.
12*0d1ba665SWarner Losh The full text of the license may be found at
13*0d1ba665SWarner Losh http://opensource.org/licenses/bsd-license.php.
14*0d1ba665SWarner Losh 
15*0d1ba665SWarner Losh THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16*0d1ba665SWarner Losh WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17*0d1ba665SWarner Losh 
18*0d1ba665SWarner Losh **/
19*0d1ba665SWarner Losh 
20*0d1ba665SWarner Losh #ifndef __SIMPLE_TEXT_OUT_H__
21*0d1ba665SWarner Losh #define __SIMPLE_TEXT_OUT_H__
22*0d1ba665SWarner Losh 
23*0d1ba665SWarner Losh #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \
24*0d1ba665SWarner Losh   { \
25*0d1ba665SWarner Losh     0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
26*0d1ba665SWarner Losh   }
27*0d1ba665SWarner Losh 
28*0d1ba665SWarner Losh ///
29*0d1ba665SWarner Losh /// Protocol GUID defined in EFI1.1.
30*0d1ba665SWarner Losh ///
31*0d1ba665SWarner Losh #define SIMPLE_TEXT_OUTPUT_PROTOCOL   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID
32*0d1ba665SWarner Losh 
33*0d1ba665SWarner Losh typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
34*0d1ba665SWarner Losh 
35*0d1ba665SWarner Losh ///
36*0d1ba665SWarner Losh /// Backward-compatible with EFI1.1.
37*0d1ba665SWarner Losh ///
38*0d1ba665SWarner Losh typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL   SIMPLE_TEXT_OUTPUT_INTERFACE;
39*0d1ba665SWarner Losh 
40*0d1ba665SWarner Losh //
41*0d1ba665SWarner Losh // Define's for required EFI Unicode Box Draw characters
42*0d1ba665SWarner Losh //
43*0d1ba665SWarner Losh #define BOXDRAW_HORIZONTAL                  0x2500
44*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL                    0x2502
45*0d1ba665SWarner Losh #define BOXDRAW_DOWN_RIGHT                  0x250c
46*0d1ba665SWarner Losh #define BOXDRAW_DOWN_LEFT                   0x2510
47*0d1ba665SWarner Losh #define BOXDRAW_UP_RIGHT                    0x2514
48*0d1ba665SWarner Losh #define BOXDRAW_UP_LEFT                     0x2518
49*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_RIGHT              0x251c
50*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_LEFT               0x2524
51*0d1ba665SWarner Losh #define BOXDRAW_DOWN_HORIZONTAL             0x252c
52*0d1ba665SWarner Losh #define BOXDRAW_UP_HORIZONTAL               0x2534
53*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_HORIZONTAL         0x253c
54*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_HORIZONTAL           0x2550
55*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL             0x2551
56*0d1ba665SWarner Losh #define BOXDRAW_DOWN_RIGHT_DOUBLE           0x2552
57*0d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_RIGHT           0x2553
58*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_RIGHT           0x2554
59*0d1ba665SWarner Losh #define BOXDRAW_DOWN_LEFT_DOUBLE            0x2555
60*0d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_LEFT            0x2556
61*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_LEFT            0x2557
62*0d1ba665SWarner Losh #define BOXDRAW_UP_RIGHT_DOUBLE             0x2558
63*0d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_RIGHT             0x2559
64*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_RIGHT             0x255a
65*0d1ba665SWarner Losh #define BOXDRAW_UP_LEFT_DOUBLE              0x255b
66*0d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_LEFT              0x255c
67*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_LEFT              0x255d
68*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_RIGHT_DOUBLE       0x255e
69*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_RIGHT       0x255f
70*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_RIGHT       0x2560
71*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_LEFT_DOUBLE        0x2561
72*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_LEFT        0x2562
73*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_LEFT        0x2563
74*0d1ba665SWarner Losh #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE      0x2564
75*0d1ba665SWarner Losh #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL      0x2565
76*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL      0x2566
77*0d1ba665SWarner Losh #define BOXDRAW_UP_HORIZONTAL_DOUBLE        0x2567
78*0d1ba665SWarner Losh #define BOXDRAW_UP_DOUBLE_HORIZONTAL        0x2568
79*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_UP_HORIZONTAL        0x2569
80*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE  0x256a
81*0d1ba665SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL  0x256b
82*0d1ba665SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL  0x256c
83*0d1ba665SWarner Losh 
84*0d1ba665SWarner Losh //
85*0d1ba665SWarner Losh // EFI Required Block Elements Code Chart
86*0d1ba665SWarner Losh //
87*0d1ba665SWarner Losh #define BLOCKELEMENT_FULL_BLOCK   0x2588
88*0d1ba665SWarner Losh #define BLOCKELEMENT_LIGHT_SHADE  0x2591
89*0d1ba665SWarner Losh 
90*0d1ba665SWarner Losh //
91*0d1ba665SWarner Losh // EFI Required Geometric Shapes Code Chart
92*0d1ba665SWarner Losh //
93*0d1ba665SWarner Losh #define GEOMETRICSHAPE_UP_TRIANGLE    0x25b2
94*0d1ba665SWarner Losh #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
95*0d1ba665SWarner Losh #define GEOMETRICSHAPE_DOWN_TRIANGLE  0x25bc
96*0d1ba665SWarner Losh #define GEOMETRICSHAPE_LEFT_TRIANGLE  0x25c4
97*0d1ba665SWarner Losh 
98*0d1ba665SWarner Losh //
99*0d1ba665SWarner Losh // EFI Required Arrow shapes
100*0d1ba665SWarner Losh //
101*0d1ba665SWarner Losh #define ARROW_LEFT  0x2190
102*0d1ba665SWarner Losh #define ARROW_UP    0x2191
103*0d1ba665SWarner Losh #define ARROW_RIGHT 0x2192
104*0d1ba665SWarner Losh #define ARROW_DOWN  0x2193
105*0d1ba665SWarner Losh 
106*0d1ba665SWarner Losh //
107*0d1ba665SWarner Losh // EFI Console Colours
108*0d1ba665SWarner Losh //
109*0d1ba665SWarner Losh #define EFI_BLACK                 0x00
110*0d1ba665SWarner Losh #define EFI_BLUE                  0x01
111*0d1ba665SWarner Losh #define EFI_GREEN                 0x02
112*0d1ba665SWarner Losh #define EFI_CYAN                  (EFI_BLUE | EFI_GREEN)
113*0d1ba665SWarner Losh #define EFI_RED                   0x04
114*0d1ba665SWarner Losh #define EFI_MAGENTA               (EFI_BLUE | EFI_RED)
115*0d1ba665SWarner Losh #define EFI_BROWN                 (EFI_GREEN | EFI_RED)
116*0d1ba665SWarner Losh #define EFI_LIGHTGRAY             (EFI_BLUE | EFI_GREEN | EFI_RED)
117*0d1ba665SWarner Losh #define EFI_BRIGHT                0x08
118*0d1ba665SWarner Losh #define EFI_DARKGRAY              (EFI_BLACK | EFI_BRIGHT)
119*0d1ba665SWarner Losh #define EFI_LIGHTBLUE             (EFI_BLUE | EFI_BRIGHT)
120*0d1ba665SWarner Losh #define EFI_LIGHTGREEN            (EFI_GREEN | EFI_BRIGHT)
121*0d1ba665SWarner Losh #define EFI_LIGHTCYAN             (EFI_CYAN | EFI_BRIGHT)
122*0d1ba665SWarner Losh #define EFI_LIGHTRED              (EFI_RED | EFI_BRIGHT)
123*0d1ba665SWarner Losh #define EFI_LIGHTMAGENTA          (EFI_MAGENTA | EFI_BRIGHT)
124*0d1ba665SWarner Losh #define EFI_YELLOW                (EFI_BROWN | EFI_BRIGHT)
125*0d1ba665SWarner Losh #define EFI_WHITE                 (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
126*0d1ba665SWarner Losh 
127*0d1ba665SWarner Losh //
128*0d1ba665SWarner Losh // Macro to accept color values in their raw form to create
129*0d1ba665SWarner Losh // a value that represents both a foreground and background
130*0d1ba665SWarner Losh // color in a single byte.
131*0d1ba665SWarner Losh // For Foreground, and EFI_* value is valid from EFI_BLACK(0x00) to
132*0d1ba665SWarner Losh // EFI_WHITE (0x0F).
133*0d1ba665SWarner Losh // For Background, only EFI_BLACK, EFI_BLUE, EFI_GREEN, EFI_CYAN,
134*0d1ba665SWarner Losh // EFI_RED, EFI_MAGENTA, EFI_BROWN, and EFI_LIGHTGRAY are acceptable
135*0d1ba665SWarner Losh //
136*0d1ba665SWarner Losh // Do not use EFI_BACKGROUND_xxx values with this macro.
137*0d1ba665SWarner Losh //
138*0d1ba665SWarner Losh #define EFI_TEXT_ATTR(Foreground,Background) ((Foreground) | ((Background) << 4))
139*0d1ba665SWarner Losh 
140*0d1ba665SWarner Losh #define EFI_BACKGROUND_BLACK      0x00
141*0d1ba665SWarner Losh #define EFI_BACKGROUND_BLUE       0x10
142*0d1ba665SWarner Losh #define EFI_BACKGROUND_GREEN      0x20
143*0d1ba665SWarner Losh #define EFI_BACKGROUND_CYAN       (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
144*0d1ba665SWarner Losh #define EFI_BACKGROUND_RED        0x40
145*0d1ba665SWarner Losh #define EFI_BACKGROUND_MAGENTA    (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
146*0d1ba665SWarner Losh #define EFI_BACKGROUND_BROWN      (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
147*0d1ba665SWarner Losh #define EFI_BACKGROUND_LIGHTGRAY  (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
148*0d1ba665SWarner Losh 
149*0d1ba665SWarner Losh //
150*0d1ba665SWarner Losh // We currently define attributes from 0 - 7F for color manipulations
151*0d1ba665SWarner Losh // To internally handle the local display characteristics for a particular character,
152*0d1ba665SWarner Losh // Bit 7 signifies the local glyph representation for a character.  If turned on, glyphs will be
153*0d1ba665SWarner Losh // pulled from the wide glyph database and will display locally as a wide character (16 X 19 versus 8 X 19)
154*0d1ba665SWarner Losh // If bit 7 is off, the narrow glyph database will be used.  This does NOT affect information that is sent to
155*0d1ba665SWarner Losh // non-local displays, such as serial or LAN consoles.
156*0d1ba665SWarner Losh //
157*0d1ba665SWarner Losh #define EFI_WIDE_ATTRIBUTE  0x80
158*0d1ba665SWarner Losh 
159*0d1ba665SWarner Losh /**
160*0d1ba665SWarner Losh   Reset the text output device hardware and optionaly run diagnostics
161*0d1ba665SWarner Losh 
162*0d1ba665SWarner Losh   @param  This                 The protocol instance pointer.
163*0d1ba665SWarner Losh   @param  ExtendedVerification Driver may perform more exhaustive verification
164*0d1ba665SWarner Losh                                operation of the device during reset.
165*0d1ba665SWarner Losh 
166*0d1ba665SWarner Losh   @retval EFI_SUCCESS          The text output device was reset.
167*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR     The text output device is not functioning correctly and
168*0d1ba665SWarner Losh                                could not be reset.
169*0d1ba665SWarner Losh 
170*0d1ba665SWarner Losh **/
171*0d1ba665SWarner Losh typedef
172*0d1ba665SWarner Losh EFI_STATUS
173*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_RESET)(
174*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
175*0d1ba665SWarner Losh   IN BOOLEAN                                ExtendedVerification
176*0d1ba665SWarner Losh   );
177*0d1ba665SWarner Losh 
178*0d1ba665SWarner Losh /**
179*0d1ba665SWarner Losh   Write a string to the output device.
180*0d1ba665SWarner Losh 
181*0d1ba665SWarner Losh   @param  This   The protocol instance pointer.
182*0d1ba665SWarner Losh   @param  String The NULL-terminated string to be displayed on the output
183*0d1ba665SWarner Losh                  device(s). All output devices must also support the Unicode
184*0d1ba665SWarner Losh                  drawing character codes defined in this file.
185*0d1ba665SWarner Losh 
186*0d1ba665SWarner Losh   @retval EFI_SUCCESS             The string was output to the device.
187*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR        The device reported an error while attempting to output
188*0d1ba665SWarner Losh                                   the text.
189*0d1ba665SWarner Losh   @retval EFI_UNSUPPORTED         The output device's mode is not currently in a
190*0d1ba665SWarner Losh                                   defined text mode.
191*0d1ba665SWarner Losh   @retval EFI_WARN_UNKNOWN_GLYPH  This warning code indicates that some of the
192*0d1ba665SWarner Losh                                   characters in the string could not be
193*0d1ba665SWarner Losh                                   rendered and were skipped.
194*0d1ba665SWarner Losh 
195*0d1ba665SWarner Losh **/
196*0d1ba665SWarner Losh typedef
197*0d1ba665SWarner Losh EFI_STATUS
198*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_STRING)(
199*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
200*0d1ba665SWarner Losh   IN CHAR16                                 *String
201*0d1ba665SWarner Losh   );
202*0d1ba665SWarner Losh 
203*0d1ba665SWarner Losh /**
204*0d1ba665SWarner Losh   Verifies that all characters in a string can be output to the
205*0d1ba665SWarner Losh   target device.
206*0d1ba665SWarner Losh 
207*0d1ba665SWarner Losh   @param  This   The protocol instance pointer.
208*0d1ba665SWarner Losh   @param  String The NULL-terminated string to be examined for the output
209*0d1ba665SWarner Losh                  device(s).
210*0d1ba665SWarner Losh 
211*0d1ba665SWarner Losh   @retval EFI_SUCCESS      The device(s) are capable of rendering the output string.
212*0d1ba665SWarner Losh   @retval EFI_UNSUPPORTED  Some of the characters in the string cannot be
213*0d1ba665SWarner Losh                            rendered by one or more of the output devices mapped
214*0d1ba665SWarner Losh                            by the EFI handle.
215*0d1ba665SWarner Losh 
216*0d1ba665SWarner Losh **/
217*0d1ba665SWarner Losh typedef
218*0d1ba665SWarner Losh EFI_STATUS
219*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_TEST_STRING)(
220*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
221*0d1ba665SWarner Losh   IN CHAR16                                 *String
222*0d1ba665SWarner Losh   );
223*0d1ba665SWarner Losh 
224*0d1ba665SWarner Losh /**
225*0d1ba665SWarner Losh   Returns information for an available text mode that the output device(s)
226*0d1ba665SWarner Losh   supports.
227*0d1ba665SWarner Losh 
228*0d1ba665SWarner Losh   @param  This       The protocol instance pointer.
229*0d1ba665SWarner Losh   @param  ModeNumber The mode number to return information on.
230*0d1ba665SWarner Losh   @param  Columns    Returns the geometry of the text output device for the
231*0d1ba665SWarner Losh                      requested ModeNumber.
232*0d1ba665SWarner Losh   @param  Rows       Returns the geometry of the text output device for the
233*0d1ba665SWarner Losh                      requested ModeNumber.
234*0d1ba665SWarner Losh 
235*0d1ba665SWarner Losh   @retval EFI_SUCCESS      The requested mode information was returned.
236*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
237*0d1ba665SWarner Losh   @retval EFI_UNSUPPORTED  The mode number was not valid.
238*0d1ba665SWarner Losh 
239*0d1ba665SWarner Losh **/
240*0d1ba665SWarner Losh typedef
241*0d1ba665SWarner Losh EFI_STATUS
242*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_QUERY_MODE)(
243*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
244*0d1ba665SWarner Losh   IN UINTN                                  ModeNumber,
245*0d1ba665SWarner Losh   OUT UINTN                                 *Columns,
246*0d1ba665SWarner Losh   OUT UINTN                                 *Rows
247*0d1ba665SWarner Losh   );
248*0d1ba665SWarner Losh 
249*0d1ba665SWarner Losh /**
250*0d1ba665SWarner Losh   Sets the output device(s) to a specified mode.
251*0d1ba665SWarner Losh 
252*0d1ba665SWarner Losh   @param  This       The protocol instance pointer.
253*0d1ba665SWarner Losh   @param  ModeNumber The mode number to set.
254*0d1ba665SWarner Losh 
255*0d1ba665SWarner Losh   @retval EFI_SUCCESS      The requested text mode was set.
256*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
257*0d1ba665SWarner Losh   @retval EFI_UNSUPPORTED  The mode number was not valid.
258*0d1ba665SWarner Losh 
259*0d1ba665SWarner Losh **/
260*0d1ba665SWarner Losh typedef
261*0d1ba665SWarner Losh EFI_STATUS
262*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_MODE)(
263*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
264*0d1ba665SWarner Losh   IN UINTN                                  ModeNumber
265*0d1ba665SWarner Losh   );
266*0d1ba665SWarner Losh 
267*0d1ba665SWarner Losh /**
268*0d1ba665SWarner Losh   Sets the background and foreground colors for the OutputString () and
269*0d1ba665SWarner Losh   ClearScreen () functions.
270*0d1ba665SWarner Losh 
271*0d1ba665SWarner Losh   @param  This      The protocol instance pointer.
272*0d1ba665SWarner Losh   @param  Attribute The attribute to set. Bits 0..3 are the foreground color, and
273*0d1ba665SWarner Losh                     bits 4..6 are the background color. All other bits are undefined
274*0d1ba665SWarner Losh                     and must be zero. The valid Attributes are defined in this file.
275*0d1ba665SWarner Losh 
276*0d1ba665SWarner Losh   @retval EFI_SUCCESS       The attribute was set.
277*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR  The device had an error and could not complete the request.
278*0d1ba665SWarner Losh   @retval EFI_UNSUPPORTED   The attribute requested is not defined.
279*0d1ba665SWarner Losh 
280*0d1ba665SWarner Losh **/
281*0d1ba665SWarner Losh typedef
282*0d1ba665SWarner Losh EFI_STATUS
283*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_ATTRIBUTE)(
284*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
285*0d1ba665SWarner Losh   IN UINTN                                  Attribute
286*0d1ba665SWarner Losh   );
287*0d1ba665SWarner Losh 
288*0d1ba665SWarner Losh /**
289*0d1ba665SWarner Losh   Clears the output device(s) display to the currently selected background
290*0d1ba665SWarner Losh   color.
291*0d1ba665SWarner Losh 
292*0d1ba665SWarner Losh   @param  This              The protocol instance pointer.
293*0d1ba665SWarner Losh 
294*0d1ba665SWarner Losh   @retval  EFI_SUCCESS      The operation completed successfully.
295*0d1ba665SWarner Losh   @retval  EFI_DEVICE_ERROR The device had an error and could not complete the request.
296*0d1ba665SWarner Losh   @retval  EFI_UNSUPPORTED  The output device is not in a valid text mode.
297*0d1ba665SWarner Losh 
298*0d1ba665SWarner Losh **/
299*0d1ba665SWarner Losh typedef
300*0d1ba665SWarner Losh EFI_STATUS
301*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_CLEAR_SCREEN)(
302*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL   *This
303*0d1ba665SWarner Losh   );
304*0d1ba665SWarner Losh 
305*0d1ba665SWarner Losh /**
306*0d1ba665SWarner Losh   Sets the current coordinates of the cursor position
307*0d1ba665SWarner Losh 
308*0d1ba665SWarner Losh   @param  This        The protocol instance pointer.
309*0d1ba665SWarner Losh   @param  Column      The position to set the cursor to. Must be greater than or
310*0d1ba665SWarner Losh                       equal to zero and less than the number of columns and rows
311*0d1ba665SWarner Losh                       by QueryMode ().
312*0d1ba665SWarner Losh   @param  Row         The position to set the cursor to. Must be greater than or
313*0d1ba665SWarner Losh                       equal to zero and less than the number of columns and rows
314*0d1ba665SWarner Losh                       by QueryMode ().
315*0d1ba665SWarner Losh 
316*0d1ba665SWarner Losh   @retval EFI_SUCCESS      The operation completed successfully.
317*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
318*0d1ba665SWarner Losh   @retval EFI_UNSUPPORTED  The output device is not in a valid text mode, or the
319*0d1ba665SWarner Losh                            cursor position is invalid for the current mode.
320*0d1ba665SWarner Losh 
321*0d1ba665SWarner Losh **/
322*0d1ba665SWarner Losh typedef
323*0d1ba665SWarner Losh EFI_STATUS
324*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)(
325*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
326*0d1ba665SWarner Losh   IN UINTN                                  Column,
327*0d1ba665SWarner Losh   IN UINTN                                  Row
328*0d1ba665SWarner Losh   );
329*0d1ba665SWarner Losh 
330*0d1ba665SWarner Losh /**
331*0d1ba665SWarner Losh   Makes the cursor visible or invisible
332*0d1ba665SWarner Losh 
333*0d1ba665SWarner Losh   @param  This    The protocol instance pointer.
334*0d1ba665SWarner Losh   @param  Visible If TRUE, the cursor is set to be visible. If FALSE, the cursor is
335*0d1ba665SWarner Losh                   set to be invisible.
336*0d1ba665SWarner Losh 
337*0d1ba665SWarner Losh   @retval EFI_SUCCESS      The operation completed successfully.
338*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR The device had an error and could not complete the
339*0d1ba665SWarner Losh                            request, or the device does not support changing
340*0d1ba665SWarner Losh                            the cursor mode.
341*0d1ba665SWarner Losh   @retval EFI_UNSUPPORTED  The output device is not in a valid text mode.
342*0d1ba665SWarner Losh 
343*0d1ba665SWarner Losh **/
344*0d1ba665SWarner Losh typedef
345*0d1ba665SWarner Losh EFI_STATUS
346*0d1ba665SWarner Losh (EFIAPI *EFI_TEXT_ENABLE_CURSOR)(
347*0d1ba665SWarner Losh   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
348*0d1ba665SWarner Losh   IN BOOLEAN                                Visible
349*0d1ba665SWarner Losh   );
350*0d1ba665SWarner Losh 
351*0d1ba665SWarner Losh /**
352*0d1ba665SWarner Losh   @par Data Structure Description:
353*0d1ba665SWarner Losh   Mode Structure pointed to by Simple Text Out protocol.
354*0d1ba665SWarner Losh **/
355*0d1ba665SWarner Losh typedef struct {
356*0d1ba665SWarner Losh   ///
357*0d1ba665SWarner Losh   /// The number of modes supported by QueryMode () and SetMode ().
358*0d1ba665SWarner Losh   ///
359*0d1ba665SWarner Losh   INT32   MaxMode;
360*0d1ba665SWarner Losh 
361*0d1ba665SWarner Losh   //
362*0d1ba665SWarner Losh   // current settings
363*0d1ba665SWarner Losh   //
364*0d1ba665SWarner Losh 
365*0d1ba665SWarner Losh   ///
366*0d1ba665SWarner Losh   /// The text mode of the output device(s).
367*0d1ba665SWarner Losh   ///
368*0d1ba665SWarner Losh   INT32   Mode;
369*0d1ba665SWarner Losh   ///
370*0d1ba665SWarner Losh   /// The current character output attribute.
371*0d1ba665SWarner Losh   ///
372*0d1ba665SWarner Losh   INT32   Attribute;
373*0d1ba665SWarner Losh   ///
374*0d1ba665SWarner Losh   /// The cursor's column.
375*0d1ba665SWarner Losh   ///
376*0d1ba665SWarner Losh   INT32   CursorColumn;
377*0d1ba665SWarner Losh   ///
378*0d1ba665SWarner Losh   /// The cursor's row.
379*0d1ba665SWarner Losh   ///
380*0d1ba665SWarner Losh   INT32   CursorRow;
381*0d1ba665SWarner Losh   ///
382*0d1ba665SWarner Losh   /// The cursor is currently visbile or not.
383*0d1ba665SWarner Losh   ///
384*0d1ba665SWarner Losh   BOOLEAN CursorVisible;
385*0d1ba665SWarner Losh } EFI_SIMPLE_TEXT_OUTPUT_MODE;
386*0d1ba665SWarner Losh 
387*0d1ba665SWarner Losh ///
388*0d1ba665SWarner Losh /// The SIMPLE_TEXT_OUTPUT protocol is used to control text-based output devices.
389*0d1ba665SWarner Losh /// It is the minimum required protocol for any handle supplied as the ConsoleOut
390*0d1ba665SWarner Losh /// or StandardError device. In addition, the minimum supported text mode of such
391*0d1ba665SWarner Losh /// devices is at least 80 x 25 characters.
392*0d1ba665SWarner Losh ///
393*0d1ba665SWarner Losh struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
394*0d1ba665SWarner Losh   EFI_TEXT_RESET                Reset;
395*0d1ba665SWarner Losh 
396*0d1ba665SWarner Losh   EFI_TEXT_STRING               OutputString;
397*0d1ba665SWarner Losh   EFI_TEXT_TEST_STRING          TestString;
398*0d1ba665SWarner Losh 
399*0d1ba665SWarner Losh   EFI_TEXT_QUERY_MODE           QueryMode;
400*0d1ba665SWarner Losh   EFI_TEXT_SET_MODE             SetMode;
401*0d1ba665SWarner Losh   EFI_TEXT_SET_ATTRIBUTE        SetAttribute;
402*0d1ba665SWarner Losh 
403*0d1ba665SWarner Losh   EFI_TEXT_CLEAR_SCREEN         ClearScreen;
404*0d1ba665SWarner Losh   EFI_TEXT_SET_CURSOR_POSITION  SetCursorPosition;
405*0d1ba665SWarner Losh   EFI_TEXT_ENABLE_CURSOR        EnableCursor;
406*0d1ba665SWarner Losh 
407*0d1ba665SWarner Losh   ///
408*0d1ba665SWarner Losh   /// Pointer to SIMPLE_TEXT_OUTPUT_MODE data.
409*0d1ba665SWarner Losh   ///
410*0d1ba665SWarner Losh   EFI_SIMPLE_TEXT_OUTPUT_MODE   *Mode;
411*0d1ba665SWarner Losh };
412*0d1ba665SWarner Losh 
413*0d1ba665SWarner Losh extern EFI_GUID gEfiSimpleTextOutProtocolGuid;
414*0d1ba665SWarner Losh 
415*0d1ba665SWarner Losh #endif
416