1 /** @file 2 SimpleFileSystem protocol as defined in the UEFI 2.0 specification. 3 4 The SimpleFileSystem protocol is the programmatic access to the FAT (12,16,32) 5 file system specified in UEFI 2.0. It can also be used to abstract a file 6 system other than FAT. 7 8 UEFI 2.0 can boot from any valid EFI image contained in a SimpleFileSystem. 9 10 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR> 11 Portions copyright (c) 2011, Apple Inc. All rights reserved. 12 SPDX-License-Identifier: BSD-2-Clause-Patent 13 14 **/ 15 16 #ifndef _EMU_UGA_IO_H_ 17 #define _EMU_UGA_IO_H_ 18 19 #include <Protocol/SimplePointer.h> 20 #include <Protocol/SimpleTextIn.h> 21 #include <Protocol/SimpleTextInEx.h> 22 #include <Protocol/UgaDraw.h> 23 24 #define EMU_GRAPHICS_WINDOW_PROTOCOL_GUID \ 25 { 0x30FD316A, 0x6728, 0x2E41, { 0xA6, 0x90, 0x0D, 0x13, 0x33, 0xD8, 0xCA, 0xC1 } } 26 27 typedef struct _EMU_GRAPHICS_WINDOW_PROTOCOL EMU_GRAPHICS_WINDOW_PROTOCOL; 28 29 typedef 30 EFI_STATUS 31 (EFIAPI *EMU_GRAPHICS_WINDOWS_CLOSE)( 32 EMU_GRAPHICS_WINDOW_PROTOCOL *Uga 33 ); 34 35 typedef 36 EFI_STATUS 37 (EFIAPI *EMU_GRAPHICS_WINDOWS_SIZE)( 38 EMU_GRAPHICS_WINDOW_PROTOCOL *Uga, 39 UINT32 Width, 40 UINT32 Height 41 ); 42 43 typedef 44 EFI_STATUS 45 (EFIAPI *EMU_GRAPHICS_WINDOWS_CHECK_KEY)( 46 EMU_GRAPHICS_WINDOW_PROTOCOL *Uga 47 ); 48 49 typedef 50 EFI_STATUS 51 (EFIAPI *EMU_GRAPHICS_WINDOWS_GET_KEY)( 52 EMU_GRAPHICS_WINDOW_PROTOCOL *Uga, 53 EFI_KEY_DATA *key 54 ); 55 56 typedef 57 EFI_STATUS 58 (EFIAPI *EMU_GRAPHICS_WINDOWS_KEY_SET_STATE) ( 59 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, 60 IN EFI_KEY_TOGGLE_STATE *KeyToggleState 61 ); 62 63 64 typedef 65 VOID 66 (EFIAPI *EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK) ( 67 IN VOID *Context, 68 IN EFI_KEY_DATA *KeyData 69 ); 70 71 typedef 72 EFI_STATUS 73 (EFIAPI *EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY) ( 74 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, 75 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK CallBack, 76 IN VOID *Context 77 ); 78 79 80 typedef struct { 81 UINTN SourceX; 82 UINTN SourceY; 83 UINTN DestinationX; 84 UINTN DestinationY; 85 UINTN Width; 86 UINTN Height; 87 UINTN Delta; 88 } EMU_GRAPHICS_WINDOWS__BLT_ARGS; 89 90 typedef 91 EFI_STATUS 92 (EFIAPI *EMU_GRAPHICS_WINDOWS_BLT)( 93 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, 94 IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, 95 IN EFI_UGA_BLT_OPERATION BltOperation, 96 IN EMU_GRAPHICS_WINDOWS__BLT_ARGS *Args 97 ); 98 99 typedef 100 BOOLEAN 101 (EFIAPI *EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED) ( 102 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, 103 IN EFI_KEY_DATA *KeyData 104 ); 105 106 typedef 107 EFI_STATUS 108 (EFIAPI *EMU_GRAPHICS_WINDOWS_CHECK_POINTER)( 109 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows 110 ); 111 112 typedef 113 EFI_STATUS 114 (EFIAPI *EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE)( 115 EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows, 116 EFI_SIMPLE_POINTER_STATE *state 117 ); 118 119 struct _EMU_GRAPHICS_WINDOW_PROTOCOL { 120 EMU_GRAPHICS_WINDOWS_SIZE Size; 121 EMU_GRAPHICS_WINDOWS_CHECK_KEY CheckKey; 122 EMU_GRAPHICS_WINDOWS_KEY_SET_STATE KeySetState; 123 EMU_GRAPHICS_WINDOWS_GET_KEY GetKey; 124 EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY RegisterKeyNotify; 125 EMU_GRAPHICS_WINDOWS_BLT Blt; 126 EMU_GRAPHICS_WINDOWS_IS_KEY_PRESSED IsKeyPressed; 127 EMU_GRAPHICS_WINDOWS_CHECK_POINTER CheckPointer; 128 EMU_GRAPHICS_WINDOWS_GET_POINTER_STATE GetPointerState; 129 }; 130 131 132 extern EFI_GUID gEmuGraphicsWindowProtocolGuid; 133 134 #endif 135