1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-10 18:10:56 +09:00

LibGfx/TIFF: Add support for Group4Fax encoded images

Note that we don't parse the T6 option group yet.

The test case was generated with GIMP.
This commit is contained in:
Lucas CHOLLET 2024-02-15 19:47:44 -05:00 committed by Jelle Raaijmakers
parent d57d676425
commit 9ec3480207
Notes: sideshowbarker 2024-07-17 00:23:42 +09:00
3 changed files with 26 additions and 0 deletions

View file

@ -654,6 +654,18 @@ TEST_CASE(test_tiff_ccitt3_2d_fill)
EXPECT_EQ(frame.image->get_pixel(60, 75), Gfx::Color::NamedColor::Black);
}
TEST_CASE(test_tiff_ccitt4)
{
auto file = TRY_OR_FAIL(Core::MappedFile::map(TEST_INPUT("tiff/ccitt4.tiff"sv)));
EXPECT(Gfx::TIFFImageDecoderPlugin::sniff(file->bytes()));
auto plugin_decoder = TRY_OR_FAIL(Gfx::TIFFImageDecoderPlugin::create(file->bytes()));
auto frame = TRY_OR_FAIL(expect_single_frame_of_size(*plugin_decoder, { 400, 300 }));
EXPECT_EQ(frame.image->get_pixel(0, 0), Gfx::Color::NamedColor::White);
EXPECT_EQ(frame.image->get_pixel(60, 75), Gfx::Color::NamedColor::Black);
}
TEST_CASE(test_tiff_lzw)
{
auto file = TRY_OR_FAIL(Core::MappedFile::map(TEST_INPUT("tiff/lzw.tiff"sv)));

Binary file not shown.

View file

@ -436,6 +436,20 @@ private:
TRY(loop_over_pixels(move(decode_group3_segment)));
break;
}
case Compression::Group4Fax: {
TRY(ensure_tags_are_correct_for_ccitt());
// FIXME: We need to parse T6 options
ByteBuffer decoded_bytes {};
auto decode_group3_segment = [&](u32 num_bytes, IntSize segment_size) -> ErrorOr<ReadonlyBytes> {
auto const encoded_bytes = TRY(read_bytes_considering_fill_order(num_bytes));
decoded_bytes = TRY(CCITT::decode_ccitt_group4(encoded_bytes, segment_size.width(), segment_size.height()));
return decoded_bytes;
};
TRY(loop_over_pixels(move(decode_group3_segment)));
break;
}
case Compression::LZW: {
ByteBuffer decoded_bytes {};
auto decode_lzw_segment = [&](u32 num_bytes, IntSize) -> ErrorOr<ReadonlyBytes> {