Explorar el Código

LibGfx: Disallow RLE8 compression for 16bpp BMPs

Also, disallow similar silly combinations. Technically, we support *more* than
the definition seems to require.

For future reference:
https://archive.org/details/mac_Graphics_File_Formats_Second_Edition_1996/page/n607/mode/2up
Book page 580 (pdf page 608)
Ben Wiederhake hace 4 años
padre
commit
bd6d365166
Se han modificado 1 ficheros con 21 adiciones y 1 borrados
  1. 21 1
      Libraries/LibGfx/BMPLoader.cpp

+ 21 - 1
Libraries/LibGfx/BMPLoader.cpp

@@ -401,8 +401,28 @@ static bool check_for_invalid_bitmask_combinations(BMPLoadingContext& context)
             return false;
         break;
     case DIBType::Info:
-        if ((compression == Compression::BITFIELDS || compression == Compression::ALPHABITFIELDS) && bpp != 16 && bpp != 32)
+        switch (compression) {
+        case Compression::BITFIELDS:
+        case Compression::ALPHABITFIELDS:
+            if (bpp != 16 && bpp != 32)
+                return false;
+            break;
+        case Compression::RGB:
+            break;
+        case Compression::RLE8:
+            if (bpp > 8)
+                return false;
+            break;
+        case Compression::RLE4:
+            // TODO: This is a guess
+            if (bpp > 4)
+                return false;
+            break;
+        default:
+            // Other compressions are not officially supported.
+            // Technically, we could even drop ALPHABITFIELDS.
             return false;
+        }
         break;
     case DIBType::OSV2Short:
     case DIBType::OSV2: