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

Side by Side Diff: core/src/fpdfapi/fpdf_render/render_int.h

Issue 1153633009: Fix potentially massive memory leak in CPDF_DIBSource::LoadJpxBitmap(). (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: address comments Created 5 years, 6 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/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp ('k') | no next file » | 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_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 "../../../../third_party/base/nonstd_unique_ptr.h"
10 #include "../../../include/fpdfapi/fpdf_pageobj.h" 11 #include "../../../include/fpdfapi/fpdf_pageobj.h"
11 12
12 class CPDF_QuickStretcher; 13 class CPDF_QuickStretcher;
13 #define TYPE3_MAX_BLUES 16 14 #define TYPE3_MAX_BLUES 16
14 class CPDF_Type3Glyphs 15 class CPDF_Type3Glyphs
15 { 16 {
16 public: 17 public:
17 CPDF_Type3Glyphs() 18 CPDF_Type3Glyphs()
18 { 19 {
19 m_GlyphMap.InitHashTable(253); 20 m_GlyphMap.InitHashTable(253);
20 m_TopBlueCount = m_BottomBlueCount = 0; 21 m_TopBlueCount = m_BottomBlueCount = 0;
21 } 22 }
22 ~CPDF_Type3Glyphs(); 23 ~CPDF_Type3Glyphs();
23 CFX_MapPtrToPtr m_GlyphMap; 24 CFX_MapPtrToPtr m_GlyphMap;
24 void AdjustBlue(FX_FLOAT top, FX_FLOA T bottom, int& top_line, int& bottom_line); 25 void AdjustBlue(FX_FLOAT top, FX_FLOA T bottom, int& top_line, int& bottom_line);
25 26
26 int m_TopBlue[TYPE3_MAX_BLUES], m_Bo ttomBlue[TYPE3_MAX_BLUES]; 27 int m_TopBlue[TYPE3_MAX_BLUES], m_Bo ttomBlue[TYPE3_MAX_BLUES];
27 int m_TopBlueCount, m_BottomBlueCoun t; 28 int m_TopBlueCount, m_BottomBlueCoun t;
28 }; 29 };
29 class CFX_GlyphBitmap; 30 class CFX_GlyphBitmap;
30 class CPDF_Type3Cache 31 class CPDF_Type3Cache
31 { 32 {
32 public: 33 public:
33 CPDF_Type3Cache(CPDF_Type3Font* pFont) 34 CPDF_Type3Cache(CPDF_Type3Font* pFont)
34 { 35 {
35 m_pFont = pFont; 36 m_pFont = pFont;
36 } 37 }
37 ~CPDF_Type3Cache(); 38 ~CPDF_Type3Cache();
38 CFX_GlyphBitmap* LoadGlyph(FX_DWORD charcode, const CFX_AffineMat rix* pMatrix, FX_FLOAT retinaScaleX = 1.0f, FX_FLOAT retinaScaleY = 1.0f); 39 CFX_GlyphBitmap* LoadGlyph(FX_DWORD charcode, const CFX_AffineMat rix* pMatrix, FX_FLOAT retinaScaleX = 1.0f, FX_FLOAT retinaScaleY = 1.0f);
39 protected: 40 protected:
40 CFX_GlyphBitmap* RenderGlyph(CPDF_Type3Glyphs* pSize, FX_DWORD ch arcode, const CFX_AffineMatrix* pMatrix, FX_FLOAT retinaScaleX = 1.0f, FX_FLOAT retinaScaleY = 1.0f); 41 CFX_GlyphBitmap* RenderGlyph(CPDF_Type3Glyphs* pSize, FX_DWORD ch arcode, const CFX_AffineMatrix* pMatrix, FX_FLOAT retinaScaleX = 1.0f, FX_FLOAT retinaScaleY = 1.0f);
41 CPDF_Type3Font* m_pFont; 42 CPDF_Type3Font* m_pFont;
42 CFX_MapByteStringToPtr m_SizeMap; 43 CFX_MapByteStringToPtr m_SizeMap;
43 }; 44 };
44 class CPDF_TransferFunc 45 class CPDF_TransferFunc
45 { 46 {
46 public: 47 public:
47 CPDF_Document* m_pPDFDoc; 48 CPDF_Document* m_pPDFDoc;
48 FX_BYTE m_Samples[256 * 3]; 49 FX_BYTE m_Samples[256 * 3];
49 FX_BOOL m_bIdentity; 50 FX_BOOL m_bIdentity;
50 51
51 CFX_DIBSource* TranslateImage(const CFX_DIBSource* pSrc, FX_BOOL bAutoD ropSrc); 52 CFX_DIBSource* TranslateImage(const CFX_DIBSource* pSrc, FX_BOOL bAutoD ropSrc);
52 FX_COLORREF TranslateColor(FX_COLORREF src); 53 FX_COLORREF TranslateColor(FX_COLORREF src);
53 }; 54 };
54 typedef CFX_MapPtrTemplate<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache*>*> CP DF_Type3CacheMap; 55 typedef CFX_MapPtrTemplate<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache*>*> CP DF_Type3CacheMap;
55 typedef CFX_MapPtrTemplate<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc*>* > CPDF_TransferFuncMap; 56 typedef CFX_MapPtrTemplate<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc*>* > CPDF_TransferFuncMap;
56 class CPDF_DocRenderData 57 class CPDF_DocRenderData
57 { 58 {
58 public: 59 public:
59 CPDF_DocRenderData(CPDF_Document* pPDFDoc = NULL); 60 CPDF_DocRenderData(CPDF_Document* pPDFDoc = NULL);
60 ~CPDF_DocRenderData(); 61 ~CPDF_DocRenderData();
61 FX_BOOL Initialize(); 62 FX_BOOL Initialize();
62 CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); 63 CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont);
63 CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObj); 64 CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObj);
64 CFX_FontCache* GetFontCache() 65 CFX_FontCache* GetFontCache()
65 { 66 {
66 return m_pFontCache; 67 return m_pFontCache;
67 } 68 }
68 void Clear(FX_BOOL bRelease = FALSE); 69 void Clear(FX_BOOL bRelease = FALSE);
69 void ReleaseCachedType3(CPDF_Type3Font* pFont ); 70 void ReleaseCachedType3(CPDF_Type3Font* pFont );
70 void ReleaseTransferFunc(CPDF_Object* pObj); 71 void ReleaseTransferFunc(CPDF_Object* pObj);
71 private: 72 private:
72 CPDF_Document* m_pPDFDoc; 73 CPDF_Document* m_pPDFDoc;
73 CFX_FontCache* m_pFontCache; 74 CFX_FontCache* m_pFontCache;
74 CPDF_Type3CacheMap m_Type3FaceMap; 75 CPDF_Type3CacheMap m_Type3FaceMap;
75 CPDF_TransferFuncMap m_TransferFuncMap; 76 CPDF_TransferFuncMap m_TransferFuncMap;
76 }; 77 };
77 struct _PDF_RenderItem { 78 struct _PDF_RenderItem {
78 public: 79 public:
79 CPDF_PageObjects* m_pObjectList; 80 CPDF_PageObjects* m_pObjectList;
80 CFX_AffineMatrix m_Matrix; 81 CFX_AffineMatrix m_Matrix;
81 }; 82 };
82 typedef CFX_ArrayTemplate<_PDF_RenderItem> CPDF_RenderLayer; 83 typedef CFX_ArrayTemplate<_PDF_RenderItem> CPDF_RenderLayer;
83 class IPDF_ObjectRenderer 84 class IPDF_ObjectRenderer
84 { 85 {
85 public: 86 public:
86 static IPDF_ObjectRenderer* Create(int type); 87 static IPDF_ObjectRenderer* Create(int type);
87 virtual ~IPDF_ObjectRenderer() {} 88 virtual ~IPDF_ObjectRenderer() {}
88 virtual FX_BOOL Start(CPDF_RenderStatus* pRenderStatus, const CPDF_PageObjec t* pObj, const CFX_AffineMatrix* pObj2Device, FX_BOOL bStdCS, int blendType = FX DIB_BLEND_NORMAL) = 0; 89 virtual FX_BOOL Start(CPDF_RenderStatus* pRenderStatus, const CPDF_PageObjec t* pObj, const CFX_AffineMatrix* pObj2Device, FX_BOOL bStdCS, int blendType = FX DIB_BLEND_NORMAL) = 0;
89 virtual FX_BOOL Continue(IFX_Pause* pPause) = 0; 90 virtual FX_BOOL Continue(IFX_Pause* pPause) = 0;
90 FX_BOOL m_Result; 91 FX_BOOL m_Result;
91 }; 92 };
92 class CPDF_RenderStatus 93 class CPDF_RenderStatus
93 { 94 {
94 public: 95 public:
95 CPDF_RenderStatus(); 96 CPDF_RenderStatus();
96 ~CPDF_RenderStatus(); 97 ~CPDF_RenderStatus();
97 FX_BOOL Initialize(class CPDF_RenderContext* pContext, C FX_RenderDevice* pDevice, const CFX_AffineMatrix* pDeviceMatrix, 98 FX_BOOL Initialize(class CPDF_RenderContext* pContext, C FX_RenderDevice* pDevice, const CFX_AffineMatrix* pDeviceMatrix,
98 const CPDF_PageObject* pStopObj, const CPDF_Rende rStatus* pParentStatus, 99 const CPDF_PageObject* pStopObj, const CPDF_Rende rStatus* pParentStatus,
99 const CPDF_GraphicStates* pInitialStates, const C PDF_RenderOptions* pOptions, 100 const CPDF_GraphicStates* pInitialStates, const C PDF_RenderOptions* pOptions,
100 int transparency, FX_BOOL bDropObjects, CPDF_Dict ionary* pFormResource = NULL, 101 int transparency, FX_BOOL bDropObjects, CPDF_Dict ionary* pFormResource = NULL,
101 FX_BOOL bStdCS = FALSE, CPDF_Type3Char* pType3Ch ar = NULL, FX_ARGB fill_color = 0, 102 FX_BOOL bStdCS = FALSE, CPDF_Type3Char* pType3Ch ar = NULL, FX_ARGB fill_color = 0,
102 FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FAL SE); 103 FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FAL SE);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 int m_Transparency; 175 int m_Transparency;
175 int m_DitherBits; 176 int m_DitherBits;
176 FX_BOOL m_bDropObjects; 177 FX_BOOL m_bDropObjects;
177 FX_BOOL m_bStdCS; 178 FX_BOOL m_bStdCS;
178 FX_DWORD m_GroupFamily; 179 FX_DWORD m_GroupFamily;
179 FX_BOOL m_bLoadMask; 180 FX_BOOL m_bLoadMask;
180 CPDF_Type3Char * m_pType3Char; 181 CPDF_Type3Char * m_pType3Char;
181 FX_ARGB m_T3FillColor; 182 FX_ARGB m_T3FillColor;
182 int m_curBlend; 183 int m_curBlend;
183 }; 184 };
184 class CPDF_ImageLoader 185 class CPDF_ImageLoader
185 { 186 {
186 public: 187 public:
187 CPDF_ImageLoader() 188 CPDF_ImageLoader()
188 { 189 {
189 m_pBitmap = NULL; 190 m_pBitmap = NULL;
190 m_pMask = NULL; 191 m_pMask = NULL;
191 m_MatteColor = 0; 192 m_MatteColor = 0;
192 m_bCached = FALSE; 193 m_bCached = FALSE;
193 m_nDownsampleWidth = 0; 194 m_nDownsampleWidth = 0;
194 m_nDownsampleHeight = 0; 195 m_nDownsampleHeight = 0;
195 } 196 }
196 197
197 FX_BOOL Load(const CPDF_ImageObject* pIm age, CPDF_PageRenderCache* pCache, FX_BOOL bStdCS = FALSE, FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE, CPDF_RenderStatus* pRenderStatus = NULL); 198 FX_BOOL Load(const CPDF_ImageObject* pIm age, CPDF_PageRenderCache* pCache, FX_BOOL bStdCS = FALSE, FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE, CPDF_RenderStatus* pRenderStatus = NULL);
198 199
199 FX_BOOL StartLoadImage(const CPDF_ImageO bject* pImage, CPDF_PageRenderCache* pCache, FX_LPVOID& LoadHandle, FX_BOOL bStd CS = FALSE, FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE, CPDF_RenderStat us* pRenderStatus = NULL, FX_INT32 nDownsampleWidth = 0, FX_INT32 nDownsampleHei ght = 0); 200 FX_BOOL StartLoadImage(const CPDF_ImageO bject* pImage, CPDF_PageRenderCache* pCache, FX_LPVOID& LoadHandle, FX_BOOL bStd CS = FALSE, FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE, CPDF_RenderStat us* pRenderStatus = NULL, FX_INT32 nDownsampleWidth = 0, FX_INT32 nDownsampleHei ght = 0);
200 FX_BOOL Continue(FX_LPVOID LoadHandle, I FX_Pause* pPause); 201 FX_BOOL Continue(FX_LPVOID LoadHandle, I FX_Pause* pPause);
201 ~CPDF_ImageLoader(); 202 ~CPDF_ImageLoader();
202 CFX_DIBSource* m_pBitmap; 203 CFX_DIBSource* m_pBitmap;
203 CFX_DIBSource* m_pMask; 204 CFX_DIBSource* m_pMask;
204 FX_DWORD m_MatteColor; 205 FX_DWORD m_MatteColor;
205 FX_BOOL m_bCached; 206 FX_BOOL m_bCached;
206 protected: 207 protected:
207 FX_INT32 m_nDownsampleWidth; 208 FX_INT32 m_nDownsampleWidth;
208 FX_INT32 m_nDownsampleHeight; 209 FX_INT32 m_nDownsampleHeight;
209 }; 210 };
210 class CPDF_ProgressiveImageLoaderHandle 211 class CPDF_ProgressiveImageLoaderHandle
211 { 212 {
212 public: 213 public:
213 CPDF_ProgressiveImageLoaderHandle(); 214 CPDF_ProgressiveImageLoaderHandle();
214 ~CPDF_ProgressiveImageLoaderHandle(); 215 ~CPDF_ProgressiveImageLoaderHandle();
215 216
216 FX_BOOL Start(CPDF_ImageLoader* pImageLoader, const CPDF _ImageObject* pImage, CPDF_PageRenderCache* pCache, FX_BOOL bStdCS = FALSE, FX_D WORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE, CPDF_RenderStatus* pRenderStatu s = NULL, FX_INT32 nDownsampleWidth = 0, FX_INT32 nDownsampleHeight = 0); 217 FX_BOOL Start(CPDF_ImageLoader* pImageLoader, const CPDF _ImageObject* pImage, CPDF_PageRenderCache* pCache, FX_BOOL bStdCS = FALSE, FX_D WORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE, CPDF_RenderStatus* pRenderStatu s = NULL, FX_INT32 nDownsampleWidth = 0, FX_INT32 nDownsampleHeight = 0);
217 FX_BOOL Continue(IFX_Pause* pPause); 218 FX_BOOL Continue(IFX_Pause* pPause);
218 protected: 219 protected:
219 CPDF_ImageLoader* m_pImageLoader; 220 CPDF_ImageLoader* m_pImageLoader;
220 CPDF_PageRenderCache* m_pCache; 221 CPDF_PageRenderCache* m_pCache;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 FX_LPVOID m_LoadHandle; 254 FX_LPVOID m_LoadHandle;
254 FX_BOOL m_bStdCS; 255 FX_BOOL m_bStdCS;
255 int m_BlendType; 256 int m_BlendType;
256 FX_BOOL StartBitmapAlpha(); 257 FX_BOOL StartBitmapAlpha();
257 FX_BOOL StartDIBSource(); 258 FX_BOOL StartDIBSource();
258 FX_BOOL StartRenderDIBSource(); 259 FX_BOOL StartRenderDIBSource();
259 FX_BOOL StartLoadDIBSource(); 260 FX_BOOL StartLoadDIBSource();
260 FX_BOOL DrawMaskedImage(); 261 FX_BOOL DrawMaskedImage();
261 FX_BOOL DrawPatternImage(const CFX_Matrix* pObj2 Device); 262 FX_BOOL DrawPatternImage(const CFX_Matrix* pObj2 Device);
262 }; 263 };
263 class CPDF_ScaledRenderBuffer 264 class CPDF_ScaledRenderBuffer
264 { 265 {
265 public: 266 public:
266 CPDF_ScaledRenderBuffer(); 267 CPDF_ScaledRenderBuffer();
267 ~CPDF_ScaledRenderBuffer(); 268 ~CPDF_ScaledRenderBuffer();
268 FX_BOOL Initialize(CPDF_RenderContext* pContext, CFX_RenderDevice* pDevice, FX_RECT* pRect, 269 FX_BOOL Initialize(CPDF_RenderContext* pContext, CFX_RenderDevice* pDevice, FX_RECT* pRect,
269 const CPDF_PageObject* pObj, const CPDF_Rende rOptions *pOptions = NULL, int max_dpi = 0); 270 const CPDF_PageObject* pObj, const CPDF_Rende rOptions *pOptions = NULL, int max_dpi = 0);
270 CFX_RenderDevice* GetDevice() 271 CFX_RenderDevice* GetDevice()
271 { 272 {
272 return m_pBitmapDevice ? m_pBitmapDevice : m_pDevice; 273 return m_pBitmapDevice ? m_pBitmapDevice : m_pDevice;
273 } 274 }
274 CFX_AffineMatrix* GetMatrix() 275 CFX_AffineMatrix* GetMatrix()
275 { 276 {
276 return &m_Matrix; 277 return &m_Matrix;
277 } 278 }
278 void OutputToDevice(); 279 void OutputToDevice();
279 private: 280 private:
280 CFX_RenderDevice* m_pDevice; 281 CFX_RenderDevice* m_pDevice;
281 CPDF_RenderContext* m_pContext; 282 CPDF_RenderContext* m_pContext;
282 FX_RECT m_Rect; 283 FX_RECT m_Rect;
283 const CPDF_PageObject* m_pObject; 284 const CPDF_PageObject* m_pObject;
284 CFX_FxgeDevice* m_pBitmapDevice; 285 CFX_FxgeDevice* m_pBitmapDevice;
285 CFX_AffineMatrix m_Matrix; 286 CFX_AffineMatrix m_Matrix;
286 }; 287 };
287 class ICodec_ScanlineDecoder; 288 class ICodec_ScanlineDecoder;
288 class CPDF_QuickStretcher 289 class CPDF_QuickStretcher
289 { 290 {
290 public: 291 public:
291 CPDF_QuickStretcher(); 292 CPDF_QuickStretcher();
292 ~CPDF_QuickStretcher(); 293 ~CPDF_QuickStretcher();
293 FX_BOOL Start(CPDF_ImageObject* pImageObj, CFX_AffineMatrix* pIm age2Device, const FX_RECT* pClipBox); 294 FX_BOOL Start(CPDF_ImageObject* pImageObj, CFX_AffineMatrix* pIm age2Device, const FX_RECT* pClipBox);
294 FX_BOOL Continue(IFX_Pause* pPause); 295 FX_BOOL Continue(IFX_Pause* pPause);
295 CFX_DIBitmap* m_pBitmap; 296 CFX_DIBitmap* m_pBitmap;
296 int m_ResultLeft, m_ResultTop, m_ClipLeft, m_ClipTop; 297 int m_ResultLeft, m_ResultTop, m_ClipLeft, m_ClipTop;
297 int m_DestWidth, m_DestHeight, m_ResultWidth, m_ResultHeight ; 298 int m_DestWidth, m_DestHeight, m_ResultWidth, m_ResultHeight ;
298 int m_Bpp, m_SrcWidth, m_SrcHeight; 299 int m_Bpp, m_SrcWidth, m_SrcHeight;
299 FX_BOOL m_bFlipX, m_bFlipY; 300 FX_BOOL m_bFlipX, m_bFlipY;
300 CPDF_ColorSpace* m_pCS; 301 CPDF_ColorSpace* m_pCS;
301 ICodec_ScanlineDecoder* m_pDecoder; 302 ICodec_ScanlineDecoder* m_pDecoder;
302 CPDF_StreamAcc m_StreamAcc; 303 CPDF_StreamAcc m_StreamAcc;
303 int m_LineIndex; 304 int m_LineIndex;
304 }; 305 };
305 class CPDF_DeviceBuffer 306 class CPDF_DeviceBuffer
306 { 307 {
307 public: 308 public:
308 CPDF_DeviceBuffer(); 309 CPDF_DeviceBuffer();
309 ~CPDF_DeviceBuffer(); 310 ~CPDF_DeviceBuffer();
310 FX_BOOL Initialize(CPDF_RenderContext* pContext, CFX_RenderDevice* pDevice, FX_RECT* pRect, 311 FX_BOOL Initialize(CPDF_RenderContext* pContext, CFX_RenderDevice* pDevice, FX_RECT* pRect,
311 const CPDF_PageObject* pObj, int max_dpi = 0) ; 312 const CPDF_PageObject* pObj, int max_dpi = 0) ;
312 void OutputToDevice(); 313 void OutputToDevice();
313 CFX_DIBitmap* GetBitmap() const 314 CFX_DIBitmap* GetBitmap() const
314 { 315 {
315 return m_pBitmap; 316 return m_pBitmap;
316 } 317 }
317 const CFX_AffineMatrix* GetMatrix() const 318 const CFX_AffineMatrix* GetMatrix() const
318 { 319 {
319 return &m_Matrix; 320 return &m_Matrix;
320 } 321 }
321 private: 322 private:
322 CFX_RenderDevice* m_pDevice; 323 CFX_RenderDevice* m_pDevice;
323 CPDF_RenderContext* m_pContext; 324 CPDF_RenderContext* m_pContext;
324 FX_RECT m_Rect; 325 FX_RECT m_Rect;
325 const CPDF_PageObject* m_pObject; 326 const CPDF_PageObject* m_pObject;
326 CFX_DIBitmap* m_pBitmap; 327 CFX_DIBitmap* m_pBitmap;
327 CFX_AffineMatrix m_Matrix; 328 CFX_AffineMatrix m_Matrix;
328 }; 329 };
329 class CPDF_ImageCache 330 class CPDF_ImageCache
330 { 331 {
331 public: 332 public:
332 CPDF_ImageCache(CPDF_Document* pDoc, CPDF_Stream* pStream); 333 CPDF_ImageCache(CPDF_Document* pDoc, CPDF_Stream* pStream);
333 ~CPDF_ImageCache(); 334 ~CPDF_ImageCache();
334 void ClearImageData(); 335 void ClearImageData();
335 void Reset(const CFX_DIBitmap* pBitmap); 336 void Reset(const CFX_DIBitmap* pBitmap);
336 FX_BOOL GetCachedBitmap(CFX_DIBSource*& pBitmap, CFX_DIBSource*& pMask, FX_DWORD& MatteColor, CPDF_Dictionary* pPageResources, 337 FX_BOOL GetCachedBitmap(CFX_DIBSource*& pBitmap, CFX_DIBSource*& pMask, FX_DWORD& MatteColor, CPDF_Dictionary* pPageResources,
337 FX_BOOL bStdCS = FALSE, FX_DWORD GroupFa mily = 0, FX_BOOL bLoadMask = FALSE, 338 FX_BOOL bStdCS = FALSE, FX_DWORD GroupFa mily = 0, FX_BOOL bLoadMask = FALSE,
338 CPDF_RenderStatus* pRenderStatus = NULL, FX_INT32 downsampleWidth = 0, FX_INT32 downsampleHeight = 0); 339 CPDF_RenderStatus* pRenderStatus = NULL, FX_INT32 downsampleWidth = 0, FX_INT32 downsampleHeight = 0);
339 FX_DWORD EstimateSize() const 340 FX_DWORD EstimateSize() const
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 FX_DWORD m_nComponents; 437 FX_DWORD m_nComponents;
437 FX_DWORD m_GroupFamily; 438 FX_DWORD m_GroupFamily;
438 FX_BOOL m_bLoadMask; 439 FX_BOOL m_bLoadMask;
439 FX_BOOL m_bDefaultDecode; 440 FX_BOOL m_bDefaultDecode;
440 FX_BOOL m_bImageMask; 441 FX_BOOL m_bImageMask;
441 FX_BOOL m_bDoBpcCheck; 442 FX_BOOL m_bDoBpcCheck;
442 FX_BOOL m_bColorKey; 443 FX_BOOL m_bColorKey;
443 DIB_COMP_DATA* m_pCompData; 444 DIB_COMP_DATA* m_pCompData;
444 FX_LPBYTE m_pLineBuf; 445 FX_LPBYTE m_pLineBuf;
445 FX_LPBYTE m_pMaskedLine; 446 FX_LPBYTE m_pMaskedLine;
446 CFX_DIBitmap*» » m_pCachedBitmap; 447 nonstd::unique_ptr<CFX_DIBitmap> m_pCachedBitmap;
447 ICodec_ScanlineDecoder* m_pDecoder; 448 ICodec_ScanlineDecoder* m_pDecoder;
448 }; 449 };
449 #define FPDF_HUGE_IMAGE_SIZE 60000000 450 #define FPDF_HUGE_IMAGE_SIZE 60000000
450 class CPDF_DIBTransferFunc : public CFX_FilteredDIB 451 class CPDF_DIBTransferFunc : public CFX_FilteredDIB
451 { 452 {
452 public: 453 public:
453 CPDF_DIBTransferFunc(const CPDF_TransferFunc* pTransferFunc); 454 CPDF_DIBTransferFunc(const CPDF_TransferFunc* pTransferFunc);
454 virtual FXDIB_Format GetDestFormat(); 455 virtual FXDIB_Format GetDestFormat();
455 virtual FX_ARGB* GetDestPalette() 456 virtual FX_ARGB* GetDestPalette()
456 { 457 {
457 return NULL; 458 return NULL;
458 } 459 }
459 virtual void TranslateScanline(FX_LPBYTE dest_buf, FX _LPCBYTE src_buf) const; 460 virtual void TranslateScanline(FX_LPBYTE dest_buf, FX _LPCBYTE src_buf) const;
460 virtual void TranslateDownSamples(FX_LPBYTE dest_buf, FX_LPCBYTE src_buf, int pixels, int Bpp) const; 461 virtual void TranslateDownSamples(FX_LPBYTE dest_buf, FX_LPCBYTE src_buf, int pixels, int Bpp) const;
461 FX_LPCBYTE m_RampR; 462 FX_LPCBYTE m_RampR;
462 FX_LPCBYTE m_RampG; 463 FX_LPCBYTE m_RampG;
463 FX_LPCBYTE m_RampB; 464 FX_LPCBYTE m_RampB;
464 }; 465 };
465 struct _CPDF_UniqueKeyGen { 466 struct _CPDF_UniqueKeyGen {
466 void Generate(int count, ...); 467 void Generate(int count, ...);
467 FX_CHAR m_Key[128]; 468 FX_CHAR m_Key[128];
468 int m_KeyLen; 469 int m_KeyLen;
469 }; 470 };
470 471
471 #endif // CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ 472 #endif // CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698