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

Side by Side Diff: core/fpdfapi/render/cpdf_imageloader.cpp

Issue 2524403002: Merge CPDF_ImageLoader with its handle (Closed)
Patch Set: Created 4 years 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/cpdf_imageloader.h ('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 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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 #include "core/fpdfapi/render/cpdf_imageloader.h" 7 #include "core/fpdfapi/render/cpdf_imageloader.h"
8 8
9 #include "core/fpdfapi/page/cpdf_image.h" 9 #include "core/fpdfapi/page/cpdf_image.h"
10 #include "core/fpdfapi/page/cpdf_imageobject.h" 10 #include "core/fpdfapi/page/cpdf_imageobject.h"
11 #include "core/fpdfapi/render/cpdf_pagerendercache.h" 11 #include "core/fpdfapi/render/cpdf_pagerendercache.h"
12 #include "core/fpdfapi/render/cpdf_renderstatus.h" 12 #include "core/fpdfapi/render/cpdf_renderstatus.h"
13 #include "core/fpdfapi/render/render_int.h" 13 #include "core/fpdfapi/render/render_int.h"
14 #include "core/fxcrt/fx_basic.h" 14 #include "core/fxcrt/fx_basic.h"
15 15
16 class CPDF_ImageLoaderHandle { 16 CPDF_ImageLoader::CPDF_ImageLoader()
17 public: 17 : m_pBitmap(nullptr),
18 CPDF_ImageLoaderHandle(); 18 m_pMask(nullptr),
19 ~CPDF_ImageLoaderHandle(); 19 m_MatteColor(0),
20 m_bCached(false),
21 m_nDownsampleWidth(0),
22 m_nDownsampleHeight(0),
23 m_pCache(nullptr),
24 m_pImage(nullptr) {}
20 25
21 bool Start(CPDF_ImageLoader* pImageLoader, 26 CPDF_ImageLoader::~CPDF_ImageLoader() {
22 const CPDF_ImageObject* pImage, 27 if (!m_bCached) {
23 CPDF_PageRenderCache* pCache, 28 delete m_pBitmap;
24 bool bStdCS, 29 delete m_pMask;
25 uint32_t GroupFamily, 30 }
26 bool bLoadMask,
27 CPDF_RenderStatus* pRenderStatus,
28 int32_t nDownsampleWidth,
29 int32_t nDownsampleHeight);
30 bool Continue(IFX_Pause* pPause);
31
32 private:
33 void HandleFailure();
34
35 CPDF_ImageLoader* m_pImageLoader;
36 CPDF_PageRenderCache* m_pCache;
37 CPDF_ImageObject* m_pImage;
38 int32_t m_nDownsampleWidth;
39 int32_t m_nDownsampleHeight;
40 };
41
42 CPDF_ImageLoaderHandle::CPDF_ImageLoaderHandle() {
43 m_pImageLoader = nullptr;
44 m_pCache = nullptr;
45 m_pImage = nullptr;
46 } 31 }
47 32
48 CPDF_ImageLoaderHandle::~CPDF_ImageLoaderHandle() {} 33 bool CPDF_ImageLoader::Start(const CPDF_ImageObject* pImage,
49 34 CPDF_PageRenderCache* pCache,
50 bool CPDF_ImageLoaderHandle::Start(CPDF_ImageLoader* pImageLoader, 35 bool bStdCS,
51 const CPDF_ImageObject* pImage, 36 uint32_t GroupFamily,
52 CPDF_PageRenderCache* pCache, 37 bool bLoadMask,
53 bool bStdCS, 38 CPDF_RenderStatus* pRenderStatus,
54 uint32_t GroupFamily, 39 int32_t nDownsampleWidth,
55 bool bLoadMask, 40 int32_t nDownsampleHeight) {
56 CPDF_RenderStatus* pRenderStatus, 41 m_nDownsampleWidth = nDownsampleWidth;
57 int32_t nDownsampleWidth, 42 m_nDownsampleHeight = nDownsampleHeight;
58 int32_t nDownsampleHeight) {
59 m_pImageLoader = pImageLoader;
60 m_pCache = pCache; 43 m_pCache = pCache;
61 m_pImage = const_cast<CPDF_ImageObject*>(pImage); 44 m_pImage = const_cast<CPDF_ImageObject*>(pImage);
62 m_nDownsampleWidth = nDownsampleWidth;
63 m_nDownsampleHeight = nDownsampleHeight;
64 bool ret; 45 bool ret;
65 if (pCache) { 46 if (pCache) {
66 ret = pCache->StartGetCachedBitmap( 47 ret = pCache->StartGetCachedBitmap(
67 m_pImage->GetImage()->GetStream(), bStdCS, GroupFamily, bLoadMask, 48 m_pImage->GetImage()->GetStream(), bStdCS, GroupFamily, bLoadMask,
68 pRenderStatus, m_nDownsampleWidth, m_nDownsampleHeight); 49 pRenderStatus, m_nDownsampleWidth, m_nDownsampleHeight);
69 } else { 50 } else {
70 ret = m_pImage->GetImage()->StartLoadDIBSource( 51 ret = m_pImage->GetImage()->StartLoadDIBSource(
71 pRenderStatus->m_pFormResource, pRenderStatus->m_pPageResource, bStdCS, 52 pRenderStatus->m_pFormResource, pRenderStatus->m_pPageResource, bStdCS,
72 GroupFamily, bLoadMask); 53 GroupFamily, bLoadMask);
73 } 54 }
74 if (!ret) 55 if (!ret)
75 HandleFailure(); 56 HandleFailure();
76 return ret; 57 return ret;
77 } 58 }
78 59
79 bool CPDF_ImageLoaderHandle::Continue(IFX_Pause* pPause) { 60 bool CPDF_ImageLoader::Continue(IFX_Pause* pPause) {
80 bool ret = m_pCache ? m_pCache->Continue(pPause) 61 bool ret = m_pCache ? m_pCache->Continue(pPause)
81 : m_pImage->GetImage()->Continue(pPause); 62 : m_pImage->GetImage()->Continue(pPause);
82 if (!ret) 63 if (!ret)
83 HandleFailure(); 64 HandleFailure();
84 return ret; 65 return ret;
85 } 66 }
86 67
87 void CPDF_ImageLoaderHandle::HandleFailure() { 68 void CPDF_ImageLoader::HandleFailure() {
88 if (m_pCache) { 69 if (m_pCache) {
89 CPDF_ImageCacheEntry* entry = m_pCache->GetCurImageCacheEntry(); 70 CPDF_ImageCacheEntry* entry = m_pCache->GetCurImageCacheEntry();
90 m_pImageLoader->m_bCached = true; 71 m_bCached = true;
91 m_pImageLoader->m_pBitmap = entry->DetachBitmap(); 72 m_pBitmap = entry->DetachBitmap();
92 m_pImageLoader->m_pMask = entry->DetachMask(); 73 m_pMask = entry->DetachMask();
93 m_pImageLoader->m_MatteColor = entry->m_MatteColor; 74 m_MatteColor = entry->m_MatteColor;
94 return; 75 return;
95 } 76 }
96 CPDF_Image* pImage = m_pImage->GetImage(); 77 CPDF_Image* pImage = m_pImage->GetImage();
97 m_pImageLoader->m_bCached = false; 78 m_bCached = false;
98 m_pImageLoader->m_pBitmap = pImage->DetachBitmap(); 79 m_pBitmap = pImage->DetachBitmap();
99 m_pImageLoader->m_pMask = pImage->DetachMask(); 80 m_pMask = pImage->DetachMask();
100 m_pImageLoader->m_MatteColor = pImage->m_MatteColor; 81 m_MatteColor = pImage->m_MatteColor;
101 } 82 }
102
103 CPDF_ImageLoader::CPDF_ImageLoader()
104 : m_pBitmap(nullptr),
105 m_pMask(nullptr),
106 m_MatteColor(0),
107 m_bCached(false),
108 m_nDownsampleWidth(0),
109 m_nDownsampleHeight(0) {}
110
111 CPDF_ImageLoader::~CPDF_ImageLoader() {
112 if (!m_bCached) {
113 delete m_pBitmap;
114 delete m_pMask;
115 }
116 }
117
118 bool CPDF_ImageLoader::Start(const CPDF_ImageObject* pImage,
119 CPDF_PageRenderCache* pCache,
120 bool bStdCS,
121 uint32_t GroupFamily,
122 bool bLoadMask,
123 CPDF_RenderStatus* pRenderStatus,
124 int32_t nDownsampleWidth,
125 int32_t nDownsampleHeight) {
126 m_nDownsampleWidth = nDownsampleWidth;
127 m_nDownsampleHeight = nDownsampleHeight;
128 m_pLoadHandle.reset(new CPDF_ImageLoaderHandle);
129 return m_pLoadHandle->Start(this, pImage, pCache, bStdCS, GroupFamily,
130 bLoadMask, pRenderStatus, m_nDownsampleWidth,
131 m_nDownsampleHeight);
132 }
133
134 bool CPDF_ImageLoader::Continue(IFX_Pause* pPause) {
135 return m_pLoadHandle->Continue(pPause);
136 }
OLDNEW
« no previous file with comments | « core/fpdfapi/render/cpdf_imageloader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698