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