]> git.proxmox.com Git - mirror_edk2.git/blob - InOsEmuPkg/Include/Protocol/EmuGraphicsWindow.h
Add InOsEmuPkg. Like UnixPkg and Nt32Pkg, but EFI code can be common and does not...
[mirror_edk2.git] / InOsEmuPkg / Include / Protocol / EmuGraphicsWindow.h
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 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the
7 BSD License which accompanies this distribution. The full text of the
8 license may be found at http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _EMU_UGA_IO_H_
16 #define _EMU_UGA_IO_H_
17
18 #include <Protocol/SimplePointer.h>
19 #include <Protocol/SimpleTextIn.h>
20 #include <Protocol/SimpleTextInEx.h>
21 #include <Protocol/UgaDraw.h>
22
23 #define EMU_GRAPHICS_WINDOW_PROTOCOL_GUID \
24 { 0x30FD316A, 0x6728, 0x2E41, { 0xA6, 0x90, 0x0D, 0x13, 0x33, 0xD8, 0xCA, 0xC1 } }
25
26 typedef struct _EMU_GRAPHICS_WINDOW_PROTOCOL EMU_GRAPHICS_WINDOW_PROTOCOL;
27
28 typedef
29 EFI_STATUS
30 (EFIAPI *EMU_GRAPHICS_WINDOWS_CLOSE)(
31 EMU_GRAPHICS_WINDOW_PROTOCOL *Uga
32 );
33
34 typedef
35 EFI_STATUS
36 (EFIAPI *EMU_GRAPHICS_WINDOWS_SIZE)(
37 EMU_GRAPHICS_WINDOW_PROTOCOL *Uga,
38 UINT32 Width,
39 UINT32 Height
40 );
41
42 typedef
43 EFI_STATUS
44 (EFIAPI *EMU_GRAPHICS_WINDOWS_CHECK_KEY)(
45 EMU_GRAPHICS_WINDOW_PROTOCOL *Uga
46 );
47
48 typedef
49 EFI_STATUS
50 (EFIAPI *EMU_GRAPHICS_WINDOWS_GET_KEY)(
51 EMU_GRAPHICS_WINDOW_PROTOCOL *Uga,
52 EFI_KEY_DATA *key
53 );
54
55 typedef
56 EFI_STATUS
57 (EFIAPI *EMU_GRAPHICS_WINDOWS_KEY_SET_STATE) (
58 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
59 IN EFI_KEY_TOGGLE_STATE *KeyToggleState
60 );
61
62
63 typedef
64 VOID
65 (EFIAPI *EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK) (
66 IN VOID *Context,
67 IN EFI_KEY_DATA *KeyData
68 );
69
70 typedef
71 EFI_STATUS
72 (EFIAPI *EMU_GRAPHICS_WINDOWS_REGISTER_KEY_NOTIFY) (
73 IN EMU_GRAPHICS_WINDOW_PROTOCOL *GraphicsWindows,
74 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK MakeCallBack,
75 IN EMU_GRAPHICS_WINDOW_REGISTER_KEY_NOTIFY_CALLBACK BreakCallBack,
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