12#include <Library/UefiBootServicesTableLib.h>
13#include <Library/UefiRuntimeServicesTableLib.h>
15#include <Library/BaseLib.h>
16#include <Library/BaseMemoryLib.h>
17#include <Library/DebugLib.h>
18#include <Library/MemoryAllocationLib.h>
33#define BOOT_LABEL_WRAPAROUND_PADDING 30U
34#define BOOT_LABEL_SCROLLING_HOLD_TIME 180U
36#define BOOT_LABEL_SHADOW_WIDTH 8U
37#define BOOT_LABEL_SHADOW_HEIGHT BOOT_ENTRY_LABEL_HEIGHT
105 IN UINT64 CurrentTime
110 ASSERT (DrawContext != NULL);
162 if (Entry->Label.Width > Entry->Hdr.Obj.Width) {
176 if (Entry->Label.Width > Entry->Hdr.Obj.Width) {
180 if (Entry->LabelOffset != 0) {
181 Entry->ShowLeftShadow = FALSE;
182 Entry->LabelOffset = 0;
205 This->SelectedIndex = NewIndex;
213 if (DrawContext != NULL) {
225 DrawContext->GuiContext->BootEntry = NewEntry->Context;
254 if (EntryOffsetX < 0) {
255 return -EntryOffsetX;
289 IN INT64 ScrollOffset
309 ASSERT (ScrollY >= BaseY);
318 ASSERT (ScrollY >= BaseY);
325 ASSERT (BaseY + This->Hdr.Obj.Height <= DrawContext->Screen.Height);
330 DrawContext->Screen.Width,
345 INT64 OldSelectorOffsetX;
348 ASSERT (DrawContext != NULL);
349 ASSERT (NewIndex < This->
Hdr.Obj.NumChildren);
354 ASSERT (This->SelectedIndex != NewIndex);
360 if (ScrollOffset == 0) {
402 ASSERT (GuiContext != NULL);
403 ASSERT (DrawContext != NULL);
455 GuiContext->ReadyToBoot = TRUE;
456 ASSERT (GuiContext->BootEntry == SelectedEntry->Context);
458 }
else if ( GuiContext->PickerContext->PickerAudioAssist
459 && (KeyEvent->OcKeyCode >= 0)
468 (UINT32)KeyEvent->OcKeyCode
472 GuiContext->ReadyToBoot = TRUE;
473 ASSERT (GuiContext->BootEntry == SelectedEntry->Context);
485 if (GuiContext->HideAuxiliary) {
486 GuiContext->HideAuxiliary = FALSE;
487 GuiContext->Refresh = TRUE;
488 DrawContext->GuiContext->PickerContext->PlayAudioFile (
489 DrawContext->GuiContext->PickerContext,
496 GuiContext->Refresh = TRUE;
497 DrawContext->GuiContext->PickerContext->PlayAudioFile (
498 DrawContext->GuiContext->PickerContext,
524 UINT32 LeftShadowSize;
525 UINT32 RightShadowSize1;
526 UINT32 RightShadowSize2;
537 ASSERT (DrawContext != NULL);
545 EntryIcon = &Entry->EntryIcon;
547 Label = &Entry->Label;
551 ASSERT (EntryIcon != NULL);
554 if (OffsetY < EntryIcon->Height) {
570 if (Entry->Label.Width <= This->Width) {
581 This->Height - Label->Height,
593 if (!Entry->ShowLeftShadow) {
599 ShadowStart = OffsetX;
601 if (OffsetX + Width > ShadowWidth) {
602 ShadowEnd = ShadowWidth;
604 ShadowEnd = OffsetX + Width;
607 if (ShadowEnd <= ShadowStart) {
610 LeftShadowSize = ShadowEnd - ShadowStart;
612 for (ColumnOffset = ShadowStart; ColumnOffset < ShadowEnd; ++ColumnOffset) {
613 ShadowOpacity = (UINT8)(((ColumnOffset + 1) * 0xFF) / (ShadowWidth + 1));
627 This->Height - Label->Height,
644 if (OffsetX < This->Width - ShadowWidth) {
645 ShadowStart = This->Width - ShadowWidth;
647 ShadowStart = OffsetX;
650 if (OffsetX + Width > This->Width) {
651 ShadowEnd = This->Width;
653 ShadowEnd = OffsetX + Width;
656 if (ShadowEnd <= ShadowStart) {
657 RightShadowSize1 = 0;
658 RightShadowSize2 = 0;
667 if (LabelOffset > This->Width) {
668 LabelOffset = Entry->LabelOffset;
669 RightShadowSize1 = ShadowEnd - ShadowStart;
670 RightShadowSize2 = 0;
672 RightShadowSize1 = 0;
673 RightShadowSize2 = ShadowEnd - ShadowStart;
676 for (ColumnOffset = ShadowStart; ColumnOffset < ShadowEnd; ++ColumnOffset) {
677 ShadowOpacity = (UINT8)(((ColumnOffset - (This->Width - ShadowWidth) + 1) * 0xFF) / (ShadowWidth + 1));
691 This->Height - Label->Height,
703 LabelWidth = Width -
MIN (Width, LeftShadowSize);
704 LabelWidth = LabelWidth -
MIN (LabelWidth, RightShadowSize1);
705 if (LabelWidth > 0) {
713 This->Height - Label->Height,
714 OffsetX + LeftShadowSize,
724 LabelWidth = Width -
MIN (Width, RightShadowSize2);
725 if (LabelWidth > 0) {
733 This->Height - Label->Height,
745 ASSERT (This->NumChildren == 0);
764 OffsetX = (UINT32)(Event->Pos.Pos.X - BaseX);
765 OffsetY = (UINT32)(Event->Pos.Pos.Y - BaseY);
790 BaseX - This->OffsetX,
791 BaseY - This->OffsetY,
801 Context->ReadyToBoot = TRUE;
807 ASSERT (This->NumChildren == 0);
828 ASSERT (DrawContext != NULL);
850 ASSERT (This->NumChildren == 0);
881 Context->ReadyToBoot = TRUE;
912 if (This->Opacity == 0) {
1003 if (This->Opacity == 0) {
1121 ASSERT (DrawContext != NULL);
1124 DrawContext->GuiContext->PickerContext->ToggleVoiceOver (
1125 DrawContext->GuiContext->PickerContext,
1141 }
else if (FocusChangedObj != NULL) {
1160 DrawContext->GuiContext->AudioPlaybackTimeout = 0;
1178 ASSERT (Context != NULL);
1180 if (Context->ReadyToBoot) {
1184 return Context->ReadyToBoot || Context->Refresh;
1374 if (Source->Buffer == NULL) {
1376 return EFI_UNSUPPORTED;
1379 Destination->Width = Source->Width;
1380 Destination->Height = Source->Height;
1381 Destination->Buffer = (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *)AllocateCopyPool (
1382 sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) * Source->Width * Source->Height,
1386 if (Destination->Buffer == NULL) {
1387 return EFI_OUT_OF_RESOURCES;
1405 UINT32 IconFileSize;
1406 UINT32 IconTypeIndex;
1408 BOOLEAN UseVolumeIcon;
1409 BOOLEAN UseFlavourIcon;
1410 BOOLEAN UseDiskLabel;
1411 BOOLEAN UseGenericLabel;
1414 UINTN EntryNameLength;
1415 CHAR8 *FlavourNameStart;
1416 CHAR8 *FlavourNameEnd;
1418 ASSERT (GuiContext != NULL);
1422 DEBUG ((DEBUG_INFO,
"OCUI: Console attributes: %d\n", Context->ConsoleAttributes));
1429 DEBUG ((DEBUG_INFO,
"OCUI: UseDiskLabel: %d, UseGenericLabel: %d\n", UseDiskLabel, UseGenericLabel));
1431 VolumeEntry = AllocateZeroPool (
sizeof (*VolumeEntry));
1432 if (VolumeEntry == NULL) {
1433 return EFI_OUT_OF_RESOURCES;
1437 Status = Context->GetEntryLabelImage (
1444 if (!EFI_ERROR (Status)) {
1446 &VolumeEntry->
Label,
1450 GuiContext->LightBackground
1454 Status = EFI_UNSUPPORTED;
1457 if (EFI_ERROR (Status) && UseGenericLabel) {
1458 switch (Entry->Type) {
1498 DEBUG ((DEBUG_WARN,
"OCUI: System entry flavour %a unsupported for label\n", Entry->Flavour));
1499 Status = EFI_UNSUPPORTED;
1515 DEBUG ((DEBUG_WARN,
"OCUI: Entry kind %d unsupported for label\n", Entry->Type));
1516 Status = EFI_UNSUPPORTED;
1520 if (EFI_ERROR (Status)) {
1522 EntryNameLength = StrLen (Entry->Name);
1523 if (Entry->IsFolder) {
1537 &VolumeEntry->
Label,
1538 &GuiContext->FontContext,
1541 GuiContext->LightBackground
1549 DEBUG ((DEBUG_WARN,
"OCUI: label failed\n"));
1550 return EFI_UNSUPPORTED;
1565 Status = Context->GetEntryIcon (Context, Entry, &IconFileData, &IconFileSize);
1567 if (!EFI_ERROR (Status)) {
1577 FreePool (IconFileData);
1578 if (!EFI_ERROR (Status)) {
1581 DEBUG ((DEBUG_INFO,
"OCUI: Failed to convert icon - %r\n", Status));
1585 Status = EFI_UNSUPPORTED;
1592 if (EFI_ERROR (Status)) {
1593 ASSERT (Entry->Flavour != NULL);
1597 FlavourNameEnd = Entry->Flavour - 1;
1599 for (FlavourNameStart = ++FlavourNameEnd; *FlavourNameEnd !=
'\0' && *FlavourNameEnd !=
':'; ++FlavourNameEnd) {
1604 Context->StorageContext,
1606 FlavourNameEnd - FlavourNameStart,
1612 }
while (EFI_ERROR (Status) && *FlavourNameEnd !=
'\0');
1614 if (EFI_ERROR (Status)) {
1615 SuggestedIcon = NULL;
1618 SuggestedIcon = &GuiContext->Icons[
ICON_OTHER][IconTypeIndex];
1620 SuggestedIcon = &GuiContext->Icons[
ICON_TOOL][IconTypeIndex];
1623 if ((SuggestedIcon == NULL) || (SuggestedIcon->Buffer == NULL)) {
1629 DEBUG ((DEBUG_INFO,
"OCUI: Using flavour icon, custom: %u\n", VolumeEntry->
CustomIcon));
1645 if (EntryIndex > 0) {
1658 VolumeEntry->
Index = EntryIndex;
1671 ASSERT (Entry->Label.Buffer != NULL);
1673 if (Entry->CustomIcon) {
1674 FreePool (Entry->EntryIcon.Buffer);
1677 FreePool (Entry->Label.Buffer);
1686 IN UINT64 StartTime,
1701 IN UINT64 CurrentTime
1711 mBootPickerImageIndex++;
1759 IN UINT64 CurrentTime
1766 ASSERT (DrawContext != NULL);
1847 IN UINT64 CurrentTime
1855 if (DrawContext->TimeOutSeconds > 0) {
1875 if (DrawContext->TimeOutSeconds == 0) {
1879 if (CurrentTime - CurInterpol->StartTime >= CurInterpol->Duration + CurInterpol->HoldTime) {
1881 CurInterpol = NextInterpol;
1882 NextInterpol = Temp;
1883 CurInterpol->
StartTime = CurrentTime + 1;
1900 IN UINT8 NumBootEntries
1903 CONST
GUI_IMAGE *SelectorBackgroundImage;
1905 UINT32 ContainerMaxWidth;
1906 UINT32 ContainerWidthDelta;
1911 ASSERT (DrawContext != NULL);
1912 ASSERT (GuiContext != NULL);
1913 ASSERT (GetCursorImage != NULL);
1929 (INT64)DrawContext->Screen.Width - DrawContext->GuiContext->Background.Width,
1934 (INT64)DrawContext->Screen.Height - DrawContext->GuiContext->Background.Height,
1947 ASSERT (SelectorBackgroundImage->Width >= SelectorButtonImage->Width);
2006 return EFI_OUT_OF_RESOURCES;
2011 if (GuiContext->PickerContext->TitleSuffix == NULL) {
2019 DestLen = AsciiStrLen (GuiContext->PickerContext->TitleSuffix);
2024 &GuiContext->FontContext,
2027 GuiContext->LightBackground
2033 DEBUG ((DEBUG_WARN,
"OCUI: version label failed\n"));
2054 if (GuiContext->UseMenuEaseIn) {
2075 if ( !GuiContext->PickerContext->PickerAudioAssist
2076 && (DrawContext->TimeOutSeconds > 0))
2081 InsertHeadList (&DrawContext->Animations, &PickerAnim2.Link);
2099 IN UINT8 DefaultIndex
2128 GuiContext->BootEntry = BootEntry->Context;
#define ARRAY_SIZE(Array)
BOOLEAN GuiGetLabel(OUT GUI_IMAGE *LabelImage, IN CONST GUI_FONT_CONTEXT *Context, IN CONST CHAR16 *String, IN UINTN StringLen, IN BOOLEAN Inverted)
#define RGB_APPLY_OPACITY(Rgba, Opacity)
FILEPATH_DEVICE_PATH EntryName
VOID BootPickerViewLateInitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN UINT8 DefaultIndex)
GUI_OBJ * InternalBootPickerSelectorPtrEvent(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)
STATIC VOID InternalBootPickerEntryDraw(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)
BOOLEAN InternalBootPickerAnimateIntro(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
VOID InternalStartAnimateLabel(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN CONST GUI_VOLUME_ENTRY *Entry)
#define BOOT_LABEL_SHADOW_WIDTH
EFI_STATUS BootPickerEntriesSet(IN OC_PICKER_CONTEXT *Context, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN OC_BOOT_ENTRY *Entry, IN UINT8 EntryIndex)
BOOLEAN InternalBootPickerExitLoop(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context)
STATIC GUI_OBJ_CHILD * mBootPickerSelectorContainerChildren[]
GLOBAL_REMOVE_IF_UNREFERENCED GUI_VIEW_CONTEXT mBootPickerViewContextMinimal
INT64 mBackgroundImageOffsetY
BOOLEAN InternalBootPickerAnimateLabel(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
#define BOOT_LABEL_WRAPAROUND_PADDING
GUI_OBJ * InternalBootPickerLeftScrollPtrEvent(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)
VOID InternalBootPickerScroll(IN OUT GUI_VOLUME_PICKER *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN INT64 BaseX, IN INT64 BaseY, IN INT64 ScrollOffset)
STATIC GUI_INTERPOLATION mBpAnimInfoImageList
STATIC GUI_OBJ * mBootPickerFocusListReversed[]
VOID InternalBootPickerViewKeyEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN CONST GUI_KEY_EVENT *KeyEvent)
STATIC GUI_ANIMATION mBootPickerIntroAnimation
STATIC GUI_VOLUME_ENTRY * InternalGetVolumeEntry(IN UINT32 Index)
STATIC GUI_OBJ * mBootPickerFocusListMinimal[]
VOID BootPickerViewDeinitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN OUT BOOT_PICKER_GUI_CONTEXT *GuiContext)
VOID InternalBootPickerFocus(IN CONST GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOLEAN Focus)
STATIC VOID InternalRedrawVolumeLabel(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN CONST GUI_VOLUME_ENTRY *Entry)
#define BOOT_LABEL_SCROLLING_HOLD_TIME
STATIC EFI_STATUS CopyLabel(OUT GUI_IMAGE *Destination, IN CONST GUI_IMAGE *Source)
GUI_OBJ_CLICKABLE mBootPickerLeftScroll
VOID InitBpAnimImageList(IN GUI_INTERPOL_TYPE Type, IN UINT64 StartTime, IN UINT64 Duration)
VOID InternalBootPickerEntryDestruct(IN GUI_VOLUME_ENTRY *Entry)
EFI_STATUS BootPickerViewInitialize(OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN GUI_CURSOR_GET_IMAGE GetCursorImage, IN UINT8 NumBootEntries)
STATIC GUI_OBJ_CHILD * mBootPickerViewChildren[]
GUI_VOLUME_PICKER mBootPicker
VOID InternalBootPickerChangeEntry(IN OUT GUI_VOLUME_PICKER *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN INT64 BaseX, IN INT64 BaseY, IN UINT32 NewIndex)
BOOLEAN InternalBootPickerAnimateImageList(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
GLOBAL_REMOVE_IF_UNREFERENCED GUI_VIEW_CONTEXT mBootPickerViewContextReversed
GUI_OBJ_CLICKABLE mBootPickerSelectorButton
STATIC GUI_OBJ * mBootPickerFocusList[]
GUI_OBJ_CHILD mBootPickerSelectorContainer
INT64 mBackgroundImageOffsetX
GUI_KEY_CONTEXT * mKeyContext
STATIC GUI_INTERPOLATION mBootPickerTimeoutOpacityInterpolUp
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CHILD mBootPickerVersionLabel
STATIC UINT32 mBootPickerLabelScrollHoldTime
STATIC GUI_ANIMATION mBootPickerLabelAnimation
VOID InternalBootPickerSelectEntry(IN OUT GUI_VOLUME_PICKER *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT32 NewIndex)
BOOLEAN InternalBootPickerAnimateTimeout(IN BOOT_PICKER_GUI_CONTEXT *Context, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN UINT64 CurrentTime)
STATIC GUI_OBJ * InternalBootPickerEntryPtrEvent(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)
VOID InitBpAnimIntro(IN CONST GUI_DRAWING_CONTEXT *DrawContext)
GUI_OBJ_CLICKABLE mBootPickerRightScroll
VOID InternalBootPickerKeyEvent(IN OUT GUI_OBJ *This, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN CONST GUI_KEY_EVENT *KeyEvent)
STATIC GUI_IMAGE mVersionLabelImage
STATIC GUI_INTERPOLATION mBpAnimInfoSinMove
VOID InternalStopAnimateLabel(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN OUT GUI_VOLUME_ENTRY *Entry)
GLOBAL_REMOVE_IF_UNREFERENCED GUI_VIEW_CONTEXT mBootPickerViewContext
VOID InternalBootPickerSelectorBackgroundDraw(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)
GUI_OBJ * InternalBootPickerRightScrollPtrEvent(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)
CONST GUI_IMAGE mBackgroundImage
STATIC GUI_OBJ_CHILD * mBootPickerContainerChildren[]
STATIC GUI_INTERPOLATION mBootPickerTimeoutOpacityInterpolDown
GUI_OBJ_CHILD mBootPickerSelectorBackground
GUI_OBJ_CHILD mBootPickerContainer
VOID InternalUpdateScrollButtons(VOID)
STATIC GUI_OBJ_CHILD * mBootPickerViewChildrenMinimal[]
INT64 InternelBootPickerScrollSelected(VOID)
VOID InternalVersionLabelDraw(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)
GUI_OBJ * InternalCommonViewPtrEvent(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)
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CLICKABLE mCommonShutDown
VOID CommonViewInitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *GuiContext, IN CONST GUI_VIEW_CONTEXT *ViewContext)
VOID InternalCommonViewDraw(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)
VOID InternalCommonSimpleButtonDraw(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)
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CLICKABLE mCommonRestart
GLOBAL_REMOVE_IF_UNREFERENCED GUI_INTERPOLATION mCommonIntroOpacityInterpol
VOID GuiDrawChildImage(IN CONST GUI_IMAGE *Image, IN UINT8 Opacity, IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN INT64 ParentBaseX, IN INT64 ParentBaseY, IN INT64 ChildBaseX, IN INT64 ChildBaseY, IN UINT32 OffsetX, IN UINT32 OffsetY, IN UINT32 Width, IN UINT32 Height)
UINT8 InternalCommonSimpleButtonPtrEvent(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)
BOOLEAN GuiClickableIsHit(IN CONST GUI_IMAGE *Image, IN INT64 OffsetX, IN INT64 OffsetY)
GUI_OBJ * InternalFocusKeyHandler(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN BOOT_PICKER_GUI_CONTEXT *Context, IN CONST GUI_KEY_EVENT *KeyEvent)
GLOBAL_REMOVE_IF_UNREFERENCED GUI_OBJ_CHILD mCommonActionButtonsContainer
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)
#define BOOT_SELECTOR_HEIGHT
#define BOOT_ENTRY_DIMENSION
#define BOOT_ENTRY_LABEL_HEIGHT
@ LABEL_FIRMWARE_SETTINGS
@ LABEL_APPLE_TIME_MACHINE
#define BOOT_SELECTOR_BUTTON_SPACE
#define BOOT_ENTRY_ICON_SPACE
#define BOOT_ENTRY_ICON_DIMENSION
#define BOOT_ENTRY_HEIGHT
#define BOOT_SCROLL_BUTTON_SPACE
#define BOOT_SCROLL_BUTTON_DIMENSION
EFI_STATUS GuiLabelToImage(OUT GUI_IMAGE *Image, IN VOID *RawData, IN UINT32 DataLength, IN UINT8 Scale, IN BOOLEAN Inverted)
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)
#define OC_VOICE_OVER_AUDIO_FILE_RELOADING
#define OC_VOICE_OVER_AUDIO_FILE_SHOW_AUXILIARY
#define OC_VOICE_OVER_AUDIO_BASE_TYPE_OPEN_CORE
STATIC_ASSERT(BYTES_PER_PIXEL==sizeof(UINT32), "Non 4-byte pixels are unsupported!")
#define OC_ATTR_USE_GENERIC_LABEL_IMAGE
#define OC_PICKER_KEYS_FOR_PICKER
#define OC_FLAVOUR_WINDOWS
#define OC_ATTR_USE_REVERSED_UI
#define OC_FLAVOUR_ID_RESET_NVRAM
#define OC_MODIFIERS_SET_DEFAULT
#define OC_ATTR_USE_DISK_LABEL_FILE
#define OC_FLAVOUR_ID_TOGGLE_SIP_DISABLED
#define OC_BOOT_APPLE_TIME_MACHINE
#define OC_INPUT_LEFT
Move left.
#define OC_ATTR_USE_VOLUME_ICON
#define OC_BOOT_EXTERNAL_TOOL
#define OC_BOOT_EXTERNAL_OS
#define OC_VOICE_OVER_IDLE_TIMEOUT_MS
Experimental, less is problematic.
#define OC_ATTR_USE_FLAVOUR_ICON
#define OC_INPUT_CONTINUE
Continue (press enter)
#define OC_INPUT_ABORTED
Esc or 0.
#define OC_BOOT_APPLE_RECOVERY
#define OC_ATTR_USE_MINIMAL_UI
#define OC_INPUT_MORE
Show more entries (press space)
#define OC_INPUT_RIGHT
Move right.
#define OC_FLAVOUR_ID_FIRMWARE_SETTINGS
#define OC_FLAVOUR_ID_NETWORK_BOOT
#define OC_BOOT_APPLE_FW_UPDATE
#define OC_ATTR_HIDE_THEMED_ICONS
#define OC_INPUT_VOICE_OVER
Toggle VoiceOver (press CMD+F5)
#define OC_BOOT_UNMANAGED
#define OC_FLAVOUR_ID_TOGGLE_SIP_ENABLED
#define OC_FLAVOUR_ID_UEFI_SHELL
#define OC_MENU_DISK_IMAGE
#define ASSERT_EQUALS(Expression, ExpectedValue)
#define L_STR_LEN(String)
#define L_STR_SIZE(String)
CHAR8 *EFIAPI OcAsciiStriStr(IN CONST CHAR8 *String, IN CONST CHAR8 *SearchString)
CHAR16 * AsciiStrCopyToUnicode(IN CONST CHAR8 *String, IN UINTN Length)
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)
VOID GuiRequestDraw(IN UINT32 PosX, IN UINT32 PosY, IN UINT32 Width, IN UINT32 Height)
VOID GuiRequestDrawCrop(IN OUT GUI_DRAWING_CONTEXT *DrawContext, IN INT64 X, IN INT64 Y, IN UINT32 Width, IN UINT32 Height)
VOID GuiViewDeinitialize(IN OUT GUI_DRAWING_CONTEXT *DrawContext, OUT BOOT_PICKER_GUI_CONTEXT *GuiContext)
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)
UINT32 GuiGetInterpolatedValue(IN CONST GUI_INTERPOLATION *Interpol, IN UINT64 CurrentTime)
VOID GuiGetBaseCoords(IN GUI_OBJ *This, IN GUI_DRAWING_CONTEXT *DrawContext, OUT INT64 *BaseX, OUT INT64 *BaseY)
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)
@ GuiPointerPrimaryDoubleClick
CONST GUI_IMAGE *(* GUI_CURSOR_GET_IMAGE)(IN BOOT_PICKER_GUI_CONTEXT *Context)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
INT64 EFIAPI DivS64x64Remainder(IN INT64 Dividend, IN INT64 Divisor, OUT INT64 *Remainder OPTIONAL)
EFI_GRAPHICS_OUTPUT_BLT_PIXEL * Buffer
OC_PICKER_KEY_MAP KeyFilter
GUI_OBJ_PTR_EVENT PtrEvent
GUI_OBJ_CHILD ** Children