#include "core/fpdfapi/page/cpdf_function.h"
#include <algorithm>
#include <utility>
#include <vector>
#include "core/fpdfapi/page/cpdf_expintfunc.h"
#include "core/fpdfapi/page/cpdf_psfunc.h"
#include "core/fpdfapi/page/cpdf_sampledfunc.h"
#include "core/fpdfapi/page/cpdf_stitchfunc.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_stream.h"
#include "core/fpdfapi/parser/fpdf_parser_utility.h"
#include "core/fxcrt/containers/contains.h"
#include "core/fxcrt/fx_safe_types.h"
#include "core/fxcrt/scoped_set_insertion.h"
#include "core/fxcrt/stl_util.h"
namespace {
CPDF_Function::Type IntegerToFunctionType(int iType) { … }
}
std::unique_ptr<CPDF_Function> CPDF_Function::Load(
RetainPtr<const CPDF_Object> pFuncObj) { … }
std::unique_ptr<CPDF_Function> CPDF_Function::Load(
RetainPtr<const CPDF_Object> pFuncObj,
VisitedSet* pVisited) { … }
CPDF_Function::CPDF_Function(Type type) : … { … }
CPDF_Function::~CPDF_Function() = default;
bool CPDF_Function::Init(const CPDF_Object* pObj, VisitedSet* pVisited) { … }
std::optional<uint32_t> CPDF_Function::Call(pdfium::span<const float> inputs,
pdfium::span<float> results) const { … }
float CPDF_Function::Interpolate(float x,
float xmin,
float xmax,
float ymin,
float ymax) const { … }
#if defined(PDF_USE_SKIA)
const CPDF_SampledFunc* CPDF_Function::ToSampledFunc() const { … }
const CPDF_ExpIntFunc* CPDF_Function::ToExpIntFunc() const { … }
const CPDF_StitchFunc* CPDF_Function::ToStitchFunc() const { … }
#endif