7#ifndef CORE_FPDFAPI_PAGE_CPDF_PSENGINE_H_
8#define CORE_FPDFAPI_PAGE_CPDF_PSENGINE_H_
16#include "core/fxcrt/bytestring.h"
17#include "core/fxcrt/span.h"
85 std::unique_ptr<CPDF_PSProc> m_proc;
99 return m_Operators.back();
103 static constexpr int kMaxDepth = 128;
107 std::vector<std::unique_ptr<CPDF_PSOP>> m_Operators;
115 bool Parse(pdfium::span<
const uint8_t> input);
119 void Push(
float value);
125 static constexpr uint32_t kPSEngineStackSize = 100;
127 uint32_t m_StackCount = 0;
129 std::array<
float, kPSEngineStackSize> m_Stack = {};
std::vector< RetainPtr< CPDF_Object > >::const_iterator const_iterator
int GetIntegerFor(const ByteString &key) const
std::map< ByteString, RetainPtr< CPDF_Object >, std::less<> > DictMap
bool Init(const CPDF_Object *pObj, VisitedSet *pVisited)
std::optional< uint32_t > Call(pdfium::span< const float > inputs, pdfium::span< float > results) const
@ kType2ExponentialInterpolation
float Interpolate(float x, float xmin, float xmax, float ymin, float ymax) const
RetainPtr< const CPDF_Dictionary > GetDict() const
const CPDF_Stream * AsStream() const
bool DoOperator(PDF_PSOP op)
bool Parse(pdfium::span< const uint8_t > input)
uint32_t GetStackSize() const
bool v_Init(const CPDF_Object *pObj, VisitedSet *pVisited) override
bool v_Call(pdfium::span< const float > inputs, pdfium::span< float > results) const override
void Execute(CPDF_PSEngine *pEngine)
float GetFloatValue() const
bool Parse(CPDF_SimpleParser *parser, int depth)
bool Execute(CPDF_PSEngine *pEngine)
const std::unique_ptr< CPDF_PSOP > & last_operator()
bool Parse(CPDF_SimpleParser *parser, int depth)
void AddOperatorForTesting(ByteStringView word)
fxcrt::ByteStringView ByteStringView