diff options
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo')
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.bmp | bin | 0 -> 37878 bytes | |||
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.c | 186 | ||||
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.idf | 10 | ||||
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.inf | 68 | ||||
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.uni | 16 | ||||
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxe.inf | 95 | ||||
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxe.uni | 16 | ||||
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxeExtra.uni | 14 | ||||
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoExtra.uni | 14 |
9 files changed, 419 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.bmp b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.bmp Binary files differnew file mode 100644 index 00000000..91c3ba89 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.bmp diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.c b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.c new file mode 100644 index 00000000..a3d8d9b4 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.c @@ -0,0 +1,186 @@ +/* $Id: Logo.c $ */ +/** @file + * Logo DXE Driver, install Edkii Platform Logo protocol. + */ + +/* + * Copyright (C) 2019-2022 Oracle and/or its affiliates. + * + * This file is part of VirtualBox base platform packages, as + * available from https://www.virtualbox.org. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, in version 3 of the + * License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses>. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included + * in the VirtualBox distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + * + * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0 + * --------------------------------------------------------------------------- + * This code is based on: + * + * Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR> + * SPDX-License-Identifier: BSD-2-Clause-Patent + */ +#include <Uefi.h> +#include <Protocol/HiiDatabase.h> +#include <Protocol/GraphicsOutput.h> +#include <Protocol/HiiImageEx.h> +#include <Protocol/PlatformLogo.h> +#include <Protocol/HiiPackageList.h> +#include <Library/UefiBootServicesTableLib.h> +#include <Library/DebugLib.h> + +typedef struct { + EFI_IMAGE_ID ImageId; + EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE Attribute; + INTN OffsetX; + INTN OffsetY; +} LOGO_ENTRY; + +EFI_HII_IMAGE_EX_PROTOCOL *mHiiImageEx; +EFI_HII_HANDLE mHiiHandle; +LOGO_ENTRY mLogos[] = { + { + IMAGE_TOKEN (IMG_LOGO), + EdkiiPlatformLogoDisplayAttributeCenter, + 0, + 0 + } +}; + +/** + Load a platform logo image and return its data and attributes. + + @param This The pointer to this protocol instance. + @param Instance The visible image instance is found. + @param Image Points to the image. + @param Attribute The display attributes of the image returned. + @param OffsetX The X offset of the image regarding the Attribute. + @param OffsetY The Y offset of the image regarding the Attribute. + + @retval EFI_SUCCESS The image was fetched successfully. + @retval EFI_NOT_FOUND The specified image could not be found. +**/ +EFI_STATUS +EFIAPI +GetImage ( + IN EDKII_PLATFORM_LOGO_PROTOCOL *This, + IN OUT UINT32 *Instance, + OUT EFI_IMAGE_INPUT *Image, + OUT EDKII_PLATFORM_LOGO_DISPLAY_ATTRIBUTE *Attribute, + OUT INTN *OffsetX, + OUT INTN *OffsetY + ) +{ + UINT32 Current; + if (Instance == NULL || Image == NULL || + Attribute == NULL || OffsetX == NULL || OffsetY == NULL) { + return EFI_INVALID_PARAMETER; + } + + Current = *Instance; + if (Current >= ARRAY_SIZE (mLogos)) { + return EFI_NOT_FOUND; + } + + (*Instance)++; + *Attribute = mLogos[Current].Attribute; + *OffsetX = mLogos[Current].OffsetX; + *OffsetY = mLogos[Current].OffsetY; + return mHiiImageEx->GetImageEx (mHiiImageEx, mHiiHandle, mLogos[Current].ImageId, Image); +} + +EDKII_PLATFORM_LOGO_PROTOCOL mPlatformLogo = { + GetImage +}; + +/** + Entrypoint of this module. + + This function is the entrypoint of this module. It installs the Edkii + Platform Logo protocol. + + @param ImageHandle The firmware allocated handle for the EFI image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +InitializeLogo ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; + EFI_HII_DATABASE_PROTOCOL *HiiDatabase; + EFI_HANDLE Handle; + + Status = gBS->LocateProtocol ( + &gEfiHiiDatabaseProtocolGuid, + NULL, + (VOID **) &HiiDatabase + ); + ASSERT_EFI_ERROR (Status); + + Status = gBS->LocateProtocol ( + &gEfiHiiImageExProtocolGuid, + NULL, + (VOID **) &mHiiImageEx + ); + ASSERT_EFI_ERROR (Status); + + // + // Retrieve HII package list from ImageHandle + // + Status = gBS->OpenProtocol ( + ImageHandle, + &gEfiHiiPackageListProtocolGuid, + (VOID **) &PackageList, + ImageHandle, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "HII Image Package with logo not found in PE/COFF resource section\n")); + return Status; + } + + // + // Publish HII package list to HII Database. + // + Status = HiiDatabase->NewPackageList ( + HiiDatabase, + PackageList, + NULL, + &mHiiHandle + ); + if (!EFI_ERROR (Status)) { + Handle = NULL; + Status = gBS->InstallMultipleProtocolInterfaces ( + &Handle, + &gEdkiiPlatformLogoProtocolGuid, &mPlatformLogo, + NULL + ); + } + return Status; +} diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.idf b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.idf new file mode 100644 index 00000000..671ad6bc --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.idf @@ -0,0 +1,10 @@ +// /** @file +// Platform Logo image definition file. +// +// Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR> +// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + +#image IMG_LOGO Logo.bmp diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.inf b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.inf new file mode 100644 index 00000000..72797550 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.inf @@ -0,0 +1,68 @@ +# $Id: Logo.inf $ +## @file +# Logo.inf +# + +# +# Copyright (C) 2019-2022 Oracle and/or its affiliates. +# +# This file is part of VirtualBox base platform packages, as +# available from https://www.virtualbox.org. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, in version 3 of the +# License. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <https://www.gnu.org/licenses>. +# +# The contents of this file may alternatively be used under the terms +# of the Common Development and Distribution License Version 1.0 +# (CDDL), a copy of it is provided in the "COPYING.CDDL" file included +# in the VirtualBox distribution, in which case the provisions of the +# CDDL are applicable instead of those of the GPL. +# +# You may elect to license modified versions of this file under the +# terms and conditions of either the GPL or the CDDL or both. +# +# SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0 +# + +# +# This code is based on: +# +## @file +# The default logo bitmap picture shown on setup screen, which is corresponding to gEfiDefaultBmpLogoGuid. +# +# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = Logo + MODULE_UNI_FILE = Logo.uni + FILE_GUID = 7BB28B99-61BB-11D5-9A5D-0090273FC14D + MODULE_TYPE = USER_DEFINED + VERSION_STRING = 1.0 + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64 +# + +[Binaries] + BIN|Logo.bmp|* + +[UserExtensions.TianoCore."ExtraFiles"] + LogoExtra.uni diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.uni b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.uni new file mode 100644 index 00000000..9d1bbaff --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/Logo.uni @@ -0,0 +1,16 @@ +// /** @file
+// The default logo bitmap picture shown on setup screen, which is corresponding to gEfiDefaultBmpLogoGuid.
+//
+// This module provides the default logo bitmap picture shown on setup screen, which corresponds to gEfiDefaultBmpLogoGuid.
+//
+// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+
+#string STR_MODULE_ABSTRACT #language en-US "Provides the default logo bitmap picture shown on setup screen, which corresponds to gEfiDefaultBmpLogoGuid"
+
+#string STR_MODULE_DESCRIPTION #language en-US "This module provides the default logo bitmap picture shown on setup screen, which corresponds to gEfiDefaultBmpLogoGuid."
+
diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxe.inf b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxe.inf new file mode 100644 index 00000000..e7c56f4d --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxe.inf @@ -0,0 +1,95 @@ +# $Id: LogoDxe.inf $ +## @file +# LogoDxe.inf +# + +# +# Copyright (C) 2019-2022 Oracle and/or its affiliates. +# +# This file is part of VirtualBox base platform packages, as +# available from https://www.virtualbox.org. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, in version 3 of the +# License. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <https://www.gnu.org/licenses>. +# +# The contents of this file may alternatively be used under the terms +# of the Common Development and Distribution License Version 1.0 +# (CDDL), a copy of it is provided in the "COPYING.CDDL" file included +# in the VirtualBox distribution, in which case the provisions of the +# CDDL are applicable instead of those of the GPL. +# +# You may elect to license modified versions of this file under the +# terms and conditions of either the GPL or the CDDL or both. +# +# SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0 +# + +# +# This code is based on: +# +## @file +# The default logo bitmap picture shown on setup screen. +# +# Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = LogoDxe + MODULE_UNI_FILE = LogoDxe.uni + FILE_GUID = F74D20EE-37E7-48FC-97F7-9B1047749C69 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + + ENTRY_POINT = InitializeLogo +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + Logo.bmp + Logo.c + Logo.idf + +[Packages] + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + +[LibraryClasses] + UefiBootServicesTableLib + UefiDriverEntryPoint + DebugLib + +[Protocols] + gEfiHiiDatabaseProtocolGuid ## CONSUMES + gEfiHiiImageExProtocolGuid ## CONSUMES + gEfiHiiPackageListProtocolGuid ## PRODUCES CONSUMES + gEdkiiPlatformLogoProtocolGuid ## PRODUCES + +[Depex] + gEfiHiiDatabaseProtocolGuid AND + gEfiHiiImageExProtocolGuid + +[UserExtensions.TianoCore."ExtraFiles"] + LogoDxeExtra.uni diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxe.uni b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxe.uni new file mode 100644 index 00000000..9635701b --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxe.uni @@ -0,0 +1,16 @@ +// /** @file
+// The default logo bitmap picture shown on setup screen.
+//
+// This module provides the default logo bitmap picture shown on setup screen, through EDKII Platform Logo protocol.
+//
+// Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+
+#string STR_MODULE_ABSTRACT #language en-US "Provides the default logo bitmap picture shown on setup screen."
+
+#string STR_MODULE_DESCRIPTION #language en-US "This module provides the default logo bitmap picture shown on setup screen, through EDKII Platform Logo protocol."
+
diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxeExtra.uni b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxeExtra.uni new file mode 100644 index 00000000..c6ea34b8 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoDxeExtra.uni @@ -0,0 +1,14 @@ +// /** @file
+// Logo Localized Strings and Content
+//
+// Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+#string STR_PROPERTIES_MODULE_NAME
+#language en-US
+"Logo Image File"
+
+
diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoExtra.uni b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoExtra.uni new file mode 100644 index 00000000..041179fb --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/Logo/LogoExtra.uni @@ -0,0 +1,14 @@ +// /** @file
+// Logo Localized Strings and Content
+//
+// Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+#string STR_PROPERTIES_MODULE_NAME
+#language en-US
+"Logo Image File"
+
+
|