OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
OpenCanopy.h
Go to the documentation of this file.
1
8#ifndef OPEN_CANOPY_H
9#define OPEN_CANOPY_H
10
12#include <Protocol/GraphicsOutput.h>
13#include <Protocol/SimpleTextIn.h>
14
15typedef struct GUI_OBJ_ GUI_OBJ;
17
20
21enum {
25};
26
27typedef union {
28 struct {
29 UINT32 X;
30 UINT32 Y;
31 } Pos;
32 UINT64 Uint64;
34
35typedef struct {
36 UINT8 Type;
39
41
47
48typedef
49VOID
51 IN OUT GUI_OBJ *This,
52 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
53 IN BOOT_PICKER_GUI_CONTEXT *Context,
54 IN INT64 BaseX,
55 IN INT64 BaseY,
56 IN UINT32 OffsetX,
57 IN UINT32 OffsetY,
58 IN UINT32 Width,
59 IN UINT32 Height,
60 IN UINT8 Opacity
61 );
62
63typedef
65(*GUI_OBJ_PTR_EVENT)(
66 IN OUT GUI_OBJ *This,
67 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
68 IN BOOT_PICKER_GUI_CONTEXT *Context,
69 IN INT64 BaseX,
70 IN INT64 BaseY,
71 IN CONST GUI_PTR_EVENT *Event
72 );
73
74typedef
75VOID
77 IN OUT GUI_OBJ *This,
78 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
79 IN BOOT_PICKER_GUI_CONTEXT *Context,
80 IN CONST GUI_KEY_EVENT *KeyEvent
81 );
82
83typedef
84VOID
86 IN CONST GUI_OBJ *This,
87 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
88 IN BOOLEAN Focus
89 );
90
91typedef
92BOOLEAN
94 IN BOOT_PICKER_GUI_CONTEXT *Context,
95 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
96 IN UINT64 CurrentTime
97 );
98
99typedef struct {
100 LIST_ENTRY Link;
101 VOID *Context;
104
106
120
125
126typedef struct {
127 UINT32 Width;
128 UINT32 Height;
129 EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Buffer;
130} GUI_IMAGE;
131
133
134typedef
136(*GUI_CURSOR_GET_IMAGE)(
137 IN BOOT_PICKER_GUI_CONTEXT *Context
138 );
139
140typedef
141BOOLEAN
143 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
144 IN BOOT_PICKER_GUI_CONTEXT *Context
145 );
146
148 UINT32 X;
149 UINT32 Y;
150};
151
163
178
179EFI_STATUS
181 OUT GUI_IMAGE *Image,
182 IN VOID *ImageData,
183 IN UINTN ImageDataSize,
184 IN BOOLEAN PremultiplyAlpha
185 );
186
187EFI_STATUS
189 OUT GUI_IMAGE *Image,
190 IN VOID *IcnsImage,
191 IN UINT32 IcnsImageSize,
192 IN UINT8 Scale,
193 IN UINT32 MatchWidth,
194 IN UINT32 MatchHeight,
195 IN BOOLEAN AllowLess
196 );
197
198EFI_STATUS
200 OUT GUI_IMAGE *Image,
201 IN VOID *RawData,
202 IN UINT32 DataLength,
203 IN UINT8 Scale,
204 IN BOOLEAN Inverted
205 );
206
207VOID
209 IN OUT GUI_OBJ *This,
210 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
211 IN BOOT_PICKER_GUI_CONTEXT *Context,
212 IN INT64 BaseX,
213 IN INT64 BaseY,
214 IN UINT32 OffsetX,
215 IN UINT32 OffsetY,
216 IN UINT32 Width,
217 IN UINT32 Height,
218 IN UINT8 Opacity
219 );
220
221GUI_OBJ *
223 IN OUT GUI_OBJ *This,
224 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
225 IN BOOT_PICKER_GUI_CONTEXT *Context,
226 IN INT64 BaseX,
227 IN INT64 BaseY,
228 IN CONST GUI_PTR_EVENT *Event
229 );
230
231BOOLEAN
233 IN INT64 ChildOffset,
234 IN UINT32 ChildLength,
235 IN OUT UINT32 *ReqOffset,
236 IN OUT UINT32 *ReqLength
237 );
238
239VOID
241 IN CONST GUI_IMAGE *Image,
242 IN UINT8 Opacity,
243 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
244 IN INT64 BaseX,
245 IN INT64 BaseY,
246 IN UINT32 OffsetX,
247 IN UINT32 OffsetY,
248 IN UINT32 Width,
249 IN UINT32 Height
250 );
251
252VOID
254 IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Colour,
255 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
256 IN UINT32 PosX,
257 IN UINT32 PosY,
258 IN UINT32 Width,
259 IN UINT32 Height
260 );
261
262VOID
264 IN UINT32 PosX,
265 IN UINT32 PosY,
266 IN UINT32 Width,
267 IN UINT32 Height
268 );
269
270VOID
272 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
273 IN INT64 X,
274 IN INT64 Y,
275 IN UINT32 Width,
276 IN UINT32 Height
277 );
278
279VOID
281 OUT GUI_DRAWING_CONTEXT *DrawContext,
282 IN BOOT_PICKER_GUI_CONTEXT *GuiContext,
283 IN CONST GUI_VIEW_CONTEXT *ViewContext
284 );
285
286VOID
288 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
289 OUT BOOT_PICKER_GUI_CONTEXT *GuiContext
290 );
291
292VOID
294 IN OUT GUI_DRAWING_CONTEXT *DrawContext
295 );
296
297VOID
299 IN OUT GUI_DRAWING_CONTEXT *DrawContext
300 );
301
302VOID
304 IN OUT GUI_DRAWING_CONTEXT *DrawContext,
305 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Pixel
306 );
307
308EFI_STATUS
310 IN BOOT_PICKER_GUI_CONTEXT *GuiContext,
311 IN INT32 CursorOffsetX,
312 IN INT32 CursorOffsetY
313 );
314
315VOID
317 VOID
318 );
319
320VOID
322 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackPixel,
323 IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FrontPixel,
324 IN UINT8 Opacity
325 );
326
327VOID
329 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackPixel,
330 IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FrontPixel
331 );
332
333VOID
335 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackPixel,
336 IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FrontPixel,
337 IN UINT8 Opacity
338 );
339
340EFI_STATUS
342 OUT GUI_IMAGE *SelectedImage,
343 IN CONST GUI_IMAGE *SourceImage,
344 IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *HighlightPixel
345 );
346
351
352typedef struct {
354 UINT64 StartTime;
355 UINT64 Duration;
357 UINT32 EndValue;
358 // FIXME: This probably belongs into some animation context.
359 UINT32 HoldTime;
361
362UINT32
364 IN CONST GUI_INTERPOLATION *Interpol,
365 IN UINT64 CurrentTime
366 );
367
368VOID
370 IN GUI_OBJ *This,
371 IN GUI_DRAWING_CONTEXT *DrawContext,
372 OUT INT64 *BaseX,
373 OUT INT64 *BaseY
374 );
375
376#endif // OPEN_CANOPY_H
UINTN OC_PICKER_KEY_MAP
UINT16 OC_MODIFIER_MAP
VOID GuiRedrawAndFlushScreen(IN OUT GUI_DRAWING_CONTEXT *DrawContext)
Definition OpenCanopy.c:833
@ GuiPointerPrimaryUp
Definition OpenCanopy.h:23
@ GuiPointerPrimaryDown
Definition OpenCanopy.h:22
@ GuiPointerPrimaryDoubleClick
Definition OpenCanopy.h:24
GUI_OBJ *(* GUI_OBJ_PTR_EVENT)(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN CONST GUI_PTR_EVENT *Event)
Definition OpenCanopy.h:65
VOID GuiDrawToBuffer(IN CONST GUI_IMAGE *Image, IN UINT8 Opacity, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height)
Definition OpenCanopy.c:354
GUI_INTERPOL_TYPE
Definition OpenCanopy.h:347
@ GuiInterpolTypeLinear
Definition OpenCanopy.h:348
@ GuiInterpolTypeSmooth
Definition OpenCanopy.h:349
VOID GuiRequestDraw(IN UINT32 PosX, IN UINT32 PosY, IN UINT32 Width, IN UINT32 Height)
Definition OpenCanopy.c:475
VOID GuiBlendPixelSolid(IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackPixel, IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FrontPixel)
Definition Blending.c:98
EFI_STATUS GuiLabelToImage(OUT GUI_IMAGE *Image, IN VOID *RawData, IN UINT32 DataLength, IN UINT8 Scale, IN BOOLEAN Inverted)
Definition Images.c:180
VOID GuiDrawToBufferFill(IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Colour, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT32 PosX, IN UINT32 PosY, IN UINT32 Width, IN UINT32 Height)
Definition OpenCanopy.c:276
VOID GuiBlendPixel(IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackPixel, IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FrontPixel, IN UINT8 Opacity)
Definition Blending.c:126
VOID GuiClearScreen(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Pixel)
BOOLEAN GuiClipChildBounds(IN INT64 ChildOffset, IN UINT32 ChildLength, IN OUT UINT32 *ReqOffset, IN OUT UINT32 *ReqLength)
Definition OpenCanopy.c:73
VOID GuiRequestDrawCrop(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN INT64 X, IN INT64 Y, IN UINT32 Width, IN UINT32 Height)
Definition OpenCanopy.c:570
BOOLEAN(* GUI_ANIMATE)(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
Definition OpenCanopy.h:93
VOID(* GUI_OBJ_FOCUS)(IN CONST GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOLEAN Focus)
Definition OpenCanopy.h:85
EFI_STATUS GuiLibConstruct(IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN INT32 CursorOffsetX, IN INT32 CursorOffsetY)
Definition OpenCanopy.c:846
VOID(* GUI_OBJ_DRAW)(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height, IN UINT8 Opacity)
Definition OpenCanopy.h:50
EFI_STATUS GuiIcnsToImageIcon(OUT GUI_IMAGE *Image, IN VOID *IcnsImage, IN UINT32 IcnsImageSize, IN UINT8 Scale, IN UINT32 MatchWidth, IN UINT32 MatchHeight, IN BOOLEAN AllowLess)
Definition Images.c:46
VOID GuiDrawLoop(IN OUT GUI_DRAWING_CONTEXT *DrawContext)
VOID GuiViewDeinitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, OUT BOOT_PICKER_GUI_CONTEXT *GuiContext)
Definition OpenCanopy.c:977
EFI_STATUS GuiCreateHighlightedImage(OUT GUI_IMAGE *SelectedImage, IN CONST GUI_IMAGE *SourceImage, IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *HighlightPixel)
Definition Images.c:279
GUI_OBJ * GuiObjDelegatePtrEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN CONST GUI_PTR_EVENT *Event)
Definition OpenCanopy.c:226
CONST GUI_IMAGE *(* GUI_CURSOR_GET_IMAGE)(IN BOOT_PICKER_GUI_CONTEXT *Context)
Definition OpenCanopy.h:136
VOID GuiBlendPixelOpaque(IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackPixel, IN CONST EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FrontPixel, IN UINT8 Opacity)
Definition Blending.c:60
EFI_STATUS GuiPngToImage(OUT GUI_IMAGE *Image, IN VOID *ImageData, IN UINTN ImageDataSize, IN BOOLEAN PremultiplyAlpha)
Definition Images.c:238
BOOLEAN(* GUI_EXIT_LOOP)(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context)
Definition OpenCanopy.h:142
UINT32 GuiGetInterpolatedValue(IN CONST GUI_INTERPOLATION *Interpol, IN UINT64 CurrentTime)
VOID GuiViewInitialize(OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN CONST GUI_VIEW_CONTEXT *ViewContext)
Definition OpenCanopy.c:943
VOID GuiLibDestruct(VOID)
Definition OpenCanopy.c:922
VOID GuiGetBaseCoords(IN GUI_OBJ *This, IN GUI_DRAWING_CONTEXT *DrawContext, OUT INT64 *BaseX, OUT INT64 *BaseY)
Definition OpenCanopy.c:996
VOID(* GUI_OBJ_KEY_EVENT)(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN CONST GUI_KEY_EVENT *KeyEvent)
Definition OpenCanopy.h:76
OC_PICKER_KEY_INFO GUI_KEY_EVENT
Definition OpenCanopy.h:40
VOID GuiObjDrawDelegate(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height, IN UINT8 Opacity)
Definition OpenCanopy.c:137
ush Pos
Definition deflate.h:92
GUI_ANIMATE Animate
Definition OpenCanopy.h:102
LIST_ENTRY Link
Definition OpenCanopy.h:100
BOOT_PICKER_GUI_CONTEXT * GuiContext
Definition OpenCanopy.h:172
GUI_EXIT_LOOP ExitLoop
Definition OpenCanopy.h:170
LIST_ENTRY Animations
Definition OpenCanopy.h:171
GUI_CURSOR_GET_IMAGE GetCursorImage
Definition OpenCanopy.h:169
UINT32 Height
Definition OpenCanopy.h:128
EFI_GRAPHICS_OUTPUT_BLT_PIXEL * Buffer
Definition OpenCanopy.h:129
UINT32 Width
Definition OpenCanopy.h:127
GUI_INTERPOL_TYPE Type
Definition OpenCanopy.h:353
OC_MODIFIER_MAP OcModifiers
Definition OpenCanopy.h:45
OC_PICKER_KEY_MAP KeyFilter
Definition OpenCanopy.h:44
OC_PICKER_CONTEXT * Context
Definition OpenCanopy.h:43
GUI_OBJ * Parent
Definition OpenCanopy.h:123
GUI_OBJ_DRAW Draw
Definition OpenCanopy.h:113
INT64 OffsetX
Definition OpenCanopy.h:108
UINT32 NumChildren
Definition OpenCanopy.h:117
UINT32 Height
Definition OpenCanopy.h:111
UINT8 Opacity
Definition OpenCanopy.h:112
INT64 OffsetY
Definition OpenCanopy.h:109
GUI_OBJ_PTR_EVENT PtrEvent
Definition OpenCanopy.h:115
GUI_OBJ_CHILD ** Children
Definition OpenCanopy.h:118
GUI_OBJ_FOCUS Focus
Definition OpenCanopy.h:116
UINT32 Width
Definition OpenCanopy.h:110
GUI_OBJ_KEY_EVENT KeyEvent
Definition OpenCanopy.h:114
GUI_PTR_POSITION Pos
Definition OpenCanopy.h:37
GUI_CURSOR_GET_IMAGE GetCursorImage
Definition OpenCanopy.h:158
GUI_OBJ_KEY_EVENT KeyEvent
Definition OpenCanopy.h:157
GUI_OBJ ** FocusList
Definition OpenCanopy.h:160
GUI_OBJ_DRAW Draw
Definition OpenCanopy.h:153
GUI_OBJ_PTR_EVENT PtrEvent
Definition OpenCanopy.h:154
GUI_OBJ_CHILD ** Children
Definition OpenCanopy.h:156
GUI_EXIT_LOOP ExitLoop
Definition OpenCanopy.h:159