/** @file\r
Header file for GraphicsConsole driver.\r
\r
-Copyright (c) 2006 - 2008, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2009, 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
#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
+} 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
languages specified in SupportedLanguages. The\r
number of languages supported by a driver is up\r
to the driver writer. Language is specified\r
- in RFC 3066 or ISO 639-2 language code format.\r
+ in RFC 4646 or ISO 639-2 language code format.\r
\r
@param DriverName[out] A pointer to the Unicode string to return.\r
This Unicode string is the name of the\r
languages specified in SupportedLanguages. The\r
number of languages supported by a driver is up\r
to the driver writer. Language is specified in\r
- RFC 3066 or ISO 639-2 language code format.\r
+ RFC 4646 or ISO 639-2 language code format.\r
\r
@param ControllerName[out] A pointer to the Unicode string to return.\r
This Unicode string is the name of the\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 gUsStdNarrowGlyphData[];\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
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 shkipped if PcdUgaConsumeSupport is set to FALSE.)\r
+ (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.)\r
\r
@param This Protocol instance pointer.\r
@param Controller Handle of device to bind driver to\r
/**\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 shkipped if PcdUgaConsumeSupport is set to FALSE.)\r
+ (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.)\r
\r
\r
@param This Protocol instance pointer.\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