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

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

Issue 1265503005: clang-format all pdfium code. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: sigh Created 5 years, 4 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
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_PAGEOBJ_H_ 7 #ifndef CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_
8 #define CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_ 8 #define CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_
9 9
10 #include "../fxge/fx_ge.h" 10 #include "../fxge/fx_ge.h"
(...skipping 13 matching lines...) Expand all
24 class CPDF_ContentMark; 24 class CPDF_ContentMark;
25 class CPDF_GraphicStates; 25 class CPDF_GraphicStates;
26 class CPDF_PageObject; 26 class CPDF_PageObject;
27 class CPDF_TextObject; 27 class CPDF_TextObject;
28 class CPDF_PathObject; 28 class CPDF_PathObject;
29 class CPDF_ImageObject; 29 class CPDF_ImageObject;
30 class CPDF_ShadingObject; 30 class CPDF_ShadingObject;
31 class CPDF_FormObject; 31 class CPDF_FormObject;
32 typedef CFX_PathData CPDF_PathData; 32 typedef CFX_PathData CPDF_PathData;
33 33
34 class CPDF_Path : public CFX_CountRef<CFX_PathData> 34 class CPDF_Path : public CFX_CountRef<CFX_PathData> {
35 { 35 public:
36 public: 36 int GetPointCount() { return m_pObject->m_PointCount; }
37 int»» » » » GetPointCount() 37
38 { 38 int GetFlag(int index) { return m_pObject->m_pPoints[index].m_Flag; }
39 return m_pObject->m_PointCount; 39
40 } 40 FX_FLOAT GetPointX(int index) { return m_pObject->m_pPoints[index].m_PointX; }
41 41
42 int»» » » » GetFlag(int index) 42 FX_FLOAT GetPointY(int index) { return m_pObject->m_pPoints[index].m_PointY; }
43 { 43
44 return m_pObject->m_pPoints[index].m_Flag; 44 FX_PATHPOINT* GetPoints() { return m_pObject->m_pPoints; }
45 } 45
46 46 CFX_FloatRect GetBoundingBox() const { return m_pObject->GetBoundingBox(); }
47 FX_FLOAT» » » GetPointX(int index) 47
48 { 48 CFX_FloatRect GetBoundingBox(FX_FLOAT line_width,
49 return m_pObject->m_pPoints[index].m_PointX; 49 FX_FLOAT miter_limit) const {
50 } 50 return m_pObject->GetBoundingBox(line_width, miter_limit);
51 51 }
52 FX_FLOAT» » » GetPointY(int index) 52
53 { 53 void Transform(const CFX_AffineMatrix* pMatrix) {
54 return m_pObject->m_pPoints[index].m_PointY; 54 GetModify()->Transform(pMatrix);
55 } 55 }
56 56
57 57 void Append(CPDF_Path src, const CFX_AffineMatrix* pMatrix) {
58 58 m_pObject->Append(src.m_pObject, pMatrix);
59 59 }
60 FX_PATHPOINT*» » GetPoints() 60
61 { 61 void AppendRect(FX_FLOAT left,
62 return m_pObject->m_pPoints; 62 FX_FLOAT bottom,
63 } 63 FX_FLOAT right,
64 64 FX_FLOAT top) {
65 65 m_pObject->AppendRect(left, bottom, right, top);
66 CFX_FloatRect» » GetBoundingBox() const 66 }
67 { 67
68 return m_pObject->GetBoundingBox(); 68 FX_BOOL IsRect() const { return m_pObject->IsRect(); }
69 } 69 };
70 70 class CPDF_ClipPathData {
71 CFX_FloatRect» » GetBoundingBox(FX_FLOAT line_width, FX_FLOAT mit er_limit) const 71 public:
72 { 72 CPDF_ClipPathData();
73 return m_pObject->GetBoundingBox(line_width, miter_limit); 73
74 } 74 CPDF_ClipPathData(const CPDF_ClipPathData&);
75 75
76 void» » » » Transform(const CFX_AffineMatrix* pMatri x) 76 ~CPDF_ClipPathData();
77 { 77
78 GetModify()->Transform(pMatrix); 78 void SetCount(int path_count, int text_count);
79 } 79
80 80 public:
81 void» » » » Append(CPDF_Path src, const CFX_AffineMa trix* pMatrix) 81 int m_PathCount;
82 { 82
83 m_pObject->Append(src.m_pObject, pMatrix); 83 CPDF_Path* m_pPathList;
84 } 84
85 85 uint8_t* m_pTypeList;
86 void» » » » AppendRect(FX_FLOAT left, FX_FLOAT botto m, FX_FLOAT right, FX_FLOAT top) 86
87 { 87 int m_TextCount;
88 m_pObject->AppendRect(left, bottom, right, top); 88
89 } 89 CPDF_TextObject** m_pTextList;
90 90 };
91 FX_BOOL» » » » IsRect() const 91 class CPDF_ClipPath : public CFX_CountRef<CPDF_ClipPathData> {
92 { 92 public:
93 return m_pObject->IsRect(); 93 FX_DWORD GetPathCount() const { return m_pObject->m_PathCount; }
94 } 94
95 }; 95 CPDF_Path GetPath(int i) const { return m_pObject->m_pPathList[i]; }
96 class CPDF_ClipPathData 96
97 { 97 int GetClipType(int i) const { return m_pObject->m_pTypeList[i]; }
98 public: 98
99 99 FX_DWORD GetTextCount() const { return m_pObject->m_TextCount; }
100 CPDF_ClipPathData(); 100
101 101 CPDF_TextObject* GetText(int i) const { return m_pObject->m_pTextList[i]; }
102 CPDF_ClipPathData(const CPDF_ClipPathData&); 102
103 103 CFX_FloatRect GetClipBox() const;
104 ~CPDF_ClipPathData(); 104
105 105 void AppendPath(CPDF_Path path, int type, FX_BOOL bAutoMerge);
106 void» » » » SetCount(int path_count, int text_count) ; 106
107 public: 107 void DeletePath(int layer_index);
108 108
109 int»» » » » m_PathCount; 109 void AppendTexts(CPDF_TextObject** pTexts, int count);
110 110
111 CPDF_Path*» » » m_pPathList; 111 void Transform(const CFX_AffineMatrix& matrix);
112 112 };
113 uint8_t*» » » m_pTypeList; 113 class CPDF_ColorStateData {
114 114 public:
115 int»» » » » m_TextCount; 115 CPDF_ColorStateData() : m_FillRGB(0), m_StrokeRGB(0) {}
116 116
117 CPDF_TextObject**» m_pTextList; 117 CPDF_ColorStateData(const CPDF_ColorStateData& src);
118 }; 118
119 class CPDF_ClipPath : public CFX_CountRef<CPDF_ClipPathData> 119 void Default();
120 { 120
121 public: 121 CPDF_Color m_FillColor;
122 122
123 FX_DWORD» » » GetPathCount() const 123 FX_DWORD m_FillRGB;
124 { 124
125 return m_pObject->m_PathCount; 125 CPDF_Color m_StrokeColor;
126 } 126
127 127 FX_DWORD m_StrokeRGB;
128 CPDF_Path» » » GetPath(int i) const 128 };
129 { 129 class CPDF_ColorState : public CFX_CountRef<CPDF_ColorStateData> {
130 return m_pObject->m_pPathList[i]; 130 public:
131 } 131 CPDF_Color* GetFillColor() const {
132 132 return m_pObject ? &m_pObject->m_FillColor : NULL;
133 int»» » » » GetClipType(int i) const 133 }
134 { 134
135 return m_pObject->m_pTypeList[i]; 135 CPDF_Color* GetStrokeColor() const {
136 } 136 return m_pObject ? &m_pObject->m_StrokeColor : NULL;
137 137 }
138 FX_DWORD» » » GetTextCount() const 138
139 { 139 void SetFillColor(CPDF_ColorSpace* pCS, FX_FLOAT* pValue, int nValues);
140 return m_pObject->m_TextCount; 140
141 } 141 void SetStrokeColor(CPDF_ColorSpace* pCS, FX_FLOAT* pValue, int nValues);
142 142
143 CPDF_TextObject*» GetText(int i) const 143 void SetFillPattern(CPDF_Pattern* pattern, FX_FLOAT* pValue, int nValues);
144 { 144
145 return m_pObject->m_pTextList[i]; 145 void SetStrokePattern(CPDF_Pattern* pattern, FX_FLOAT* pValue, int nValues);
146 } 146
147 147 private:
148 CFX_FloatRect» » GetClipBox() const; 148 void SetColor(CPDF_Color& color,
149 149 FX_DWORD& rgb,
150 void» » » » AppendPath(CPDF_Path path, int type, FX_ BOOL bAutoMerge); 150 CPDF_ColorSpace* pCS,
151 151 FX_FLOAT* pValue,
152 void» » » » DeletePath(int layer_index); 152 int nValues);
153
154 void» » » » AppendTexts(CPDF_TextObject** pTexts, in t count);
155
156 void» » » » Transform(const CFX_AffineMatrix& matrix );
157 };
158 class CPDF_ColorStateData
159 {
160 public:
161
162 CPDF_ColorStateData(): m_FillRGB(0), m_StrokeRGB(0) {}
163
164 CPDF_ColorStateData(const CPDF_ColorStateData& src);
165
166 void» » » » Default();
167
168 CPDF_Color» » » m_FillColor;
169
170 FX_DWORD» » » m_FillRGB;
171
172 CPDF_Color» » » m_StrokeColor;
173
174 FX_DWORD» » » m_StrokeRGB;
175 };
176 class CPDF_ColorState : public CFX_CountRef<CPDF_ColorStateData>
177 {
178 public:
179
180 CPDF_Color*»» » GetFillColor() const
181 {
182 return m_pObject ? &m_pObject->m_FillColor : NULL;
183 }
184
185 CPDF_Color*»» » GetStrokeColor() const
186 {
187 return m_pObject ? &m_pObject->m_StrokeColor : NULL;
188 }
189
190 void» » » » SetFillColor(CPDF_ColorSpace* pCS, FX_FL OAT* pValue, int nValues);
191
192 void» » » » SetStrokeColor(CPDF_ColorSpace* pCS, FX_ FLOAT* pValue, int nValues);
193
194 void» » » » SetFillPattern(CPDF_Pattern* pattern, FX _FLOAT* pValue, int nValues);
195
196 void» » » » SetStrokePattern(CPDF_Pattern* pattern, FX_FLOAT* pValue, int nValues);
197 private:
198 void» » » » SetColor(CPDF_Color& color, FX_DWORD& rg b, CPDF_ColorSpace* pCS, FX_FLOAT* pValue, int nValues);
199 }; 153 };
200 typedef CFX_GraphStateData CPDF_GraphStateData; 154 typedef CFX_GraphStateData CPDF_GraphStateData;
201 class CPDF_GraphState : public CFX_CountRef<CFX_GraphStateData> 155 class CPDF_GraphState : public CFX_CountRef<CFX_GraphStateData> {
202 { 156 public:
203 public: 157 };
204 }; 158 class CPDF_TextStateData {
205 class CPDF_TextStateData 159 public:
206 { 160 CPDF_TextStateData();
207 public: 161
208 162 CPDF_TextStateData(const CPDF_TextStateData& src);
209 CPDF_TextStateData(); 163
210 164 ~CPDF_TextStateData();
211 CPDF_TextStateData(const CPDF_TextStateData& src); 165
212 166 CPDF_Font* m_pFont;
213 ~CPDF_TextStateData(); 167
214 168 CPDF_Document* m_pDocument;
215 CPDF_Font*» » » m_pFont; 169
216 170 FX_FLOAT m_FontSize;
217 CPDF_Document*» » m_pDocument; 171
218 172 FX_FLOAT m_CharSpace;
219 FX_FLOAT» » » m_FontSize; 173
220 174 FX_FLOAT m_WordSpace;
221 FX_FLOAT» » » m_CharSpace; 175
222 176 FX_FLOAT m_Matrix[4];
223 FX_FLOAT» » » m_WordSpace; 177
224 178 int m_TextMode;
225 FX_FLOAT» » m_Matrix[4]; 179
226 180 FX_FLOAT m_CTM[4];
227 int»» » » » m_TextMode; 181 };
228 182 class CPDF_TextState : public CFX_CountRef<CPDF_TextStateData> {
229 FX_FLOAT» » m_CTM[4]; 183 public:
230 }; 184 CPDF_Font* GetFont() const { return m_pObject->m_pFont; }
231 class CPDF_TextState : public CFX_CountRef<CPDF_TextStateData> 185
232 { 186 void SetFont(CPDF_Font* pFont);
233 public: 187
234 188 FX_FLOAT GetFontSize() const { return m_pObject->m_FontSize; }
235 CPDF_Font*» » » GetFont() const 189
236 { 190 FX_FLOAT* GetMatrix() const { return m_pObject->m_Matrix; }
237 return m_pObject->m_pFont; 191
238 } 192 FX_FLOAT GetFontSizeV() const;
239 193
240 void» » » » SetFont(CPDF_Font* pFont); 194 FX_FLOAT GetFontSizeH() const;
241 195
242 FX_FLOAT» » » GetFontSize() const 196 FX_FLOAT GetBaselineAngle() const;
243 { 197
244 return m_pObject->m_FontSize; 198 FX_FLOAT GetShearAngle() const;
245 }
246
247 FX_FLOAT*» » » GetMatrix() const
248 {
249 return m_pObject->m_Matrix;
250 }
251
252
253
254 FX_FLOAT» » » GetFontSizeV() const;
255
256 FX_FLOAT» » » GetFontSizeH() const;
257
258 FX_FLOAT» » » GetBaselineAngle() const;
259
260 FX_FLOAT» » » GetShearAngle() const;
261
262 }; 199 };
263 class CPDF_TransferFunc; 200 class CPDF_TransferFunc;
264 class CPDF_GeneralStateData 201 class CPDF_GeneralStateData {
265 { 202 public:
266 public: 203 CPDF_GeneralStateData();
267 204
268 CPDF_GeneralStateData(); 205 CPDF_GeneralStateData(const CPDF_GeneralStateData& src);
269 206 ~CPDF_GeneralStateData();
270 CPDF_GeneralStateData(const CPDF_GeneralStateData& src); 207
271 ~CPDF_GeneralStateData(); 208 void SetBlendMode(const CFX_ByteStringC& blend_mode);
272 209
273 void» » » » SetBlendMode(const CFX_ByteStringC& blen d_mode); 210 char m_BlendMode[16];
274 211
275 char» » » » m_BlendMode[16]; 212 int m_BlendType;
276 213
277 int»» » » » m_BlendType; 214 CPDF_Object* m_pSoftMask;
278 215
279 CPDF_Object*» » m_pSoftMask; 216 FX_FLOAT m_SMaskMatrix[6];
280 217
281 FX_FLOAT» » » m_SMaskMatrix[6]; 218 FX_FLOAT m_StrokeAlpha;
282 219
283 FX_FLOAT» » » m_StrokeAlpha; 220 FX_FLOAT m_FillAlpha;
284 221
285 FX_FLOAT» » » m_FillAlpha; 222 CPDF_Object* m_pTR;
286 223
287 CPDF_Object*» » m_pTR; 224 CPDF_TransferFunc* m_pTransferFunc;
288 225
289 CPDF_TransferFunc*» m_pTransferFunc; 226 CFX_Matrix m_Matrix;
290 227
291 CFX_Matrix» » » m_Matrix; 228 int m_RenderIntent;
292 229
293 int»» » » » m_RenderIntent; 230 FX_BOOL m_StrokeAdjust;
294 231
295 FX_BOOL» » » » m_StrokeAdjust; 232 FX_BOOL m_AlphaSource;
296 233
297 FX_BOOL» » » » m_AlphaSource; 234 FX_BOOL m_TextKnockout;
298 235
299 FX_BOOL» » » » m_TextKnockout; 236 FX_BOOL m_StrokeOP;
300 237
301 FX_BOOL» » » » m_StrokeOP; 238 FX_BOOL m_FillOP;
302 239
303 FX_BOOL» » » » m_FillOP; 240 int m_OPMode;
304 241
305 int»» » » » m_OPMode; 242 CPDF_Object* m_pBG;
306 243
307 CPDF_Object*» » m_pBG; 244 CPDF_Object* m_pUCR;
308 245
309 CPDF_Object*» » m_pUCR; 246 CPDF_Object* m_pHT;
310 247
311 CPDF_Object*» » m_pHT; 248 FX_FLOAT m_Flatness;
312 249
313 FX_FLOAT» » » m_Flatness; 250 FX_FLOAT m_Smoothness;
314 251 };
315 FX_FLOAT» » » m_Smoothness; 252 class CPDF_GeneralState : public CFX_CountRef<CPDF_GeneralStateData> {
316 }; 253 public:
317 class CPDF_GeneralState : public CFX_CountRef<CPDF_GeneralStateData> 254 void SetRenderIntent(const CFX_ByteString& ri);
318 { 255
319 public: 256 int GetBlendType() const {
320 257 return m_pObject ? m_pObject->m_BlendType : FXDIB_BLEND_NORMAL;
321 void» » » » SetRenderIntent(const CFX_ByteString& ri ); 258 }
322 259
323 int»» » » » GetBlendType() const 260 int GetAlpha(FX_BOOL bStroke) const {
324 { 261 return m_pObject ? FXSYS_round((bStroke ? m_pObject->m_StrokeAlpha
325 return m_pObject ? m_pObject->m_BlendType : FXDIB_BLEND_NORMAL; 262 : m_pObject->m_FillAlpha) *
326 } 263 255)
327 264 : 255;
328 int»» » » » GetAlpha(FX_BOOL bStroke) const 265 }
329 { 266 };
330 return m_pObject ? FXSYS_round((bStroke ? m_pObject->m_StrokeAlpha : m_p Object->m_FillAlpha) * 255) : 255; 267 class CPDF_ContentMarkItem {
331 } 268 public:
332 }; 269 typedef enum { None, PropertiesDict, DirectDict, MCID } ParamType;
333 class CPDF_ContentMarkItem 270
334 { 271 CPDF_ContentMarkItem();
335 public: 272
336 273 CPDF_ContentMarkItem(const CPDF_ContentMarkItem& src);
337 typedef enum { 274
338 None, 275 ~CPDF_ContentMarkItem();
339 PropertiesDict, 276
340 DirectDict, 277 inline const CFX_ByteString& GetName() const { return m_MarkName; }
341 MCID 278
342 } ParamType; 279 inline ParamType GetParamType() const { return m_ParamType; }
343 280
344 CPDF_ContentMarkItem(); 281 inline void* GetParam() const { return m_pParam; }
345 282
346 CPDF_ContentMarkItem(const CPDF_ContentMarkItem& src); 283 inline FX_BOOL HasMCID() const;
347 284
348 ~CPDF_ContentMarkItem(); 285 inline void SetName(const CFX_ByteString& name) { m_MarkName = name; }
349 286
350 inline const CFX_ByteString&» GetName() const 287 inline void SetParam(ParamType type, void* param) {
351 { 288 m_ParamType = type;
352 return m_MarkName; 289 m_pParam = param;
353 } 290 }
354 291
355 inline ParamType» GetParamType() const 292 private:
356 { 293 CFX_ByteString m_MarkName;
357 return m_ParamType; 294
358 } 295 ParamType m_ParamType;
359 296
360 inline void*» » GetParam() const 297 void* m_pParam;
361 { 298 };
362 return m_pParam; 299 class CPDF_ContentMarkData {
363 } 300 public:
364 301 CPDF_ContentMarkData() {}
365 inline FX_BOOL» » HasMCID() const; 302
366 303 CPDF_ContentMarkData(const CPDF_ContentMarkData& src);
367 inline void»» » SetName(const CFX_ByteString& name) 304
368 { 305 inline int CountItems() const { return m_Marks.GetSize(); }
369 m_MarkName = name; 306
370 } 307 inline CPDF_ContentMarkItem& GetItem(int index) const {
371 308 return m_Marks[index];
372 inline void»» » SetParam(ParamType type, void* param) 309 }
373 { 310
374 m_ParamType = type; 311 int GetMCID() const;
375 m_pParam = param; 312
376 } 313 void AddMark(const CFX_ByteString& name,
377 private: 314 CPDF_Dictionary* pDict,
378 315 FX_BOOL bDictNeedClone);
379 CFX_ByteString» » m_MarkName; 316
380 317 void DeleteLastMark();
381 ParamType» » » m_ParamType; 318
382 319 private:
383 void*» » » » m_pParam; 320 CFX_ObjectArray<CPDF_ContentMarkItem> m_Marks;
384 }; 321 };
385 class CPDF_ContentMarkData 322 class CPDF_ContentMark : public CFX_CountRef<CPDF_ContentMarkData> {
386 { 323 public:
387 public: 324 int GetMCID() const { return m_pObject ? m_pObject->GetMCID() : -1; }
388 325
389 CPDF_ContentMarkData() { } 326 FX_BOOL HasMark(const CFX_ByteStringC& mark) const;
390 327
391 CPDF_ContentMarkData(const CPDF_ContentMarkData& src); 328 FX_BOOL LookupMark(const CFX_ByteStringC& mark,
392 329 CPDF_Dictionary*& pDict) const;
393 inline int» » » CountItems() const 330 };
394 { 331
395 return m_Marks.GetSize(); 332 #define PDFPAGE_TEXT 1
396 } 333 #define PDFPAGE_PATH 2
397 334 #define PDFPAGE_IMAGE 3
398 inline CPDF_ContentMarkItem&» GetItem(int index) const 335 #define PDFPAGE_SHADING 4
399 { 336 #define PDFPAGE_FORM 5
400 return m_Marks[index]; 337
401 } 338 class CPDF_GraphicStates {
402 339 public:
403 int»» » » » GetMCID() const; 340 void CopyStates(const CPDF_GraphicStates& src);
404 341
405 void» » » » AddMark(const CFX_ByteString& name, CPDF _Dictionary* pDict, FX_BOOL bDictNeedClone); 342 void DefaultStates();
406 343
407 void» » » » DeleteLastMark(); 344 CPDF_ClipPath m_ClipPath;
408 private: 345
409 346 CPDF_GraphState m_GraphState;
410 CFX_ObjectArray<CPDF_ContentMarkItem>» m_Marks; 347
411 }; 348 CPDF_ColorState m_ColorState;
412 class CPDF_ContentMark : public CFX_CountRef<CPDF_ContentMarkData> 349
413 { 350 CPDF_TextState m_TextState;
414 public: 351
415 352 CPDF_GeneralState m_GeneralState;
416 int»» » » » GetMCID() const 353 };
417 { 354
418 return m_pObject ? m_pObject->GetMCID() : -1; 355 class CPDF_PageObject : public CPDF_GraphicStates {
419 } 356 public:
420 357 static CPDF_PageObject* Create(int type);
421 FX_BOOL» » » » HasMark(const CFX_ByteStringC& mark) con st; 358 virtual ~CPDF_PageObject();
422 359
423 FX_BOOL» » » » LookupMark(const CFX_ByteStringC& mark, CPDF_Dictionary*& pDict) const; 360 CPDF_PageObject* Clone() const;
424 }; 361
425 362 void Copy(const CPDF_PageObject* pSrcObject);
426 #define PDFPAGE_TEXT 1 363
427 #define PDFPAGE_PATH 2 364 virtual void Transform(const CFX_AffineMatrix& matrix) = 0;
428 #define PDFPAGE_IMAGE 3 365
429 #define PDFPAGE_SHADING 4 366 void RemoveClipPath();
430 #define PDFPAGE_FORM 5 367
431 368 void AppendClipPath(CPDF_Path path, int type, FX_BOOL bAutoMerge);
432 class CPDF_GraphicStates 369
433 { 370 void CopyClipPath(CPDF_PageObject* pObj);
434 public: 371
435 void» » » » CopyStates(const CPDF_GraphicStates& src ); 372 void TransformClipPath(CFX_AffineMatrix& matrix);
436 373
437 void» » » » DefaultStates(); 374 void TransformGeneralState(CFX_AffineMatrix& matrix);
438 375
439 CPDF_ClipPath» » m_ClipPath; 376 void SetColorState(CPDF_ColorState state) { m_ColorState = state; }
440 377
441 CPDF_GraphState» » m_GraphState; 378 FX_RECT GetBBox(const CFX_AffineMatrix* pMatrix) const;
442 379
443 CPDF_ColorState» » m_ColorState; 380 int m_Type;
444 381
445 CPDF_TextState» » m_TextState; 382 FX_FLOAT m_Left;
446 383
447 CPDF_GeneralState» m_GeneralState; 384 FX_FLOAT m_Right;
448 }; 385
449 386 FX_FLOAT m_Top;
450 class CPDF_PageObject : public CPDF_GraphicStates 387
451 { 388 FX_FLOAT m_Bottom;
452 public: 389
453 static CPDF_PageObject* Create(int type); 390 CPDF_ContentMark m_ContentMark;
454 virtual ~CPDF_PageObject(); 391
455 392 protected:
456 CPDF_PageObject*» Clone() const; 393 virtual void CopyData(const CPDF_PageObject* pSrcObject) = 0;
457 394
458 void» » » » Copy(const CPDF_PageObject* pSrcObject); 395 void RecalcBBox();
459 396
460 virtual void Transform(const CFX_AffineMatrix& matrix) = 0; 397 CPDF_PageObject() {}
461
462 void» » » » RemoveClipPath();
463
464 void» » » » AppendClipPath(CPDF_Path path, int type, FX_BOOL bAutoMerge);
465
466 void» » » » CopyClipPath(CPDF_PageObject* pObj);
467
468 void» » » » TransformClipPath(CFX_AffineMatrix& matr ix);
469
470 void» » » » TransformGeneralState(CFX_AffineMatrix& matrix);
471
472 void» » » » SetColorState(CPDF_ColorState state)
473 {
474 m_ColorState = state;
475 }
476
477 FX_RECT» » » » GetBBox(const CFX_AffineMatrix* pMatrix) const;
478
479 int»» » » » m_Type;
480
481 FX_FLOAT» » » m_Left;
482
483 FX_FLOAT» » » m_Right;
484
485 FX_FLOAT» » » m_Top;
486
487 FX_FLOAT» » » m_Bottom;
488
489 CPDF_ContentMark» m_ContentMark;
490
491 protected:
492 virtual void CopyData(const CPDF_PageObject* pSrcObject) = 0;
493
494 void» » » » RecalcBBox();
495
496 CPDF_PageObject() {}
497
498 }; 398 };
499 399
500 struct CPDF_TextObjectItem { 400 struct CPDF_TextObjectItem {
501 FX_DWORD m_CharCode; 401 FX_DWORD m_CharCode;
502 FX_FLOAT m_OriginX; 402 FX_FLOAT m_OriginX;
503 FX_FLOAT m_OriginY; 403 FX_FLOAT m_OriginY;
504 }; 404 };
505 405
506 class CPDF_TextObject : public CPDF_PageObject 406 class CPDF_TextObject : public CPDF_PageObject {
507 { 407 public:
508 public: 408 CPDF_TextObject();
509 CPDF_TextObject(); 409 ~CPDF_TextObject() override;
510 ~CPDF_TextObject() override; 410
511 411 int CountItems() const { return m_nChars; }
512 int CountItems() const 412
513 { 413 void GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const;
514 return m_nChars; 414
515 } 415 int CountChars() const;
516 416
517 void GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const; 417 void GetCharInfo(int index, FX_DWORD& charcode, FX_FLOAT& kerning) const;
518 418 void GetCharInfo(int index, CPDF_TextObjectItem* pInfo) const;
519 int CountChars() const; 419
520 420 void GetCharRect(int index, CFX_FloatRect& rect) const;
521 void GetCharInfo(int index, FX_DWORD& charcode, FX_FLOAT& kerning) const; 421
522 void GetCharInfo(int index, CPDF_TextObjectItem* pInfo) const; 422 FX_FLOAT GetCharWidth(FX_DWORD charcode) const;
523 423 FX_FLOAT GetSpaceCharWidth() const;
524 void GetCharRect(int index, CFX_FloatRect& rect) const; 424
525 425 FX_FLOAT GetPosX() const { return m_PosX; }
526 FX_FLOAT GetCharWidth(FX_DWORD charcode) const; 426
527 FX_FLOAT GetSpaceCharWidth() const; 427 FX_FLOAT GetPosY() const { return m_PosY; }
528 428
529 FX_FLOAT GetPosX() const 429 void GetTextMatrix(CFX_AffineMatrix* pMatrix) const;
530 { 430
531 return m_PosX; 431 CPDF_Font* GetFont() const { return m_TextState.GetFont(); }
532 } 432
533 433 FX_FLOAT GetFontSize() const { return m_TextState.GetFontSize(); }
534 FX_FLOAT GetPosY() const 434
535 { 435 void SetEmpty();
536 return m_PosY; 436
537 } 437 void SetText(const CFX_ByteString& text);
538 438
539 void GetTextMatrix(CFX_AffineMatrix* pMatrix) const; 439 void SetText(CFX_ByteString* pStrs, FX_FLOAT* pKerning, int nSegs);
540 440
541 CPDF_Font* GetFont() const 441 void SetText(int nChars, FX_DWORD* pCharCodes, FX_FLOAT* pKernings);
542 { 442
543 return m_TextState.GetFont(); 443 void SetPosition(FX_FLOAT x, FX_FLOAT y);
544 } 444
545 445 void SetTextState(CPDF_TextState TextState);
546 FX_FLOAT GetFontSize() const 446
547 { 447 // CPDF_PageObject:
548 return m_TextState.GetFontSize(); 448 void Transform(const CFX_AffineMatrix& matrix) override;
549 } 449
550 450 void CalcCharPos(FX_FLOAT* pPosArray) const;
551 void SetEmpty(); 451
552 452 void SetData(int nChars,
553 void SetText(const CFX_ByteString& text); 453 FX_DWORD* pCharCodes,
554 454 FX_FLOAT* pCharPos,
555 void SetText(CFX_ByteString* pStrs, FX_FLOAT* pKerning, int nSegs); 455 FX_FLOAT x,
556 456 FX_FLOAT y);
557 void SetText(int nChars, FX_DWORD* pCharCodes, FX_FLOAT* pKernings); 457
558 458 void GetData(int& nChars, FX_DWORD*& pCharCodes, FX_FLOAT*& pCharPos) {
559 void SetPosition(FX_FLOAT x, FX_FLOAT y); 459 nChars = m_nChars;
560 460 pCharCodes = m_pCharCodes;
561 void SetTextState(CPDF_TextState TextState); 461 pCharPos = m_pCharPos;
562 462 }
563 // CPDF_PageObject: 463
564 void Transform(const CFX_AffineMatrix& matrix) override; 464 void RecalcPositionData() { CalcPositionData(nullptr, nullptr, 1); }
565 465
566 void CalcCharPos(FX_FLOAT* pPosArray) const; 466 protected:
567 467 friend class CPDF_RenderStatus;
568 void SetData(int nChars, 468 friend class CPDF_StreamContentParser;
569 FX_DWORD* pCharCodes, 469 friend class CPDF_TextRenderer;
570 FX_FLOAT* pCharPos, 470 friend class CTextPage;
571 FX_FLOAT x, 471
572 FX_FLOAT y); 472 // CPDF_PageObject:
573 473 void CopyData(const CPDF_PageObject* pSrcObject) override;
574 void GetData(int& nChars, FX_DWORD*& pCharCodes, FX_FLOAT*& pCharPos) 474
575 { 475 void SetSegments(const CFX_ByteString* pStrs, FX_FLOAT* pKerning, int nSegs);
576 nChars = m_nChars; 476
577 pCharCodes = m_pCharCodes; 477 void CalcPositionData(FX_FLOAT* pTextAdvanceX,
578 pCharPos = m_pCharPos; 478 FX_FLOAT* pTextAdvanceY,
579 } 479 FX_FLOAT horz_scale,
580 480 int level = 0);
581 481
582 void RecalcPositionData() 482 FX_FLOAT m_PosX;
583 { 483 FX_FLOAT m_PosY;
584 CalcPositionData(nullptr, nullptr, 1); 484
585 } 485 int m_nChars;
586 486
587 protected: 487 FX_DWORD* m_pCharCodes;
588 friend class CPDF_RenderStatus; 488
589 friend class CPDF_StreamContentParser; 489 FX_FLOAT* m_pCharPos;
590 friend class CPDF_TextRenderer; 490 };
591 friend class CTextPage; 491
592 492 class CPDF_PathObject : public CPDF_PageObject {
593 // CPDF_PageObject: 493 public:
594 void CopyData(const CPDF_PageObject* pSrcObject) override; 494 CPDF_PathObject() { m_Type = PDFPAGE_PATH; }
595 495
596 void SetSegments(const CFX_ByteString* pStrs, 496 virtual ~CPDF_PathObject() {}
597 FX_FLOAT* pKerning, 497 void Transform(const CFX_AffineMatrix& maxtrix) override;
598 int nSegs); 498
599 499 void SetGraphState(CPDF_GraphState GraphState);
600 void CalcPositionData(FX_FLOAT* pTextAdvanceX, 500
601 FX_FLOAT* pTextAdvanceY, 501 CPDF_Path m_Path;
602 FX_FLOAT horz_scale, 502
603 int level = 0); 503 int m_FillType;
604 504
605 FX_FLOAT m_PosX; 505 FX_BOOL m_bStroke;
606 FX_FLOAT m_PosY; 506
607 507 CFX_AffineMatrix m_Matrix;
608 int m_nChars; 508
609 509 void CalcBoundingBox();
610 FX_DWORD* m_pCharCodes; 510
611 511 protected:
612 FX_FLOAT* m_pCharPos; 512 void CopyData(const CPDF_PageObject* pSrcObject) override;
613 }; 513 };
614 514
615 class CPDF_PathObject : public CPDF_PageObject 515 class CPDF_ImageObject : public CPDF_PageObject {
616 { 516 public:
617 public: 517 CPDF_ImageObject();
618 CPDF_PathObject() 518
619 { 519 virtual ~CPDF_ImageObject();
620 m_Type = PDFPAGE_PATH; 520 void Transform(const CFX_AffineMatrix& matrix) override;
621 } 521
622 522 CPDF_Image* m_pImage;
623 virtual ~CPDF_PathObject() {} 523
624 void Transform(const CFX_AffineMatrix& maxtrix) override; 524 CFX_AffineMatrix m_Matrix;
625 525
626 void» » » » SetGraphState(CPDF_GraphState GraphState ); 526 void CalcBoundingBox();
627 527
628 CPDF_Path» » » m_Path; 528 private:
629 529 void CopyData(const CPDF_PageObject* pSrcObject) override;
630 int»» » » » m_FillType; 530 };
631 531
632 FX_BOOL» » » » m_bStroke; 532 class CPDF_ShadingObject : public CPDF_PageObject {
633 533 public:
634 CFX_AffineMatrix» m_Matrix; 534 CPDF_ShadingObject();
635 535
636 536 virtual ~CPDF_ShadingObject();
637 void» » » » CalcBoundingBox(); 537
638 538 CPDF_ShadingPattern* m_pShading;
639 protected: 539
640 void CopyData(const CPDF_PageObject* pSrcObject) override; 540 CFX_AffineMatrix m_Matrix;
641 }; 541
642 542 void Transform(const CFX_AffineMatrix& matrix) override;
643 class CPDF_ImageObject : public CPDF_PageObject 543
644 { 544 void CalcBoundingBox();
645 public: 545
646 CPDF_ImageObject(); 546 protected:
647 547 void CopyData(const CPDF_PageObject* pSrcObject) override;
648 virtual ~CPDF_ImageObject(); 548 };
649 void Transform(const CFX_AffineMatrix& matrix) override; 549
650 550 class CPDF_FormObject : public CPDF_PageObject {
651 CPDF_Image*»» » m_pImage; 551 public:
652 552 CPDF_FormObject() {
653 CFX_AffineMatrix» m_Matrix; 553 m_Type = PDFPAGE_FORM;
654 554 m_pForm = NULL;
655 void» » » » CalcBoundingBox(); 555 }
656 556
657 private: 557 virtual ~CPDF_FormObject();
658 void CopyData(const CPDF_PageObject* pSrcObject) override; 558 void Transform(const CFX_AffineMatrix& matrix) override;
659 }; 559
660 560 CPDF_Form* m_pForm;
661 class CPDF_ShadingObject : public CPDF_PageObject 561
662 { 562 CFX_AffineMatrix m_FormMatrix;
663 public: 563
664 CPDF_ShadingObject(); 564 void CalcBoundingBox();
665 565
666 virtual ~CPDF_ShadingObject(); 566 protected:
667 567 void CopyData(const CPDF_PageObject* pSrcObject) override;
668 CPDF_ShadingPattern*» m_pShading;
669
670 CFX_AffineMatrix» m_Matrix;
671
672 void Transform(const CFX_AffineMatrix& matrix) override;
673
674 void» » » » CalcBoundingBox();
675
676 protected:
677 void CopyData(const CPDF_PageObject* pSrcObject) override;
678 };
679
680 class CPDF_FormObject : public CPDF_PageObject
681 {
682 public:
683 CPDF_FormObject()
684 {
685 m_Type = PDFPAGE_FORM;
686 m_pForm = NULL;
687 }
688
689 virtual ~CPDF_FormObject();
690 void Transform(const CFX_AffineMatrix& matrix) override;
691
692 CPDF_Form*» » » m_pForm;
693
694 CFX_AffineMatrix» m_FormMatrix;
695
696 void» » » » CalcBoundingBox();
697
698 protected:
699 void CopyData(const CPDF_PageObject* pSrcObject) override;
700 }; 568 };
701 569
702 #endif // CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_ 570 #endif // CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698