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

Side by Side Diff: core/fpdfapi/fpdf_page/cpdf_image.cpp

Issue 2334323005: Rename dictionary set and get methods (Closed)
Patch Set: Created 4 years, 3 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/fpdfapi/fpdf_page/cpdf_form.cpp ('k') | core/fpdfapi/fpdf_page/cpdf_meshstream.cpp » ('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 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/fpdf_page/include/cpdf_image.h" 7 #include "core/fpdfapi/fpdf_page/include/cpdf_image.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 27 matching lines...) Expand all
38 m_bInterpolate(false), 38 m_bInterpolate(false),
39 m_pDocument(pDoc), 39 m_pDocument(pDoc),
40 m_pOC(nullptr) { 40 m_pOC(nullptr) {
41 if (!pStream) 41 if (!pStream)
42 return; 42 return;
43 43
44 CPDF_Dictionary* pDict = pStream->GetDict(); 44 CPDF_Dictionary* pDict = pStream->GetDict();
45 if (m_bInline) 45 if (m_bInline)
46 m_pInlineDict = ToDictionary(pDict->Clone()); 46 m_pInlineDict = ToDictionary(pDict->Clone());
47 47
48 m_pOC = pDict->GetDictBy("OC"); 48 m_pOC = pDict->GetDictFor("OC");
49 m_bIsMask = 49 m_bIsMask =
50 !pDict->KeyExist("ColorSpace") || pDict->GetIntegerBy("ImageMask"); 50 !pDict->KeyExist("ColorSpace") || pDict->GetIntegerFor("ImageMask");
51 m_bInterpolate = !!pDict->GetIntegerBy("Interpolate"); 51 m_bInterpolate = !!pDict->GetIntegerFor("Interpolate");
52 m_Height = pDict->GetIntegerBy("Height"); 52 m_Height = pDict->GetIntegerFor("Height");
53 m_Width = pDict->GetIntegerBy("Width"); 53 m_Width = pDict->GetIntegerFor("Width");
54 } 54 }
55 55
56 CPDF_Image::~CPDF_Image() { 56 CPDF_Image::~CPDF_Image() {
57 if (m_bInline) { 57 if (m_bInline) {
58 if (m_pStream) 58 if (m_pStream)
59 m_pStream->Release(); 59 m_pStream->Release();
60 if (m_pInlineDict) 60 if (m_pInlineDict)
61 m_pInlineDict->Release(); 61 m_pInlineDict->Release();
62 } 62 }
63 } 63 }
(...skipping 15 matching lines...) Expand all
79 int32_t height; 79 int32_t height;
80 int32_t num_comps; 80 int32_t num_comps;
81 int32_t bits; 81 int32_t bits;
82 bool color_trans; 82 bool color_trans;
83 if (!CPDF_ModuleMgr::Get()->GetJpegModule()->LoadInfo( 83 if (!CPDF_ModuleMgr::Get()->GetJpegModule()->LoadInfo(
84 pData, size, &width, &height, &num_comps, &bits, &color_trans)) { 84 pData, size, &width, &height, &num_comps, &bits, &color_trans)) {
85 return nullptr; 85 return nullptr;
86 } 86 }
87 87
88 CPDF_Dictionary* pDict = new CPDF_Dictionary; 88 CPDF_Dictionary* pDict = new CPDF_Dictionary;
89 pDict->SetAtName("Type", "XObject"); 89 pDict->SetNameFor("Type", "XObject");
90 pDict->SetAtName("Subtype", "Image"); 90 pDict->SetNameFor("Subtype", "Image");
91 pDict->SetAtInteger("Width", width); 91 pDict->SetIntegerFor("Width", width);
92 pDict->SetAtInteger("Height", height); 92 pDict->SetIntegerFor("Height", height);
93 const FX_CHAR* csname = nullptr; 93 const FX_CHAR* csname = nullptr;
94 if (num_comps == 1) { 94 if (num_comps == 1) {
95 csname = "DeviceGray"; 95 csname = "DeviceGray";
96 } else if (num_comps == 3) { 96 } else if (num_comps == 3) {
97 csname = "DeviceRGB"; 97 csname = "DeviceRGB";
98 } else if (num_comps == 4) { 98 } else if (num_comps == 4) {
99 csname = "DeviceCMYK"; 99 csname = "DeviceCMYK";
100 CPDF_Array* pDecode = new CPDF_Array; 100 CPDF_Array* pDecode = new CPDF_Array;
101 for (int n = 0; n < 4; n++) { 101 for (int n = 0; n < 4; n++) {
102 pDecode->AddInteger(1); 102 pDecode->AddInteger(1);
103 pDecode->AddInteger(0); 103 pDecode->AddInteger(0);
104 } 104 }
105 pDict->SetAt("Decode", pDecode); 105 pDict->SetFor("Decode", pDecode);
106 } 106 }
107 pDict->SetAtName("ColorSpace", csname); 107 pDict->SetNameFor("ColorSpace", csname);
108 pDict->SetAtInteger("BitsPerComponent", bits); 108 pDict->SetIntegerFor("BitsPerComponent", bits);
109 pDict->SetAtName("Filter", "DCTDecode"); 109 pDict->SetNameFor("Filter", "DCTDecode");
110 if (!color_trans) { 110 if (!color_trans) {
111 CPDF_Dictionary* pParms = new CPDF_Dictionary; 111 CPDF_Dictionary* pParms = new CPDF_Dictionary;
112 pDict->SetAt("DecodeParms", pParms); 112 pDict->SetFor("DecodeParms", pParms);
113 pParms->SetAtInteger("ColorTransform", 0); 113 pParms->SetIntegerFor("ColorTransform", 0);
114 } 114 }
115 m_bIsMask = FALSE; 115 m_bIsMask = FALSE;
116 m_Width = width; 116 m_Width = width;
117 m_Height = height; 117 m_Height = height;
118 if (!m_pStream) 118 if (!m_pStream)
119 m_pStream = new CPDF_Stream(nullptr, 0, nullptr); 119 m_pStream = new CPDF_Stream(nullptr, 0, nullptr);
120 return pDict; 120 return pDict;
121 } 121 }
122 122
123 void CPDF_Image::SetJpegImage(IFX_FileRead* pFile) { 123 void CPDF_Image::SetJpegImage(IFX_FileRead* pFile) {
(...skipping 20 matching lines...) Expand all
144 int32_t BitmapWidth = pBitmap->GetWidth(); 144 int32_t BitmapWidth = pBitmap->GetWidth();
145 int32_t BitmapHeight = pBitmap->GetHeight(); 145 int32_t BitmapHeight = pBitmap->GetHeight();
146 if (BitmapWidth < 1 || BitmapHeight < 1) { 146 if (BitmapWidth < 1 || BitmapHeight < 1) {
147 return; 147 return;
148 } 148 }
149 uint8_t* src_buf = pBitmap->GetBuffer(); 149 uint8_t* src_buf = pBitmap->GetBuffer();
150 int32_t src_pitch = pBitmap->GetPitch(); 150 int32_t src_pitch = pBitmap->GetPitch();
151 int32_t bpp = pBitmap->GetBPP(); 151 int32_t bpp = pBitmap->GetBPP();
152 152
153 CPDF_Dictionary* pDict = new CPDF_Dictionary; 153 CPDF_Dictionary* pDict = new CPDF_Dictionary;
154 pDict->SetAtName("Type", "XObject"); 154 pDict->SetNameFor("Type", "XObject");
155 pDict->SetAtName("Subtype", "Image"); 155 pDict->SetNameFor("Subtype", "Image");
156 pDict->SetAtInteger("Width", BitmapWidth); 156 pDict->SetIntegerFor("Width", BitmapWidth);
157 pDict->SetAtInteger("Height", BitmapHeight); 157 pDict->SetIntegerFor("Height", BitmapHeight);
158 uint8_t* dest_buf = nullptr; 158 uint8_t* dest_buf = nullptr;
159 FX_STRSIZE dest_pitch = 0, dest_size = 0, opType = -1; 159 FX_STRSIZE dest_pitch = 0, dest_size = 0, opType = -1;
160 if (bpp == 1) { 160 if (bpp == 1) {
161 int32_t reset_a = 0, reset_r = 0, reset_g = 0, reset_b = 0; 161 int32_t reset_a = 0, reset_r = 0, reset_g = 0, reset_b = 0;
162 int32_t set_a = 0, set_r = 0, set_g = 0, set_b = 0; 162 int32_t set_a = 0, set_r = 0, set_g = 0, set_b = 0;
163 if (!pBitmap->IsAlphaMask()) { 163 if (!pBitmap->IsAlphaMask()) {
164 ArgbDecode(pBitmap->GetPaletteArgb(0), reset_a, reset_r, reset_g, 164 ArgbDecode(pBitmap->GetPaletteArgb(0), reset_a, reset_r, reset_g,
165 reset_b); 165 reset_b);
166 ArgbDecode(pBitmap->GetPaletteArgb(1), set_a, set_r, set_g, set_b); 166 ArgbDecode(pBitmap->GetPaletteArgb(1), set_a, set_r, set_g, set_b);
167 } 167 }
168 if (set_a == 0 || reset_a == 0) { 168 if (set_a == 0 || reset_a == 0) {
169 pDict->SetAt("ImageMask", new CPDF_Boolean(TRUE)); 169 pDict->SetFor("ImageMask", new CPDF_Boolean(TRUE));
170 if (reset_a == 0) { 170 if (reset_a == 0) {
171 CPDF_Array* pArray = new CPDF_Array; 171 CPDF_Array* pArray = new CPDF_Array;
172 pArray->AddInteger(1); 172 pArray->AddInteger(1);
173 pArray->AddInteger(0); 173 pArray->AddInteger(0);
174 pDict->SetAt("Decode", pArray); 174 pDict->SetFor("Decode", pArray);
175 } 175 }
176 } else { 176 } else {
177 CPDF_Array* pCS = new CPDF_Array; 177 CPDF_Array* pCS = new CPDF_Array;
178 pCS->AddName("Indexed"); 178 pCS->AddName("Indexed");
179 pCS->AddName("DeviceRGB"); 179 pCS->AddName("DeviceRGB");
180 pCS->AddInteger(1); 180 pCS->AddInteger(1);
181 CFX_ByteString ct; 181 CFX_ByteString ct;
182 FX_CHAR* pBuf = ct.GetBuffer(6); 182 FX_CHAR* pBuf = ct.GetBuffer(6);
183 pBuf[0] = (FX_CHAR)reset_r; 183 pBuf[0] = (FX_CHAR)reset_r;
184 pBuf[1] = (FX_CHAR)reset_g; 184 pBuf[1] = (FX_CHAR)reset_g;
185 pBuf[2] = (FX_CHAR)reset_b; 185 pBuf[2] = (FX_CHAR)reset_b;
186 pBuf[3] = (FX_CHAR)set_r; 186 pBuf[3] = (FX_CHAR)set_r;
187 pBuf[4] = (FX_CHAR)set_g; 187 pBuf[4] = (FX_CHAR)set_g;
188 pBuf[5] = (FX_CHAR)set_b; 188 pBuf[5] = (FX_CHAR)set_b;
189 ct.ReleaseBuffer(6); 189 ct.ReleaseBuffer(6);
190 pCS->Add(new CPDF_String(ct, TRUE)); 190 pCS->Add(new CPDF_String(ct, TRUE));
191 pDict->SetAt("ColorSpace", pCS); 191 pDict->SetFor("ColorSpace", pCS);
192 } 192 }
193 pDict->SetAtInteger("BitsPerComponent", 1); 193 pDict->SetIntegerFor("BitsPerComponent", 1);
194 dest_pitch = (BitmapWidth + 7) / 8; 194 dest_pitch = (BitmapWidth + 7) / 8;
195 if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { 195 if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) {
196 opType = 1; 196 opType = 1;
197 } else { 197 } else {
198 opType = 0; 198 opType = 0;
199 } 199 }
200 } else if (bpp == 8) { 200 } else if (bpp == 8) {
201 int32_t iPalette = pBitmap->GetPaletteSize(); 201 int32_t iPalette = pBitmap->GetPaletteSize();
202 if (iPalette > 0) { 202 if (iPalette > 0) {
203 CPDF_Array* pCS = new CPDF_Array; 203 CPDF_Array* pCS = new CPDF_Array;
204 m_pDocument->AddIndirectObject(pCS); 204 m_pDocument->AddIndirectObject(pCS);
205 pCS->AddName("Indexed"); 205 pCS->AddName("Indexed");
206 pCS->AddName("DeviceRGB"); 206 pCS->AddName("DeviceRGB");
207 pCS->AddInteger(iPalette - 1); 207 pCS->AddInteger(iPalette - 1);
208 uint8_t* pColorTable = FX_Alloc2D(uint8_t, iPalette, 3); 208 uint8_t* pColorTable = FX_Alloc2D(uint8_t, iPalette, 3);
209 uint8_t* ptr = pColorTable; 209 uint8_t* ptr = pColorTable;
210 for (int32_t i = 0; i < iPalette; i++) { 210 for (int32_t i = 0; i < iPalette; i++) {
211 uint32_t argb = pBitmap->GetPaletteArgb(i); 211 uint32_t argb = pBitmap->GetPaletteArgb(i);
212 ptr[0] = (uint8_t)(argb >> 16); 212 ptr[0] = (uint8_t)(argb >> 16);
213 ptr[1] = (uint8_t)(argb >> 8); 213 ptr[1] = (uint8_t)(argb >> 8);
214 ptr[2] = (uint8_t)argb; 214 ptr[2] = (uint8_t)argb;
215 ptr += 3; 215 ptr += 3;
216 } 216 }
217 CPDF_Stream* pCTS = 217 CPDF_Stream* pCTS =
218 new CPDF_Stream(pColorTable, iPalette * 3, new CPDF_Dictionary); 218 new CPDF_Stream(pColorTable, iPalette * 3, new CPDF_Dictionary);
219 m_pDocument->AddIndirectObject(pCTS); 219 m_pDocument->AddIndirectObject(pCTS);
220 pCS->AddReference(m_pDocument, pCTS); 220 pCS->AddReference(m_pDocument, pCTS);
221 pDict->SetAtReference("ColorSpace", m_pDocument, pCS); 221 pDict->SetReferenceFor("ColorSpace", m_pDocument, pCS);
222 } else { 222 } else {
223 pDict->SetAtName("ColorSpace", "DeviceGray"); 223 pDict->SetNameFor("ColorSpace", "DeviceGray");
224 } 224 }
225 pDict->SetAtInteger("BitsPerComponent", 8); 225 pDict->SetIntegerFor("BitsPerComponent", 8);
226 if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { 226 if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) {
227 dest_pitch = BitmapWidth; 227 dest_pitch = BitmapWidth;
228 opType = 1; 228 opType = 1;
229 } else { 229 } else {
230 opType = 0; 230 opType = 0;
231 } 231 }
232 } else { 232 } else {
233 pDict->SetAtName("ColorSpace", "DeviceRGB"); 233 pDict->SetNameFor("ColorSpace", "DeviceRGB");
234 pDict->SetAtInteger("BitsPerComponent", 8); 234 pDict->SetIntegerFor("BitsPerComponent", 8);
235 if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { 235 if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) {
236 dest_pitch = BitmapWidth * 3; 236 dest_pitch = BitmapWidth * 3;
237 opType = 2; 237 opType = 2;
238 } else { 238 } else {
239 opType = 0; 239 opType = 0;
240 } 240 }
241 } 241 }
242 const CFX_DIBitmap* pMaskBitmap = nullptr; 242 const CFX_DIBitmap* pMaskBitmap = nullptr;
243 FX_BOOL bDeleteMask = FALSE; 243 FX_BOOL bDeleteMask = FALSE;
244 if (pBitmap->HasAlpha()) { 244 if (pBitmap->HasAlpha()) {
245 pMaskBitmap = pBitmap->GetAlphaMask(); 245 pMaskBitmap = pBitmap->GetAlphaMask();
246 bDeleteMask = TRUE; 246 bDeleteMask = TRUE;
247 } 247 }
248 if (pMaskBitmap) { 248 if (pMaskBitmap) {
249 int32_t maskWidth = pMaskBitmap->GetWidth(); 249 int32_t maskWidth = pMaskBitmap->GetWidth();
250 int32_t maskHeight = pMaskBitmap->GetHeight(); 250 int32_t maskHeight = pMaskBitmap->GetHeight();
251 uint8_t* mask_buf = nullptr; 251 uint8_t* mask_buf = nullptr;
252 FX_STRSIZE mask_size = 0; 252 FX_STRSIZE mask_size = 0;
253 CPDF_Dictionary* pMaskDict = new CPDF_Dictionary; 253 CPDF_Dictionary* pMaskDict = new CPDF_Dictionary;
254 pMaskDict->SetAtName("Type", "XObject"); 254 pMaskDict->SetNameFor("Type", "XObject");
255 pMaskDict->SetAtName("Subtype", "Image"); 255 pMaskDict->SetNameFor("Subtype", "Image");
256 pMaskDict->SetAtInteger("Width", maskWidth); 256 pMaskDict->SetIntegerFor("Width", maskWidth);
257 pMaskDict->SetAtInteger("Height", maskHeight); 257 pMaskDict->SetIntegerFor("Height", maskHeight);
258 pMaskDict->SetAtName("ColorSpace", "DeviceGray"); 258 pMaskDict->SetNameFor("ColorSpace", "DeviceGray");
259 pMaskDict->SetAtInteger("BitsPerComponent", 8); 259 pMaskDict->SetIntegerFor("BitsPerComponent", 8);
260 if (pMaskBitmap->GetBPP() == 8 && 260 if (pMaskBitmap->GetBPP() == 8 &&
261 (iCompress & PDF_IMAGE_MASK_LOSSY_COMPRESS) != 0) { 261 (iCompress & PDF_IMAGE_MASK_LOSSY_COMPRESS) != 0) {
262 } else if (pMaskBitmap->GetFormat() == FXDIB_1bppMask) { 262 } else if (pMaskBitmap->GetFormat() == FXDIB_1bppMask) {
263 } else { 263 } else {
264 mask_buf = FX_Alloc2D(uint8_t, maskHeight, maskWidth); 264 mask_buf = FX_Alloc2D(uint8_t, maskHeight, maskWidth);
265 mask_size = maskHeight * maskWidth; // Safe since checked alloc returned. 265 mask_size = maskHeight * maskWidth; // Safe since checked alloc returned.
266 for (int32_t a = 0; a < maskHeight; a++) { 266 for (int32_t a = 0; a < maskHeight; a++) {
267 FXSYS_memcpy(mask_buf + a * maskWidth, pMaskBitmap->GetScanline(a), 267 FXSYS_memcpy(mask_buf + a * maskWidth, pMaskBitmap->GetScanline(a),
268 maskWidth); 268 maskWidth);
269 } 269 }
270 } 270 }
271 pMaskDict->SetAtInteger("Length", mask_size); 271 pMaskDict->SetIntegerFor("Length", mask_size);
272 272
273 CPDF_Stream* pMaskStream = new CPDF_Stream(mask_buf, mask_size, pMaskDict); 273 CPDF_Stream* pMaskStream = new CPDF_Stream(mask_buf, mask_size, pMaskDict);
274 m_pDocument->AddIndirectObject(pMaskStream); 274 m_pDocument->AddIndirectObject(pMaskStream);
275 pDict->SetAtReference("SMask", m_pDocument, pMaskStream); 275 pDict->SetReferenceFor("SMask", m_pDocument, pMaskStream);
276 if (bDeleteMask) { 276 if (bDeleteMask) {
277 delete pMaskBitmap; 277 delete pMaskBitmap;
278 } 278 }
279 } 279 }
280 if (opType == 0) { 280 if (opType == 0) {
281 if (iCompress & PDF_IMAGE_LOSSLESS_COMPRESS) { 281 if (iCompress & PDF_IMAGE_LOSSLESS_COMPRESS) {
282 } else { 282 } else {
283 if (pBitmap->GetBPP() == 1) { 283 if (pBitmap->GetBPP() == 1) {
284 } else if (pBitmap->GetBPP() >= 8 && pBitmap->GetPalette()) { 284 } else if (pBitmap->GetBPP() >= 8 && pBitmap->GetPalette()) {
285 CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap(); 285 CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap();
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 } 400 }
401 if (!ret) { 401 if (!ret) {
402 delete m_pDIBSource; 402 delete m_pDIBSource;
403 m_pDIBSource = nullptr; 403 m_pDIBSource = nullptr;
404 return FALSE; 404 return FALSE;
405 } 405 }
406 m_pMask = pSource->DetachMask(); 406 m_pMask = pSource->DetachMask();
407 m_MatteColor = pSource->GetMatteColor(); 407 m_MatteColor = pSource->GetMatteColor();
408 return FALSE; 408 return FALSE;
409 } 409 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_page/cpdf_form.cpp ('k') | core/fpdfapi/fpdf_page/cpdf_meshstream.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698