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