CloverBootloader/Protocols/AppleUITheme/AppleUITheme.c
2019-09-03 12:58:42 +03:00

78 lines
1.9 KiB
C

#include <Library/UefiLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
STATIC UINT32 mCurrentColor;
STATIC EFI_HANDLE Handle = NULL;
extern EFI_GUID gEfiAppleNvramGuid;
#define BLACK_COLOR 0x000000
#define APPLE_USER_INTERFACE_THEME_PROTOCOL_GUID \
{0xD5B0AC65, 0x9A2D, 0x4D2A, {0xBB, 0xD6, 0xE8, 0x71, 0xA9, 0x5E, 0x04, 0x35}}
//EFI_GUID gAppleUserInterfaceThemeProtocolGuid = APPLE_USER_INTERFACE_THEME_PROTOCOL_GUID;
extern EFI_GUID gAppleUserInterfaceThemeProtocolGuid;
typedef EFI_STATUS (EFIAPI *APPLE_USER_INTERFACE_THEME_GETCOLOR) (
IN OUT UINT32 * Color
);
typedef struct {
UINT64 Version;
APPLE_USER_INTERFACE_THEME_GETCOLOR GetColor;
} APPLE_USER_INTERFACE_THEME_PROTOCOL;
EFI_STATUS
EFIAPI
UserInterfaceThemeGetColor (
UINT32 *Color
)
{
// UINTN DataSize;
// EFI_STATUS Status;
if (Color == NULL) {
return EFI_INVALID_PARAMETER;
}
*Color = mCurrentColor;
return EFI_SUCCESS;
}
STATIC APPLE_USER_INTERFACE_THEME_PROTOCOL mAppleUserInterfaceThemeProtocol = {
1,
UserInterfaceThemeGetColor
};
EFI_STATUS
EFIAPI
UserInterfaceThemeEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
UINTN DataSize;
UINT32 Color;
// Default color is black
mCurrentColor = BLACK_COLOR;
DataSize = 0;
Status = gRT->GetVariable(L"DefaultBackgroundColor", &gEfiAppleNvramGuid, 0, &DataSize, &Color);
if (!EFI_ERROR(Status)) {
mCurrentColor = Color;
}
Status = gBS->InstallProtocolInterface(&Handle, &gAppleUserInterfaceThemeProtocolGuid, 0, &mAppleUserInterfaceThemeProtocol);
return EFI_SUCCESS;
}