diff options
Diffstat (limited to 'core/fpdfapi/page/cpdf_iccprofile.h')
-rw-r--r-- | core/fpdfapi/page/cpdf_iccprofile.h | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/core/fpdfapi/page/cpdf_iccprofile.h b/core/fpdfapi/page/cpdf_iccprofile.h index 070f8843c..0e040aa45 100644 --- a/core/fpdfapi/page/cpdf_iccprofile.h +++ b/core/fpdfapi/page/cpdf_iccprofile.h @@ -1,4 +1,4 @@ -// Copyright 2017 PDFium Authors. All rights reserved. +// Copyright 2017 The PDFium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -7,6 +7,8 @@ #ifndef CORE_FPDFAPI_PAGE_CPDF_ICCPROFILE_H_ #define CORE_FPDFAPI_PAGE_CPDF_ICCPROFILE_H_ +#include <stdint.h> + #include <memory> #include "core/fxcrt/observed_ptr.h" @@ -16,29 +18,35 @@ class CPDF_Stream; namespace fxcodec { -class CLcmsCmm; +class IccTransform; } // namespace fxcodec class CPDF_IccProfile final : public Retainable, public Observable { public: - template <typename T, typename... Args> - friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); + CONSTRUCT_VIA_MAKE_RETAIN; - const CPDF_Stream* GetStream() const { return m_pStream.Get(); } bool IsValid() const { return IsSRGB() || IsSupported(); } bool IsSRGB() const { return m_bsRGB; } bool IsSupported() const { return !!m_Transform; } - fxcodec::CLcmsCmm* transform() { return m_Transform.get(); } uint32_t GetComponents() const { return m_nSrcComponents; } + bool IsNormal() const; + void Translate(pdfium::span<const float> pSrcValues, + pdfium::span<float> pDestValues); + void TranslateScanline(pdfium::span<uint8_t> pDest, + pdfium::span<const uint8_t> pSrc, + int pixels); + private: - CPDF_IccProfile(const CPDF_Stream* pStream, pdfium::span<const uint8_t> span); + // Keeps stream alive for the duration of the CPDF_IccProfile. + CPDF_IccProfile(RetainPtr<const CPDF_Stream> pStream, + pdfium::span<const uint8_t> span); ~CPDF_IccProfile() override; const bool m_bsRGB; uint32_t m_nSrcComponents = 0; - RetainPtr<const CPDF_Stream> const m_pStream; - std::unique_ptr<fxcodec::CLcmsCmm> m_Transform; + RetainPtr<const CPDF_Stream> const m_pStream; // Used by `m_Transform`. + std::unique_ptr<fxcodec::IccTransform> m_Transform; }; #endif // CORE_FPDFAPI_PAGE_CPDF_ICCPROFILE_H_ |