/** @file This file is part of OpenCanopy, OpenCore GUI. Copyright (c) 2018-2019, Download-Fritz. All rights reserved.
SPDX-License-Identifier: BSD-3-Clause **/ #ifndef GUI_APP_H #define GUI_APP_H #include "OpenCanopy.h" #include "BmfLib.h" #include #define BOOT_CURSOR_OFFSET 4U #define MAX_CURSOR_DIMENSION 144U #define MIN_CURSOR_DIMENSION BOOT_CURSOR_OFFSET #define BOOT_ENTRY_DIMENSION 144U #define BOOT_ENTRY_ICON_DIMENSION APPLE_DISK_ICON_DIMENSION #define BOOT_ENTRY_ICON_SPACE ((BOOT_ENTRY_DIMENSION - BOOT_ENTRY_ICON_DIMENSION) / 2) #define BOOT_ENTRY_LABEL_SPACE 4U #define BOOT_ENTRY_LABEL_HEIGHT 12U #define BOOT_ENTRY_LABEL_TEXT_OFFSET 2U #define BOOT_ENTRY_SPACE 8U #define BOOT_SELECTOR_WIDTH 144U #define BOOT_SELECTOR_BACKGROUND_DIMENSION BOOT_SELECTOR_WIDTH #define BOOT_SELECTOR_BUTTON_WIDTH BOOT_SELECTOR_WIDTH #define BOOT_SELECTOR_BUTTON_HEIGHT 40U #define BOOT_SELECTOR_BUTTON_SPACE (BOOT_ENTRY_LABEL_SPACE + BOOT_ENTRY_LABEL_HEIGHT + 3) #define BOOT_SELECTOR_HEIGHT (BOOT_SELECTOR_BACKGROUND_DIMENSION + BOOT_SELECTOR_BUTTON_SPACE + BOOT_SELECTOR_BUTTON_HEIGHT) #define BOOT_ENTRY_WIDTH (BOOT_ENTRY_DIMENSION) #define BOOT_ENTRY_HEIGHT (BOOT_ENTRY_DIMENSION + BOOT_ENTRY_LABEL_SPACE + BOOT_ENTRY_LABEL_HEIGHT) #define BOOT_SCROLL_BUTTON_DIMENSION 40U #define BOOT_SCROLL_BUTTON_SPACE 40U #define BOOT_ACTION_BUTTON_DIMENSION 128U #define BOOT_ACTION_BUTTON_FOCUS_DIMENSION 144U #define BOOT_ACTION_BUTTON_SPACE 36U #define PASSWORD_LOCK_DIMENSION 144U #define PASSWORD_ENTER_WIDTH 75U #define PASSWORD_ENTER_HEIGHT 30U #define PASSWORD_BOX_WIDTH 288U #define PASSWORD_BOX_HEIGHT 30U #define PASSWORD_DOT_DIMENSION 10U typedef enum { LABEL_GENERIC_HDD, LABEL_APPLE, LABEL_APPLE_RECOVERY, LABEL_APPLE_TIME_MACHINE, LABEL_WINDOWS, LABEL_OTHER, LABEL_TOOL, LABEL_RESET_NVRAM, LABEL_SHELL, LABEL_SIP_IS_ENABLED, LABEL_SIP_IS_DISABLED, LABEL_NUM_TOTAL } LABEL_TARGET; typedef enum { ICON_CURSOR, ICON_SELECTED, ICON_SELECTOR, ICON_SET_DEFAULT, ICON_LEFT, ICON_RIGHT, ICON_SHUT_DOWN, ICON_RESTART, ICON_BUTTON_FOCUS, ICON_PASSWORD, ICON_DOT, ICON_ENTER, ICON_LOCK, ICON_NUM_SYS, ICON_GENERIC_HDD = ICON_NUM_SYS, ICON_NUM_MANDATORY, ICON_APPLE = ICON_NUM_MANDATORY, ICON_APPLE_RECOVERY, ICON_APPLE_TIME_MACHINE, ICON_WINDOWS, ICON_OTHER, ICON_TOOL, ICON_RESET_NVRAM, ICON_SHELL, ICON_NUM_TOTAL } ICON_TARGET; typedef enum { ICON_TYPE_BASE = 0, ICON_TYPE_EXTERNAL = 1, ICON_TYPE_HELD = 1, ICON_TYPE_COUNT = 2, } ICON_TYPE; enum { CanopyVoSelectedEntry, CanopyVoFocusPassword, CanopyVoFocusShutDown, CanopyVoFocusRestart }; typedef struct _BOOT_PICKER_GUI_CONTEXT { GUI_IMAGE Background; GUI_IMAGE Icons[ICON_NUM_TOTAL][ICON_TYPE_COUNT]; GUI_IMAGE Labels[LABEL_NUM_TOTAL]; // GUI_IMAGE Poof[5]; GUI_FONT_CONTEXT FontContext; CONST CHAR8 *Prefix; VOID *BootEntry; EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION BackgroundColor; BOOLEAN HideAuxiliary; BOOLEAN Refresh; BOOLEAN LightBackground; BOOLEAN DoneIntroAnimation; BOOLEAN ReadyToBoot; UINT8 Scale; UINT8 VoAction; INT32 CursorOffsetX; INT32 CursorOffsetY; INT32 AudioPlaybackTimeout; OC_PICKER_CONTEXT *PickerContext; } BOOT_PICKER_GUI_CONTEXT; EFI_STATUS PasswordViewInitialize ( OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext ); VOID PasswordViewDeinitialize ( IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN OUT BOOT_PICKER_GUI_CONTEXT *GuiContext ); EFI_STATUS BootPickerViewInitialize ( OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN GUI_CURSOR_GET_IMAGE GetCursorImage, IN UINT8 NumBootEntries ); VOID BootPickerViewLateInitialize ( IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN UINT8 DefaultIndex ); EFI_STATUS BootPickerEntriesSet ( IN OC_PICKER_CONTEXT *Context, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN OC_BOOT_ENTRY *Entry, IN UINT8 EntryIndex ); VOID BootPickerViewDeinitialize ( IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN OUT BOOT_PICKER_GUI_CONTEXT *GuiContext ); CONST GUI_IMAGE * InternalGetCursorImage ( IN BOOT_PICKER_GUI_CONTEXT *Context ); EFI_STATUS InternalGetFlavourIcon ( IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN OC_STORAGE_CONTEXT *Storage, IN CHAR8 *FlavourName, IN UINTN FlavourNameLen, IN UINT32 IconTypeIndex, IN BOOLEAN UseFlavourIcon, OUT GUI_IMAGE *EntryIcon, OUT BOOLEAN *CustomIcon ); #endif // GUI_APP_H