]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / Console / GraphicsConsoleDxe / GraphicsConsole.h
index dd5e6e5b35dd1bc4b1b1303df9c1177d686c9227..28d47ac7cb1e0ada8834bc620f45ba81cb812f4f 100644 (file)
@@ -1,14 +1,8 @@
 /** @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
-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
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -30,7 +24,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #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
@@ -38,6 +32,44 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \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
+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
+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;\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
@@ -62,7 +94,7 @@ extern EFI_COMPONENT_NAME2_PROTOCOL  gGraphicsConsoleComponentName2;
                                 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
@@ -127,7 +159,7 @@ GraphicsConsoleComponentNameGetDriverName (
                                 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
@@ -141,7 +173,7 @@ GraphicsConsoleComponentNameGetDriverName (
                                 driver specified by This was returned in\r
                                 DriverName.\r
 \r
-  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+  @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
 \r
   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
                                 EFI_HANDLE.\r
@@ -169,83 +201,22 @@ GraphicsConsoleComponentNameGetControllerName (
   );\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  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
+  Reset the text output device hardware and optionally run diagnostics.\r
 \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
@@ -258,7 +229,7 @@ GraphicsConsoleConOutReset (
 /**\r
   Write a Unicode string to the output device.\r
 \r
-  Implements SIMPLE_TEXT_OUTPUT.OutputString(). \r
+  Implements SIMPLE_TEXT_OUTPUT.OutputString().\r
   The Unicode string will be converted to Glyphs and will be\r
   sent to the Graphics Console.\r
 \r
@@ -285,19 +256,22 @@ GraphicsConsoleConOutOutputString (
   );\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
@@ -336,7 +310,7 @@ GraphicsConsoleConOutQueryMode (
 \r
 /**\r
   Sets the output device(s) to a specified mode.\r
-  \r
+\r
   Implements SIMPLE_TEXT_OUTPUT.SetMode().\r
   Set the Graphics Console to a specified mode. In this driver, we only support mode 0.\r
 \r
@@ -344,7 +318,7 @@ GraphicsConsoleConOutQueryMode (
   @param  ModeNumber            The text mode to set.\r
 \r
   @retval EFI_SUCCESS           The requested text mode is set.\r
-  @retval EFI_DEVICE_ERROR      The requested text mode cannot be set because of \r
+  @retval EFI_DEVICE_ERROR      The requested text mode cannot be set because of\r
                                 Graphics Console device error.\r
   @retval EFI_UNSUPPORTED       The text mode number is not valid.\r
 \r
@@ -357,15 +331,19 @@ GraphicsConsoleConOutSetMode (
   );\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
@@ -376,7 +354,7 @@ GraphicsConsoleConOutSetAttribute (
   );\r
 \r
 /**\r
-  Clears the output device(s) display to the currently selected background \r
+  Clears the output device(s) display to the currently selected background\r
   color.\r
 \r
   Implements SIMPLE_TEXT_OUTPUT.ClearScreen().\r
@@ -395,19 +373,22 @@ GraphicsConsoleConOutClearScreen (
   );\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
@@ -464,10 +445,10 @@ GraphicsConsoleControllerDriverSupported (
 \r
 \r
 /**\r
-  Start this driver on Controller by opening Graphics Output protocol or \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
-  \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
   @param  RemainingDevicePath  Optional parameter use to pick a specific child\r
@@ -486,10 +467,10 @@ GraphicsConsoleControllerDriverStart (
   );\r
 \r
 /**\r
-  Stop this driver on Controller by removing Simple Text Out protocol \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
-  \r
+  (UGA Draw protocol could be skipped if PcdUgaConsumeSupport is set to FALSE.)\r
+\r
 \r
   @param  This              Protocol instance pointer.\r
   @param  Controller        Handle of device to stop driver on\r
@@ -498,7 +479,7 @@ GraphicsConsoleControllerDriverStart (
   @param  ChildHandleBuffer List of Child Handles to Stop.\r
 \r
   @retval EFI_SUCCESS       This driver is removed Controller.\r
-  @retval EFI_NOT_STARTED   Simple Text Out protocol could not be found the \r
+  @retval EFI_NOT_STARTED   Simple Text Out protocol could not be found the\r
                             Controller.\r
   @retval other             This driver was not removed from this device.\r
 \r
@@ -516,9 +497,9 @@ GraphicsConsoleControllerDriverStop (
 /**\r
   Locate HII Database protocol and HII Font protocol.\r
 \r
-  @retval  EFI_SUCCESS     HII Database protocol and HII Font protocol \r
+  @retval  EFI_SUCCESS     HII Database protocol and HII Font protocol\r
                            are located successfully.\r
-  @return  other           Failed to locate HII Database protocol or \r
+  @return  other           Failed to locate HII Database protocol or\r
                            HII Font protocol.\r
 \r
 **/\r
@@ -528,4 +509,86 @@ EfiLocateHiiProtocol (
   );\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
+  Flush the cursor on the screen.\r
+\r
+  If CursorVisible is FALSE, nothing to do and return directly.\r
+  If CursorVisible is TRUE,\r
+     i) If the cursor shows on screen, it will be erased.\r
+    ii) If the cursor does not show on screen, it will be shown.\r
+\r
+  @param  This                  Protocol instance pointer.\r
+\r
+  @retval EFI_SUCCESS           The cursor is erased successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+FlushCursor (\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