diff --git a/Userland/Libraries/LibPDF/ColorSpace.cpp b/Userland/Libraries/LibPDF/ColorSpace.cpp index e93d618c53..1f43048eb6 100644 --- a/Userland/Libraries/LibPDF/ColorSpace.cpp +++ b/Userland/Libraries/LibPDF/ColorSpace.cpp @@ -69,7 +69,7 @@ NonnullRefPtr DeviceGrayColorSpace::the() return instance; } -Color DeviceGrayColorSpace::color(Vector const& arguments) const +PDFErrorOr DeviceGrayColorSpace::color(Vector const& arguments) const { VERIFY(arguments.size() == 1); auto gray = static_cast(arguments[0].to_float() * 255.0f); @@ -87,7 +87,7 @@ NonnullRefPtr DeviceRGBColorSpace::the() return instance; } -Color DeviceRGBColorSpace::color(Vector const& arguments) const +PDFErrorOr DeviceRGBColorSpace::color(Vector const& arguments) const { VERIFY(arguments.size() == 3); auto r = static_cast(arguments[0].to_float() * 255.0f); @@ -107,7 +107,7 @@ NonnullRefPtr DeviceCMYKColorSpace::the() return instance; } -Color DeviceCMYKColorSpace::color(Vector const& arguments) const +PDFErrorOr DeviceCMYKColorSpace::color(Vector const& arguments) const { VERIFY(arguments.size() == 4); auto c = arguments[0].to_float(); @@ -265,7 +265,7 @@ constexpr Array convert_to_srgb(Array xyz) return matrix_multiply(conversion_matrix, xyz); } -Color CalRGBColorSpace::color(Vector const& arguments) const +PDFErrorOr CalRGBColorSpace::color(Vector const& arguments) const { VERIFY(arguments.size() == 3); auto a = clamp(arguments[0].to_float(), 0.0f, 1.0f); @@ -329,10 +329,10 @@ ICCBasedColorSpace::ICCBasedColorSpace(NonnullRefPtr profile) { } -Color ICCBasedColorSpace::color(Vector const& arguments) const +PDFErrorOr ICCBasedColorSpace::color(Vector const& arguments) const { if (!s_srgb_profile) - s_srgb_profile = MUST(Gfx::ICC::sRGB()); + s_srgb_profile = TRY(Gfx::ICC::sRGB()); Vector bytes; for (auto const& arg : arguments) { @@ -340,9 +340,9 @@ Color ICCBasedColorSpace::color(Vector const& arguments) const bytes.append(static_cast(arg.to_float() * 255.0f)); } - auto pcs = MUST(m_profile->to_pcs(bytes)); + auto pcs = TRY(m_profile->to_pcs(bytes)); Array output; - MUST(s_srgb_profile->from_pcs(pcs, output.span())); + TRY(s_srgb_profile->from_pcs(pcs, output.span())); return Color(output[0], output[1], output[2]); } diff --git a/Userland/Libraries/LibPDF/ColorSpace.h b/Userland/Libraries/LibPDF/ColorSpace.h index bc6839a222..5f87606ece 100644 --- a/Userland/Libraries/LibPDF/ColorSpace.h +++ b/Userland/Libraries/LibPDF/ColorSpace.h @@ -55,7 +55,7 @@ public: virtual ~ColorSpace() = default; - virtual Color color(Vector const& arguments) const = 0; + virtual PDFErrorOr 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; @@ -67,7 +67,7 @@ public: ~DeviceGrayColorSpace() override = default; - Color color(Vector const& arguments) const override; + PDFErrorOr 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; } @@ -82,7 +82,7 @@ public: ~DeviceRGBColorSpace() override = default; - Color color(Vector const& arguments) const override; + PDFErrorOr 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; } @@ -97,7 +97,7 @@ public: ~DeviceCMYKColorSpace() override = default; - Color color(Vector const& arguments) const override; + PDFErrorOr 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; } @@ -112,7 +112,7 @@ public: ~CalRGBColorSpace() override = default; - Color color(Vector const& arguments) const override; + PDFErrorOr 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; } @@ -132,7 +132,7 @@ public: ~ICCBasedColorSpace() override = default; - Color color(Vector const& arguments) const override; + PDFErrorOr 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; } diff --git a/Userland/Libraries/LibPDF/Renderer.cpp b/Userland/Libraries/LibPDF/Renderer.cpp index ad3a685cff..24f51a612b 100644 --- a/Userland/Libraries/LibPDF/Renderer.cpp +++ b/Userland/Libraries/LibPDF/Renderer.cpp @@ -523,7 +523,7 @@ RENDERER_HANDLER(set_painting_space) RENDERER_HANDLER(set_stroking_color) { - state().stroke_color = state().stroke_color_space->color(args); + state().stroke_color = TRY(state().stroke_color_space->color(args)); return {}; } @@ -534,13 +534,13 @@ RENDERER_HANDLER(set_stroking_color_extended) if (last_arg.has>() && last_arg.get>()->is()) TODO(); - state().stroke_color = state().stroke_color_space->color(args); + state().stroke_color = TRY(state().stroke_color_space->color(args)); return {}; } RENDERER_HANDLER(set_painting_color) { - state().paint_color = state().paint_color_space->color(args); + state().paint_color = TRY(state().paint_color_space->color(args)); return {}; } @@ -551,49 +551,49 @@ RENDERER_HANDLER(set_painting_color_extended) if (last_arg.has>() && last_arg.get>()->is()) TODO(); - state().paint_color = state().paint_color_space->color(args); + state().paint_color = TRY(state().paint_color_space->color(args)); return {}; } RENDERER_HANDLER(set_stroking_color_and_space_to_gray) { state().stroke_color_space = DeviceGrayColorSpace::the(); - state().stroke_color = state().stroke_color_space->color(args); + state().stroke_color = TRY(state().stroke_color_space->color(args)); return {}; } RENDERER_HANDLER(set_painting_color_and_space_to_gray) { state().paint_color_space = DeviceGrayColorSpace::the(); - state().paint_color = state().paint_color_space->color(args); + state().paint_color = TRY(state().paint_color_space->color(args)); return {}; } RENDERER_HANDLER(set_stroking_color_and_space_to_rgb) { state().stroke_color_space = DeviceRGBColorSpace::the(); - state().stroke_color = state().stroke_color_space->color(args); + state().stroke_color = TRY(state().stroke_color_space->color(args)); return {}; } RENDERER_HANDLER(set_painting_color_and_space_to_rgb) { state().paint_color_space = DeviceRGBColorSpace::the(); - state().paint_color = state().paint_color_space->color(args); + state().paint_color = TRY(state().paint_color_space->color(args)); return {}; } RENDERER_HANDLER(set_stroking_color_and_space_to_cmyk) { state().stroke_color_space = DeviceCMYKColorSpace::the(); - state().stroke_color = state().stroke_color_space->color(args); + state().stroke_color = TRY(state().stroke_color_space->color(args)); return {}; } RENDERER_HANDLER(set_painting_color_and_space_to_cmyk) { state().paint_color_space = DeviceCMYKColorSpace::the(); - state().paint_color = state().paint_color_space->color(args); + state().paint_color = TRY(state().paint_color_space->color(args)); return {}; } @@ -795,7 +795,7 @@ PDFErrorOr> Renderer::load_image(NonnullRefPtrcolor(component_values); + auto color = TRY(color_space->color(component_values)); bitmap->set_pixel(x, y, color); ++x; if (x == width) {