+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- SimpleTextOut.h\r
-\r
-Abstract:\r
-\r
- Simple Text Out protocol from the EFI 1.0 specification.\r
-\r
- Abstraction of a very simple text based output device like VGA text mode or\r
- a serial terminal. The Simple Text Out protocol instance can represent\r
- a single hardware device or a virtual device that is an agregation\r
- of multiple physical devices.\r
-\r
---*/\r
-\r
-#ifndef _SIMPLE_TEXT_OUT_H_\r
-#define _SIMPLE_TEXT_OUT_H_\r
-\r
-#define EFI_SIMPLE_TEXT_OUT_PROTOCOL_GUID \\r
- { \\r
- 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} \\r
- }\r
-\r
-EFI_FORWARD_DECLARATION (EFI_SIMPLE_TEXT_OUT_PROTOCOL);\r
-\r
-//\r
-// Define's for required EFI Unicode Box Draw characters\r
-//\r
-#define BOXDRAW_HORIZONTAL 0x2500\r
-#define BOXDRAW_VERTICAL 0x2502\r
-#define BOXDRAW_DOWN_RIGHT 0x250c\r
-#define BOXDRAW_DOWN_LEFT 0x2510\r
-#define BOXDRAW_UP_RIGHT 0x2514\r
-#define BOXDRAW_UP_LEFT 0x2518\r
-#define BOXDRAW_VERTICAL_RIGHT 0x251c\r
-#define BOXDRAW_VERTICAL_LEFT 0x2524\r
-#define BOXDRAW_DOWN_HORIZONTAL 0x252c\r
-#define BOXDRAW_UP_HORIZONTAL 0x2534\r
-#define BOXDRAW_VERTICAL_HORIZONTAL 0x253c\r
-#define BOXDRAW_DOUBLE_HORIZONTAL 0x2550\r
-#define BOXDRAW_DOUBLE_VERTICAL 0x2551\r
-#define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552\r
-#define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553\r
-#define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554\r
-#define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555\r
-#define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556\r
-#define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557\r
-#define BOXDRAW_UP_RIGHT_DOUBLE 0x2558\r
-#define BOXDRAW_UP_DOUBLE_RIGHT 0x2559\r
-#define BOXDRAW_DOUBLE_UP_RIGHT 0x255a\r
-#define BOXDRAW_UP_LEFT_DOUBLE 0x255b\r
-#define BOXDRAW_UP_DOUBLE_LEFT 0x255c\r
-#define BOXDRAW_DOUBLE_UP_LEFT 0x255d\r
-#define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e\r
-#define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f\r
-#define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560\r
-#define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561\r
-#define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562\r
-#define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563\r
-#define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564\r
-#define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565\r
-#define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566\r
-#define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567\r
-#define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568\r
-#define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569\r
-#define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a\r
-#define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b\r
-#define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c\r
-\r
-//\r
-// EFI Required Block Elements Code Chart\r
-//\r
-#define BLOCKELEMENT_FULL_BLOCK 0x2588\r
-#define BLOCKELEMENT_LIGHT_SHADE 0x2591\r
-\r
-//\r
-// EFI Required Geometric Shapes Code Chart\r
-//\r
-#define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2\r
-#define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba\r
-#define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc\r
-#define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4\r
-\r
-//\r
-// EFI Required Arrow shapes\r
-//\r
-#define ARROW_LEFT 0x2190\r
-#define ARROW_UP 0x2191\r
-#define ARROW_RIGHT 0x2192\r
-#define ARROW_DOWN 0x2193\r
-\r
-//\r
-// EFI Console Colours\r
-//\r
-#define EFI_BLACK 0x00\r
-#define EFI_BLUE 0x01\r
-#define EFI_GREEN 0x02\r
-#define EFI_CYAN (EFI_BLUE | EFI_GREEN)\r
-#define EFI_RED 0x04\r
-#define EFI_MAGENTA (EFI_BLUE | EFI_RED)\r
-#define EFI_BROWN (EFI_GREEN | EFI_RED)\r
-#define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)\r
-#define EFI_BRIGHT 0x08\r
-#define EFI_DARKGRAY (EFI_BRIGHT)\r
-#define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)\r
-#define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)\r
-#define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)\r
-#define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT)\r
-#define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT)\r
-#define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)\r
-#define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)\r
-\r
-#define EFI_TEXT_ATTR(f, b) ((f) | ((b) << 4))\r
-\r
-#define EFI_BACKGROUND_BLACK 0x00\r
-#define EFI_BACKGROUND_BLUE 0x10\r
-#define EFI_BACKGROUND_GREEN 0x20\r
-#define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)\r
-#define EFI_BACKGROUND_RED 0x40\r
-#define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)\r
-#define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)\r
-#define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)\r
-\r
-//\r
-// We currently define attributes from 0 - 7F for color manipulations\r
-// To internally handle the local display characteristics for a particular character, we are defining\r
-// Bit 7 to signify the local glyph representation for a character. If turned on, glyphs will be\r
-// pulled from the wide glyph database and will display locally as a wide character (16 X 19 versus 8 X 19)\r
-// If bit 7 is off, the narrow glyph database will be used. This does NOT affect information that is sent to\r
-// non-local displays (e.g. serial or LAN consoles).\r
-//\r
-#define EFI_WIDE_ATTRIBUTE 0x80\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_RESET) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This,\r
- IN BOOLEAN ExtendedVerification\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Reset the text output device hardware and optionaly run diagnostics\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- ExtendedVerification - Driver may perform more exhaustive verfication \r
- operation of the device during reset.\r
-\r
- Returns:\r
- EFI_SUCCESS - The text output device was reset.\r
- EFI_DEVICE_ERROR - The text output device is not functioning correctly and\r
- could not be reset.\r
-\r
---*/\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_OUTPUT_STRING) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This,\r
- IN CHAR16 *String\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Write a Unicode string to the output device.\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- String - The NULL-terminated Unicode string to be displayed on the output\r
- device(s). All output devices must also support the Unicode \r
- drawing defined in this file.\r
-\r
- Returns:\r
- EFI_SUCCESS - The string was output to the device.\r
- EFI_DEVICE_ERROR - The device reported an error while attempting to output\r
- the text.\r
- EFI_UNSUPPORTED - The output device's mode is not currently in a \r
- defined text mode.\r
- EFI_WARN_UNKNOWN_GLYPH - This warning code indicates that some of the \r
- characters in the Unicode string could not be \r
- rendered and were skipped.\r
-\r
---*/\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_TEST_STRING) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This,\r
- IN CHAR16 *String\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Verifies that all characters in a Unicode string can be output to the \r
- target device.\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- String - The NULL-terminated Unicode string to be examined for the output\r
- device(s).\r
-\r
- Returns:\r
- EFI_SUCCESS - The device(s) are capable of rendering the output string.\r
- EFI_UNSUPPORTED - Some of the characters in the Unicode string cannot be \r
- rendered by one or more of the output devices mapped \r
- by the EFI handle.\r
-\r
---*/\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_QUERY_MODE) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This,\r
- IN UINTN ModeNumber,\r
- OUT UINTN *Columns,\r
- OUT UINTN *Rows\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Returns information for an available text mode that the output device(s)\r
- supports.\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- ModeNumber - The mode number to return information on.\r
- Columns, Rows - Returns the geometry of the text output device for the\r
- requested ModeNumber.\r
-\r
- Returns:\r
- EFI_SUCCESS - The requested mode information was returned.\r
- EFI_DEVICE_ERROR - The device had an error and could not complete the request.\r
- EFI_UNSUPPORTED - The mode number was not valid.\r
-\r
---*/\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_SET_MODE) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This,\r
- IN UINTN ModeNumber\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Sets the output device(s) to a specified mode.\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- ModeNumber - The mode number to set.\r
-\r
- Returns:\r
- EFI_SUCCESS - The requested text mode was set.\r
- EFI_DEVICE_ERROR - The device had an error and could not complete the request.\r
- EFI_UNSUPPORTED - The mode number was not valid.\r
-\r
---*/\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This,\r
- IN UINTN Attribute\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Sets the background and foreground colors for the OutputString () and\r
- ClearScreen () functions.\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- Attribute - The attribute to set. Bits 0..3 are the foreground color, and\r
- bits 4..6 are the background color. All other bits are undefined\r
- and must be zero. The valid Attributes are defined in this file.\r
-\r
- Returns:\r
- EFI_SUCCESS - The attribute was set.\r
- EFI_DEVICE_ERROR - The device had an error and could not complete the request.\r
- EFI_UNSUPPORTED - The attribute requested is not defined.\r
-\r
---*/\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_CLEAR_SCREEN) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Clears the output device(s) display to the currently selected background \r
- color.\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
-\r
- Returns:\r
- EFI_SUCCESS - The operation completed successfully.\r
- EFI_DEVICE_ERROR - The device had an error and could not complete the request.\r
- EFI_UNSUPPORTED - The output device is not in a valid text mode.\r
-\r
---*/\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This,\r
- IN UINTN Column,\r
- IN UINTN Row\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Sets the current coordinates of the cursor position\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- Column, Row - the position to set the cursor to. Must be greater than or\r
- equal to zero and less than the number of columns and rows\r
- by QueryMode ().\r
-\r
- Returns:\r
- EFI_SUCCESS - The operation completed successfully.\r
- EFI_DEVICE_ERROR - The device had an error and could not complete the request.\r
- EFI_UNSUPPORTED - The output device is not in a valid text mode, or the \r
- cursor position is invalid for the current mode.\r
-\r
---*/\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TEXT_ENABLE_CURSOR) (\r
- IN EFI_SIMPLE_TEXT_OUT_PROTOCOL * This,\r
- IN BOOLEAN Enable\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Makes the cursor visible or invisible\r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- Visible - If TRUE, the cursor is set to be visible. If FALSE, the cursor is\r
- set to be invisible.\r
-\r
- Returns:\r
- EFI_SUCCESS - The operation completed successfully.\r
- EFI_DEVICE_ERROR - The device had an error and could not complete the \r
- request, or the device does not support changing\r
- the cursor mode.\r
- EFI_UNSUPPORTED - The output device is not in a valid text mode.\r
-\r
---*/\r
-;\r
-\r
-/*++\r
- Mode Structure pointed to by Simple Text Out protocol.\r
-\r
- MaxMode - The number of modes supported by QueryMode () and SetMode ().\r
- Mode - The text mode of the output device(s).\r
- Attribute - The current character output attribute\r
- CursorColumn - The cursor's column.\r
- CursorRow - The cursor's row.\r
- CursorVisible - The cursor is currently visbile or not.\r
- \r
---*/\r
-typedef struct {\r
- INT32 MaxMode;\r
-\r
- //\r
- // current settings\r
- //\r
- INT32 Mode;\r
- INT32 Attribute;\r
- INT32 CursorColumn;\r
- INT32 CursorRow;\r
- BOOLEAN CursorVisible;\r
-} EFI_SIMPLE_TEXT_OUTPUT_MODE;\r
-\r
-struct _EFI_SIMPLE_TEXT_OUT_PROTOCOL {\r
- EFI_TEXT_RESET Reset;\r
-\r
- EFI_TEXT_OUTPUT_STRING OutputString;\r
- EFI_TEXT_TEST_STRING TestString;\r
-\r
- EFI_TEXT_QUERY_MODE QueryMode;\r
- EFI_TEXT_SET_MODE SetMode;\r
- EFI_TEXT_SET_ATTRIBUTE SetAttribute;\r
-\r
- EFI_TEXT_CLEAR_SCREEN ClearScreen;\r
- EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;\r
- EFI_TEXT_ENABLE_CURSOR EnableCursor;\r
-\r
- //\r
- // Current mode\r
- //\r
- EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;\r
-};\r
-\r
-extern EFI_GUID gEfiSimpleTextOutProtocolGuid;\r
-\r
-#endif\r