Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(466)

Side by Side Diff: core/fpdfapi/fpdf_page/pageint.h

Issue 1918113002: Clean up CPDF_Page. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: more Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fpdfapi/fpdf_page/include/cpdf_page.h ('k') | core/fpdfapi/fpdf_render/fpdf_render.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_ 7 #ifndef CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_
8 #define CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_ 8 #define CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_
9 9
10 #include <map> 10 #include <map>
11 #include <memory> 11 #include <memory>
12 #include <unordered_map> 12 #include <unordered_map>
13 #include <vector> 13 #include <vector>
14 14
15 #include "core/fpdfapi/fpdf_page/cpdf_contentmark.h" 15 #include "core/fpdfapi/fpdf_page/cpdf_contentmark.h"
16 #include "core/fpdfapi/fpdf_page/cpdf_countedobject.h" 16 #include "core/fpdfapi/fpdf_page/cpdf_countedobject.h"
17 #include "core/fpdfapi/fpdf_page/cpdf_parseoptions.h"
18 #include "core/fpdfapi/fpdf_page/include/cpdf_pageobjectholder.h" 17 #include "core/fpdfapi/fpdf_page/include/cpdf_pageobjectholder.h"
19 #include "core/fxge/include/fx_ge.h" 18 #include "core/fxge/include/fx_ge.h"
20 19
21 class CPDF_AllStates; 20 class CPDF_AllStates;
22 class CPDF_ColorSpace; 21 class CPDF_ColorSpace;
23 class CPDF_Font; 22 class CPDF_Font;
24 class CPDF_FontEncoding; 23 class CPDF_FontEncoding;
25 class CPDF_Form; 24 class CPDF_Form;
26 class CPDF_IccProfile; 25 class CPDF_IccProfile;
27 class CPDF_Image; 26 class CPDF_Image;
28 class CPDF_ImageObject; 27 class CPDF_ImageObject;
29 class CPDF_Page; 28 class CPDF_Page;
30 class CPDF_ParseOptions;
31 class CPDF_Pattern; 29 class CPDF_Pattern;
32 class CPDF_StreamAcc; 30 class CPDF_StreamAcc;
33 class CPDF_TextObject; 31 class CPDF_TextObject;
34 class CPDF_Type3Char; 32 class CPDF_Type3Char;
35 33
36 #define PARSE_STEP_LIMIT 100 34 #define PARSE_STEP_LIMIT 100
37 35
38 class CPDF_StreamParser { 36 class CPDF_StreamParser {
39 public: 37 public:
40 enum SyntaxType { EndOfData, Number, Keyword, Name, Others }; 38 enum SyntaxType { EndOfData, Number, Keyword, Name, Others };
41 39
42 CPDF_StreamParser(const uint8_t* pData, uint32_t dwSize); 40 CPDF_StreamParser(const uint8_t* pData, uint32_t dwSize);
43 ~CPDF_StreamParser(); 41 ~CPDF_StreamParser();
44 42
45 CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc, 43 CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc,
46 CPDF_Dictionary* pDict, 44 CPDF_Dictionary* pDict,
47 CPDF_Object* pCSObj, 45 CPDF_Object* pCSObj);
48 FX_BOOL bDecode);
49 SyntaxType ParseNextElement(); 46 SyntaxType ParseNextElement();
50 uint8_t* GetWordBuf() { return m_WordBuffer; } 47 uint8_t* GetWordBuf() { return m_WordBuffer; }
51 uint32_t GetWordSize() const { return m_WordSize; } 48 uint32_t GetWordSize() const { return m_WordSize; }
52 CPDF_Object* GetObject() { 49 CPDF_Object* GetObject() {
53 CPDF_Object* pObj = m_pLastObj; 50 CPDF_Object* pObj = m_pLastObj;
54 m_pLastObj = NULL; 51 m_pLastObj = NULL;
55 return pObj; 52 return pObj;
56 } 53 }
57 uint32_t GetPos() const { return m_Pos; } 54 uint32_t GetPos() const { return m_Pos; }
58 void SetPos(uint32_t pos) { m_Pos = pos; } 55 void SetPos(uint32_t pos) { m_Pos = pos; }
59 CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE, 56 CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE,
60 FX_BOOL bInArray = FALSE); 57 FX_BOOL bInArray = FALSE);
61 void SkipPathObject();
62 58
63 protected: 59 protected:
64 friend class fpdf_page_parser_old_ReadHexString_Test; 60 friend class fpdf_page_parser_old_ReadHexString_Test;
65 61
66 void GetNextWord(FX_BOOL& bIsNumber); 62 void GetNextWord(FX_BOOL& bIsNumber);
67 CFX_ByteString ReadString(); 63 CFX_ByteString ReadString();
68 CFX_ByteString ReadHexString(); 64 CFX_ByteString ReadHexString();
69 const uint8_t* m_pBuf; 65 const uint8_t* m_pBuf;
70 66
71 // Length in bytes of m_pBuf. 67 // Length in bytes of m_pBuf.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 #define _FPDF_MAX_OBJECT_STACK_SIZE_ 512 102 #define _FPDF_MAX_OBJECT_STACK_SIZE_ 512
107 class CPDF_StreamContentParser { 103 class CPDF_StreamContentParser {
108 public: 104 public:
109 CPDF_StreamContentParser(CPDF_Document* pDoc, 105 CPDF_StreamContentParser(CPDF_Document* pDoc,
110 CPDF_Dictionary* pPageResources, 106 CPDF_Dictionary* pPageResources,
111 CPDF_Dictionary* pParentResources, 107 CPDF_Dictionary* pParentResources,
112 CFX_Matrix* pmtContentToUser, 108 CFX_Matrix* pmtContentToUser,
113 CPDF_PageObjectHolder* pObjectHolder, 109 CPDF_PageObjectHolder* pObjectHolder,
114 CPDF_Dictionary* pResources, 110 CPDF_Dictionary* pResources,
115 CFX_FloatRect* pBBox, 111 CFX_FloatRect* pBBox,
116 CPDF_ParseOptions* pOptions,
117 CPDF_AllStates* pAllStates, 112 CPDF_AllStates* pAllStates,
118 int level); 113 int level);
119 ~CPDF_StreamContentParser(); 114 ~CPDF_StreamContentParser();
120 115
121 CPDF_PageObjectHolder* GetPageObjectHolder() const { return m_pObjectHolder; } 116 CPDF_PageObjectHolder* GetPageObjectHolder() const { return m_pObjectHolder; }
122 CPDF_AllStates* GetCurStates() const { return m_pCurStates.get(); } 117 CPDF_AllStates* GetCurStates() const { return m_pCurStates.get(); }
123 FX_BOOL IsColored() const { return m_bColored; } 118 FX_BOOL IsColored() const { return m_bColored; }
124 const FX_FLOAT* GetType3Data() const { return m_Type3Data; } 119 const FX_FLOAT* GetType3Data() const { return m_Type3Data; }
125 120
126 void AddNumberParam(const FX_CHAR* str, int len); 121 void AddNumberParam(const FX_CHAR* str, int len);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 void Handle_Invalid(); 240 void Handle_Invalid();
246 241
247 CPDF_Document* const m_pDocument; 242 CPDF_Document* const m_pDocument;
248 CPDF_Dictionary* m_pPageResources; 243 CPDF_Dictionary* m_pPageResources;
249 CPDF_Dictionary* m_pParentResources; 244 CPDF_Dictionary* m_pParentResources;
250 CPDF_Dictionary* m_pResources; 245 CPDF_Dictionary* m_pResources;
251 CPDF_PageObjectHolder* m_pObjectHolder; 246 CPDF_PageObjectHolder* m_pObjectHolder;
252 int m_Level; 247 int m_Level;
253 CFX_Matrix m_mtContentToUser; 248 CFX_Matrix m_mtContentToUser;
254 CFX_FloatRect m_BBox; 249 CFX_FloatRect m_BBox;
255 CPDF_ParseOptions m_Options;
256 ContentParam m_ParamBuf[PARAM_BUF_SIZE]; 250 ContentParam m_ParamBuf[PARAM_BUF_SIZE];
257 uint32_t m_ParamStartPos; 251 uint32_t m_ParamStartPos;
258 uint32_t m_ParamCount; 252 uint32_t m_ParamCount;
259 CPDF_StreamParser* m_pSyntax; 253 CPDF_StreamParser* m_pSyntax;
260 std::unique_ptr<CPDF_AllStates> m_pCurStates; 254 std::unique_ptr<CPDF_AllStates> m_pCurStates;
261 CPDF_ContentMark m_CurContentMark; 255 CPDF_ContentMark m_CurContentMark;
262 CFX_ArrayTemplate<CPDF_TextObject*> m_ClipTextList; 256 CFX_ArrayTemplate<CPDF_TextObject*> m_ClipTextList;
263 CPDF_TextObject* m_pLastTextObject; 257 CPDF_TextObject* m_pLastTextObject;
264 FX_FLOAT m_DefFontSize; 258 FX_FLOAT m_DefFontSize;
265 FX_PATHPOINT* m_pPathPoints; 259 FX_PATHPOINT* m_pPathPoints;
(...skipping 18 matching lines...) Expand all
284 std::vector<std::unique_ptr<CPDF_AllStates>> m_StateStack; 278 std::vector<std::unique_ptr<CPDF_AllStates>> m_StateStack;
285 }; 279 };
286 class CPDF_ContentParser { 280 class CPDF_ContentParser {
287 public: 281 public:
288 enum ParseStatus { Ready, ToBeContinued, Done }; 282 enum ParseStatus { Ready, ToBeContinued, Done };
289 283
290 CPDF_ContentParser(); 284 CPDF_ContentParser();
291 ~CPDF_ContentParser(); 285 ~CPDF_ContentParser();
292 286
293 ParseStatus GetStatus() const { return m_Status; } 287 ParseStatus GetStatus() const { return m_Status; }
294 void Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions); 288 void Start(CPDF_Page* pPage);
295 void Start(CPDF_Form* pForm, 289 void Start(CPDF_Form* pForm,
296 CPDF_AllStates* pGraphicStates, 290 CPDF_AllStates* pGraphicStates,
297 CFX_Matrix* pParentMatrix, 291 CFX_Matrix* pParentMatrix,
298 CPDF_Type3Char* pType3Char, 292 CPDF_Type3Char* pType3Char,
299 CPDF_ParseOptions* pOptions,
300 int level); 293 int level);
301 void Continue(IFX_Pause* pPause); 294 void Continue(IFX_Pause* pPause);
302 295
303 private: 296 private:
304 enum InternalStage { 297 enum InternalStage {
305 STAGE_GETCONTENT = 1, 298 STAGE_GETCONTENT = 1,
306 STAGE_PARSE, 299 STAGE_PARSE,
307 STAGE_CHECKCLIP, 300 STAGE_CHECKCLIP,
308 }; 301 };
309 302
310 ParseStatus m_Status; 303 ParseStatus m_Status;
311 InternalStage m_InternalStage; 304 InternalStage m_InternalStage;
312 CPDF_PageObjectHolder* m_pObjectHolder; 305 CPDF_PageObjectHolder* m_pObjectHolder;
313 FX_BOOL m_bForm; 306 FX_BOOL m_bForm;
314 CPDF_ParseOptions m_Options;
315 CPDF_Type3Char* m_pType3Char; 307 CPDF_Type3Char* m_pType3Char;
316 uint32_t m_nStreams; 308 uint32_t m_nStreams;
317 std::unique_ptr<CPDF_StreamAcc> m_pSingleStream; 309 std::unique_ptr<CPDF_StreamAcc> m_pSingleStream;
318 std::vector<std::unique_ptr<CPDF_StreamAcc>> m_StreamArray; 310 std::vector<std::unique_ptr<CPDF_StreamAcc>> m_StreamArray;
319 uint8_t* m_pData; 311 uint8_t* m_pData;
320 uint32_t m_Size; 312 uint32_t m_Size;
321 uint32_t m_CurrentOffset; 313 uint32_t m_CurrentOffset;
322 std::unique_ptr<CPDF_StreamContentParser> m_pParser; 314 std::unique_ptr<CPDF_StreamContentParser> m_pParser;
323 }; 315 };
324 316
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 }; 526 };
535 527
536 CFX_ByteStringC PDF_FindKeyAbbreviationForTesting(const CFX_ByteStringC& abbr); 528 CFX_ByteStringC PDF_FindKeyAbbreviationForTesting(const CFX_ByteStringC& abbr);
537 CFX_ByteStringC PDF_FindValueAbbreviationForTesting( 529 CFX_ByteStringC PDF_FindValueAbbreviationForTesting(
538 const CFX_ByteStringC& abbr); 530 const CFX_ByteStringC& abbr);
539 531
540 void PDF_ReplaceAbbr(CPDF_Object* pObj); 532 void PDF_ReplaceAbbr(CPDF_Object* pObj);
541 bool IsPathOperator(const uint8_t* buf, size_t len); 533 bool IsPathOperator(const uint8_t* buf, size_t len);
542 534
543 #endif // CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_ 535 #endif // CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_page/include/cpdf_page.h ('k') | core/fpdfapi/fpdf_render/fpdf_render.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698