1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 21:27:34 +00:00

LibPDF: Add smoke-and-mirror implementation of SeparationColorSpace

None of the methods actually do anything, but we now create an
actual SeparationColorSpace object for /Separation color spaces.

This fixes a crash on page 810 of pdf_reference_1-7.pdf.
Previously, we'd log a "separation color space not supported" error,
which would lead to Renderer not updating its current color space.
It'd stay a DeviceCYMK color space, which would then later assert
when it got a 1-argument array as color (which now the
SeparationColorSpace gets instead, which logs an "unimplemented"
error for that instead of asserting).
This commit is contained in:
Nico Weber 2023-07-23 16:55:10 -04:00 committed by Tim Flynn
parent af5a7b9a51
commit fad834a21c
3 changed files with 37 additions and 0 deletions

View file

@ -144,4 +144,19 @@ private:
NonnullRefPtr<Gfx::ICC::Profile> m_profile;
};
class SeparationColorSpace final : public ColorSpace {
public:
static PDFErrorOr<NonnullRefPtr<SeparationColorSpace>> create(Document*, Vector<Value>&& parameters);
~SeparationColorSpace() override = default;
PDFErrorOr<Color> color(Vector<Value> const& arguments) const override;
int number_of_components() const override { TODO(); }
Vector<float> default_decode() const override;
ColorSpaceFamily const& family() const override { return ColorSpaceFamily::Separation; }
private:
SeparationColorSpace() = default;
};
}