-EFI_STATUS\r
-EFIAPI\r
-HiiLibAddFontPackageToHiiDatabase (\r
- IN UINTN FontSize,\r
- IN CONST UINT8 *FontBinary,\r
- IN CONST EFI_GUID *GuidId,\r
- OUT EFI_HII_HANDLE *HiiHandle OPTIONAL\r
- )\r
-{\r
- EFI_STATUS Status;\r
- UINT8 *Location;\r
- EFI_HII_SIMPLE_FONT_PACKAGE_HDR *SimplifiedFont;\r
- UINTN PackageLength;\r
- EFI_HII_PACKAGE_LIST_HEADER *PackageList;\r
- UINT8 *Package;\r
-\r
- //\r
- // Add 4 bytes to the header for entire length for HiiLibPreparePackageList use only.\r
- // Looks ugly. Might be updated when font tool is ready.\r
- //\r
- PackageLength = sizeof (EFI_HII_SIMPLE_FONT_PACKAGE_HDR) + FontSize + 4;\r
- Package = AllocateZeroPool (PackageLength);\r
- if (Package == NULL) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
- CopyMem (Package, &PackageLength, 4);\r
- SimplifiedFont = (EFI_HII_SIMPLE_FONT_PACKAGE_HDR*) (Package + 4);\r
- SimplifiedFont->Header.Length = (UINT32) (PackageLength - 4);\r
- SimplifiedFont->Header.Type = EFI_HII_PACKAGE_SIMPLE_FONTS;\r
- SimplifiedFont->NumberOfNarrowGlyphs = (UINT16) (FontSize / sizeof (EFI_NARROW_GLYPH));\r
- \r
- Location = (UINT8 *) (&SimplifiedFont->NumberOfWideGlyphs + 1);\r
- CopyMem (Location, FontBinary, FontSize);\r
- \r
- //\r
- // Add this simplified font package to a package list then install it.\r
- //\r
- PackageList = HiiLibPreparePackageList (1, GuidId, Package);\r
- Status = mHiiDatabaseProt->NewPackageList (mHiiDatabaseProt, PackageList, NULL, HiiHandle);\r
- ASSERT_EFI_ERROR (Status);\r
- SafeFreePool (PackageList);\r
- SafeFreePool (Package); \r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r