REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			410 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			410 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Simple Text Out protocol from the UEFI 2.0 specification.
 | |
| 
 | |
|   Abstraction of a very simple text based output device like VGA text mode or
 | |
|   a serial terminal. The Simple Text Out protocol instance can represent
 | |
|   a single hardware device or a virtual device that is an aggregation
 | |
|   of multiple physical devices.
 | |
| 
 | |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __SIMPLE_TEXT_OUT_H__
 | |
| #define __SIMPLE_TEXT_OUT_H__
 | |
| 
 | |
| #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \
 | |
|   { \
 | |
|     0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
 | |
|   }
 | |
| 
 | |
| ///
 | |
| /// Protocol GUID defined in EFI1.1.
 | |
| ///
 | |
| #define SIMPLE_TEXT_OUTPUT_PROTOCOL  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID
 | |
| 
 | |
| typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
 | |
| 
 | |
| ///
 | |
| /// Backward-compatible with EFI1.1.
 | |
| ///
 | |
| typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE;
 | |
| 
 | |
| //
 | |
| // Defines for required EFI Unicode Box Draw characters
 | |
| //
 | |
| #define BOXDRAW_HORIZONTAL                  0x2500
 | |
| #define BOXDRAW_VERTICAL                    0x2502
 | |
| #define BOXDRAW_DOWN_RIGHT                  0x250c
 | |
| #define BOXDRAW_DOWN_LEFT                   0x2510
 | |
| #define BOXDRAW_UP_RIGHT                    0x2514
 | |
| #define BOXDRAW_UP_LEFT                     0x2518
 | |
| #define BOXDRAW_VERTICAL_RIGHT              0x251c
 | |
| #define BOXDRAW_VERTICAL_LEFT               0x2524
 | |
| #define BOXDRAW_DOWN_HORIZONTAL             0x252c
 | |
| #define BOXDRAW_UP_HORIZONTAL               0x2534
 | |
| #define BOXDRAW_VERTICAL_HORIZONTAL         0x253c
 | |
| #define BOXDRAW_DOUBLE_HORIZONTAL           0x2550
 | |
| #define BOXDRAW_DOUBLE_VERTICAL             0x2551
 | |
| #define BOXDRAW_DOWN_RIGHT_DOUBLE           0x2552
 | |
| #define BOXDRAW_DOWN_DOUBLE_RIGHT           0x2553
 | |
| #define BOXDRAW_DOUBLE_DOWN_RIGHT           0x2554
 | |
| #define BOXDRAW_DOWN_LEFT_DOUBLE            0x2555
 | |
| #define BOXDRAW_DOWN_DOUBLE_LEFT            0x2556
 | |
| #define BOXDRAW_DOUBLE_DOWN_LEFT            0x2557
 | |
| #define BOXDRAW_UP_RIGHT_DOUBLE             0x2558
 | |
| #define BOXDRAW_UP_DOUBLE_RIGHT             0x2559
 | |
| #define BOXDRAW_DOUBLE_UP_RIGHT             0x255a
 | |
| #define BOXDRAW_UP_LEFT_DOUBLE              0x255b
 | |
| #define BOXDRAW_UP_DOUBLE_LEFT              0x255c
 | |
| #define BOXDRAW_DOUBLE_UP_LEFT              0x255d
 | |
| #define BOXDRAW_VERTICAL_RIGHT_DOUBLE       0x255e
 | |
| #define BOXDRAW_VERTICAL_DOUBLE_RIGHT       0x255f
 | |
| #define BOXDRAW_DOUBLE_VERTICAL_RIGHT       0x2560
 | |
| #define BOXDRAW_VERTICAL_LEFT_DOUBLE        0x2561
 | |
| #define BOXDRAW_VERTICAL_DOUBLE_LEFT        0x2562
 | |
| #define BOXDRAW_DOUBLE_VERTICAL_LEFT        0x2563
 | |
| #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE      0x2564
 | |
| #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL      0x2565
 | |
| #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL      0x2566
 | |
| #define BOXDRAW_UP_HORIZONTAL_DOUBLE        0x2567
 | |
| #define BOXDRAW_UP_DOUBLE_HORIZONTAL        0x2568
 | |
| #define BOXDRAW_DOUBLE_UP_HORIZONTAL        0x2569
 | |
| #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE  0x256a
 | |
| #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL  0x256b
 | |
| #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL  0x256c
 | |
| 
 | |
| //
 | |
| // EFI Required Block Elements Code Chart
 | |
| //
 | |
| #define BLOCKELEMENT_FULL_BLOCK   0x2588
 | |
| #define BLOCKELEMENT_LIGHT_SHADE  0x2591
 | |
| 
 | |
| //
 | |
| // EFI Required Geometric Shapes Code Chart
 | |
| //
 | |
| #define GEOMETRICSHAPE_UP_TRIANGLE     0x25b2
 | |
| #define GEOMETRICSHAPE_RIGHT_TRIANGLE  0x25ba
 | |
| #define GEOMETRICSHAPE_DOWN_TRIANGLE   0x25bc
 | |
| #define GEOMETRICSHAPE_LEFT_TRIANGLE   0x25c4
 | |
| 
 | |
| //
 | |
| // EFI Required Arrow shapes
 | |
| //
 | |
| #define ARROW_LEFT   0x2190
 | |
| #define ARROW_UP     0x2191
 | |
| #define ARROW_RIGHT  0x2192
 | |
| #define ARROW_DOWN   0x2193
 | |
| 
 | |
| //
 | |
| // EFI Console Colours
 | |
| //
 | |
| #define EFI_BLACK         0x00
 | |
| #define EFI_BLUE          0x01
 | |
| #define EFI_GREEN         0x02
 | |
| #define EFI_CYAN          (EFI_BLUE | EFI_GREEN)
 | |
| #define EFI_RED           0x04
 | |
| #define EFI_MAGENTA       (EFI_BLUE | EFI_RED)
 | |
| #define EFI_BROWN         (EFI_GREEN | EFI_RED)
 | |
| #define EFI_LIGHTGRAY     (EFI_BLUE | EFI_GREEN | EFI_RED)
 | |
| #define EFI_BRIGHT        0x08
 | |
| #define EFI_DARKGRAY      (EFI_BLACK | EFI_BRIGHT)
 | |
| #define EFI_LIGHTBLUE     (EFI_BLUE | EFI_BRIGHT)
 | |
| #define EFI_LIGHTGREEN    (EFI_GREEN | EFI_BRIGHT)
 | |
| #define EFI_LIGHTCYAN     (EFI_CYAN | EFI_BRIGHT)
 | |
| #define EFI_LIGHTRED      (EFI_RED | EFI_BRIGHT)
 | |
| #define EFI_LIGHTMAGENTA  (EFI_MAGENTA | EFI_BRIGHT)
 | |
| #define EFI_YELLOW        (EFI_BROWN | EFI_BRIGHT)
 | |
| #define EFI_WHITE         (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
 | |
| 
 | |
| //
 | |
| // Macro to accept color values in their raw form to create
 | |
| // a value that represents both a foreground and background
 | |
| // color in a single byte.
 | |
| // For Foreground, and EFI_* value is valid from EFI_BLACK(0x00) to
 | |
| // EFI_WHITE (0x0F).
 | |
| // For Background, only EFI_BLACK, EFI_BLUE, EFI_GREEN, EFI_CYAN,
 | |
| // EFI_RED, EFI_MAGENTA, EFI_BROWN, and EFI_LIGHTGRAY are acceptable
 | |
| //
 | |
| // Do not use EFI_BACKGROUND_xxx values with this macro.
 | |
| //
 | |
| #define EFI_TEXT_ATTR(Foreground, Background)  ((Foreground) | ((Background) << 4))
 | |
| 
 | |
| #define EFI_BACKGROUND_BLACK      0x00
 | |
| #define EFI_BACKGROUND_BLUE       0x10
 | |
| #define EFI_BACKGROUND_GREEN      0x20
 | |
| #define EFI_BACKGROUND_CYAN       (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
 | |
| #define EFI_BACKGROUND_RED        0x40
 | |
| #define EFI_BACKGROUND_MAGENTA    (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
 | |
| #define EFI_BACKGROUND_BROWN      (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
 | |
| #define EFI_BACKGROUND_LIGHTGRAY  (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
 | |
| 
 | |
| //
 | |
| // We currently define attributes from 0 - 7F for color manipulations
 | |
| // To internally handle the local display characteristics for a particular character,
 | |
| // Bit 7 signifies the local glyph representation for a character.  If turned on, glyphs will be
 | |
| // pulled from the wide glyph database and will display locally as a wide character (16 X 19 versus 8 X 19)
 | |
| // If bit 7 is off, the narrow glyph database will be used.  This does NOT affect information that is sent to
 | |
| // non-local displays, such as serial or LAN consoles.
 | |
| //
 | |
| #define EFI_WIDE_ATTRIBUTE  0x80
 | |
| 
 | |
| /**
 | |
|   Reset the text output device hardware and optionally run diagnostics
 | |
| 
 | |
|   @param  This                 The protocol instance pointer.
 | |
|   @param  ExtendedVerification Driver may perform more exhaustive verification
 | |
|                                operation of the device during reset.
 | |
| 
 | |
|   @retval EFI_SUCCESS          The text output device was reset.
 | |
|   @retval EFI_DEVICE_ERROR     The text output device is not functioning correctly and
 | |
|                                could not be reset.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_RESET)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
 | |
|   IN BOOLEAN                                ExtendedVerification
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Write a string to the output device.
 | |
| 
 | |
|   @param  This   The protocol instance pointer.
 | |
|   @param  String The NULL-terminated string to be displayed on the output
 | |
|                  device(s). All output devices must also support the Unicode
 | |
|                  drawing character codes defined in this file.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The string was output to the device.
 | |
|   @retval EFI_DEVICE_ERROR        The device reported an error while attempting to output
 | |
|                                   the text.
 | |
|   @retval EFI_UNSUPPORTED         The output device's mode is not currently in a
 | |
|                                   defined text mode.
 | |
|   @retval EFI_WARN_UNKNOWN_GLYPH  This warning code indicates that some of the
 | |
|                                   characters in the string could not be
 | |
|                                   rendered and were skipped.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_STRING)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
 | |
|   IN CHAR16                                 *String
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Verifies that all characters in a string can be output to the
 | |
|   target device.
 | |
| 
 | |
|   @param  This   The protocol instance pointer.
 | |
|   @param  String The NULL-terminated string to be examined for the output
 | |
|                  device(s).
 | |
| 
 | |
|   @retval EFI_SUCCESS      The device(s) are capable of rendering the output string.
 | |
|   @retval EFI_UNSUPPORTED  Some of the characters in the string cannot be
 | |
|                            rendered by one or more of the output devices mapped
 | |
|                            by the EFI handle.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_TEST_STRING)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
 | |
|   IN CHAR16                                 *String
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Returns information for an available text mode that the output device(s)
 | |
|   supports.
 | |
| 
 | |
|   @param  This       The protocol instance pointer.
 | |
|   @param  ModeNumber The mode number to return information on.
 | |
|   @param  Columns    Returns the geometry of the text output device for the
 | |
|                      requested ModeNumber.
 | |
|   @param  Rows       Returns the geometry of the text output device for the
 | |
|                      requested ModeNumber.
 | |
| 
 | |
|   @retval EFI_SUCCESS      The requested mode information was returned.
 | |
|   @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
 | |
|   @retval EFI_UNSUPPORTED  The mode number was not valid.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_QUERY_MODE)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
 | |
|   IN UINTN                                  ModeNumber,
 | |
|   OUT UINTN                                 *Columns,
 | |
|   OUT UINTN                                 *Rows
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Sets the output device(s) to a specified mode.
 | |
| 
 | |
|   @param  This       The protocol instance pointer.
 | |
|   @param  ModeNumber The mode number to set.
 | |
| 
 | |
|   @retval EFI_SUCCESS      The requested text mode was set.
 | |
|   @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
 | |
|   @retval EFI_UNSUPPORTED  The mode number was not valid.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_SET_MODE)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
 | |
|   IN UINTN                                  ModeNumber
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Sets the background and foreground colors for the OutputString () and
 | |
|   ClearScreen () functions.
 | |
| 
 | |
|   @param  This      The protocol instance pointer.
 | |
|   @param  Attribute The attribute to set. Bits 0..3 are the foreground color, and
 | |
|                     bits 4..6 are the background color. All other bits are undefined
 | |
|                     and must be zero. The valid Attributes are defined in this file.
 | |
| 
 | |
|   @retval EFI_SUCCESS       The attribute was set.
 | |
|   @retval EFI_DEVICE_ERROR  The device had an error and could not complete the request.
 | |
|   @retval EFI_UNSUPPORTED   The attribute requested is not defined.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_SET_ATTRIBUTE)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
 | |
|   IN UINTN                                  Attribute
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Clears the output device(s) display to the currently selected background
 | |
|   color.
 | |
| 
 | |
|   @param  This              The protocol instance pointer.
 | |
| 
 | |
|   @retval  EFI_SUCCESS      The operation completed successfully.
 | |
|   @retval  EFI_DEVICE_ERROR The device had an error and could not complete the request.
 | |
|   @retval  EFI_UNSUPPORTED  The output device is not in a valid text mode.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_CLEAR_SCREEN)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL   *This
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Sets the current coordinates of the cursor position
 | |
| 
 | |
|   @param  This        The protocol instance pointer.
 | |
|   @param  Column      The position to set the cursor to. Must be greater than or
 | |
|                       equal to zero and less than the number of columns and rows
 | |
|                       by QueryMode ().
 | |
|   @param  Row         The position to set the cursor to. Must be greater than or
 | |
|                       equal to zero and less than the number of columns and rows
 | |
|                       by QueryMode ().
 | |
| 
 | |
|   @retval EFI_SUCCESS      The operation completed successfully.
 | |
|   @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
 | |
|   @retval EFI_UNSUPPORTED  The output device is not in a valid text mode, or the
 | |
|                            cursor position is invalid for the current mode.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
 | |
|   IN UINTN                                  Column,
 | |
|   IN UINTN                                  Row
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Makes the cursor visible or invisible
 | |
| 
 | |
|   @param  This    The protocol instance pointer.
 | |
|   @param  Visible If TRUE, the cursor is set to be visible. If FALSE, the cursor is
 | |
|                   set to be invisible.
 | |
| 
 | |
|   @retval EFI_SUCCESS      The operation completed successfully.
 | |
|   @retval EFI_DEVICE_ERROR The device had an error and could not complete the
 | |
|                            request, or the device does not support changing
 | |
|                            the cursor mode.
 | |
|   @retval EFI_UNSUPPORTED  The output device is not in a valid text mode.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TEXT_ENABLE_CURSOR)(
 | |
|   IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL        *This,
 | |
|   IN BOOLEAN                                Visible
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   @par Data Structure Description:
 | |
|   Mode Structure pointed to by Simple Text Out protocol.
 | |
| **/
 | |
| typedef struct {
 | |
|   ///
 | |
|   /// The number of modes supported by QueryMode () and SetMode ().
 | |
|   ///
 | |
|   INT32    MaxMode;
 | |
| 
 | |
|   //
 | |
|   // current settings
 | |
|   //
 | |
| 
 | |
|   ///
 | |
|   /// The text mode of the output device(s).
 | |
|   ///
 | |
|   INT32      Mode;
 | |
|   ///
 | |
|   /// The current character output attribute.
 | |
|   ///
 | |
|   INT32      Attribute;
 | |
|   ///
 | |
|   /// The cursor's column.
 | |
|   ///
 | |
|   INT32      CursorColumn;
 | |
|   ///
 | |
|   /// The cursor's row.
 | |
|   ///
 | |
|   INT32      CursorRow;
 | |
|   ///
 | |
|   /// The cursor is currently visible or not.
 | |
|   ///
 | |
|   BOOLEAN    CursorVisible;
 | |
| } EFI_SIMPLE_TEXT_OUTPUT_MODE;
 | |
| 
 | |
| ///
 | |
| /// The SIMPLE_TEXT_OUTPUT protocol is used to control text-based output devices.
 | |
| /// It is the minimum required protocol for any handle supplied as the ConsoleOut
 | |
| /// or StandardError device. In addition, the minimum supported text mode of such
 | |
| /// devices is at least 80 x 25 characters.
 | |
| ///
 | |
| struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
 | |
|   EFI_TEXT_RESET                  Reset;
 | |
| 
 | |
|   EFI_TEXT_STRING                 OutputString;
 | |
|   EFI_TEXT_TEST_STRING            TestString;
 | |
| 
 | |
|   EFI_TEXT_QUERY_MODE             QueryMode;
 | |
|   EFI_TEXT_SET_MODE               SetMode;
 | |
|   EFI_TEXT_SET_ATTRIBUTE          SetAttribute;
 | |
| 
 | |
|   EFI_TEXT_CLEAR_SCREEN           ClearScreen;
 | |
|   EFI_TEXT_SET_CURSOR_POSITION    SetCursorPosition;
 | |
|   EFI_TEXT_ENABLE_CURSOR          EnableCursor;
 | |
| 
 | |
|   ///
 | |
|   /// Pointer to SIMPLE_TEXT_OUTPUT_MODE data.
 | |
|   ///
 | |
|   EFI_SIMPLE_TEXT_OUTPUT_MODE     *Mode;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID  gEfiSimpleTextOutProtocolGuid;
 | |
| 
 | |
| #endif
 |