58 uint32_t
Parse(pdfium::span<
const uint8_t> pData,
59 uint32_t start_offset,
61 const std::vector<uint32_t>& stream_start_offsets);
73 enum class RenderType :
bool { kFill =
false, kStroke =
true };
76 enum class Type : uint8_t { kObject = 0, kNumber, kName };
81 Type m_Type = Type::kObject;
87 static constexpr int kParamBufSize = 16;
92 int GetNextParamPos();
93 void ClearAllParams();
96 float GetNumber(uint32_t index)
const;
99 std::vector<
float> GetNumbers(size_t count)
const;
100 int GetInteger(uint32_t index)
const {
101 return static_cast<
int>(GetNumber(index));
108 void AddTextObject(pdfium::span<
const ByteString> strings,
109 pdfium::span<
const float> kernings,
110 float initial_kerning);
111 float GetHorizontalTextSize(
float fKerning)
const;
112 float GetVerticalTextSize(
float fKerning)
const;
114 void OnChangeTextMatrix();
115 void ParsePathObject();
117 void AddPathPointAndClose(
const CFX_PointF& point,
119 void AddPathRect(
float x,
float y,
float w,
float h);
121 RenderType render_type);
122 CPDF_ImageObject* AddImageFromStream(
RetainPtr<CPDF_Stream> pStream,
124 CPDF_ImageObject* AddImageFromStreamObjNum(uint32_t stream_obj_num,
126 CPDF_ImageObject* AddLastImage();
141 CPDF_ImageObject* AddImageObject(std::unique_ptr<CPDF_ImageObject> pImageObj);
143 std::vector<
float> GetColors()
const;
144 std::vector<
float> GetNamedColors()
const;
145 int32_t GetCurrentStreamIndex();
147 void Handle_CloseFillStrokePath();
148 void Handle_FillStrokePath();
149 void Handle_CloseEOFillStrokePath();
150 void Handle_EOFillStrokePath();
151 void Handle_BeginMarkedContent_Dictionary();
152 void Handle_BeginImage();
153 void Handle_BeginMarkedContent();
154 void Handle_BeginText();
155 void Handle_CurveTo_123();
156 void Handle_ConcatMatrix();
157 void Handle_SetColorSpace_Fill();
158 void Handle_SetColorSpace_Stroke();
159 void Handle_SetDash();
160 void Handle_SetCharWidth();
161 void Handle_SetCachedDevice();
162 void Handle_ExecuteXObject();
163 void Handle_MarkPlace_Dictionary();
164 void Handle_EndImage();
165 void Handle_EndMarkedContent();
166 void Handle_EndText();
167 void Handle_FillPath();
168 void Handle_FillPathOld();
169 void Handle_EOFillPath();
170 void Handle_SetGray_Fill();
171 void Handle_SetGray_Stroke();
172 void Handle_SetExtendGraphState();
173 void Handle_ClosePath();
174 void Handle_SetFlat();
175 void Handle_BeginImageData();
176 void Handle_SetLineJoin();
177 void Handle_SetLineCap();
178 void Handle_SetCMYKColor_Fill();
179 void Handle_SetCMYKColor_Stroke();
180 void Handle_LineTo();
181 void Handle_MoveTo();
182 void Handle_SetMiterLimit();
183 void Handle_MarkPlace();
184 void Handle_EndPath();
185 void Handle_SaveGraphState();
186 void Handle_RestoreGraphState();
187 void Handle_Rectangle();
188 void Handle_SetRGBColor_Fill();
189 void Handle_SetRGBColor_Stroke();
190 void Handle_SetRenderIntent();
191 void Handle_CloseStrokePath();
192 void Handle_StrokePath();
193 void Handle_SetColor_Fill();
194 void Handle_SetColor_Stroke();
195 void Handle_SetColorPS_Fill();
196 void Handle_SetColorPS_Stroke();
197 void Handle_ShadeFill();
198 void Handle_SetCharSpace();
199 void Handle_MoveTextPoint();
200 void Handle_MoveTextPoint_SetLeading();
201 void Handle_SetFont();
202 void Handle_ShowText();
203 void Handle_ShowText_Positioning();
204 void Handle_SetTextLeading();
205 void Handle_SetTextMatrix();
206 void Handle_SetTextRenderMode();
207 void Handle_SetTextRise();
208 void Handle_SetWordSpace();
209 void Handle_SetHorzScale();
210 void Handle_MoveToNextLine();
211 void Handle_CurveTo_23();
212 void Handle_SetLineWidth();
214 void Handle_EOClip();
215 void Handle_CurveTo_13();
216 void Handle_NextLineShowText();
217 void Handle_NextLineShowText_Space();
218 void Handle_Invalid();
228 uint32_t m_ParamStartPos = 0;
229 uint32_t m_ParamCount = 0;
230 std::unique_ptr<CPDF_StreamParser> m_pSyntax;
231 std::unique_ptr<CPDF_AllStates> m_pCurStates;
232 std::stack<std::unique_ptr<CPDF_ContentMarks>> m_ContentMarksStack;
233 std::vector<std::unique_ptr<CPDF_TextObject>> m_ClipTextList;
234 std::vector<CFX_Path::Point> m_PathPoints;
241 bool m_bColored =
false;
242 std::vector<std::unique_ptr<CPDF_AllStates>> m_StateStack;
243 std::array<
float, 6> m_Type3Data = {};
244 std::array<ContentParam, kParamBufSize> m_ParamBuf;
245 CPDF_PageObjectHolder::CTMMap m_AllCTMs;
249 std::vector<uint32_t> m_StreamStartOffsets;
252 uint32_t m_StartParseOffset = 0;
CPDF_StreamContentParser(CPDF_Document *pDoc, RetainPtr< CPDF_Dictionary > pPageResources, RetainPtr< CPDF_Dictionary > pParentResources, const CFX_Matrix *pmtContentToUser, CPDF_PageObjectHolder *pObjHolder, RetainPtr< CPDF_Dictionary > pResources, const CFX_FloatRect &rcBBox, const CPDF_AllStates *pStates, CPDF_Form::RecursionState *parse_state)
CPDF_PageObjectHolder::CTMMap TakeAllCTMs()
uint32_t Parse(pdfium::span< const uint8_t > pData, uint32_t start_offset, uint32_t max_cost, const std::vector< uint32_t > &stream_start_offsets)
pdfium::span< const float > GetType3Data() const
CPDF_PageObjectHolder * GetPageObjectHolder() const
static ByteStringView FindValueAbbreviationForTesting(ByteStringView abbr)
CPDF_AllStates * GetCurStates() const
RetainPtr< CPDF_Font > FindFont(const ByteString &name)
static ByteStringView FindKeyAbbreviationForTesting(ByteStringView abbr)