OLD | NEW |
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_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ | 7 #ifndef CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ |
8 #define CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ | 8 #define CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 23 matching lines...) Expand all Loading... |
34 | 34 |
35 int m_TopBlue[TYPE3_MAX_BLUES], m_BottomBlue[TYPE3_MAX_BLUES]; | 35 int m_TopBlue[TYPE3_MAX_BLUES], m_BottomBlue[TYPE3_MAX_BLUES]; |
36 int m_TopBlueCount, m_BottomBlueCount; | 36 int m_TopBlueCount, m_BottomBlueCount; |
37 }; | 37 }; |
38 class CPDF_Type3Cache { | 38 class CPDF_Type3Cache { |
39 public: | 39 public: |
40 explicit CPDF_Type3Cache(CPDF_Type3Font* pFont) : m_pFont(pFont) {} | 40 explicit CPDF_Type3Cache(CPDF_Type3Font* pFont) : m_pFont(pFont) {} |
41 ~CPDF_Type3Cache(); | 41 ~CPDF_Type3Cache(); |
42 | 42 |
43 CFX_GlyphBitmap* LoadGlyph(FX_DWORD charcode, | 43 CFX_GlyphBitmap* LoadGlyph(FX_DWORD charcode, |
44 const CFX_AffineMatrix* pMatrix, | 44 const CFX_Matrix* pMatrix, |
45 FX_FLOAT retinaScaleX = 1.0f, | 45 FX_FLOAT retinaScaleX = 1.0f, |
46 FX_FLOAT retinaScaleY = 1.0f); | 46 FX_FLOAT retinaScaleY = 1.0f); |
47 | 47 |
48 protected: | 48 protected: |
49 CFX_GlyphBitmap* RenderGlyph(CPDF_Type3Glyphs* pSize, | 49 CFX_GlyphBitmap* RenderGlyph(CPDF_Type3Glyphs* pSize, |
50 FX_DWORD charcode, | 50 FX_DWORD charcode, |
51 const CFX_AffineMatrix* pMatrix, | 51 const CFX_Matrix* pMatrix, |
52 FX_FLOAT retinaScaleX = 1.0f, | 52 FX_FLOAT retinaScaleX = 1.0f, |
53 FX_FLOAT retinaScaleY = 1.0f); | 53 FX_FLOAT retinaScaleY = 1.0f); |
54 CPDF_Type3Font* const m_pFont; | 54 CPDF_Type3Font* const m_pFont; |
55 std::map<CFX_ByteString, CPDF_Type3Glyphs*> m_SizeMap; | 55 std::map<CFX_ByteString, CPDF_Type3Glyphs*> m_SizeMap; |
56 }; | 56 }; |
57 | 57 |
58 class CPDF_TransferFunc { | 58 class CPDF_TransferFunc { |
59 public: | 59 public: |
60 explicit CPDF_TransferFunc(CPDF_Document* pDoc); | 60 explicit CPDF_TransferFunc(CPDF_Document* pDoc); |
61 | 61 |
(...skipping 24 matching lines...) Expand all Loading... |
86 std::map<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc>*>; | 86 std::map<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc>*>; |
87 | 87 |
88 CPDF_Document* m_pPDFDoc; | 88 CPDF_Document* m_pPDFDoc; |
89 CFX_FontCache* m_pFontCache; | 89 CFX_FontCache* m_pFontCache; |
90 CPDF_Type3CacheMap m_Type3FaceMap; | 90 CPDF_Type3CacheMap m_Type3FaceMap; |
91 CPDF_TransferFuncMap m_TransferFuncMap; | 91 CPDF_TransferFuncMap m_TransferFuncMap; |
92 }; | 92 }; |
93 struct _PDF_RenderItem { | 93 struct _PDF_RenderItem { |
94 public: | 94 public: |
95 CPDF_PageObjects* m_pObjectList; | 95 CPDF_PageObjects* m_pObjectList; |
96 CFX_AffineMatrix m_Matrix; | 96 CFX_Matrix m_Matrix; |
97 }; | 97 }; |
98 | 98 |
99 typedef CFX_ArrayTemplate<_PDF_RenderItem> CPDF_RenderLayer; | 99 typedef CFX_ArrayTemplate<_PDF_RenderItem> CPDF_RenderLayer; |
100 | 100 |
101 class IPDF_ObjectRenderer { | 101 class IPDF_ObjectRenderer { |
102 public: | 102 public: |
103 static IPDF_ObjectRenderer* Create(int type); | 103 static IPDF_ObjectRenderer* Create(int type); |
104 virtual ~IPDF_ObjectRenderer() {} | 104 virtual ~IPDF_ObjectRenderer() {} |
105 virtual FX_BOOL Start(CPDF_RenderStatus* pRenderStatus, | 105 virtual FX_BOOL Start(CPDF_RenderStatus* pRenderStatus, |
106 const CPDF_PageObject* pObj, | 106 const CPDF_PageObject* pObj, |
107 const CFX_AffineMatrix* pObj2Device, | 107 const CFX_Matrix* pObj2Device, |
108 FX_BOOL bStdCS, | 108 FX_BOOL bStdCS, |
109 int blendType = FXDIB_BLEND_NORMAL) = 0; | 109 int blendType = FXDIB_BLEND_NORMAL) = 0; |
110 virtual FX_BOOL Continue(IFX_Pause* pPause) = 0; | 110 virtual FX_BOOL Continue(IFX_Pause* pPause) = 0; |
111 FX_BOOL m_Result; | 111 FX_BOOL m_Result; |
112 }; | 112 }; |
113 | 113 |
114 class CPDF_RenderStatus { | 114 class CPDF_RenderStatus { |
115 public: | 115 public: |
116 CPDF_RenderStatus(); | 116 CPDF_RenderStatus(); |
117 ~CPDF_RenderStatus(); | 117 ~CPDF_RenderStatus(); |
118 FX_BOOL Initialize(class CPDF_RenderContext* pContext, | 118 FX_BOOL Initialize(class CPDF_RenderContext* pContext, |
119 CFX_RenderDevice* pDevice, | 119 CFX_RenderDevice* pDevice, |
120 const CFX_AffineMatrix* pDeviceMatrix, | 120 const CFX_Matrix* pDeviceMatrix, |
121 const CPDF_PageObject* pStopObj, | 121 const CPDF_PageObject* pStopObj, |
122 const CPDF_RenderStatus* pParentStatus, | 122 const CPDF_RenderStatus* pParentStatus, |
123 const CPDF_GraphicStates* pInitialStates, | 123 const CPDF_GraphicStates* pInitialStates, |
124 const CPDF_RenderOptions* pOptions, | 124 const CPDF_RenderOptions* pOptions, |
125 int transparency, | 125 int transparency, |
126 FX_BOOL bDropObjects, | 126 FX_BOOL bDropObjects, |
127 CPDF_Dictionary* pFormResource = NULL, | 127 CPDF_Dictionary* pFormResource = NULL, |
128 FX_BOOL bStdCS = FALSE, | 128 FX_BOOL bStdCS = FALSE, |
129 CPDF_Type3Char* pType3Char = NULL, | 129 CPDF_Type3Char* pType3Char = NULL, |
130 FX_ARGB fill_color = 0, | 130 FX_ARGB fill_color = 0, |
131 FX_DWORD GroupFamily = 0, | 131 FX_DWORD GroupFamily = 0, |
132 FX_BOOL bLoadMask = FALSE); | 132 FX_BOOL bLoadMask = FALSE); |
133 void RenderObjectList(const CPDF_PageObjects* pObjs, | 133 void RenderObjectList(const CPDF_PageObjects* pObjs, |
134 const CFX_AffineMatrix* pObj2Device); | 134 const CFX_Matrix* pObj2Device); |
135 void RenderSingleObject(const CPDF_PageObject* pObj, | 135 void RenderSingleObject(const CPDF_PageObject* pObj, |
136 const CFX_AffineMatrix* pObj2Device); | 136 const CFX_Matrix* pObj2Device); |
137 FX_BOOL ContinueSingleObject(const CPDF_PageObject* pObj, | 137 FX_BOOL ContinueSingleObject(const CPDF_PageObject* pObj, |
138 const CFX_AffineMatrix* pObj2Device, | 138 const CFX_Matrix* pObj2Device, |
139 IFX_Pause* pPause); | 139 IFX_Pause* pPause); |
140 CPDF_RenderContext* GetContext() { return m_pContext; } | 140 CPDF_RenderContext* GetContext() { return m_pContext; } |
141 | 141 |
142 CPDF_RenderOptions m_Options; | 142 CPDF_RenderOptions m_Options; |
143 CPDF_Dictionary* m_pFormResource; | 143 CPDF_Dictionary* m_pFormResource; |
144 CPDF_Dictionary* m_pPageResource; | 144 CPDF_Dictionary* m_pPageResource; |
145 CFX_ArrayTemplate<CPDF_Type3Font*> m_Type3FontCache; | 145 CFX_ArrayTemplate<CPDF_Type3Font*> m_Type3FontCache; |
146 | 146 |
147 protected: | 147 protected: |
148 friend class CPDF_ImageRenderer; | 148 friend class CPDF_ImageRenderer; |
149 friend class CPDF_RenderContext; | 149 friend class CPDF_RenderContext; |
150 void ProcessClipPath(CPDF_ClipPath ClipPath, | 150 void ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device); |
151 const CFX_AffineMatrix* pObj2Device); | 151 void DrawClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device); |
152 void DrawClipPath(CPDF_ClipPath ClipPath, | |
153 const CFX_AffineMatrix* pObj2Device); | |
154 FX_BOOL ProcessTransparency(const CPDF_PageObject* PageObj, | 152 FX_BOOL ProcessTransparency(const CPDF_PageObject* PageObj, |
155 const CFX_AffineMatrix* pObj2Device); | 153 const CFX_Matrix* pObj2Device); |
156 void ProcessObjectNoClip(const CPDF_PageObject* PageObj, | 154 void ProcessObjectNoClip(const CPDF_PageObject* PageObj, |
157 const CFX_AffineMatrix* pObj2Device); | 155 const CFX_Matrix* pObj2Device); |
158 void DrawObjWithBackground(const CPDF_PageObject* pObj, | 156 void DrawObjWithBackground(const CPDF_PageObject* pObj, |
159 const CFX_AffineMatrix* pObj2Device); | 157 const CFX_Matrix* pObj2Device); |
160 FX_BOOL DrawObjWithBlend(const CPDF_PageObject* pObj, | 158 FX_BOOL DrawObjWithBlend(const CPDF_PageObject* pObj, |
161 const CFX_AffineMatrix* pObj2Device); | 159 const CFX_Matrix* pObj2Device); |
162 FX_BOOL ProcessPath(CPDF_PathObject* pPathObj, | 160 FX_BOOL ProcessPath(CPDF_PathObject* pPathObj, const CFX_Matrix* pObj2Device); |
163 const CFX_AffineMatrix* pObj2Device); | |
164 void ProcessPathPattern(CPDF_PathObject* pPathObj, | 161 void ProcessPathPattern(CPDF_PathObject* pPathObj, |
165 const CFX_AffineMatrix* pObj2Device, | 162 const CFX_Matrix* pObj2Device, |
166 int& filltype, | 163 int& filltype, |
167 FX_BOOL& bStroke); | 164 FX_BOOL& bStroke); |
168 void DrawPathWithPattern(CPDF_PathObject* pPathObj, | 165 void DrawPathWithPattern(CPDF_PathObject* pPathObj, |
169 const CFX_AffineMatrix* pObj2Device, | 166 const CFX_Matrix* pObj2Device, |
170 CPDF_Color* pColor, | 167 CPDF_Color* pColor, |
171 FX_BOOL bStroke); | 168 FX_BOOL bStroke); |
172 void DrawTilingPattern(CPDF_TilingPattern* pPattern, | 169 void DrawTilingPattern(CPDF_TilingPattern* pPattern, |
173 CPDF_PageObject* pPageObj, | 170 CPDF_PageObject* pPageObj, |
174 const CFX_AffineMatrix* pObj2Device, | 171 const CFX_Matrix* pObj2Device, |
175 FX_BOOL bStroke); | 172 FX_BOOL bStroke); |
176 void DrawShadingPattern(CPDF_ShadingPattern* pPattern, | 173 void DrawShadingPattern(CPDF_ShadingPattern* pPattern, |
177 CPDF_PageObject* pPageObj, | 174 CPDF_PageObject* pPageObj, |
178 const CFX_AffineMatrix* pObj2Device, | 175 const CFX_Matrix* pObj2Device, |
179 FX_BOOL bStroke); | 176 FX_BOOL bStroke); |
180 FX_BOOL SelectClipPath(CPDF_PathObject* pPathObj, | 177 FX_BOOL SelectClipPath(CPDF_PathObject* pPathObj, |
181 const CFX_AffineMatrix* pObj2Device, | 178 const CFX_Matrix* pObj2Device, |
182 FX_BOOL bStroke); | 179 FX_BOOL bStroke); |
183 FX_BOOL ProcessImage(CPDF_ImageObject* pImageObj, | 180 FX_BOOL ProcessImage(CPDF_ImageObject* pImageObj, |
184 const CFX_AffineMatrix* pObj2Device); | 181 const CFX_Matrix* pObj2Device); |
185 FX_BOOL OutputBitmapAlpha(CPDF_ImageObject* pImageObj, | 182 FX_BOOL OutputBitmapAlpha(CPDF_ImageObject* pImageObj, |
186 const CFX_AffineMatrix* pImage2Device); | 183 const CFX_Matrix* pImage2Device); |
187 FX_BOOL OutputImage(CPDF_ImageObject* pImageObj, | 184 FX_BOOL OutputImage(CPDF_ImageObject* pImageObj, |
188 const CFX_AffineMatrix* pImage2Device); | 185 const CFX_Matrix* pImage2Device); |
189 FX_BOOL OutputDIBSource(const CFX_DIBSource* pOutputBitmap, | 186 FX_BOOL OutputDIBSource(const CFX_DIBSource* pOutputBitmap, |
190 FX_ARGB fill_argb, | 187 FX_ARGB fill_argb, |
191 int bitmap_alpha, | 188 int bitmap_alpha, |
192 const CFX_AffineMatrix* pImage2Device, | 189 const CFX_Matrix* pImage2Device, |
193 CPDF_ImageCache* pImageCache, | 190 CPDF_ImageCache* pImageCache, |
194 FX_DWORD flags); | 191 FX_DWORD flags); |
195 void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, | 192 void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, |
196 int left, | 193 int left, |
197 int top, | 194 int top, |
198 FX_ARGB mask_argb, | 195 FX_ARGB mask_argb, |
199 int bitmap_alpha, | 196 int bitmap_alpha, |
200 int blend_mode, | 197 int blend_mode, |
201 int bIsolated); | 198 int bIsolated); |
202 FX_BOOL ProcessShading(CPDF_ShadingObject* pShadingObj, | 199 FX_BOOL ProcessShading(CPDF_ShadingObject* pShadingObj, |
203 const CFX_AffineMatrix* pObj2Device); | 200 const CFX_Matrix* pObj2Device); |
204 void DrawShading(CPDF_ShadingPattern* pPattern, | 201 void DrawShading(CPDF_ShadingPattern* pPattern, |
205 CFX_AffineMatrix* pMatrix, | 202 CFX_Matrix* pMatrix, |
206 FX_RECT& clip_rect, | 203 FX_RECT& clip_rect, |
207 int alpha, | 204 int alpha, |
208 FX_BOOL bAlphaMode); | 205 FX_BOOL bAlphaMode); |
209 FX_BOOL ProcessType3Text(const CPDF_TextObject* textobj, | 206 FX_BOOL ProcessType3Text(const CPDF_TextObject* textobj, |
210 const CFX_AffineMatrix* pObj2Device); | 207 const CFX_Matrix* pObj2Device); |
211 FX_BOOL ProcessText(const CPDF_TextObject* textobj, | 208 FX_BOOL ProcessText(const CPDF_TextObject* textobj, |
212 const CFX_AffineMatrix* pObj2Device, | 209 const CFX_Matrix* pObj2Device, |
213 CFX_PathData* pClippingPath); | 210 CFX_PathData* pClippingPath); |
214 void DrawTextPathWithPattern(const CPDF_TextObject* textobj, | 211 void DrawTextPathWithPattern(const CPDF_TextObject* textobj, |
215 const CFX_AffineMatrix* pObj2Device, | 212 const CFX_Matrix* pObj2Device, |
216 CPDF_Font* pFont, | 213 CPDF_Font* pFont, |
217 FX_FLOAT font_size, | 214 FX_FLOAT font_size, |
218 const CFX_AffineMatrix* pTextMatrix, | 215 const CFX_Matrix* pTextMatrix, |
219 FX_BOOL bFill, | 216 FX_BOOL bFill, |
220 FX_BOOL bStroke); | 217 FX_BOOL bStroke); |
221 FX_BOOL ProcessForm(CPDF_FormObject* pFormObj, | 218 FX_BOOL ProcessForm(CPDF_FormObject* pFormObj, const CFX_Matrix* pObj2Device); |
222 const CFX_AffineMatrix* pObj2Device); | |
223 CFX_DIBitmap* GetBackdrop(const CPDF_PageObject* pObj, | 219 CFX_DIBitmap* GetBackdrop(const CPDF_PageObject* pObj, |
224 const FX_RECT& rect, | 220 const FX_RECT& rect, |
225 int& left, | 221 int& left, |
226 int& top, | 222 int& top, |
227 FX_BOOL bBackAlphaRequired); | 223 FX_BOOL bBackAlphaRequired); |
228 CFX_DIBitmap* LoadSMask(CPDF_Dictionary* pSMaskDict, | 224 CFX_DIBitmap* LoadSMask(CPDF_Dictionary* pSMaskDict, |
229 FX_RECT* pClipRect, | 225 FX_RECT* pClipRect, |
230 const CFX_AffineMatrix* pMatrix); | 226 const CFX_Matrix* pMatrix); |
231 void Init(CPDF_RenderContext* pParent); | 227 void Init(CPDF_RenderContext* pParent); |
232 static class CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); | 228 static class CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); |
233 static CPDF_GraphicStates* CloneObjStates(const CPDF_GraphicStates* pPathObj, | 229 static CPDF_GraphicStates* CloneObjStates(const CPDF_GraphicStates* pPathObj, |
234 FX_BOOL bStroke); | 230 FX_BOOL bStroke); |
235 CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObject) const; | 231 CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObject) const; |
236 FX_ARGB GetFillArgb(const CPDF_PageObject* pObj, | 232 FX_ARGB GetFillArgb(const CPDF_PageObject* pObj, |
237 FX_BOOL bType3 = FALSE) const; | 233 FX_BOOL bType3 = FALSE) const; |
238 FX_ARGB GetStrokeArgb(const CPDF_PageObject* pObj) const; | 234 FX_ARGB GetStrokeArgb(const CPDF_PageObject* pObj) const; |
239 CPDF_RenderContext* m_pContext; | 235 CPDF_RenderContext* m_pContext; |
240 FX_BOOL m_bStopped; | 236 FX_BOOL m_bStopped; |
241 void DitherObjectArea(const CPDF_PageObject* pObj, | 237 void DitherObjectArea(const CPDF_PageObject* pObj, |
242 const CFX_AffineMatrix* pObj2Device); | 238 const CFX_Matrix* pObj2Device); |
243 FX_BOOL GetObjectClippedRect(const CPDF_PageObject* pObj, | 239 FX_BOOL GetObjectClippedRect(const CPDF_PageObject* pObj, |
244 const CFX_AffineMatrix* pObj2Device, | 240 const CFX_Matrix* pObj2Device, |
245 FX_BOOL bLogical, | 241 FX_BOOL bLogical, |
246 FX_RECT& rect) const; | 242 FX_RECT& rect) const; |
247 void GetScaledMatrix(CFX_Matrix& matrix) const; | 243 void GetScaledMatrix(CFX_Matrix& matrix) const; |
248 | 244 |
249 protected: | 245 protected: |
250 static const int kRenderMaxRecursionDepth = 64; | 246 static const int kRenderMaxRecursionDepth = 64; |
251 static int s_CurrentRecursionDepth; | 247 static int s_CurrentRecursionDepth; |
252 | 248 |
253 CFX_RenderDevice* m_pDevice; | 249 CFX_RenderDevice* m_pDevice; |
254 CFX_AffineMatrix m_DeviceMatrix; | 250 CFX_Matrix m_DeviceMatrix; |
255 CPDF_ClipPath m_LastClipPath; | 251 CPDF_ClipPath m_LastClipPath; |
256 const CPDF_PageObject* m_pCurObj; | 252 const CPDF_PageObject* m_pCurObj; |
257 const CPDF_PageObject* m_pStopObj; | 253 const CPDF_PageObject* m_pStopObj; |
258 CPDF_GraphicStates m_InitialStates; | 254 CPDF_GraphicStates m_InitialStates; |
259 int m_HalftoneLimit; | 255 int m_HalftoneLimit; |
260 nonstd::unique_ptr<IPDF_ObjectRenderer> m_pObjectRenderer; | 256 nonstd::unique_ptr<IPDF_ObjectRenderer> m_pObjectRenderer; |
261 FX_BOOL m_bPrint; | 257 FX_BOOL m_bPrint; |
262 int m_Transparency; | 258 int m_Transparency; |
263 int m_DitherBits; | 259 int m_DitherBits; |
264 FX_BOOL m_bDropObjects; | 260 FX_BOOL m_bDropObjects; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 class CFX_ImageTransformer; | 329 class CFX_ImageTransformer; |
334 | 330 |
335 class CPDF_ImageRenderer : public IPDF_ObjectRenderer { | 331 class CPDF_ImageRenderer : public IPDF_ObjectRenderer { |
336 public: | 332 public: |
337 CPDF_ImageRenderer(); | 333 CPDF_ImageRenderer(); |
338 ~CPDF_ImageRenderer() override; | 334 ~CPDF_ImageRenderer() override; |
339 | 335 |
340 // IPDF_ObjectRenderer | 336 // IPDF_ObjectRenderer |
341 FX_BOOL Start(CPDF_RenderStatus* pStatus, | 337 FX_BOOL Start(CPDF_RenderStatus* pStatus, |
342 const CPDF_PageObject* pObj, | 338 const CPDF_PageObject* pObj, |
343 const CFX_AffineMatrix* pObj2Device, | 339 const CFX_Matrix* pObj2Device, |
344 FX_BOOL bStdCS, | 340 FX_BOOL bStdCS, |
345 int blendType = FXDIB_BLEND_NORMAL) override; | 341 int blendType = FXDIB_BLEND_NORMAL) override; |
346 FX_BOOL Continue(IFX_Pause* pPause) override; | 342 FX_BOOL Continue(IFX_Pause* pPause) override; |
347 | 343 |
348 FX_BOOL Start(CPDF_RenderStatus* pStatus, | 344 FX_BOOL Start(CPDF_RenderStatus* pStatus, |
349 const CFX_DIBSource* pDIBSource, | 345 const CFX_DIBSource* pDIBSource, |
350 FX_ARGB bitmap_argb, | 346 FX_ARGB bitmap_argb, |
351 int bitmap_alpha, | 347 int bitmap_alpha, |
352 const CFX_AffineMatrix* pImage2Device, | 348 const CFX_Matrix* pImage2Device, |
353 FX_DWORD flags, | 349 FX_DWORD flags, |
354 FX_BOOL bStdCS, | 350 FX_BOOL bStdCS, |
355 int blendType = FXDIB_BLEND_NORMAL); | 351 int blendType = FXDIB_BLEND_NORMAL); |
356 | 352 |
357 protected: | 353 protected: |
358 CPDF_RenderStatus* m_pRenderStatus; | 354 CPDF_RenderStatus* m_pRenderStatus; |
359 CPDF_ImageObject* m_pImageObject; | 355 CPDF_ImageObject* m_pImageObject; |
360 int m_Status; | 356 int m_Status; |
361 const CFX_AffineMatrix* m_pObj2Device; | 357 const CFX_Matrix* m_pObj2Device; |
362 CFX_AffineMatrix m_ImageMatrix; | 358 CFX_Matrix m_ImageMatrix; |
363 CPDF_ImageLoader m_Loader; | 359 CPDF_ImageLoader m_Loader; |
364 const CFX_DIBSource* m_pDIBSource; | 360 const CFX_DIBSource* m_pDIBSource; |
365 CFX_DIBitmap* m_pClone; | 361 CFX_DIBitmap* m_pClone; |
366 int m_BitmapAlpha; | 362 int m_BitmapAlpha; |
367 FX_BOOL m_bPatternColor; | 363 FX_BOOL m_bPatternColor; |
368 CPDF_Pattern* m_pPattern; | 364 CPDF_Pattern* m_pPattern; |
369 FX_ARGB m_FillArgb; | 365 FX_ARGB m_FillArgb; |
370 FX_DWORD m_Flags; | 366 FX_DWORD m_Flags; |
371 CPDF_QuickStretcher* m_pQuickStretcher; | 367 CPDF_QuickStretcher* m_pQuickStretcher; |
372 CFX_ImageTransformer* m_pTransformer; | 368 CFX_ImageTransformer* m_pTransformer; |
(...skipping 16 matching lines...) Expand all Loading... |
389 | 385 |
390 FX_BOOL Initialize(CPDF_RenderContext* pContext, | 386 FX_BOOL Initialize(CPDF_RenderContext* pContext, |
391 CFX_RenderDevice* pDevice, | 387 CFX_RenderDevice* pDevice, |
392 FX_RECT* pRect, | 388 FX_RECT* pRect, |
393 const CPDF_PageObject* pObj, | 389 const CPDF_PageObject* pObj, |
394 const CPDF_RenderOptions* pOptions = NULL, | 390 const CPDF_RenderOptions* pOptions = NULL, |
395 int max_dpi = 0); | 391 int max_dpi = 0); |
396 CFX_RenderDevice* GetDevice() { | 392 CFX_RenderDevice* GetDevice() { |
397 return m_pBitmapDevice ? m_pBitmapDevice.get() : m_pDevice; | 393 return m_pBitmapDevice ? m_pBitmapDevice.get() : m_pDevice; |
398 } | 394 } |
399 CFX_AffineMatrix* GetMatrix() { return &m_Matrix; } | 395 CFX_Matrix* GetMatrix() { return &m_Matrix; } |
400 void OutputToDevice(); | 396 void OutputToDevice(); |
401 | 397 |
402 private: | 398 private: |
403 CFX_RenderDevice* m_pDevice; | 399 CFX_RenderDevice* m_pDevice; |
404 CPDF_RenderContext* m_pContext; | 400 CPDF_RenderContext* m_pContext; |
405 FX_RECT m_Rect; | 401 FX_RECT m_Rect; |
406 const CPDF_PageObject* m_pObject; | 402 const CPDF_PageObject* m_pObject; |
407 nonstd::unique_ptr<CFX_FxgeDevice> m_pBitmapDevice; | 403 nonstd::unique_ptr<CFX_FxgeDevice> m_pBitmapDevice; |
408 CFX_AffineMatrix m_Matrix; | 404 CFX_Matrix m_Matrix; |
409 }; | 405 }; |
410 | 406 |
411 class ICodec_ScanlineDecoder; | 407 class ICodec_ScanlineDecoder; |
412 class CPDF_QuickStretcher { | 408 class CPDF_QuickStretcher { |
413 public: | 409 public: |
414 CPDF_QuickStretcher(); | 410 CPDF_QuickStretcher(); |
415 ~CPDF_QuickStretcher(); | 411 ~CPDF_QuickStretcher(); |
416 FX_BOOL Start(CPDF_ImageObject* pImageObj, | 412 FX_BOOL Start(CPDF_ImageObject* pImageObj, |
417 CFX_AffineMatrix* pImage2Device, | 413 CFX_Matrix* pImage2Device, |
418 const FX_RECT* pClipBox); | 414 const FX_RECT* pClipBox); |
419 FX_BOOL Continue(IFX_Pause* pPause); | 415 FX_BOOL Continue(IFX_Pause* pPause); |
420 CFX_DIBitmap* m_pBitmap; | 416 CFX_DIBitmap* m_pBitmap; |
421 int m_ResultLeft, m_ResultTop, m_ClipLeft, m_ClipTop; | 417 int m_ResultLeft, m_ResultTop, m_ClipLeft, m_ClipTop; |
422 int m_DestWidth, m_DestHeight, m_ResultWidth, m_ResultHeight; | 418 int m_DestWidth, m_DestHeight, m_ResultWidth, m_ResultHeight; |
423 int m_Bpp, m_SrcWidth, m_SrcHeight; | 419 int m_Bpp, m_SrcWidth, m_SrcHeight; |
424 FX_BOOL m_bFlipX, m_bFlipY; | 420 FX_BOOL m_bFlipX, m_bFlipY; |
425 CPDF_ColorSpace* m_pCS; | 421 CPDF_ColorSpace* m_pCS; |
426 ICodec_ScanlineDecoder* m_pDecoder; | 422 ICodec_ScanlineDecoder* m_pDecoder; |
427 CPDF_StreamAcc m_StreamAcc; | 423 CPDF_StreamAcc m_StreamAcc; |
428 int m_LineIndex; | 424 int m_LineIndex; |
429 }; | 425 }; |
430 | 426 |
431 class CPDF_DeviceBuffer { | 427 class CPDF_DeviceBuffer { |
432 public: | 428 public: |
433 CPDF_DeviceBuffer(); | 429 CPDF_DeviceBuffer(); |
434 ~CPDF_DeviceBuffer(); | 430 ~CPDF_DeviceBuffer(); |
435 FX_BOOL Initialize(CPDF_RenderContext* pContext, | 431 FX_BOOL Initialize(CPDF_RenderContext* pContext, |
436 CFX_RenderDevice* pDevice, | 432 CFX_RenderDevice* pDevice, |
437 FX_RECT* pRect, | 433 FX_RECT* pRect, |
438 const CPDF_PageObject* pObj, | 434 const CPDF_PageObject* pObj, |
439 int max_dpi = 0); | 435 int max_dpi = 0); |
440 void OutputToDevice(); | 436 void OutputToDevice(); |
441 CFX_DIBitmap* GetBitmap() const { return m_pBitmap.get(); } | 437 CFX_DIBitmap* GetBitmap() const { return m_pBitmap.get(); } |
442 const CFX_AffineMatrix* GetMatrix() const { return &m_Matrix; } | 438 const CFX_Matrix* GetMatrix() const { return &m_Matrix; } |
443 | 439 |
444 private: | 440 private: |
445 CFX_RenderDevice* m_pDevice; | 441 CFX_RenderDevice* m_pDevice; |
446 CPDF_RenderContext* m_pContext; | 442 CPDF_RenderContext* m_pContext; |
447 FX_RECT m_Rect; | 443 FX_RECT m_Rect; |
448 const CPDF_PageObject* m_pObject; | 444 const CPDF_PageObject* m_pObject; |
449 nonstd::unique_ptr<CFX_DIBitmap> m_pBitmap; | 445 nonstd::unique_ptr<CFX_DIBitmap> m_pBitmap; |
450 CFX_AffineMatrix m_Matrix; | 446 CFX_Matrix m_Matrix; |
451 }; | 447 }; |
452 | 448 |
453 class CPDF_ImageCache { | 449 class CPDF_ImageCache { |
454 public: | 450 public: |
455 CPDF_ImageCache(CPDF_Document* pDoc, CPDF_Stream* pStream); | 451 CPDF_ImageCache(CPDF_Document* pDoc, CPDF_Stream* pStream); |
456 ~CPDF_ImageCache(); | 452 ~CPDF_ImageCache(); |
457 void ClearImageData(); | 453 void ClearImageData(); |
458 void Reset(const CFX_DIBitmap* pBitmap); | 454 void Reset(const CFX_DIBitmap* pBitmap); |
459 FX_BOOL GetCachedBitmap(CFX_DIBSource*& pBitmap, | 455 FX_BOOL GetCachedBitmap(CFX_DIBSource*& pBitmap, |
460 CFX_DIBSource*& pMask, | 456 CFX_DIBSource*& pMask, |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 const uint8_t* m_RampB; | 641 const uint8_t* m_RampB; |
646 }; | 642 }; |
647 | 643 |
648 struct _CPDF_UniqueKeyGen { | 644 struct _CPDF_UniqueKeyGen { |
649 void Generate(int count, ...); | 645 void Generate(int count, ...); |
650 FX_CHAR m_Key[128]; | 646 FX_CHAR m_Key[128]; |
651 int m_KeyLen; | 647 int m_KeyLen; |
652 }; | 648 }; |
653 | 649 |
654 #endif // CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ | 650 #endif // CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ |
OLD | NEW |