]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Protocol/UgaDraw.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / Protocol / UgaDraw.h
diff --git a/OldMdePkg/Include/Protocol/UgaDraw.h b/OldMdePkg/Include/Protocol/UgaDraw.h
new file mode 100644 (file)
index 0000000..5586bdf
--- /dev/null
@@ -0,0 +1,168 @@
+/** @file\r
+  UGA Draw protocol from the EFI 1.1 specification.\r
+\r
+  Abstraction of a very simple graphics device.\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \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
+\r
+  Module Name:  UgaDraw.h\r
+\r
+**/\r
+\r
+#ifndef __UGA_DRAW_H__\r
+#define __UGA_DRAW_H__\r
+\r
+#define EFI_UGA_DRAW_PROTOCOL_GUID \\r
+  { \\r
+    0x982c298b, 0xf4fa, 0x41cb, {0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39 } \\r
+  }\r
+\r
+typedef struct _EFI_UGA_DRAW_PROTOCOL EFI_UGA_DRAW_PROTOCOL;\r
+\r
+/**\r
+  Return the current video mode information.\r
+\r
+  @param  This                  Protocol instance pointer.\r
+  @param  HorizontalResolution  Current video horizontal resolution in pixels\r
+  @param  VerticalResolution    Current video vertical resolution in pixels\r
+  @param  ColorDepth            Current video color depth in bits per pixel\r
+  @param  RefreshRate           Current video refresh rate in Hz.\r
+\r
+  @retval EFI_SUCCESS           Mode information returned.\r
+  @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()\r
+  @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_UGA_DRAW_PROTOCOL_GET_MODE) (\r
+  IN  EFI_UGA_DRAW_PROTOCOL *This,\r
+  OUT UINT32                *HorizontalResolution,\r
+  OUT UINT32                *VerticalResolution,\r
+  OUT UINT32                *ColorDepth,\r
+  OUT UINT32                *RefreshRate\r
+  )\r
+;\r
+\r
+/**\r
+  Return the current video mode information.\r
+\r
+  @param  This                 Protocol instance pointer.\r
+  @param  HorizontalResolution Current video horizontal resolution in pixels\r
+  @param  VerticalResolution   Current video vertical resolution in pixels\r
+  @param  ColorDepth           Current video color depth in bits per pixel\r
+  @param  RefreshRate          Current video refresh rate in Hz.\r
+\r
+  @retval EFI_SUCCESS          Mode information returned.\r
+  @retval EFI_NOT_STARTED      Video display is not initialized. Call SetMode ()\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_UGA_DRAW_PROTOCOL_SET_MODE) (\r
+  IN  EFI_UGA_DRAW_PROTOCOL *This,\r
+  IN  UINT32                HorizontalResolution,\r
+  IN  UINT32                VerticalResolution,\r
+  IN  UINT32                ColorDepth,\r
+  IN  UINT32                RefreshRate\r
+  )\r
+;\r
+\r
+typedef struct {\r
+  UINT8 Blue;\r
+  UINT8 Green;\r
+  UINT8 Red;\r
+  UINT8 Reserved;\r
+} EFI_UGA_PIXEL;\r
+\r
+typedef union {\r
+  EFI_UGA_PIXEL Pixel;\r
+  UINT32        Raw;\r
+} EFI_UGA_PIXEL_UNION;\r
+\r
+typedef enum {\r
+  EfiUgaVideoFill,\r
+  EfiUgaVideoToBltBuffer,\r
+  EfiUgaBltBufferToVideo,\r
+  EfiUgaVideoToVideo,\r
+  EfiUgaBltMax\r
+} EFI_UGA_BLT_OPERATION;\r
+\r
+/**\r
+  Type specifying a pointer to a function to perform an UGA Blt operation.\r
+\r
+    The following table defines actions for BltOperations:\r
+\r
+    <B>EfiUgaVideoFill</B> - Write data from the  BltBuffer pixel (SourceX, SourceY) \r
+      directly to every pixel of the video display rectangle \r
+      (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). \r
+      Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
+\r
+    <B>EfiUgaVideoToBltBuffer</B> - Read data from the video display rectangle \r
+      (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in \r
+      the BltBuffer rectangle (DestinationX, DestinationY ) \r
+      (DestinationX + Width, DestinationY + Height). If DestinationX or \r
+      DestinationY is not zero then Delta must be set to the length in bytes \r
+      of a row in the BltBuffer.\r
+\r
+    <B>EfiUgaBltBufferToVideo</B> - Write data from the  BltBuffer rectangle \r
+      (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the \r
+      video display rectangle (DestinationX, DestinationY) \r
+      (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is \r
+      not zero then Delta must be set to the length in bytes of a row in the \r
+      BltBuffer.\r
+\r
+    <B>EfiUgaVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)\r
+     (SourceX + Width, SourceY + Height) .to the video display rectangle \r
+     (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). \r
+     The BltBuffer and Delta  are not used in this mode.\r
+\r
+\r
+    @param[in] This          - Protocol instance pointer.\r
+    @param[in] BltBuffer     - Buffer containing data to blit into video buffer. This \r
+                               buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)\r
+    @param[in] BltOperation  - Operation to perform on BlitBuffer and video memory\r
+    @param[in] SourceX       - X coordinate of source for the BltBuffer.\r
+    @param[in] SourceY       - Y coordinate of source for the BltBuffer.\r
+    @param[in] DestinationX  - X coordinate of destination for the BltBuffer.\r
+    @param[in] DestinationY  - Y coordinate of destination for the BltBuffer.\r
+    @param[in] Width         - Width of rectangle in BltBuffer in pixels.\r
+    @param[in] Height        - Hight of rectangle in BltBuffer in pixels.\r
+    @param[in] Delta         - OPTIONAL\r
+  \r
+    @retval EFI_SUCCESS           - The Blt operation completed.\r
+    @retval EFI_INVALID_PARAMETER - BltOperation is not valid.\r
+    @retval EFI_DEVICE_ERROR      - A hardware error occured writting to the video buffer.\r
+\r
+--*/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_UGA_DRAW_PROTOCOL_BLT) (\r
+  IN  EFI_UGA_DRAW_PROTOCOL                   * This,\r
+  IN  EFI_UGA_PIXEL                           * BltBuffer, OPTIONAL\r
+  IN  EFI_UGA_BLT_OPERATION                   BltOperation,\r
+  IN  UINTN                                   SourceX,\r
+  IN  UINTN                                   SourceY,\r
+  IN  UINTN                                   DestinationX,\r
+  IN  UINTN                                   DestinationY,\r
+  IN  UINTN                                   Width,\r
+  IN  UINTN                                   Height,\r
+  IN  UINTN                                   Delta         OPTIONAL\r
+  );\r
+\r
+struct _EFI_UGA_DRAW_PROTOCOL {\r
+  EFI_UGA_DRAW_PROTOCOL_GET_MODE  GetMode;\r
+  EFI_UGA_DRAW_PROTOCOL_SET_MODE  SetMode;\r
+  EFI_UGA_DRAW_PROTOCOL_BLT       Blt;\r
+};\r
+\r
+extern EFI_GUID gEfiUgaDrawProtocolGuid;\r
+\r
+#endif\r