in OemPkg/FrontPage/FrontPage.c [1687:1745]
EFI_STATUS GetAndDisplayBitmap (EFI_GUID *FileGuid, UINTN XCoord, BOOLEAN XCoordAdj) {
EFI_STATUS Status;
UINT8 *BMPData = NULL;
UINTN BMPDataSize = 0;
EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer = NULL;
UINTN BltBufferSize;
UINTN BitmapHeight;
UINTN BitmapWidth;
// Get the specified image from FV.
//
Status = GetSectionFromAnyFv(FileGuid,
EFI_SECTION_RAW,
0,
(VOID **)&BMPData,
&BMPDataSize
);
if (EFI_ERROR(Status)) {
DEBUG((DEBUG_ERROR, "ERROR [DE]: Failed to find bitmap file (GUID=%g) (%r).\r\n", FileGuid, Status));
return Status;
}
// Convert the bitmap from BMP format to a GOP framebuffer-compatible form.
//
Status = TranslateBmpToGopBlt(BMPData,
BMPDataSize,
&BltBuffer,
&BltBufferSize,
&BitmapHeight,
&BitmapWidth
);
if (EFI_ERROR(Status)) {
FreePool(BMPData);
DEBUG((DEBUG_ERROR, "ERROR [DE]: Failed to convert bitmap file to GOP format (%r).\r\n", Status));
return Status;
}
if (XCoordAdj == TRUE)
{
XCoord -= BitmapWidth;
}
mGop->Blt(mGop,
BltBuffer,
EfiBltBufferToVideo,
0,
0,
XCoord, //Upper Right corner
((mTitleBarHeight / 2) - (BitmapHeight / 2)),
BitmapWidth,
BitmapHeight,
0
);
FreePool(BMPData);
FreePool(BltBuffer );
return Status;
}