/* * Copyright (c) 2021, Matthew Olsson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #define ENUMERATE_COLOR_SPACES(V) \ V(DeviceGray) \ V(DeviceRGB) \ V(DeviceCMYK) \ V(CalGray) \ V(CalRGB) \ V(Lab) \ V(ICCBased) \ V(Indexed) \ V(Pattern) \ V(Separation) \ V(DeviceN) namespace PDF { class ColorSpace : public RefCounted { public: virtual ~ColorSpace() = default; virtual Color color(Vector const& arguments) const = 0; }; class DeviceGrayColorSpace final : public ColorSpace { public: static RefPtr the(); virtual ~DeviceGrayColorSpace() override = default; virtual Color color(Vector const& arguments) const override; private: DeviceGrayColorSpace() = default; }; class DeviceRGBColorSpace final : public ColorSpace { public: static RefPtr the(); virtual ~DeviceRGBColorSpace() override = default; virtual Color color(Vector const& arguments) const override; private: DeviceRGBColorSpace() = default; }; class DeviceCMYKColorSpace final : public ColorSpace { public: static RefPtr the(); virtual ~DeviceCMYKColorSpace() override = default; virtual Color color(Vector const& arguments) const override; private: DeviceCMYKColorSpace() = default; }; class CalRGBColorSpace final : public ColorSpace { public: static RefPtr create(RefPtr, Vector&& parameters); virtual ~CalRGBColorSpace() override = default; virtual Color color(Vector const& arguments) const override; private: CalRGBColorSpace() = default; Array m_whitepoint { 0, 0, 0 }; Array m_blackpoint { 0, 0, 0 }; Array m_gamma { 1, 1, 1 }; Array m_matrix { 1, 0, 0, 0, 1, 0, 0, 0, 1 }; }; }