/*
- * refit/screen.c
+ * refind/screen.c
* Screen handling functions
*
* Copyright (c) 2006 Christoph Pfisterer
#include "screen.h"
#include "config.h"
#include "libegint.h"
-#include "refit_call_wrapper.h"
+#include "../include/refit_call_wrapper.h"
-#include "egemb_refind_banner.h"
+#include "../include/egemb_refind_banner.h"
// Console defines and variables
VOID BeginExternalScreen(IN BOOLEAN UseGraphicsMode, IN CHAR16 *Title)
{
+ EG_PIXEL DarkBackgroundPixel = { 0x0, 0x0, 0x0, 0 };
+
if (!AllowGraphicsMode)
UseGraphicsMode = FALSE;
if (UseGraphicsMode) {
SwitchToGraphics();
BltClearScreen(FALSE);
- }
+ } else {
+ egClearScreen(&DarkBackgroundPixel);
+ DrawScreenHeader(Title);
+ } // if/else
// show the header
- DrawScreenHeader(Title);
+// DrawScreenHeader(Title);
if (!UseGraphicsMode)
SwitchToText(TRUE);
// clear text screen
refit_call2_wrapper(ST->ConOut->SetAttribute, ST->ConOut, ATTR_BASIC);
refit_call1_wrapper(ST->ConOut->ClearScreen, ST->ConOut);
-
+
// enable cursor
refit_call2_wrapper(ST->ConOut->EnableCursor, ST->ConOut, TRUE);
}
VOID PauseForKey(VOID)
{
UINTN index;
-
+
Print(L"\n* Hit any key to continue *");
-
+
if (ReadAllKeyStrokes()) { // remove buffered key strokes
refit_call1_wrapper(BS->Stall, 5000000); // 5 seconds delay
ReadAllKeyStrokes(); // empty the buffer again
// Error handling
//
+#ifdef __MAKEWITH_GNUEFI
BOOLEAN CheckFatalError(IN EFI_STATUS Status, IN CHAR16 *where)
{
CHAR16 ErrorName[64];
return TRUE;
}
+#else
+BOOLEAN CheckFatalError(IN EFI_STATUS Status, IN CHAR16 *where)
+{
+// CHAR16 ErrorName[64];
+
+ if (!EFI_ERROR(Status))
+ return FALSE;
+
+// StatusToString(ErrorName, Status);
+ gST->ConOut->SetAttribute (gST->ConOut, ATTR_ERROR);
+ Print(L"Fatal Error: %r %s\n", Status, where);
+ gST->ConOut->SetAttribute (gST->ConOut, ATTR_BASIC);
+ haveError = TRUE;
+
+ //gBS->Exit(ImageHandle, ExitStatus, ExitDataSize, ExitData);
+
+ return TRUE;
+}
+
+BOOLEAN CheckError(IN EFI_STATUS Status, IN CHAR16 *where)
+{
+// CHAR16 ErrorName[64];
+
+ if (!EFI_ERROR(Status))
+ return FALSE;
+
+// StatusToString(ErrorName, Status);
+ gST->ConOut->SetAttribute (gST->ConOut, ATTR_ERROR);
+ Print(L"Error: %r %s\n", Status, where);
+ gST->ConOut->SetAttribute (gST->ConOut, ATTR_BASIC);
+ haveError = TRUE;
+
+ return TRUE;
+}
+#endif
//
// Graphics functions
VOID BltImageAlpha(IN EG_IMAGE *Image, IN UINTN XPos, IN UINTN YPos, IN EG_PIXEL *BackgroundPixel)
{
EG_IMAGE *CompImage;
-
+
// compose on background
CompImage = egCreateFilledImage(Image->Width, Image->Height, FALSE, BackgroundPixel);
egComposeImage(CompImage, Image, 0, 0);
-
+
// blit to screen and clean up
egDrawImage(CompImage, XPos, YPos);
egFreeImage(CompImage);
// CompHeight = TotalHeight;
// OffsetY = (TotalHeight - CompHeight) >> 1;
// egComposeImage(CompImage, TopImage, OffsetX, OffsetY);
-//
+//
// // blit to screen and clean up
// egDrawImage(CompImage, XPos, YPos);
// egFreeImage(CompImage);
VOID BltImageCompositeBadge(IN EG_IMAGE *BaseImage, IN EG_IMAGE *TopImage, IN EG_IMAGE *BadgeImage, IN UINTN XPos, IN UINTN YPos)
{
- UINTN TotalWidth, TotalHeight, CompWidth = 0, CompHeight = 0, OffsetX = 0, OffsetY = 0;
+ UINTN TotalWidth = 0, TotalHeight = 0, CompWidth = 0, CompHeight = 0, OffsetX = 0, OffsetY = 0;
EG_IMAGE *CompImage = NULL;
// initialize buffer with base image
OffsetY = (TotalHeight - CompHeight) >> 1;
egComposeImage(CompImage, TopImage, OffsetX, OffsetY);
}
-
+
// place the badge image
if (BadgeImage != NULL && CompImage != NULL && (BadgeImage->Width + 8) < CompWidth && (BadgeImage->Height + 8) < CompHeight) {
OffsetX += CompWidth - 8 - BadgeImage->Width;