7#include "core/fpdfapi/page/cpdf_iccprofile.h"
11#include "core/fpdfapi/parser/cpdf_stream_acc.h"
12#include "core/fxcodec/icc/icc_transform.h"
16bool DetectSRGB(pdfium::span<
const uint8_t> span) {
17 static const char kSRGB[] =
"sRGB IEC61966-2.1";
18 return span.size() == 3144 && memcmp(&span[400], kSRGB, strlen(kSRGB)) == 0;
23CPDF_IccProfile::CPDF_IccProfile(
RetainPtr<
const CPDF_StreamAcc> stream_acc,
24 uint32_t expected_components)
25 : m_pStreamAcc(std::move(stream_acc)),
26 m_bsRGB(expected_components == 3 && DetectSRGB(m_pStreamAcc->GetSpan())) {
33 fxcodec::IccTransform::CreateTransformSRGB(m_pStreamAcc->GetSpan());
38 uint32_t components = transform->components();
39 if (components != expected_components) {
43 m_nSrcComponents = components;
44 m_Transform = std::move(transform);
50 return m_Transform->IsNormal();
53void CPDF_IccProfile::
Translate(pdfium::span<
const float> pSrcValues,
54 pdfium::span<
float> pDestValues) {
55 m_Transform->Translate(pSrcValues, pDestValues);
59 pdfium::span<
const uint8_t> pSrc,
61 m_Transform->TranslateScanline(pDest, pSrc, pixels);
void TranslateScanline(pdfium::span< uint8_t > pDest, pdfium::span< const uint8_t > pSrc, int pixels)
void Translate(pdfium::span< const float > pSrcValues, pdfium::span< float > pDestValues)
~CPDF_IccProfile() override