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

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

Issue 1805663002: Move core/include/fpdfapi/fpdf_page.h to correct locations. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 9 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/fpdftext/include/ipdf_textpage.h ('k') | fpdfsdk/DEPS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef CORE_INCLUDE_FPDFAPI_FPDF_PAGE_H_
8 #define CORE_INCLUDE_FPDFAPI_FPDF_PAGE_H_
9
10 #include <deque>
11 #include <memory>
12
13 #include "core/include/fpdfapi/fpdf_resource.h"
14 #include "core/include/fxge/fx_dib.h"
15
16 class CPDF_Page;
17 class CPDF_Form;
18 class CPDF_ParseOptions;
19 class CPDF_PageObject;
20 class CPDF_PageRenderCache;
21 class CPDF_AllStates;
22 class CPDF_ContentParser;
23 class CPDF_ImageObject;
24
25 #define PDFTRANS_GROUP 0x0100
26 #define PDFTRANS_ISOLATED 0x0200
27 #define PDFTRANS_KNOCKOUT 0x0400
28
29 class CPDF_PageObjectList
30 : public std::deque<std::unique_ptr<CPDF_PageObject>> {
31 public:
32 CPDF_PageObject* GetPageObjectByIndex(int index);
33 };
34
35 class CPDF_PageObjectHolder {
36 public:
37 CPDF_PageObjectHolder();
38
39 void ContinueParse(IFX_Pause* pPause);
40 bool IsParsed() const { return m_ParseState == CONTENT_PARSED; }
41
42 CPDF_PageObjectList* GetPageObjectList() { return &m_PageObjectList; }
43 const CPDF_PageObjectList* GetPageObjectList() const {
44 return &m_PageObjectList;
45 }
46
47 FX_BOOL BackgroundAlphaNeeded() const { return m_bBackgroundAlphaNeeded; }
48 void SetBackgroundAlphaNeeded(FX_BOOL needed) {
49 m_bBackgroundAlphaNeeded = needed;
50 }
51
52 FX_BOOL HasImageMask() const { return m_bHasImageMask; }
53 void SetHasImageMask(FX_BOOL value) { m_bHasImageMask = value; }
54
55 void Transform(const CFX_Matrix& matrix);
56 CFX_FloatRect CalcBoundingBox() const;
57
58 CPDF_Dictionary* m_pFormDict;
59 CPDF_Stream* m_pFormStream;
60 CPDF_Document* m_pDocument;
61 CPDF_Dictionary* m_pPageResources;
62 CPDF_Dictionary* m_pResources;
63 CFX_FloatRect m_BBox;
64 int m_Transparency;
65
66 protected:
67 enum ParseState { CONTENT_NOT_PARSED, CONTENT_PARSING, CONTENT_PARSED };
68
69 void LoadTransInfo();
70
71 FX_BOOL m_bBackgroundAlphaNeeded;
72 FX_BOOL m_bHasImageMask;
73 ParseState m_ParseState;
74 std::unique_ptr<CPDF_ContentParser> m_pParser;
75 CPDF_PageObjectList m_PageObjectList;
76 };
77
78 class CPDF_Page : public CPDF_PageObjectHolder, public CFX_PrivateData {
79 public:
80 CPDF_Page();
81 ~CPDF_Page();
82
83 void Load(CPDF_Document* pDocument,
84 CPDF_Dictionary* pPageDict,
85 FX_BOOL bPageCache = TRUE);
86
87 void ParseContent(CPDF_ParseOptions* pOptions);
88
89 void GetDisplayMatrix(CFX_Matrix& matrix,
90 int xPos,
91 int yPos,
92 int xSize,
93 int ySize,
94 int iRotate) const;
95
96 FX_FLOAT GetPageWidth() const { return m_PageWidth; }
97 FX_FLOAT GetPageHeight() const { return m_PageHeight; }
98 CFX_FloatRect GetPageBBox() const { return m_BBox; }
99 const CFX_Matrix& GetPageMatrix() const { return m_PageMatrix; }
100 CPDF_Object* GetPageAttr(const CFX_ByteStringC& name) const;
101 CPDF_PageRenderCache* GetRenderCache() const { return m_pPageRender; }
102
103 protected:
104 friend class CPDF_ContentParser;
105 void StartParse(CPDF_ParseOptions* pOptions);
106
107 FX_FLOAT m_PageWidth;
108 FX_FLOAT m_PageHeight;
109 CFX_Matrix m_PageMatrix;
110 CPDF_PageRenderCache* m_pPageRender;
111 };
112 class CPDF_ParseOptions {
113 public:
114 CPDF_ParseOptions();
115
116 FX_BOOL m_bTextOnly;
117
118 FX_BOOL m_bMarkedContent;
119
120 FX_BOOL m_bSeparateForm;
121
122 FX_BOOL m_bDecodeInlineImage;
123 };
124 class CPDF_Form : public CPDF_PageObjectHolder {
125 public:
126 CPDF_Form(CPDF_Document* pDocument,
127 CPDF_Dictionary* pPageResources,
128 CPDF_Stream* pFormStream,
129 CPDF_Dictionary* pParentResources = NULL);
130
131 ~CPDF_Form();
132
133 void StartParse(CPDF_AllStates* pGraphicStates,
134 CFX_Matrix* pParentMatrix,
135 CPDF_Type3Char* pType3Char,
136 CPDF_ParseOptions* pOptions,
137 int level = 0);
138
139 void ParseContent(CPDF_AllStates* pGraphicStates,
140 CFX_Matrix* pParentMatrix,
141 CPDF_Type3Char* pType3Char,
142 CPDF_ParseOptions* pOptions,
143 int level = 0);
144
145 CPDF_Form* Clone() const;
146 };
147 class CPDF_PageContentGenerator {
148 public:
149 explicit CPDF_PageContentGenerator(CPDF_Page* pPage);
150
151 FX_BOOL InsertPageObject(CPDF_PageObject* pPageObject);
152 void GenerateContent();
153 void TransformContent(CFX_Matrix& matrix);
154
155 private:
156 void ProcessImage(CFX_ByteTextBuf& buf, CPDF_ImageObject* pImageObj);
157 void ProcessForm(CFX_ByteTextBuf& buf,
158 const uint8_t* data,
159 FX_DWORD size,
160 CFX_Matrix& matrix);
161 CFX_ByteString RealizeResource(CPDF_Object* pResourceObj,
162 const FX_CHAR* szType);
163
164 CPDF_Page* m_pPage;
165 CPDF_Document* m_pDocument;
166 CFX_ArrayTemplate<CPDF_PageObject*> m_pageObjects;
167 };
168
169 #endif // CORE_INCLUDE_FPDFAPI_FPDF_PAGE_H_
OLDNEW
« no previous file with comments | « core/fpdftext/include/ipdf_textpage.h ('k') | fpdfsdk/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698