diff --git a/Tests/LibGfx/TestImageDecoder.cpp b/Tests/LibGfx/TestImageDecoder.cpp index 37fbbc01a55c27..b372a955f458f8 100644 --- a/Tests/LibGfx/TestImageDecoder.cpp +++ b/Tests/LibGfx/TestImageDecoder.cpp @@ -407,7 +407,6 @@ TEST_CASE(test_jbig2_decode) // - immediate refinement regions referring to a direct region (code support added in #26197) // - immediate refinement regions referring to a direct region (code support added in #26197) // - TPGRON set in refinement region (only reachable in standalone refinement regions) - // - in embedded organization, reference from segment in one chunk to segment in another chunk // Missing tests for things that aren't implemented yet: // - immediate refinement regions not referring to a direct region (i.e. refining the page) // - immediate lossless refinement regions diff --git a/Tests/LibPDF/CMakeLists.txt b/Tests/LibPDF/CMakeLists.txt index 6f8d97ce17ef87..3a9a5a460f0907 100644 --- a/Tests/LibPDF/CMakeLists.txt +++ b/Tests/LibPDF/CMakeLists.txt @@ -15,6 +15,7 @@ set(TEST_FILES encryption_nocopy.pdf group.pdf jbig2-globals.pdf + jbig2-globals-indirect-reference.pdf jpeg2000-indexed-small.pdf linearized.pdf non-linearized.pdf diff --git a/Tests/LibPDF/TestPDF.cpp b/Tests/LibPDF/TestPDF.cpp index 592045893469ca..a0d22b20e63293 100644 --- a/Tests/LibPDF/TestPDF.cpp +++ b/Tests/LibPDF/TestPDF.cpp @@ -131,7 +131,7 @@ TEST_CASE(encrypted_object_stream) TEST_CASE(resolve_indirect_reference_during_parsing) { - auto file = TRY_OR_FAIL(Core::MappedFile::map("jbig2-globals.pdf"sv)); + auto file = TRY_OR_FAIL(Core::MappedFile::map("jbig2-globals-indirect-reference.pdf"sv)); auto document = MUST(PDF::Document::create(file->bytes())); MUST(document->initialize()); EXPECT_EQ(document->get_page_count(), 1U); @@ -141,6 +141,19 @@ TEST_CASE(resolve_indirect_reference_during_parsing) EXPECT_EQ(jbig2_stream->bytes().size(), 20'000U); } +TEST_CASE(jbig2_embedded_organization_cross_chunk_reference) +{ + auto file = TRY_OR_FAIL(Core::MappedFile::map("jbig2-globals.pdf"sv)); + auto document = MUST(PDF::Document::create(file->bytes())); + MUST(document->initialize()); + EXPECT_EQ(document->get_page_count(), 1U); + + auto page = MUST(document->get_page(0)); + auto page_size = Gfx::IntSize { 399, 400 }; + auto bitmap = TRY_OR_FAIL(Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, page_size)); + MUST(PDF::Renderer::render(document, page, bitmap, Color::White, PDF::RenderingPreferences {})); +} + TEST_CASE(malformed_pdf_document) { Array test_inputs = { diff --git a/Tests/LibPDF/jbig2-globals-indirect-reference.pdf b/Tests/LibPDF/jbig2-globals-indirect-reference.pdf new file mode 100644 index 00000000000000..8fe5ac819b40e0 Binary files /dev/null and b/Tests/LibPDF/jbig2-globals-indirect-reference.pdf differ diff --git a/Tests/LibPDF/jbig2-globals.pdf b/Tests/LibPDF/jbig2-globals.pdf index 8fe5ac819b40e0..865e95e8fce9a4 100644 Binary files a/Tests/LibPDF/jbig2-globals.pdf and b/Tests/LibPDF/jbig2-globals.pdf differ