diff --git a/Userland/Libraries/LibPDF/ColorSpace.cpp b/Userland/Libraries/LibPDF/ColorSpace.cpp index 943f9b96fb..47ffbf181c 100644 --- a/Userland/Libraries/LibPDF/ColorSpace.cpp +++ b/Userland/Libraries/LibPDF/ColorSpace.cpp @@ -73,6 +73,11 @@ Color DeviceGrayColorSpace::color(Vector const& arguments) const return Color(gray, gray, gray); } +Vector DeviceGrayColorSpace::default_decode() const +{ + return { 0.0f, 1.0f }; +} + NonnullRefPtr DeviceRGBColorSpace::the() { static auto instance = adopt_ref(*new DeviceRGBColorSpace()); @@ -88,6 +93,11 @@ Color DeviceRGBColorSpace::color(Vector const& arguments) const return Color(r, g, b); } +Vector DeviceRGBColorSpace::default_decode() const +{ + return { 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f }; +} + NonnullRefPtr DeviceCMYKColorSpace::the() { static auto instance = adopt_ref(*new DeviceCMYKColorSpace()); @@ -104,6 +114,11 @@ Color DeviceCMYKColorSpace::color(Vector const& arguments) const return Color::from_cmyk(c, m, y, k); } +Vector DeviceCMYKColorSpace::default_decode() const +{ + return { 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f }; +} + PDFErrorOr> CalRGBColorSpace::create(Document* document, Vector&& parameters) { if (parameters.size() != 1) @@ -274,6 +289,11 @@ Color CalRGBColorSpace::color(Vector const& arguments) const return Color(red, green, blue); } +Vector CalRGBColorSpace::default_decode() const +{ + return { 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f }; +} + PDFErrorOr> ICCBasedColorSpace::create(Document* document, Vector&& parameters) { if (parameters.is_empty()) @@ -313,4 +333,9 @@ Color ICCBasedColorSpace::color(Vector const&) const VERIFY_NOT_REACHED(); } +Vector ICCBasedColorSpace::default_decode() const +{ + VERIFY_NOT_REACHED(); +} + } diff --git a/Userland/Libraries/LibPDF/ColorSpace.h b/Userland/Libraries/LibPDF/ColorSpace.h index ab1e8c4da5..08bc660e7d 100644 --- a/Userland/Libraries/LibPDF/ColorSpace.h +++ b/Userland/Libraries/LibPDF/ColorSpace.h @@ -6,6 +6,7 @@ #pragma once +#include "AK/Forward.h" #include #include #include @@ -54,6 +55,8 @@ public: virtual ~ColorSpace() = default; virtual Color color(Vector const& arguments) const = 0; + virtual int number_of_components() const = 0; + virtual Vector default_decode() const = 0; virtual ColorSpaceFamily const& family() const = 0; }; @@ -64,6 +67,8 @@ public: ~DeviceGrayColorSpace() override = default; Color color(Vector const& arguments) const override; + int number_of_components() const override { return 1; } + Vector default_decode() const override; ColorSpaceFamily const& family() const override { return ColorSpaceFamily::DeviceGray; } private: @@ -77,6 +82,8 @@ public: ~DeviceRGBColorSpace() override = default; Color color(Vector const& arguments) const override; + int number_of_components() const override { return 3; } + Vector default_decode() const override; ColorSpaceFamily const& family() const override { return ColorSpaceFamily::DeviceRGB; } private: @@ -90,6 +97,8 @@ public: ~DeviceCMYKColorSpace() override = default; Color color(Vector const& arguments) const override; + int number_of_components() const override { return 4; } + Vector default_decode() const override; ColorSpaceFamily const& family() const override { return ColorSpaceFamily::DeviceCMYK; } private: @@ -103,6 +112,8 @@ public: ~CalRGBColorSpace() override = default; Color color(Vector const& arguments) const override; + int number_of_components() const override { return 3; } + Vector default_decode() const override; ColorSpaceFamily const& family() const override { return ColorSpaceFamily::CalRGB; } private: @@ -121,6 +132,8 @@ public: ~ICCBasedColorSpace() override = default; Color color(Vector const& arguments) const override; + int number_of_components() const override { VERIFY_NOT_REACHED(); } + Vector default_decode() const override; ColorSpaceFamily const& family() const override { return ColorSpaceFamily::ICCBased; } private: