7#ifndef CORE_FXCODEC_ICC_ICC_TRANSFORM_H_
8#define CORE_FXCODEC_ICC_ICC_TRANSFORM_H_
14#include "core/fxcodec/fx_codec_def.h"
15#include "third_party/base/containers/span.h"
17#if defined(USE_SYSTEM_LCMS2)
20#include "third_party/lcms/include/lcms2.h"
28 pdfium::span<
const uint8_t> span);
32 void Translate(pdfium::span<
const float> pSrcValues,
33 pdfium::span<
float> pDestValues);
35 pdfium::span<
const uint8_t> pSrc,
44 IccTransform(cmsHTRANSFORM transform,
49 const cmsHTRANSFORM m_hTransform;
50 const int m_nSrcComponents;
CPDF_BasedCS(Family family)
virtual const CPDF_IndexedCS * AsIndexedCS() const
static void InitializeGlobals()
~CPDF_ColorSpace() override
static void DestroyGlobals()
virtual const CPDF_PatternCS * AsPatternCS() const
virtual bool IsNormal() const
virtual void EnableStdConversion(bool bEnabled)
std::vector< float > CreateBufAndSetDefaultColor() const
CPDF_ColorSpace(Family family)
virtual bool GetRGB(pdfium::span< const float > pBuf, float *R, float *G, float *B) const =0
static uint32_t ComponentsForFamily(Family family)
virtual void TranslateImageLine(pdfium::span< uint8_t > dest_span, pdfium::span< const uint8_t > src_span, int pixels, int image_width, int image_height, bool bTransMask) const
static RetainPtr< CPDF_ColorSpace > GetStockCSForName(const ByteString &name)
bool HasSameArray(const CPDF_Object *pObj) const
void SetComponentsForStockCS(uint32_t nComponents)
static RetainPtr< CPDF_ColorSpace > GetStockCS(Family family)
uint32_t CountComponents() const
virtual void GetDefaultValue(int iComponent, float *value, float *min, float *max) const
~CPDF_DeviceCS() override
void TranslateImageLine(pdfium::span< uint8_t > dest_span, pdfium::span< const uint8_t > src_span, int pixels, int image_width, int image_height, bool bTransMask) const override
uint32_t v_Load(CPDF_Document *pDoc, const CPDF_Array *pArray, std::set< const CPDF_Object * > *pVisited) override
bool GetRGB(pdfium::span< const float > pBuf, float *R, float *G, float *B) const override
virtual bool v_Call(pdfium::span< const float > inputs, pdfium::span< float > results) const =0
std::vector< float > m_Ranges
static std::unique_ptr< CPDF_Function > Load(RetainPtr< const CPDF_Object > pFuncObj, VisitedSet *pVisited)
float GetRange(int i) const
bool Init(const CPDF_Object *pObj, VisitedSet *pVisited)
std::vector< float > m_Domains
absl::optional< uint32_t > Call(pdfium::span< const float > inputs, pdfium::span< float > results) const
uint32_t CountOutputs() const
float GetDomain(int i) const
@ kType2ExponentialInterpolation
virtual bool v_Init(const CPDF_Object *pObj, VisitedSet *pVisited)=0
uint32_t CountInputs() const
static std::unique_ptr< CPDF_Function > Load(RetainPtr< const CPDF_Object > pFuncObj)
float Interpolate(float x, float xmin, float xmax, float ymin, float ymax) const
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)
uint32_t GetComponents() const
~CPDF_IccProfile() override
const CPDF_IndexedCS * AsIndexedCS() const override
bool GetRGB(pdfium::span< const float > pBuf, float *R, float *G, float *B) const override
uint32_t v_Load(CPDF_Document *pDoc, const CPDF_Array *pArray, std::set< const CPDF_Object * > *pVisited) override
~CPDF_IndexedCS() override
virtual ByteString GetString() const
const CPDF_Array * AsArray() const
const CPDF_Stream * AsStream() const
void SetComps(pdfium::span< const float > comps)
PatternValue(const PatternValue &that)
bool operator==(const char *ptr) const
constexpr uint32_t FXBSTR_ID(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4)
int FXSYS_roundf(float f)
void ReverseRGB(uint8_t *pDestBuf, const uint8_t *pSrcBuf, int pixels)
#define CONSTRUCT_VIA_MAKE_RETAIN