return EFI_SUCCESS;
}
-EFI_STATUS graphics_splash(EFI_FILE *root_dir, CHAR16 *path,
- const EFI_GRAPHICS_OUTPUT_BLT_PIXEL *background) {
+EFI_STATUS graphics_splash(UINT8 *content, UINTN len, const EFI_GRAPHICS_OUTPUT_BLT_PIXEL *background) {
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL pixel = {};
EFI_GUID GraphicsOutputProtocolGuid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput = NULL;
- UINT8 *content;
- INTN len;
struct bmp_dib *dib;
struct bmp_map *map;
UINT8 *pixmap;
UINTN y_pos = 0;
EFI_STATUS err;
+ if (!background) {
+ if (StriCmp(L"Apple", ST->FirmwareVendor) == 0) {
+ pixel.Red = 0xc0;
+ pixel.Green = 0xc0;
+ pixel.Blue = 0xc0;
+ }
+ background = &pixel;
+ }
+
err = LibLocateProtocol(&GraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput);
if (EFI_ERROR(err))
return err;
- len = file_read(root_dir, path, 0, 0, &content);
- if (len < 0)
- return EFI_LOAD_ERROR;
-
err = bmp_parse_header(content, len, &dib, &map, &pixmap);
if (EFI_ERROR(err))
goto err;
dib->x, dib->y, 0);
err:
FreePool(blt);
- FreePool(content);
return err;
}