#ifndef _GRAPHICS_CONSOLE_H_\r
#define _GRAPHICS_CONSOLE_H_\r
\r
-#include <PiDxe.h>\r
+#include <Uefi.h>\r
#include <Protocol/SimpleTextOut.h>\r
#include <Protocol/GraphicsOutput.h>\r
#include <Protocol/UgaDraw.h>\r
#include <Library/BaseLib.h>\r
#include <Library/PcdLib.h>\r
\r
-#include <MdeModuleHii.h>\r
+#include <Guid/MdeModuleHii.h>\r
\r
#include <Protocol/HiiFont.h>\r
#include <Protocol/HiiDatabase.h>\r
\r
extern EFI_COMPONENT_NAME_PROTOCOL gGraphicsConsoleComponentName;\r
extern EFI_COMPONENT_NAME2_PROTOCOL gGraphicsConsoleComponentName2;\r
+extern EFI_DRIVER_BINDING_PROTOCOL gGraphicsConsoleDriverBinding;\r
+extern EFI_NARROW_GLYPH gUsStdNarrowGlyphData[];\r
+\r
+extern UINT32 mNarrowFontSize;\r
+//\r
+// User can define valid graphic resolution here\r
+// e.g. 640x480, 800x600, 1024x768...\r
+//\r
+#define CURRENT_HORIZONTAL_RESOLUTION 800\r
+#define CURRENT_VERTICAL_RESOLUTION 600\r
+\r
+typedef union {\r
+ EFI_NARROW_GLYPH NarrowGlyph;\r
+ EFI_WIDE_GLYPH WideGlyph;\r
+} GLYPH_UNION;\r
+\r
+//\r
+// Device Structure\r
+//\r
+#define GRAPHICS_CONSOLE_DEV_SIGNATURE SIGNATURE_32 ('g', 's', 't', 'o')\r
+\r
+typedef struct {\r
+ UINTN Columns;\r
+ UINTN Rows;\r
+ INTN DeltaX;\r
+ INTN DeltaY;\r
+ UINT32 GopWidth;\r
+ UINT32 GopHeight;\r
+ UINT32 GopModeNumber;\r
+} GRAPHICS_CONSOLE_MODE_DATA;\r
+\r
+#define GRAPHICS_MAX_MODE 4\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
+ EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
+ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOutput;\r
+ EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode;\r
+ GRAPHICS_CONSOLE_MODE_DATA ModeData[GRAPHICS_MAX_MODE];\r
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *LineBuffer;\r
+ EFI_HII_HANDLE HiiHandle;\r
+} GRAPHICS_CONSOLE_DEV;\r
+\r
+#define GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS(a) \\r
+ CR (a, GRAPHICS_CONSOLE_DEV, SimpleTextOutput, GRAPHICS_CONSOLE_DEV_SIGNATURE)\r
+\r
\r
//\r
// EFI Component Name Functions\r
);\r
\r
\r
-//\r
-// User can define valid graphic resolution here\r
-// e.g. 640x480, 800x600, 1024x768...\r
-//\r
-#define CURRENT_HORIZONTAL_RESOLUTION 800\r
-#define CURRENT_VERTICAL_RESOLUTION 600\r
-\r
-typedef union {\r
- EFI_NARROW_GLYPH NarrowGlyph;\r
- EFI_WIDE_GLYPH WideGlyph;\r
-} GLYPH_UNION;\r
-\r
-extern EFI_NARROW_GLYPH UsStdNarrowGlyphData[];\r
-extern EFI_WIDE_GLYPH UsStdWideGlyphData[];\r
-\r
-//\r
-// Device Structure\r
-//\r
-#define GRAPHICS_CONSOLE_DEV_SIGNATURE EFI_SIGNATURE_32 ('g', 's', 't', 'o')\r
-\r
-typedef struct {\r
- UINTN Columns;\r
- UINTN Rows;\r
- INTN DeltaX;\r
- INTN DeltaY;\r
- UINT32 GopWidth;\r
- UINT32 GopHeight;\r
- UINT32 GopModeNumber;\r
-} GRAPHICS_CONSOLE_MODE_DATA;\r
-\r
-#define GRAPHICS_MAX_MODE 4\r
-\r
-typedef struct {\r
- UINTN Signature;\r
- EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
- EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOutput;\r
- EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode;\r
- GRAPHICS_CONSOLE_MODE_DATA ModeData[GRAPHICS_MAX_MODE];\r
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *LineBuffer;\r
- EFI_HII_HANDLE HiiHandle;\r
-} GRAPHICS_CONSOLE_DEV;\r
-\r
-#define GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS(a) \\r
- CR (a, GRAPHICS_CONSOLE_DEV, SimpleTextOutput, GRAPHICS_CONSOLE_DEV_SIGNATURE)\r
-\r
-//\r
-// Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gGraphicsConsoleDriverBinding;\r
-\r
-\r
-/**\r
- Returns available Unicode glyphs narrow fonts(8*19 pixels) size.\r
-\r
- @return Narrow foun size.\r
-\r
-**/\r
-UINTN\r
-ReturnNarrowFontSize (\r
- VOID\r
- );\r
-\r
/**\r
+ Reset the text output device hardware and optionally run diagnostics.\r
+ \r
Implements SIMPLE_TEXT_OUTPUT.Reset().\r
If ExtendeVerification is TRUE, then perform dependent Graphics Console\r
device reset, and set display mode to mode 0.\r
If ExtendedVerification is FALSE, only set display mode to mode 0.\r
\r
- @param This Indicates the calling context.\r
+ @param This Protocol instance pointer.\r
@param ExtendedVerification Indicates that the driver may perform a more\r
exhaustive verification operation of the device\r
during reset.\r
\r
- @return EFI_SUCCESS\r
- @return The reset operation succeeds.\r
- @return EFI_DEVICE_ERROR\r
- @return The Graphics Console is not functioning correctly\r
+ @retval EFI_SUCCESS The text output device was reset.\r
+ @retval EFI_DEVICE_ERROR The text output device is not functioning correctly and\r
+ could not be reset.\r
\r
**/\r
EFI_STATUS\r
);\r
\r
/**\r
+ Verifies that all characters in a Unicode string can be output to the \r
+ target device.\r
+\r
Implements SIMPLE_TEXT_OUTPUT.TestString().\r
- If one of the characters in the *Wstring is\r
- neither valid valid Unicode drawing characters,\r
- not ASCII code, then this function will return\r
- EFI_UNSUPPORTED.\r
+ If one of the characters in the *Wstring is neither valid valid Unicode\r
+ drawing characters, not ASCII code, then this function will return\r
+ EFI_UNSUPPORTED\r
\r
- @param This Indicates the calling context.\r
- @param WString The Null-terminated Unicode string to be tested.\r
+ @param This Protocol instance pointer.\r
+ @param WString The NULL-terminated Unicode string to be examined for the output\r
+ device(s).\r
\r
- @return EFI_SUCCESS\r
- @return The Graphics Console is capable of rendering the output string.\r
- @return EFI_UNSUPPORTED\r
- @return Some of the characters in the Unicode string cannot be rendered.\r
+ @retval EFI_SUCCESS The device(s) are capable of rendering the output string.\r
+ @retval 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
EFI_STATUS\r
);\r
\r
/**\r
+ Sets the background and foreground colors for the OutputString () and\r
+ ClearScreen () functions.\r
+\r
Implements SIMPLE_TEXT_OUTPUT.SetAttribute().\r
\r
- @param This Indicates the calling context.\r
- @param Attribute The attribute to set. Only bit0..6 are valid, all\r
- other bits are undefined and must be zero.\r
+ @param This Protocol instance pointer.\r
+ @param Attribute The attribute to set. Bits 0..3 are the foreground\r
+ color, and bits 4..6 are the background color. \r
+ All other bits are undefined and must be zero.\r
\r
- @return EFI_SUCCESS The requested attribute is set.\r
- @return EFI_DEVICE_ERROR The requested attribute cannot be set due to Graphics Console port error.\r
- @return EFI_UNSUPPORTED The attribute requested is not defined by EFI spec.\r
+ @retval EFI_SUCCESS The requested attribute is set.\r
+ @retval EFI_DEVICE_ERROR The requested attribute cannot be set due to Graphics Console port error.\r
+ @retval EFI_UNSUPPORTED The attribute requested is not defined.\r
\r
**/\r
EFI_STATUS\r
);\r
\r
/**\r
+ Sets the current coordinates of the cursor position.\r
+\r
Implements SIMPLE_TEXT_OUTPUT.SetCursorPosition().\r
\r
- @param This Indicates the calling context.\r
- @param Column The row to set cursor to.\r
- @param Row The column to set cursor to.\r
+ @param This Protocol instance pointer.\r
+ @param Column 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
+ @param 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
- @return EFI_SUCCESS\r
- @return The operation completed successfully.\r
- @return EFI_DEVICE_ERROR\r
- @return The request fails due to Graphics Console device error.\r
- @return EFI_UNSUPPORTED\r
- @return The Graphics Console is not in a valid text mode, or the cursor position\r
- @return is invalid for current mode.\r
+ @retval EFI_SUCCESS The operation completed successfully.\r
+ @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.\r
+ @retval 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
EFI_STATUS\r
);\r
\r
/**\r
- Test to see if Graphics Console could be supported on the ControllerHandle.\r
+ Test to see if Graphics Console could be supported on the Controller.\r
\r
Graphics Console could be supported if Graphics Output Protocol or UGA Draw\r
- Protocol exists on the ControllerHandle. (UGA Draw Protocol could be shipped\r
+ Protocol exists on the Controller. (UGA Draw Protocol could be skipped\r
if PcdUgaConsumeSupport is set to FALSE.)\r
\r
@param This Protocol instance pointer.\r
- @param ControllerHandle Handle of device to test.\r
+ @param Controller Handle of device to test.\r
@param RemainingDevicePath Optional parameter use to pick a specific child\r
device to start.\r
\r
- @retval EFI_SUCCESS This driver supports this device\r
- @retval other This driver does not support this device\r
+ @retval EFI_SUCCESS This driver supports this device.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
);\r
\r
+\r
/**\r
- Start this driver on ControllerHandle by opening Graphics Output protocol or \r
- UGA Draw protocol, and installing Simple Text Out protocol on ControllerHandle.\r
- (UGA Draw protocol could be shkipped if PcdUgaConsumeSupport is set to FALSE.)\r
+ Start this driver on Controller by opening Graphics Output protocol or \r
+ UGA Draw protocol, and installing Simple Text Out protocol on Controller.\r
+ (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.)\r
\r
@param This Protocol instance pointer.\r
- @param ControllerHandle Handle of device to bind driver to\r
+ @param Controller Handle of device to bind driver to\r
@param RemainingDevicePath Optional parameter use to pick a specific child\r
device to start.\r
\r
- @retval EFI_SUCCESS This driver is added to ControllerHandle\r
- @retval other This driver does not support this device\r
+ @retval EFI_SUCCESS This driver is added to Controller.\r
+ @retval other This driver does not support this device.\r
\r
**/\r
EFI_STATUS\r
);\r
\r
/**\r
- Stop this driver on ControllerHandle by removing Simple Text Out protocol \r
- and closing the Graphics Output Protocol or UGA Draw protocol on ControllerHandle.\r
- (UGA Draw protocol could be shkipped if PcdUgaConsumeSupport is set to FALSE.)\r
+ Stop this driver on Controller by removing Simple Text Out protocol \r
+ and closing the Graphics Output Protocol or UGA Draw protocol on Controller.\r
+ (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.)\r
\r
\r
@param This Protocol instance pointer.\r
- @param ControllerHandle Handle of device to stop driver on\r
+ @param Controller Handle of device to stop driver on\r
@param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
children is zero stop the entire bus driver.\r
@param ChildHandleBuffer List of Child Handles to Stop.\r
\r
- @retval EFI_SUCCESS This driver is removed ControllerHandle.\r
+ @retval EFI_SUCCESS This driver is removed Controller.\r
@retval EFI_NOT_STARTED Simple Text Out protocol could not be found the \r
- ControllerHandle.\r
+ Controller.\r
@retval other This driver was not removed from this device.\r
\r
**/\r
EFI_STATUS\r
EfiLocateHiiProtocol (\r
VOID\r
- )\r
-;\r
+ );\r
+\r
+\r
+/**\r
+ Gets Graphics Console devcie's foreground color and background color.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param Foreground Returned text foreground color.\r
+ @param Background Returned text background color.\r
+\r
+ @retval EFI_SUCCESS It returned always.\r
+\r
+**/\r
+EFI_STATUS\r
+GetTextColors (\r
+ IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
+ OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Foreground,\r
+ OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Background\r
+ );\r
+\r
+/**\r
+ Draw Unicode string on the Graphics Console device's screen.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param UnicodeWeight One Unicode string to be displayed.\r
+ @param Count The count of Unicode string.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES If no memory resource to use.\r
+ @retval EFI_UNSUPPORTED If no Graphics Output protocol and UGA Draw\r
+ protocol exist.\r
+ @retval EFI_SUCCESS Drawing Unicode string implemented successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+DrawUnicodeWeightAtCursorN (\r
+ IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
+ IN CHAR16 *UnicodeWeight,\r
+ IN UINTN Count\r
+ );\r
+\r
+/**\r
+ Erase the cursor on the screen.\r
+\r
+ @param This Protocol instance pointer.\r
+\r
+ @retval EFI_SUCCESS The cursor is erased successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+EraseCursor (\r
+ IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
+ );\r
\r
+/**\r
+ Check if the current specific mode supported the user defined resolution\r
+ for the Graphics Console device based on Graphics Output Protocol.\r
+\r
+ If yes, set the graphic device's current mode to this specific mode.\r
+ \r
+ @param GraphicsOutput Graphics Output Protocol instance pointer.\r
+ @param HorizontalResolution User defined horizontal resolution\r
+ @param VerticalResolution User defined vertical resolution.\r
+ @param CurrentModeNumber Current specific mode to be check.\r
+\r
+ @retval EFI_SUCCESS The mode is supported.\r
+ @retval EFI_UNSUPPORTED The specific mode is out of range of graphics \r
+ device supported.\r
+ @retval other The specific mode does not support user defined \r
+ resolution or failed to set the current mode to the \r
+ specific mode on graphics device.\r
+\r
+**/\r
+EFI_STATUS\r
+CheckModeSupported (\r
+ EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
+ IN UINT32 HorizontalResolution,\r
+ IN UINT32 VerticalResolution,\r
+ OUT UINT32 *CurrentModeNumber\r
+ );\r
\r
#endif\r