From 8733ba27340d93ccd1193f34aade5ac907adbd24 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Wed, 6 Dec 2023 08:37:51 -0500 Subject: [PATCH] LibPDF: Fix decoding of IndexedColorSpace for palette sizes != 255 Previously, we were scaling palette indices from 0..(palette_size - 1) to 0..255 before using them as index into the palette. Instead, do not scale palette indices before using them as indices. (Renderer::load_image() uses `component_value_decoders.empend( .0f, 255.0f, dmin, dmax)`, so to get an identity mapping, we have to return `0, 255` from IndexedColorSpace::default_decode()). Fixes rendering of the gradient on page 5 of 0000277.pdf. --- Userland/Libraries/LibPDF/ColorSpace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Userland/Libraries/LibPDF/ColorSpace.cpp b/Userland/Libraries/LibPDF/ColorSpace.cpp index 766ecb25a1..8af8ae1716 100644 --- a/Userland/Libraries/LibPDF/ColorSpace.cpp +++ b/Userland/Libraries/LibPDF/ColorSpace.cpp @@ -701,7 +701,7 @@ PDFErrorOr IndexedColorSpace::color(ReadonlySpan arguments) const Vector IndexedColorSpace::default_decode() const { - return { 0.0, static_cast(m_hival) }; + return { 0.0, 255.0 }; } PDFErrorOr> SeparationColorSpace::create(Document* document, Vector&& parameters)