]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/HiiDatabase: Update HiiImage to support PNG/JPEG
authorRuiyu Ni <ruiyu.ni@intel.com>
Wed, 21 Sep 2016 04:55:00 +0000 (12:55 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Wed, 28 Sep 2016 08:21:58 +0000 (16:21 +0800)
1. Update GetImageIdOrAddress() to recognize PNG/JPEG image block.
   A offset calculation bug was fixed.
2. Update HiiGetImage() comments to say PNG/JPEG support is provided
   by HiiImageEx
3. Update HiiSetImage() to support replacing a PNG/JPEG image block
   with a new image

Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Dandan Bi <dandan.bi@intel.com>
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
MdeModulePkg/Universal/HiiDatabaseDxe/Image.c

index e5eb677dbfe9823f2485e05db8178082ccf89c61..c8e9258ba67c217c39ab3bfee4010810b53620e3 100644 (file)
@@ -127,7 +127,12 @@ GetImageIdOrAddress (
       break;\r
 \r
     case EFI_HII_IIBT_IMAGE_JPEG:\r
-      Length = ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size);\r
+      Length = OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) + ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size);\r
+      ImageIdCurrent++;\r
+      break;\r
+\r
+    case EFI_HII_IIBT_IMAGE_PNG:\r
+      Length = OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data) + ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_PNG_BLOCK *) CurrentImageBlock)->Size);\r
       ImageIdCurrent++;\r
       break;\r
 \r
@@ -842,8 +847,10 @@ HiiGetImage (
 \r
   switch (CurrentImageBlock->BlockType) {\r
   case EFI_HII_IIBT_IMAGE_JPEG:\r
+  case EFI_HII_IIBT_IMAGE_PNG:\r
     //\r
-    // BUGBUG: need to be supported as soon as image tool is designed.\r
+    // HiiImage protocol doesn't support return JPEG/PNG.\r
+    // Use HiiImageEx instead.\r
     //\r
     return EFI_UNSUPPORTED;\r
 \r
@@ -1005,11 +1012,11 @@ HiiSetImage (
   //\r
   switch (CurrentImageBlock->BlockType) {\r
   case EFI_HII_IIBT_IMAGE_JPEG:\r
-    //\r
-    // BUGBUG: need to be supported as soon as image tool is designed.\r
-    //\r
-    return EFI_UNSUPPORTED;\r
-\r
+    OldBlockSize = OFFSET_OF (EFI_HII_IIBT_JPEG_BLOCK, Data) + ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_JPEG_BLOCK *) CurrentImageBlock)->Size);\r
+    break;\r
+  case EFI_HII_IIBT_IMAGE_PNG:\r
+    OldBlockSize = OFFSET_OF (EFI_HII_IIBT_PNG_BLOCK, Data) + ReadUnaligned32 ((VOID *) &((EFI_HII_IIBT_PNG_BLOCK *) CurrentImageBlock)->Size);\r
+    break;\r
   case EFI_HII_IIBT_IMAGE_1BIT:\r
   case EFI_HII_IIBT_IMAGE_1BIT_TRANS:\r
     OldBlockSize = sizeof (EFI_HII_IIBT_IMAGE_1BIT_BLOCK) - sizeof (UINT8) +\r