aboutsummaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/cpdf_iccprofile.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/page/cpdf_iccprofile.h')
-rw-r--r--core/fpdfapi/page/cpdf_iccprofile.h26
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_