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

Side by Side Diff: core/fpdfapi/render/render_int.h

Issue 2477443002: Remove FX_BOOL from core (Closed)
Patch Set: Created 4 years, 1 month 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/render/fpdf_render_text.cpp ('k') | core/fpdfdoc/cpdf_aaction.h » ('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_RENDER_RENDER_INT_H_ 7 #ifndef CORE_FPDFAPI_RENDER_RENDER_INT_H_
8 #define CORE_FPDFAPI_RENDER_RENDER_INT_H_ 8 #define CORE_FPDFAPI_RENDER_RENDER_INT_H_
9 9
10 #include <map> 10 #include <map>
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 class CPDF_ShadingObject; 42 class CPDF_ShadingObject;
43 class CPDF_ShadingPattern; 43 class CPDF_ShadingPattern;
44 class CPDF_Stream; 44 class CPDF_Stream;
45 class CPDF_TilingPattern; 45 class CPDF_TilingPattern;
46 class CPDF_TransferFunc; 46 class CPDF_TransferFunc;
47 class CPDF_Type3Cache; 47 class CPDF_Type3Cache;
48 class CPDF_Type3Glyphs; 48 class CPDF_Type3Glyphs;
49 class CPDF_Type3Char; 49 class CPDF_Type3Char;
50 class CPDF_Type3Font; 50 class CPDF_Type3Font;
51 51
52 FX_BOOL IsAvailableMatrix(const CFX_Matrix& matrix); 52 bool IsAvailableMatrix(const CFX_Matrix& matrix);
53 53
54 class CPDF_TransferFunc { 54 class CPDF_TransferFunc {
55 public: 55 public:
56 explicit CPDF_TransferFunc(CPDF_Document* pDoc); 56 explicit CPDF_TransferFunc(CPDF_Document* pDoc);
57 57
58 FX_COLORREF TranslateColor(FX_COLORREF src) const; 58 FX_COLORREF TranslateColor(FX_COLORREF src) const;
59 CFX_DIBSource* TranslateImage(const CFX_DIBSource* pSrc, 59 CFX_DIBSource* TranslateImage(const CFX_DIBSource* pSrc, bool bAutoDropSrc);
60 FX_BOOL bAutoDropSrc);
61 60
62 CPDF_Document* const m_pPDFDoc; 61 CPDF_Document* const m_pPDFDoc;
63 FX_BOOL m_bIdentity; 62 bool m_bIdentity;
64 uint8_t m_Samples[256 * 3]; 63 uint8_t m_Samples[256 * 3];
65 }; 64 };
66 65
67 class CPDF_DocRenderData { 66 class CPDF_DocRenderData {
68 public: 67 public:
69 explicit CPDF_DocRenderData(CPDF_Document* pPDFDoc); 68 explicit CPDF_DocRenderData(CPDF_Document* pPDFDoc);
70 ~CPDF_DocRenderData(); 69 ~CPDF_DocRenderData();
71 CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); 70 CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont);
72 CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObj); 71 CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObj);
73 void Clear(FX_BOOL bRelease = FALSE); 72 void Clear(bool bRelease = false);
74 void ReleaseCachedType3(CPDF_Type3Font* pFont); 73 void ReleaseCachedType3(CPDF_Type3Font* pFont);
75 void ReleaseTransferFunc(CPDF_Object* pObj); 74 void ReleaseTransferFunc(CPDF_Object* pObj);
76 75
77 private: 76 private:
78 using CPDF_Type3CacheMap = 77 using CPDF_Type3CacheMap =
79 std::map<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache>*>; 78 std::map<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache>*>;
80 using CPDF_TransferFuncMap = 79 using CPDF_TransferFuncMap =
81 std::map<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc>*>; 80 std::map<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc>*>;
82 81
83 CPDF_Document* m_pPDFDoc; 82 CPDF_Document* m_pPDFDoc;
84 CPDF_Type3CacheMap m_Type3FaceMap; 83 CPDF_Type3CacheMap m_Type3FaceMap;
85 CPDF_TransferFuncMap m_TransferFuncMap; 84 CPDF_TransferFuncMap m_TransferFuncMap;
86 }; 85 };
87 86
88 class CPDF_RenderStatus { 87 class CPDF_RenderStatus {
89 public: 88 public:
90 CPDF_RenderStatus(); 89 CPDF_RenderStatus();
91 ~CPDF_RenderStatus(); 90 ~CPDF_RenderStatus();
92 91
93 FX_BOOL Initialize(class CPDF_RenderContext* pContext, 92 bool Initialize(class CPDF_RenderContext* pContext,
94 CFX_RenderDevice* pDevice, 93 CFX_RenderDevice* pDevice,
95 const CFX_Matrix* pDeviceMatrix, 94 const CFX_Matrix* pDeviceMatrix,
96 const CPDF_PageObject* pStopObj, 95 const CPDF_PageObject* pStopObj,
97 const CPDF_RenderStatus* pParentStatus, 96 const CPDF_RenderStatus* pParentStatus,
98 const CPDF_GraphicStates* pInitialStates, 97 const CPDF_GraphicStates* pInitialStates,
99 const CPDF_RenderOptions* pOptions, 98 const CPDF_RenderOptions* pOptions,
100 int transparency, 99 int transparency,
101 FX_BOOL bDropObjects, 100 bool bDropObjects,
102 CPDF_Dictionary* pFormResource = nullptr, 101 CPDF_Dictionary* pFormResource = nullptr,
103 FX_BOOL bStdCS = FALSE, 102 bool bStdCS = false,
104 CPDF_Type3Char* pType3Char = nullptr, 103 CPDF_Type3Char* pType3Char = nullptr,
105 FX_ARGB fill_color = 0, 104 FX_ARGB fill_color = 0,
106 uint32_t GroupFamily = 0, 105 uint32_t GroupFamily = 0,
107 FX_BOOL bLoadMask = FALSE); 106 bool bLoadMask = false);
108 void RenderObjectList(const CPDF_PageObjectHolder* pObjectHolder, 107 void RenderObjectList(const CPDF_PageObjectHolder* pObjectHolder,
109 const CFX_Matrix* pObj2Device); 108 const CFX_Matrix* pObj2Device);
110 void RenderSingleObject(CPDF_PageObject* pObj, const CFX_Matrix* pObj2Device); 109 void RenderSingleObject(CPDF_PageObject* pObj, const CFX_Matrix* pObj2Device);
111 FX_BOOL ContinueSingleObject(CPDF_PageObject* pObj, 110 bool ContinueSingleObject(CPDF_PageObject* pObj,
112 const CFX_Matrix* pObj2Device, 111 const CFX_Matrix* pObj2Device,
113 IFX_Pause* pPause); 112 IFX_Pause* pPause);
114 CPDF_RenderContext* GetContext() { return m_pContext; } 113 CPDF_RenderContext* GetContext() { return m_pContext; }
115 114
116 #if defined _SKIA_SUPPORT_ 115 #if defined _SKIA_SUPPORT_
117 void DebugVerifyDeviceIsPreMultiplied() const; 116 void DebugVerifyDeviceIsPreMultiplied() const;
118 #endif 117 #endif
119 118
120 CPDF_RenderOptions m_Options; 119 CPDF_RenderOptions m_Options;
121 CPDF_Dictionary* m_pFormResource; 120 CPDF_Dictionary* m_pFormResource;
122 CPDF_Dictionary* m_pPageResource; 121 CPDF_Dictionary* m_pPageResource;
123 CFX_ArrayTemplate<CPDF_Type3Font*> m_Type3FontCache; 122 CFX_ArrayTemplate<CPDF_Type3Font*> m_Type3FontCache;
124 123
125 protected: 124 protected:
126 friend class CPDF_ImageRenderer; 125 friend class CPDF_ImageRenderer;
127 friend class CPDF_RenderContext; 126 friend class CPDF_RenderContext;
128 127
129 void ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device); 128 void ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device);
130 void DrawClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device); 129 void DrawClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device);
131 FX_BOOL ProcessTransparency(CPDF_PageObject* PageObj, 130 bool ProcessTransparency(CPDF_PageObject* PageObj,
132 const CFX_Matrix* pObj2Device); 131 const CFX_Matrix* pObj2Device);
133 void ProcessObjectNoClip(CPDF_PageObject* PageObj, 132 void ProcessObjectNoClip(CPDF_PageObject* PageObj,
134 const CFX_Matrix* pObj2Device); 133 const CFX_Matrix* pObj2Device);
135 void DrawObjWithBackground(CPDF_PageObject* pObj, 134 void DrawObjWithBackground(CPDF_PageObject* pObj,
136 const CFX_Matrix* pObj2Device); 135 const CFX_Matrix* pObj2Device);
137 FX_BOOL DrawObjWithBlend(CPDF_PageObject* pObj, 136 bool DrawObjWithBlend(CPDF_PageObject* pObj, const CFX_Matrix* pObj2Device);
138 const CFX_Matrix* pObj2Device); 137 bool ProcessPath(CPDF_PathObject* pPathObj, const CFX_Matrix* pObj2Device);
139 FX_BOOL ProcessPath(CPDF_PathObject* pPathObj, const CFX_Matrix* pObj2Device);
140 void ProcessPathPattern(CPDF_PathObject* pPathObj, 138 void ProcessPathPattern(CPDF_PathObject* pPathObj,
141 const CFX_Matrix* pObj2Device, 139 const CFX_Matrix* pObj2Device,
142 int& filltype, 140 int& filltype,
143 FX_BOOL& bStroke); 141 bool& bStroke);
144 void DrawPathWithPattern(CPDF_PathObject* pPathObj, 142 void DrawPathWithPattern(CPDF_PathObject* pPathObj,
145 const CFX_Matrix* pObj2Device, 143 const CFX_Matrix* pObj2Device,
146 const CPDF_Color* pColor, 144 const CPDF_Color* pColor,
147 FX_BOOL bStroke); 145 bool bStroke);
148 void DrawTilingPattern(CPDF_TilingPattern* pPattern, 146 void DrawTilingPattern(CPDF_TilingPattern* pPattern,
149 CPDF_PageObject* pPageObj, 147 CPDF_PageObject* pPageObj,
150 const CFX_Matrix* pObj2Device, 148 const CFX_Matrix* pObj2Device,
151 FX_BOOL bStroke); 149 bool bStroke);
152 void DrawShadingPattern(CPDF_ShadingPattern* pPattern, 150 void DrawShadingPattern(CPDF_ShadingPattern* pPattern,
153 const CPDF_PageObject* pPageObj, 151 const CPDF_PageObject* pPageObj,
154 const CFX_Matrix* pObj2Device, 152 const CFX_Matrix* pObj2Device,
155 FX_BOOL bStroke); 153 bool bStroke);
156 FX_BOOL SelectClipPath(const CPDF_PathObject* pPathObj, 154 bool SelectClipPath(const CPDF_PathObject* pPathObj,
157 const CFX_Matrix* pObj2Device, 155 const CFX_Matrix* pObj2Device,
158 FX_BOOL bStroke); 156 bool bStroke);
159 FX_BOOL ProcessImage(CPDF_ImageObject* pImageObj, 157 bool ProcessImage(CPDF_ImageObject* pImageObj, const CFX_Matrix* pObj2Device);
160 const CFX_Matrix* pObj2Device); 158 bool OutputBitmapAlpha(CPDF_ImageObject* pImageObj,
161 FX_BOOL OutputBitmapAlpha(CPDF_ImageObject* pImageObj, 159 const CFX_Matrix* pImage2Device);
162 const CFX_Matrix* pImage2Device); 160 bool OutputImage(CPDF_ImageObject* pImageObj,
163 FX_BOOL OutputImage(CPDF_ImageObject* pImageObj, 161 const CFX_Matrix* pImage2Device);
164 const CFX_Matrix* pImage2Device); 162 bool OutputDIBSource(const CFX_DIBSource* pOutputBitmap,
165 FX_BOOL OutputDIBSource(const CFX_DIBSource* pOutputBitmap, 163 FX_ARGB fill_argb,
166 FX_ARGB fill_argb, 164 int bitmap_alpha,
167 int bitmap_alpha, 165 const CFX_Matrix* pImage2Device,
168 const CFX_Matrix* pImage2Device, 166 CPDF_ImageCacheEntry* pImageCache,
169 CPDF_ImageCacheEntry* pImageCache, 167 uint32_t flags);
170 uint32_t flags);
171 void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, 168 void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap,
172 int left, 169 int left,
173 int top, 170 int top,
174 FX_ARGB mask_argb, 171 FX_ARGB mask_argb,
175 int bitmap_alpha, 172 int bitmap_alpha,
176 int blend_mode, 173 int blend_mode,
177 int bIsolated); 174 int bIsolated);
178 void ProcessShading(const CPDF_ShadingObject* pShadingObj, 175 void ProcessShading(const CPDF_ShadingObject* pShadingObj,
179 const CFX_Matrix* pObj2Device); 176 const CFX_Matrix* pObj2Device);
180 void DrawShading(CPDF_ShadingPattern* pPattern, 177 void DrawShading(CPDF_ShadingPattern* pPattern,
181 CFX_Matrix* pMatrix, 178 CFX_Matrix* pMatrix,
182 FX_RECT& clip_rect, 179 FX_RECT& clip_rect,
183 int alpha, 180 int alpha,
184 FX_BOOL bAlphaMode); 181 bool bAlphaMode);
185 FX_BOOL ProcessType3Text(CPDF_TextObject* textobj, 182 bool ProcessType3Text(CPDF_TextObject* textobj,
186 const CFX_Matrix* pObj2Device); 183 const CFX_Matrix* pObj2Device);
187 FX_BOOL ProcessText(CPDF_TextObject* textobj, 184 bool ProcessText(CPDF_TextObject* textobj,
188 const CFX_Matrix* pObj2Device, 185 const CFX_Matrix* pObj2Device,
189 CFX_PathData* pClippingPath); 186 CFX_PathData* pClippingPath);
190 void DrawTextPathWithPattern(const CPDF_TextObject* textobj, 187 void DrawTextPathWithPattern(const CPDF_TextObject* textobj,
191 const CFX_Matrix* pObj2Device, 188 const CFX_Matrix* pObj2Device,
192 CPDF_Font* pFont, 189 CPDF_Font* pFont,
193 FX_FLOAT font_size, 190 FX_FLOAT font_size,
194 const CFX_Matrix* pTextMatrix, 191 const CFX_Matrix* pTextMatrix,
195 FX_BOOL bFill, 192 bool bFill,
196 FX_BOOL bStroke); 193 bool bStroke);
197 FX_BOOL ProcessForm(const CPDF_FormObject* pFormObj, 194 bool ProcessForm(const CPDF_FormObject* pFormObj,
198 const CFX_Matrix* pObj2Device); 195 const CFX_Matrix* pObj2Device);
199 CFX_DIBitmap* GetBackdrop(const CPDF_PageObject* pObj, 196 CFX_DIBitmap* GetBackdrop(const CPDF_PageObject* pObj,
200 const FX_RECT& rect, 197 const FX_RECT& rect,
201 int& left, 198 int& left,
202 int& top, 199 int& top,
203 FX_BOOL bBackAlphaRequired); 200 bool bBackAlphaRequired);
204 CFX_DIBitmap* LoadSMask(CPDF_Dictionary* pSMaskDict, 201 CFX_DIBitmap* LoadSMask(CPDF_Dictionary* pSMaskDict,
205 FX_RECT* pClipRect, 202 FX_RECT* pClipRect,
206 const CFX_Matrix* pMatrix); 203 const CFX_Matrix* pMatrix);
207 void Init(CPDF_RenderContext* pParent); 204 void Init(CPDF_RenderContext* pParent);
208 static class CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); 205 static class CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont);
209 static CPDF_GraphicStates* CloneObjStates(const CPDF_GraphicStates* pPathObj, 206 static CPDF_GraphicStates* CloneObjStates(const CPDF_GraphicStates* pPathObj,
210 FX_BOOL bStroke); 207 bool bStroke);
211 CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObject) const; 208 CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObject) const;
212 FX_ARGB GetFillArgb(CPDF_PageObject* pObj, FX_BOOL bType3 = FALSE) const; 209 FX_ARGB GetFillArgb(CPDF_PageObject* pObj, bool bType3 = false) const;
213 FX_ARGB GetStrokeArgb(CPDF_PageObject* pObj) const; 210 FX_ARGB GetStrokeArgb(CPDF_PageObject* pObj) const;
214 FX_BOOL GetObjectClippedRect(const CPDF_PageObject* pObj, 211 bool GetObjectClippedRect(const CPDF_PageObject* pObj,
215 const CFX_Matrix* pObj2Device, 212 const CFX_Matrix* pObj2Device,
216 FX_BOOL bLogical, 213 bool bLogical,
217 FX_RECT& rect) const; 214 FX_RECT& rect) const;
218 void GetScaledMatrix(CFX_Matrix& matrix) const; 215 void GetScaledMatrix(CFX_Matrix& matrix) const;
219 216
220 static const int kRenderMaxRecursionDepth = 64; 217 static const int kRenderMaxRecursionDepth = 64;
221 static int s_CurrentRecursionDepth; 218 static int s_CurrentRecursionDepth;
222 219
223 CPDF_RenderContext* m_pContext; 220 CPDF_RenderContext* m_pContext;
224 FX_BOOL m_bStopped; 221 bool m_bStopped;
225 CFX_RenderDevice* m_pDevice; 222 CFX_RenderDevice* m_pDevice;
226 CFX_Matrix m_DeviceMatrix; 223 CFX_Matrix m_DeviceMatrix;
227 CPDF_ClipPath m_LastClipPath; 224 CPDF_ClipPath m_LastClipPath;
228 const CPDF_PageObject* m_pCurObj; 225 const CPDF_PageObject* m_pCurObj;
229 const CPDF_PageObject* m_pStopObj; 226 const CPDF_PageObject* m_pStopObj;
230 CPDF_GraphicStates m_InitialStates; 227 CPDF_GraphicStates m_InitialStates;
231 int m_HalftoneLimit; 228 int m_HalftoneLimit;
232 std::unique_ptr<CPDF_ImageRenderer> m_pImageRenderer; 229 std::unique_ptr<CPDF_ImageRenderer> m_pImageRenderer;
233 FX_BOOL m_bPrint; 230 bool m_bPrint;
234 int m_Transparency; 231 int m_Transparency;
235 FX_BOOL m_bDropObjects; 232 bool m_bDropObjects;
236 FX_BOOL m_bStdCS; 233 bool m_bStdCS;
237 uint32_t m_GroupFamily; 234 uint32_t m_GroupFamily;
238 FX_BOOL m_bLoadMask; 235 bool m_bLoadMask;
239 CPDF_Type3Char* m_pType3Char; 236 CPDF_Type3Char* m_pType3Char;
240 FX_ARGB m_T3FillColor; 237 FX_ARGB m_T3FillColor;
241 int m_curBlend; 238 int m_curBlend;
242 }; 239 };
243 240
244 class CPDF_ImageLoader { 241 class CPDF_ImageLoader {
245 public: 242 public:
246 CPDF_ImageLoader() 243 CPDF_ImageLoader()
247 : m_pBitmap(nullptr), 244 : m_pBitmap(nullptr),
248 m_pMask(nullptr), 245 m_pMask(nullptr),
249 m_MatteColor(0), 246 m_MatteColor(0),
250 m_bCached(FALSE), 247 m_bCached(false),
251 m_nDownsampleWidth(0), 248 m_nDownsampleWidth(0),
252 m_nDownsampleHeight(0) {} 249 m_nDownsampleHeight(0) {}
253 ~CPDF_ImageLoader(); 250 ~CPDF_ImageLoader();
254 251
255 FX_BOOL Start(const CPDF_ImageObject* pImage, 252 bool Start(const CPDF_ImageObject* pImage,
256 CPDF_PageRenderCache* pCache, 253 CPDF_PageRenderCache* pCache,
257 std::unique_ptr<CPDF_ImageLoaderHandle>* pLoadHandle, 254 std::unique_ptr<CPDF_ImageLoaderHandle>* pLoadHandle,
258 FX_BOOL bStdCS = FALSE, 255 bool bStdCS = false,
259 uint32_t GroupFamily = 0, 256 uint32_t GroupFamily = 0,
260 FX_BOOL bLoadMask = FALSE, 257 bool bLoadMask = false,
261 CPDF_RenderStatus* pRenderStatus = nullptr, 258 CPDF_RenderStatus* pRenderStatus = nullptr,
262 int32_t nDownsampleWidth = 0, 259 int32_t nDownsampleWidth = 0,
263 int32_t nDownsampleHeight = 0); 260 int32_t nDownsampleHeight = 0);
264 FX_BOOL Continue(CPDF_ImageLoaderHandle* LoadHandle, IFX_Pause* pPause); 261 bool Continue(CPDF_ImageLoaderHandle* LoadHandle, IFX_Pause* pPause);
265 262
266 CFX_DIBSource* m_pBitmap; 263 CFX_DIBSource* m_pBitmap;
267 CFX_DIBSource* m_pMask; 264 CFX_DIBSource* m_pMask;
268 uint32_t m_MatteColor; 265 uint32_t m_MatteColor;
269 FX_BOOL m_bCached; 266 bool m_bCached;
270 267
271 protected: 268 protected:
272 int32_t m_nDownsampleWidth; 269 int32_t m_nDownsampleWidth;
273 int32_t m_nDownsampleHeight; 270 int32_t m_nDownsampleHeight;
274 }; 271 };
275 272
276 class CPDF_ImageLoaderHandle { 273 class CPDF_ImageLoaderHandle {
277 public: 274 public:
278 CPDF_ImageLoaderHandle(); 275 CPDF_ImageLoaderHandle();
279 ~CPDF_ImageLoaderHandle(); 276 ~CPDF_ImageLoaderHandle();
280 277
281 FX_BOOL Start(CPDF_ImageLoader* pImageLoader, 278 bool Start(CPDF_ImageLoader* pImageLoader,
282 const CPDF_ImageObject* pImage, 279 const CPDF_ImageObject* pImage,
283 CPDF_PageRenderCache* pCache, 280 CPDF_PageRenderCache* pCache,
284 FX_BOOL bStdCS = FALSE, 281 bool bStdCS = false,
285 uint32_t GroupFamily = 0, 282 uint32_t GroupFamily = 0,
286 FX_BOOL bLoadMask = FALSE, 283 bool bLoadMask = false,
287 CPDF_RenderStatus* pRenderStatus = nullptr, 284 CPDF_RenderStatus* pRenderStatus = nullptr,
288 int32_t nDownsampleWidth = 0, 285 int32_t nDownsampleWidth = 0,
289 int32_t nDownsampleHeight = 0); 286 int32_t nDownsampleHeight = 0);
290 FX_BOOL Continue(IFX_Pause* pPause); 287 bool Continue(IFX_Pause* pPause);
291 288
292 protected: 289 protected:
293 void HandleFailure(); 290 void HandleFailure();
294 291
295 CPDF_ImageLoader* m_pImageLoader; 292 CPDF_ImageLoader* m_pImageLoader;
296 CPDF_PageRenderCache* m_pCache; 293 CPDF_PageRenderCache* m_pCache;
297 CPDF_ImageObject* m_pImage; 294 CPDF_ImageObject* m_pImage;
298 int32_t m_nDownsampleWidth; 295 int32_t m_nDownsampleWidth;
299 int32_t m_nDownsampleHeight; 296 int32_t m_nDownsampleHeight;
300 }; 297 };
301 298
302 class CPDF_ImageRenderer { 299 class CPDF_ImageRenderer {
303 public: 300 public:
304 CPDF_ImageRenderer(); 301 CPDF_ImageRenderer();
305 ~CPDF_ImageRenderer(); 302 ~CPDF_ImageRenderer();
306 303
307 FX_BOOL Start(CPDF_RenderStatus* pStatus, 304 bool Start(CPDF_RenderStatus* pStatus,
308 CPDF_PageObject* pObj, 305 CPDF_PageObject* pObj,
309 const CFX_Matrix* pObj2Device, 306 const CFX_Matrix* pObj2Device,
310 FX_BOOL bStdCS, 307 bool bStdCS,
311 int blendType = FXDIB_BLEND_NORMAL); 308 int blendType = FXDIB_BLEND_NORMAL);
312 FX_BOOL Continue(IFX_Pause* pPause); 309 bool Continue(IFX_Pause* pPause);
313 310
314 FX_BOOL Start(CPDF_RenderStatus* pStatus, 311 bool Start(CPDF_RenderStatus* pStatus,
315 const CFX_DIBSource* pDIBSource, 312 const CFX_DIBSource* pDIBSource,
316 FX_ARGB bitmap_argb, 313 FX_ARGB bitmap_argb,
317 int bitmap_alpha, 314 int bitmap_alpha,
318 const CFX_Matrix* pImage2Device, 315 const CFX_Matrix* pImage2Device,
319 uint32_t flags, 316 uint32_t flags,
320 FX_BOOL bStdCS, 317 bool bStdCS,
321 int blendType = FXDIB_BLEND_NORMAL); 318 int blendType = FXDIB_BLEND_NORMAL);
322 319
323 FX_BOOL m_Result; 320 bool m_Result;
324 321
325 protected: 322 protected:
326 FX_BOOL StartBitmapAlpha(); 323 bool StartBitmapAlpha();
327 FX_BOOL StartDIBSource(); 324 bool StartDIBSource();
328 FX_BOOL StartRenderDIBSource(); 325 bool StartRenderDIBSource();
329 FX_BOOL StartLoadDIBSource(); 326 bool StartLoadDIBSource();
330 FX_BOOL DrawMaskedImage(); 327 bool DrawMaskedImage();
331 FX_BOOL DrawPatternImage(const CFX_Matrix* pObj2Device); 328 bool DrawPatternImage(const CFX_Matrix* pObj2Device);
332 329
333 CPDF_RenderStatus* m_pRenderStatus; 330 CPDF_RenderStatus* m_pRenderStatus;
334 CPDF_ImageObject* m_pImageObject; 331 CPDF_ImageObject* m_pImageObject;
335 int m_Status; 332 int m_Status;
336 const CFX_Matrix* m_pObj2Device; 333 const CFX_Matrix* m_pObj2Device;
337 CFX_Matrix m_ImageMatrix; 334 CFX_Matrix m_ImageMatrix;
338 CPDF_ImageLoader m_Loader; 335 CPDF_ImageLoader m_Loader;
339 const CFX_DIBSource* m_pDIBSource; 336 const CFX_DIBSource* m_pDIBSource;
340 std::unique_ptr<CFX_DIBitmap> m_pClone; 337 std::unique_ptr<CFX_DIBitmap> m_pClone;
341 int m_BitmapAlpha; 338 int m_BitmapAlpha;
342 FX_BOOL m_bPatternColor; 339 bool m_bPatternColor;
343 CPDF_Pattern* m_pPattern; 340 CPDF_Pattern* m_pPattern;
344 FX_ARGB m_FillArgb; 341 FX_ARGB m_FillArgb;
345 uint32_t m_Flags; 342 uint32_t m_Flags;
346 std::unique_ptr<CFX_ImageTransformer> m_pTransformer; 343 std::unique_ptr<CFX_ImageTransformer> m_pTransformer;
347 void* m_DeviceHandle; 344 void* m_DeviceHandle;
348 std::unique_ptr<CPDF_ImageLoaderHandle> m_LoadHandle; 345 std::unique_ptr<CPDF_ImageLoaderHandle> m_LoadHandle;
349 FX_BOOL m_bStdCS; 346 bool m_bStdCS;
350 int m_BlendType; 347 int m_BlendType;
351 }; 348 };
352 349
353 class CPDF_ScaledRenderBuffer { 350 class CPDF_ScaledRenderBuffer {
354 public: 351 public:
355 CPDF_ScaledRenderBuffer(); 352 CPDF_ScaledRenderBuffer();
356 ~CPDF_ScaledRenderBuffer(); 353 ~CPDF_ScaledRenderBuffer();
357 354
358 FX_BOOL Initialize(CPDF_RenderContext* pContext, 355 bool Initialize(CPDF_RenderContext* pContext,
359 CFX_RenderDevice* pDevice, 356 CFX_RenderDevice* pDevice,
360 const FX_RECT& pRect, 357 const FX_RECT& pRect,
361 const CPDF_PageObject* pObj, 358 const CPDF_PageObject* pObj,
362 const CPDF_RenderOptions* pOptions = nullptr, 359 const CPDF_RenderOptions* pOptions = nullptr,
363 int max_dpi = 0); 360 int max_dpi = 0);
364 CFX_RenderDevice* GetDevice() { 361 CFX_RenderDevice* GetDevice() {
365 return m_pBitmapDevice ? m_pBitmapDevice.get() : m_pDevice; 362 return m_pBitmapDevice ? m_pBitmapDevice.get() : m_pDevice;
366 } 363 }
367 CFX_Matrix* GetMatrix() { return &m_Matrix; } 364 CFX_Matrix* GetMatrix() { return &m_Matrix; }
368 void OutputToDevice(); 365 void OutputToDevice();
369 366
370 private: 367 private:
371 CFX_RenderDevice* m_pDevice; 368 CFX_RenderDevice* m_pDevice;
372 CPDF_RenderContext* m_pContext; 369 CPDF_RenderContext* m_pContext;
373 FX_RECT m_Rect; 370 FX_RECT m_Rect;
374 const CPDF_PageObject* m_pObject; 371 const CPDF_PageObject* m_pObject;
375 std::unique_ptr<CFX_FxgeDevice> m_pBitmapDevice; 372 std::unique_ptr<CFX_FxgeDevice> m_pBitmapDevice;
376 CFX_Matrix m_Matrix; 373 CFX_Matrix m_Matrix;
377 }; 374 };
378 375
379 class CPDF_DeviceBuffer { 376 class CPDF_DeviceBuffer {
380 public: 377 public:
381 CPDF_DeviceBuffer(); 378 CPDF_DeviceBuffer();
382 ~CPDF_DeviceBuffer(); 379 ~CPDF_DeviceBuffer();
383 FX_BOOL Initialize(CPDF_RenderContext* pContext, 380 bool Initialize(CPDF_RenderContext* pContext,
384 CFX_RenderDevice* pDevice, 381 CFX_RenderDevice* pDevice,
385 FX_RECT* pRect, 382 FX_RECT* pRect,
386 const CPDF_PageObject* pObj, 383 const CPDF_PageObject* pObj,
387 int max_dpi = 0); 384 int max_dpi = 0);
388 void OutputToDevice(); 385 void OutputToDevice();
389 CFX_DIBitmap* GetBitmap() const { return m_pBitmap.get(); } 386 CFX_DIBitmap* GetBitmap() const { return m_pBitmap.get(); }
390 const CFX_Matrix* GetMatrix() const { return &m_Matrix; } 387 const CFX_Matrix* GetMatrix() const { return &m_Matrix; }
391 388
392 private: 389 private:
393 CFX_RenderDevice* m_pDevice; 390 CFX_RenderDevice* m_pDevice;
394 CPDF_RenderContext* m_pContext; 391 CPDF_RenderContext* m_pContext;
395 FX_RECT m_Rect; 392 FX_RECT m_Rect;
396 const CPDF_PageObject* m_pObject; 393 const CPDF_PageObject* m_pObject;
397 std::unique_ptr<CFX_DIBitmap> m_pBitmap; 394 std::unique_ptr<CFX_DIBitmap> m_pBitmap;
398 CFX_Matrix m_Matrix; 395 CFX_Matrix m_Matrix;
399 }; 396 };
400 397
401 class CPDF_ImageCacheEntry { 398 class CPDF_ImageCacheEntry {
402 public: 399 public:
403 CPDF_ImageCacheEntry(CPDF_Document* pDoc, CPDF_Stream* pStream); 400 CPDF_ImageCacheEntry(CPDF_Document* pDoc, CPDF_Stream* pStream);
404 ~CPDF_ImageCacheEntry(); 401 ~CPDF_ImageCacheEntry();
405 402
406 void Reset(const CFX_DIBitmap* pBitmap); 403 void Reset(const CFX_DIBitmap* pBitmap);
407 FX_BOOL GetCachedBitmap(CFX_DIBSource*& pBitmap, 404 bool GetCachedBitmap(CFX_DIBSource*& pBitmap,
408 CFX_DIBSource*& pMask, 405 CFX_DIBSource*& pMask,
409 uint32_t& MatteColor, 406 uint32_t& MatteColor,
410 CPDF_Dictionary* pPageResources, 407 CPDF_Dictionary* pPageResources,
411 FX_BOOL bStdCS = FALSE, 408 bool bStdCS = false,
412 uint32_t GroupFamily = 0, 409 uint32_t GroupFamily = 0,
413 FX_BOOL bLoadMask = FALSE, 410 bool bLoadMask = false,
414 CPDF_RenderStatus* pRenderStatus = nullptr, 411 CPDF_RenderStatus* pRenderStatus = nullptr,
415 int32_t downsampleWidth = 0, 412 int32_t downsampleWidth = 0,
416 int32_t downsampleHeight = 0); 413 int32_t downsampleHeight = 0);
417 uint32_t EstimateSize() const { return m_dwCacheSize; } 414 uint32_t EstimateSize() const { return m_dwCacheSize; }
418 uint32_t GetTimeCount() const { return m_dwTimeCount; } 415 uint32_t GetTimeCount() const { return m_dwTimeCount; }
419 CPDF_Stream* GetStream() const { return m_pStream; } 416 CPDF_Stream* GetStream() const { return m_pStream; }
420 void SetTimeCount(uint32_t dwTimeCount) { m_dwTimeCount = dwTimeCount; } 417 void SetTimeCount(uint32_t dwTimeCount) { m_dwTimeCount = dwTimeCount; }
421 int m_dwTimeCount; 418 int m_dwTimeCount;
422 419
423 public: 420 public:
424 int StartGetCachedBitmap(CPDF_Dictionary* pFormResources, 421 int StartGetCachedBitmap(CPDF_Dictionary* pFormResources,
425 CPDF_Dictionary* pPageResources, 422 CPDF_Dictionary* pPageResources,
426 FX_BOOL bStdCS = FALSE, 423 bool bStdCS = false,
427 uint32_t GroupFamily = 0, 424 uint32_t GroupFamily = 0,
428 FX_BOOL bLoadMask = FALSE, 425 bool bLoadMask = false,
429 CPDF_RenderStatus* pRenderStatus = nullptr, 426 CPDF_RenderStatus* pRenderStatus = nullptr,
430 int32_t downsampleWidth = 0, 427 int32_t downsampleWidth = 0,
431 int32_t downsampleHeight = 0); 428 int32_t downsampleHeight = 0);
432 int Continue(IFX_Pause* pPause); 429 int Continue(IFX_Pause* pPause);
433 CFX_DIBSource* DetachBitmap(); 430 CFX_DIBSource* DetachBitmap();
434 CFX_DIBSource* DetachMask(); 431 CFX_DIBSource* DetachMask();
435 CFX_DIBSource* m_pCurBitmap; 432 CFX_DIBSource* m_pCurBitmap;
436 CFX_DIBSource* m_pCurMask; 433 CFX_DIBSource* m_pCurMask;
437 uint32_t m_MatteColor; 434 uint32_t m_MatteColor;
438 CPDF_RenderStatus* m_pRenderStatus; 435 CPDF_RenderStatus* m_pRenderStatus;
(...skipping 13 matching lines...) Expand all
452 FX_FLOAT m_DecodeStep; 449 FX_FLOAT m_DecodeStep;
453 int m_ColorKeyMin; 450 int m_ColorKeyMin;
454 int m_ColorKeyMax; 451 int m_ColorKeyMax;
455 } DIB_COMP_DATA; 452 } DIB_COMP_DATA;
456 453
457 class CPDF_DIBSource : public CFX_DIBSource { 454 class CPDF_DIBSource : public CFX_DIBSource {
458 public: 455 public:
459 CPDF_DIBSource(); 456 CPDF_DIBSource();
460 ~CPDF_DIBSource() override; 457 ~CPDF_DIBSource() override;
461 458
462 FX_BOOL Load(CPDF_Document* pDoc, 459 bool Load(CPDF_Document* pDoc,
463 const CPDF_Stream* pStream, 460 const CPDF_Stream* pStream,
464 CPDF_DIBSource** ppMask, 461 CPDF_DIBSource** ppMask,
465 uint32_t* pMatteColor, 462 uint32_t* pMatteColor,
466 CPDF_Dictionary* pFormResources, 463 CPDF_Dictionary* pFormResources,
467 CPDF_Dictionary* pPageResources, 464 CPDF_Dictionary* pPageResources,
468 FX_BOOL bStdCS = FALSE, 465 bool bStdCS = false,
469 uint32_t GroupFamily = 0, 466 uint32_t GroupFamily = 0,
470 FX_BOOL bLoadMask = FALSE); 467 bool bLoadMask = false);
471 468
472 // CFX_DIBSource 469 // CFX_DIBSource
473 FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) const override; 470 bool SkipToScanline(int line, IFX_Pause* pPause) const override;
474 uint8_t* GetBuffer() const override; 471 uint8_t* GetBuffer() const override;
475 const uint8_t* GetScanline(int line) const override; 472 const uint8_t* GetScanline(int line) const override;
476 void DownSampleScanline(int line, 473 void DownSampleScanline(int line,
477 uint8_t* dest_scan, 474 uint8_t* dest_scan,
478 int dest_bpp, 475 int dest_bpp,
479 int dest_width, 476 int dest_width,
480 FX_BOOL bFlipX, 477 bool bFlipX,
481 int clip_left, 478 int clip_left,
482 int clip_width) const override; 479 int clip_width) const override;
483 480
484 CFX_DIBitmap* GetBitmap() const; 481 CFX_DIBitmap* GetBitmap() const;
485 void ReleaseBitmap(CFX_DIBitmap* pBitmap) const; 482 void ReleaseBitmap(CFX_DIBitmap* pBitmap) const;
486 uint32_t GetMatteColor() const { return m_MatteColor; } 483 uint32_t GetMatteColor() const { return m_MatteColor; }
487 484
488 int StartLoadDIBSource(CPDF_Document* pDoc, 485 int StartLoadDIBSource(CPDF_Document* pDoc,
489 const CPDF_Stream* pStream, 486 const CPDF_Stream* pStream,
490 FX_BOOL bHasMask, 487 bool bHasMask,
491 CPDF_Dictionary* pFormResources, 488 CPDF_Dictionary* pFormResources,
492 CPDF_Dictionary* pPageResources, 489 CPDF_Dictionary* pPageResources,
493 FX_BOOL bStdCS = FALSE, 490 bool bStdCS = false,
494 uint32_t GroupFamily = 0, 491 uint32_t GroupFamily = 0,
495 FX_BOOL bLoadMask = FALSE); 492 bool bLoadMask = false);
496 int ContinueLoadDIBSource(IFX_Pause* pPause); 493 int ContinueLoadDIBSource(IFX_Pause* pPause);
497 int StratLoadMask(); 494 int StratLoadMask();
498 int StartLoadMaskDIB(); 495 int StartLoadMaskDIB();
499 int ContinueLoadMaskDIB(IFX_Pause* pPause); 496 int ContinueLoadMaskDIB(IFX_Pause* pPause);
500 int ContinueToLoadMask(); 497 int ContinueToLoadMask();
501 CPDF_DIBSource* DetachMask(); 498 CPDF_DIBSource* DetachMask();
502 499
503 private: 500 private:
504 bool LoadColorInfo(const CPDF_Dictionary* pFormResources, 501 bool LoadColorInfo(const CPDF_Dictionary* pFormResources,
505 const CPDF_Dictionary* pPageResources); 502 const CPDF_Dictionary* pPageResources);
506 DIB_COMP_DATA* GetDecodeAndMaskArray(FX_BOOL& bDefaultDecode, 503 DIB_COMP_DATA* GetDecodeAndMaskArray(bool& bDefaultDecode, bool& bColorKey);
507 FX_BOOL& bColorKey);
508 CPDF_DIBSource* LoadMask(uint32_t& MatteColor); 504 CPDF_DIBSource* LoadMask(uint32_t& MatteColor);
509 CPDF_DIBSource* LoadMaskDIB(CPDF_Stream* pMask); 505 CPDF_DIBSource* LoadMaskDIB(CPDF_Stream* pMask);
510 void LoadJpxBitmap(); 506 void LoadJpxBitmap();
511 void LoadPalette(); 507 void LoadPalette();
512 int CreateDecoder(); 508 int CreateDecoder();
513 void TranslateScanline24bpp(uint8_t* dest_scan, 509 void TranslateScanline24bpp(uint8_t* dest_scan,
514 const uint8_t* src_scan) const; 510 const uint8_t* src_scan) const;
515 void ValidateDictParam(); 511 void ValidateDictParam();
516 void DownSampleScanline1Bit(int orig_Bpp, 512 void DownSampleScanline1Bit(int orig_Bpp,
517 int dest_Bpp, 513 int dest_Bpp,
518 uint32_t src_width, 514 uint32_t src_width,
519 const uint8_t* pSrcLine, 515 const uint8_t* pSrcLine,
520 uint8_t* dest_scan, 516 uint8_t* dest_scan,
521 int dest_width, 517 int dest_width,
522 FX_BOOL bFlipX, 518 bool bFlipX,
523 int clip_left, 519 int clip_left,
524 int clip_width) const; 520 int clip_width) const;
525 void DownSampleScanline8Bit(int orig_Bpp, 521 void DownSampleScanline8Bit(int orig_Bpp,
526 int dest_Bpp, 522 int dest_Bpp,
527 uint32_t src_width, 523 uint32_t src_width,
528 const uint8_t* pSrcLine, 524 const uint8_t* pSrcLine,
529 uint8_t* dest_scan, 525 uint8_t* dest_scan,
530 int dest_width, 526 int dest_width,
531 FX_BOOL bFlipX, 527 bool bFlipX,
532 int clip_left, 528 int clip_left,
533 int clip_width) const; 529 int clip_width) const;
534 void DownSampleScanline32Bit(int orig_Bpp, 530 void DownSampleScanline32Bit(int orig_Bpp,
535 int dest_Bpp, 531 int dest_Bpp,
536 uint32_t src_width, 532 uint32_t src_width,
537 const uint8_t* pSrcLine, 533 const uint8_t* pSrcLine,
538 uint8_t* dest_scan, 534 uint8_t* dest_scan,
539 int dest_width, 535 int dest_width,
540 FX_BOOL bFlipX, 536 bool bFlipX,
541 int clip_left, 537 int clip_left,
542 int clip_width) const; 538 int clip_width) const;
543 FX_BOOL TransMask() const; 539 bool TransMask() const;
544 540
545 CPDF_Document* m_pDocument; 541 CPDF_Document* m_pDocument;
546 const CPDF_Stream* m_pStream; 542 const CPDF_Stream* m_pStream;
547 std::unique_ptr<CPDF_StreamAcc> m_pStreamAcc; 543 std::unique_ptr<CPDF_StreamAcc> m_pStreamAcc;
548 const CPDF_Dictionary* m_pDict; 544 const CPDF_Dictionary* m_pDict;
549 CPDF_ColorSpace* m_pColorSpace; 545 CPDF_ColorSpace* m_pColorSpace;
550 uint32_t m_Family; 546 uint32_t m_Family;
551 uint32_t m_bpc; 547 uint32_t m_bpc;
552 uint32_t m_bpc_orig; 548 uint32_t m_bpc_orig;
553 uint32_t m_nComponents; 549 uint32_t m_nComponents;
554 uint32_t m_GroupFamily; 550 uint32_t m_GroupFamily;
555 uint32_t m_MatteColor; 551 uint32_t m_MatteColor;
556 FX_BOOL m_bLoadMask; 552 bool m_bLoadMask;
557 FX_BOOL m_bDefaultDecode; 553 bool m_bDefaultDecode;
558 FX_BOOL m_bImageMask; 554 bool m_bImageMask;
559 FX_BOOL m_bDoBpcCheck; 555 bool m_bDoBpcCheck;
560 FX_BOOL m_bColorKey; 556 bool m_bColorKey;
561 FX_BOOL m_bHasMask; 557 bool m_bHasMask;
562 FX_BOOL m_bStdCS; 558 bool m_bStdCS;
563 DIB_COMP_DATA* m_pCompData; 559 DIB_COMP_DATA* m_pCompData;
564 uint8_t* m_pLineBuf; 560 uint8_t* m_pLineBuf;
565 uint8_t* m_pMaskedLine; 561 uint8_t* m_pMaskedLine;
566 std::unique_ptr<CFX_DIBitmap> m_pCachedBitmap; 562 std::unique_ptr<CFX_DIBitmap> m_pCachedBitmap;
567 std::unique_ptr<CCodec_ScanlineDecoder> m_pDecoder; 563 std::unique_ptr<CCodec_ScanlineDecoder> m_pDecoder;
568 CPDF_DIBSource* m_pMask; 564 CPDF_DIBSource* m_pMask;
569 std::unique_ptr<CPDF_StreamAcc> m_pGlobalStream; 565 std::unique_ptr<CPDF_StreamAcc> m_pGlobalStream;
570 std::unique_ptr<CCodec_Jbig2Context> m_pJbig2Context; 566 std::unique_ptr<CCodec_Jbig2Context> m_pJbig2Context;
571 CPDF_Stream* m_pMaskStream; 567 CPDF_Stream* m_pMaskStream;
572 int m_Status; 568 int m_Status;
(...skipping 14 matching lines...) Expand all
587 const uint8_t* src_buf, 583 const uint8_t* src_buf,
588 int pixels, 584 int pixels,
589 int Bpp) const override; 585 int Bpp) const override;
590 586
591 const uint8_t* m_RampR; 587 const uint8_t* m_RampR;
592 const uint8_t* m_RampG; 588 const uint8_t* m_RampG;
593 const uint8_t* m_RampB; 589 const uint8_t* m_RampB;
594 }; 590 };
595 591
596 #endif // CORE_FPDFAPI_RENDER_RENDER_INT_H_ 592 #endif // CORE_FPDFAPI_RENDER_RENDER_INT_H_
OLDNEW
« no previous file with comments | « core/fpdfapi/render/fpdf_render_text.cpp ('k') | core/fpdfdoc/cpdf_aaction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698