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

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

Issue 1613823003: Mege to XFA: Redo CPDF_PageObjects - part 1 (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 4 years, 11 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 | « no previous file | core/src/fpdfapi/fpdf_page/fpdf_page.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_INCLUDE_FPDFAPI_FPDF_PAGE_H_ 7 #ifndef CORE_INCLUDE_FPDFAPI_FPDF_PAGE_H_
8 #define CORE_INCLUDE_FPDFAPI_FPDF_PAGE_H_ 8 #define CORE_INCLUDE_FPDFAPI_FPDF_PAGE_H_
9 9
10 #include <memory>
11
12 #include "core/include/fpdfapi/fpdf_parser.h"
13 #include "core/include/fpdfapi/fpdf_resource.h"
10 #include "core/include/fxge/fx_dib.h" 14 #include "core/include/fxge/fx_dib.h"
11 #include "fpdf_parser.h"
12 #include "fpdf_resource.h"
13 15
14 class CPDF_PageObjects;
15 class CPDF_Page; 16 class CPDF_Page;
16 class CPDF_Form; 17 class CPDF_Form;
17 class CPDF_ParseOptions; 18 class CPDF_ParseOptions;
18 class CPDF_PageObject; 19 class CPDF_PageObject;
19 class CPDF_PageRenderCache; 20 class CPDF_PageRenderCache;
20 class CPDF_StreamFilter; 21 class CPDF_StreamFilter;
21 class CPDF_AllStates; 22 class CPDF_AllStates;
22 class CPDF_ContentParser; 23 class CPDF_ContentParser;
23 class CPDF_StreamContentParser; 24 class CPDF_StreamContentParser;
24 #define PDFTRANS_GROUP 0x0100 25 #define PDFTRANS_GROUP 0x0100
25 #define PDFTRANS_ISOLATED 0x0200 26 #define PDFTRANS_ISOLATED 0x0200
26 #define PDFTRANS_KNOCKOUT 0x0400 27 #define PDFTRANS_KNOCKOUT 0x0400
27 28
28 class CPDF_PageObjects { 29 class CPDF_PageObjects {
29 public: 30 public:
30 CPDF_PageObjects(FX_BOOL bReleaseMembers = TRUE); 31 CPDF_PageObjects();
31 ~CPDF_PageObjects(); 32 ~CPDF_PageObjects();
32 33
33 void ContinueParse(IFX_Pause* pPause); 34 void ContinueParse(IFX_Pause* pPause);
34 35
35 FX_BOOL IsParsed() const { return m_ParseState == CONTENT_PARSED; } 36 FX_BOOL IsParsed() const { return m_ParseState == CONTENT_PARSED; }
36 37
37 FX_POSITION GetFirstObjectPosition() const { 38 FX_POSITION GetFirstObjectPosition() const {
38 return m_ObjectList.GetHeadPosition(); 39 return m_ObjectList.GetHeadPosition();
39 } 40 }
40 41
41 FX_POSITION GetLastObjectPosition() const { 42 FX_POSITION GetLastObjectPosition() const {
42 return m_ObjectList.GetTailPosition(); 43 return m_ObjectList.GetTailPosition();
43 } 44 }
44 45
45 CPDF_PageObject* GetNextObject(FX_POSITION& pos) const { 46 CPDF_PageObject* GetNextObject(FX_POSITION& pos) const {
46 return (CPDF_PageObject*)m_ObjectList.GetNext(pos); 47 return (CPDF_PageObject*)m_ObjectList.GetNext(pos);
47 } 48 }
48 49
49 CPDF_PageObject* GetPrevObject(FX_POSITION& pos) const { 50 CPDF_PageObject* GetPrevObject(FX_POSITION& pos) const {
50 return (CPDF_PageObject*)m_ObjectList.GetPrev(pos); 51 return (CPDF_PageObject*)m_ObjectList.GetPrev(pos);
51 } 52 }
52 53
53 CPDF_PageObject* GetObjectAt(FX_POSITION pos) const { 54 CPDF_PageObject* GetObjectAt(FX_POSITION pos) const {
54 return (CPDF_PageObject*)m_ObjectList.GetAt(pos); 55 return (CPDF_PageObject*)m_ObjectList.GetAt(pos);
55 } 56 }
56 57
58 void AddTail(CPDF_PageObject* obj) { m_ObjectList.AddTail(obj); }
57 FX_DWORD CountObjects() const { return m_ObjectList.GetCount(); } 59 FX_DWORD CountObjects() const { return m_ObjectList.GetCount(); }
58 60
59 int GetObjectIndex(CPDF_PageObject* pObj) const; 61 int GetObjectIndex(CPDF_PageObject* pObj) const;
60 62
61 CPDF_PageObject* GetObjectByIndex(int index) const; 63 CPDF_PageObject* GetObjectByIndex(int index) const;
62 64
63 FX_POSITION InsertObject(FX_POSITION posInsertAfter, 65 FX_POSITION InsertObject(FX_POSITION posInsertAfter,
64 CPDF_PageObject* pNewObject); 66 CPDF_PageObject* pNewObject);
65 67
66 void Transform(const CFX_Matrix& matrix); 68 void Transform(const CFX_Matrix& matrix);
67 69
68 FX_BOOL BackgroundAlphaNeeded() const { return m_bBackgroundAlphaNeeded; } 70 FX_BOOL BackgroundAlphaNeeded() const { return m_bBackgroundAlphaNeeded; }
71 void SetBackgroundAlphaNeeded(FX_BOOL needed) {
72 m_bBackgroundAlphaNeeded = needed;
73 }
69 74
70 FX_BOOL HasImageMask() const { return m_bHasImageMask; } 75 FX_BOOL HasImageMask() const { return m_bHasImageMask; }
71 76 void SetHasImageMask(FX_BOOL value) { m_bHasImageMask = value; }
72 CFX_FloatRect CalcBoundingBox() const; 77 CFX_FloatRect CalcBoundingBox() const;
73 78
74 CPDF_Dictionary* m_pFormDict; 79 CPDF_Dictionary* m_pFormDict;
75 CPDF_Stream* m_pFormStream; 80 CPDF_Stream* m_pFormStream;
76 CPDF_Document* m_pDocument; 81 CPDF_Document* m_pDocument;
77 CPDF_Dictionary* m_pPageResources; 82 CPDF_Dictionary* m_pPageResources;
78 CPDF_Dictionary* m_pResources; 83 CPDF_Dictionary* m_pResources;
79 CFX_FloatRect m_BBox; 84 CFX_FloatRect m_BBox;
80 int m_Transparency; 85 int m_Transparency;
81 86
82 protected: 87 protected:
83 friend class CPDF_ContentParser;
84 friend class CPDF_StreamContentParser;
85 friend class CPDF_AllStates;
86
87 enum ParseState { CONTENT_NOT_PARSED, CONTENT_PARSING, CONTENT_PARSED }; 88 enum ParseState { CONTENT_NOT_PARSED, CONTENT_PARSING, CONTENT_PARSED };
88 89
89 void LoadTransInfo(); 90 void LoadTransInfo();
90 void ClearCacheObjects();
91 91
92 CFX_PtrList m_ObjectList;
93 FX_BOOL m_bBackgroundAlphaNeeded; 92 FX_BOOL m_bBackgroundAlphaNeeded;
94 FX_BOOL m_bHasImageMask; 93 FX_BOOL m_bHasImageMask;
95 FX_BOOL m_bReleaseMembers;
96 CPDF_ContentParser* m_pParser;
97 ParseState m_ParseState; 94 ParseState m_ParseState;
95 std::unique_ptr<CPDF_ContentParser> m_pParser;
96 CFX_PtrList m_ObjectList;
98 }; 97 };
99 98
100 class CPDF_Page : public CPDF_PageObjects, public CFX_PrivateData { 99 class CPDF_Page : public CPDF_PageObjects, public CFX_PrivateData {
101 public: 100 public:
102 CPDF_Page(); 101 CPDF_Page();
103 ~CPDF_Page(); 102 ~CPDF_Page();
104 103
105 void Load(CPDF_Document* pDocument, 104 void Load(CPDF_Document* pDocument,
106 CPDF_Dictionary* pPageDict, 105 CPDF_Dictionary* pPageDict,
107 FX_BOOL bPageCache = TRUE); 106 FX_BOOL bPageCache = TRUE);
108 107
109 void StartParse(CPDF_ParseOptions* pOptions = NULL, FX_BOOL bReParse = FALSE); 108 void ParseContent(CPDF_ParseOptions* pOptions);
110 void ParseContent(CPDF_ParseOptions* pOptions = NULL,
111 FX_BOOL bReParse = FALSE);
112 109
113 void GetDisplayMatrix(CFX_Matrix& matrix, 110 void GetDisplayMatrix(CFX_Matrix& matrix,
114 int xPos, 111 int xPos,
115 int yPos, 112 int yPos,
116 int xSize, 113 int xSize,
117 int ySize, 114 int ySize,
118 int iRotate) const; 115 int iRotate) const;
119 116
120 FX_FLOAT GetPageWidth() const { return m_PageWidth; } 117 FX_FLOAT GetPageWidth() const { return m_PageWidth; }
121 FX_FLOAT GetPageHeight() const { return m_PageHeight; } 118 FX_FLOAT GetPageHeight() const { return m_PageHeight; }
122 CFX_FloatRect GetPageBBox() const { return m_BBox; } 119 CFX_FloatRect GetPageBBox() const { return m_BBox; }
123 const CFX_Matrix& GetPageMatrix() const { return m_PageMatrix; } 120 const CFX_Matrix& GetPageMatrix() const { return m_PageMatrix; }
124 CPDF_Object* GetPageAttr(const CFX_ByteStringC& name) const; 121 CPDF_Object* GetPageAttr(const CFX_ByteStringC& name) const;
125 CPDF_PageRenderCache* GetRenderCache() const { return m_pPageRender; } 122 CPDF_PageRenderCache* GetRenderCache() const { return m_pPageRender; }
126 123
127 protected: 124 protected:
128 friend class CPDF_ContentParser; 125 friend class CPDF_ContentParser;
126 void StartParse(CPDF_ParseOptions* pOptions);
127
129 FX_FLOAT m_PageWidth; 128 FX_FLOAT m_PageWidth;
130 FX_FLOAT m_PageHeight; 129 FX_FLOAT m_PageHeight;
131 CFX_Matrix m_PageMatrix; 130 CFX_Matrix m_PageMatrix;
132 CPDF_PageRenderCache* m_pPageRender; 131 CPDF_PageRenderCache* m_pPageRender;
133 }; 132 };
134 class CPDF_ParseOptions { 133 class CPDF_ParseOptions {
135 public: 134 public:
136 CPDF_ParseOptions(); 135 CPDF_ParseOptions();
137 136
138 FX_BOOL m_bTextOnly; 137 FX_BOOL m_bTextOnly;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 CFX_Matrix& matrix); 181 CFX_Matrix& matrix);
183 CFX_ByteString RealizeResource(CPDF_Object* pResourceObj, 182 CFX_ByteString RealizeResource(CPDF_Object* pResourceObj,
184 const FX_CHAR* szType); 183 const FX_CHAR* szType);
185 184
186 CPDF_Page* m_pPage; 185 CPDF_Page* m_pPage;
187 CPDF_Document* m_pDocument; 186 CPDF_Document* m_pDocument;
188 CFX_ArrayTemplate<CPDF_PageObject*> m_pageObjects; 187 CFX_ArrayTemplate<CPDF_PageObject*> m_pageObjects;
189 }; 188 };
190 189
191 #endif // CORE_INCLUDE_FPDFAPI_FPDF_PAGE_H_ 190 #endif // CORE_INCLUDE_FPDFAPI_FPDF_PAGE_H_
OLDNEW
« no previous file with comments | « no previous file | core/src/fpdfapi/fpdf_page/fpdf_page.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698