1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 23:28:11 +00:00

LibGfx: Add the start of a JBIG2 loader

JBIG2 is infamous for two things:

1. It's used in xerox scanners were it falsifies scanned numbers:

https://www.dkriesel.com/en/blog/2013/0802_xerox-workcentres_are_switching_written_numbers_when_scanning

2. It was allegedly used in an iOS zero day, in a very cool way:

https://googleprojectzero.blogspot.com/2021/12/a-deep-dive-into-nso-zero-click.html

Needless to say, we need support for it in Serenity. (...because it's
used in PDF files.)

This adds all the scaffolding, but no actual implementation yet.

It's enough for `file` to print the mime type of .jb2 files, but `image`
can't do anything with the files yet.
This commit is contained in:
Nico Weber 2024-03-03 09:21:30 -05:00 committed by Andreas Kling
parent d7ad134ae5
commit 58838db445
12 changed files with 86 additions and 22 deletions

View file

@ -16,26 +16,28 @@
#include <LibGfx/Forward.h>
#include <LibGfx/Rect.h>
#define ENUMERATE_IMAGE_FORMATS \
__ENUMERATE_IMAGE_FORMAT(bmp, ".bmp") \
__ENUMERATE_IMAGE_FORMAT(dds, ".dds") \
__ENUMERATE_IMAGE_FORMAT(gif, ".gif") \
__ENUMERATE_IMAGE_FORMAT(ico, ".ico") \
__ENUMERATE_IMAGE_FORMAT(iff, ".iff") \
__ENUMERATE_IMAGE_FORMAT(jpeg, ".jpeg") \
__ENUMERATE_IMAGE_FORMAT(jpeg, ".jpg") \
__ENUMERATE_IMAGE_FORMAT(jxl, ".jxl") \
__ENUMERATE_IMAGE_FORMAT(iff, ".lbm") \
__ENUMERATE_IMAGE_FORMAT(pam, ".pam") \
__ENUMERATE_IMAGE_FORMAT(pbm, ".pbm") \
__ENUMERATE_IMAGE_FORMAT(pgm, ".pgm") \
__ENUMERATE_IMAGE_FORMAT(png, ".png") \
__ENUMERATE_IMAGE_FORMAT(ppm, ".ppm") \
__ENUMERATE_IMAGE_FORMAT(qoi, ".qoi") \
__ENUMERATE_IMAGE_FORMAT(tga, ".tga") \
__ENUMERATE_IMAGE_FORMAT(tiff, ".tif") \
__ENUMERATE_IMAGE_FORMAT(tiff, ".tiff") \
__ENUMERATE_IMAGE_FORMAT(tvg, ".tvg") \
#define ENUMERATE_IMAGE_FORMATS \
__ENUMERATE_IMAGE_FORMAT(bmp, ".bmp") \
__ENUMERATE_IMAGE_FORMAT(dds, ".dds") \
__ENUMERATE_IMAGE_FORMAT(gif, ".gif") \
__ENUMERATE_IMAGE_FORMAT(ico, ".ico") \
__ENUMERATE_IMAGE_FORMAT(iff, ".iff") \
__ENUMERATE_IMAGE_FORMAT(jpeg, ".jb2") \
__ENUMERATE_IMAGE_FORMAT(jpeg, ".jbig2") \
__ENUMERATE_IMAGE_FORMAT(jpeg, ".jpeg") \
__ENUMERATE_IMAGE_FORMAT(jpeg, ".jpg") \
__ENUMERATE_IMAGE_FORMAT(jxl, ".jxl") \
__ENUMERATE_IMAGE_FORMAT(iff, ".lbm") \
__ENUMERATE_IMAGE_FORMAT(pam, ".pam") \
__ENUMERATE_IMAGE_FORMAT(pbm, ".pbm") \
__ENUMERATE_IMAGE_FORMAT(pgm, ".pgm") \
__ENUMERATE_IMAGE_FORMAT(png, ".png") \
__ENUMERATE_IMAGE_FORMAT(ppm, ".ppm") \
__ENUMERATE_IMAGE_FORMAT(qoi, ".qoi") \
__ENUMERATE_IMAGE_FORMAT(tga, ".tga") \
__ENUMERATE_IMAGE_FORMAT(tiff, ".tif") \
__ENUMERATE_IMAGE_FORMAT(tiff, ".tiff") \
__ENUMERATE_IMAGE_FORMAT(tvg, ".tvg") \
__ENUMERATE_IMAGE_FORMAT(tvg, ".webp")
namespace Gfx {