5#ifndef CORE_FXCRT_ZIP_H_
6#define CORE_FXCRT_ZIP_H_
13#include "core/fxcrt/check_op.h"
14#include "core/fxcrt/compiler_specific.h"
15#include "core/fxcrt/span.h"
46template <
typename T,
typename U>
69 ZipView2(T first, U second) : first_(first), second_(second) {
70 CHECK_LE(first.size(), second.size());
73 Iter begin() {
return {first_.begin(), second_.begin()}; }
74 Iter end() {
return {first_.end(), second_.end()}; }
82template <
typename T,
typename U,
typename V>
111 : first_(first), second_(second), third_(third) {
112 CHECK_LE(first.size(), second.size());
113 CHECK_LE(first.size(), third.size());
116 Iter begin() {
return {first_.begin(), second_.begin(), third_.begin()}; }
117 Iter end() {
return {first_.end(), second_.end(), third_.end()}; }
125template <
typename T,
typename U>
126auto Zip(
const T& first, U&& second) {
130template <
typename T,
typename U,
typename V>
131auto Zip(
const T& first,
const U& second, V&& third) {
fxcrt::ByteString ByteString
std::vector< RetainPtr< CPDF_Object > >::const_iterator const_iterator
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)
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)
uint32_t ComponentCount() const
bool HasSameArray(const CPDF_Object *pObj) const
void SetComponentsForStockCS(uint32_t nComponents)
static RetainPtr< CPDF_ColorSpace > GetStockCS(Family family)
virtual void GetDefaultValue(int iComponent, float *value, float *min, float *max) const
~CPDF_DeviceCS() override
std::optional< FX_RGB_STRUCT< float > > GetRGB(pdfium::span< const float > pBuf) const 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
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
uint32_t InputCount() const
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
float GetDomain(int i) const
std::optional< uint32_t > Call(pdfium::span< const float > inputs, pdfium::span< float > results) const
@ kType2ExponentialInterpolation
virtual bool v_Init(const CPDF_Object *pObj, VisitedSet *pVisited)=0
uint32_t OutputCount() 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
uint32_t v_Load(CPDF_Document *pDoc, const CPDF_Array *pArray, std::set< const CPDF_Object * > *pVisited) override
~CPDF_IndexedCS() override
std::optional< FX_RGB_STRUCT< float > > GetRGB(pdfium::span< const float > pBuf) const 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
ScopedSetInsertion & operator=(const ScopedSetInsertion &)=delete
ScopedSetInsertion(const ScopedSetInsertion &)=delete
ScopedSetInsertion(std::set< T > *org_set, const T &elem)
ZipView2(T first, U second)
ZipView3(T first, U second, V third)
#define UNSAFE_BUFFERS(...)
#define UNSAFE_BUFFER_USAGE
size_t Fx2DSizeOrDie(const T &w, const U &h)
#define FX_DATA_PARTITION_EXCEPTION(T)
pdfium::CheckedNumeric< int32_t > FX_SAFE_INT32
constexpr uint32_t FXBSTR_ID(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4)
void ReverseRGB(pdfium::span< uint8_t > pDestBuf, pdfium::span< const uint8_t > pSrcBuf, int pixels)
auto Zip(const T &first, const U &second, V &&third)
auto Zip(const T &first, U &&second)
#define NOTREACHED_NORETURN()
#define CONSTRUCT_VIA_MAKE_RETAIN
fxcrt::ByteStringView ByteStringView
std::pair< typename T::reference, typename U::reference > operator*() const
bool operator!=(const Iter &that) const
UNSAFE_BUFFER_USAGE Iter & operator++()
bool operator==(const Iter &that) const
bool operator==(const Iter &that) const
bool operator!=(const Iter &that) const
std::tuple< typename T::reference, typename U::reference, typename V::reference > operator*() const
UNSAFE_BUFFER_USAGE Iter & operator++()