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 #include "core/fpdfapi/fpdf_page/pageint.h" | 7 #include "core/fpdfapi/fpdf_page/pageint.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <set> | 10 #include <set> |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 continue; | 178 continue; |
179 | 179 |
180 CPDF_Type1Font* pT1Font = pFont->AsType1Font(); | 180 CPDF_Type1Font* pT1Font = pFont->AsType1Font(); |
181 if (pEncoding && !pT1Font->GetEncoding()->IsIdentical(pEncoding)) | 181 if (pEncoding && !pT1Font->GetEncoding()->IsIdentical(pEncoding)) |
182 continue; | 182 continue; |
183 | 183 |
184 return fontData->AddRef(); | 184 return fontData->AddRef(); |
185 } | 185 } |
186 | 186 |
187 CPDF_Dictionary* pDict = new CPDF_Dictionary; | 187 CPDF_Dictionary* pDict = new CPDF_Dictionary; |
188 pDict->SetAtName("Type", "Font"); | 188 pDict->SetNameFor("Type", "Font"); |
189 pDict->SetAtName("Subtype", "Type1"); | 189 pDict->SetNameFor("Subtype", "Type1"); |
190 pDict->SetAtName("BaseFont", fontName); | 190 pDict->SetNameFor("BaseFont", fontName); |
191 if (pEncoding) { | 191 if (pEncoding) { |
192 pDict->SetAt("Encoding", pEncoding->Realize()); | 192 pDict->SetFor("Encoding", pEncoding->Realize()); |
193 } | 193 } |
194 m_pPDFDoc->AddIndirectObject(pDict); | 194 m_pPDFDoc->AddIndirectObject(pDict); |
195 CPDF_Font* pFont = CPDF_Font::CreateFontF(m_pPDFDoc, pDict); | 195 CPDF_Font* pFont = CPDF_Font::CreateFontF(m_pPDFDoc, pDict); |
196 if (!pFont) { | 196 if (!pFont) { |
197 return nullptr; | 197 return nullptr; |
198 } | 198 } |
199 CPDF_CountedFont* fontData = new CPDF_CountedFont(pFont); | 199 CPDF_CountedFont* fontData = new CPDF_CountedFont(pFont); |
200 m_FontMap[pDict] = fontData; | 200 m_FontMap[pDict] = fontData; |
201 return fontData->AddRef(); | 201 return fontData->AddRef(); |
202 } | 202 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 if (!pCSObj) | 234 if (!pCSObj) |
235 return nullptr; | 235 return nullptr; |
236 | 236 |
237 if (pdfium::ContainsKey(*pVisited, pCSObj)) | 237 if (pdfium::ContainsKey(*pVisited, pCSObj)) |
238 return nullptr; | 238 return nullptr; |
239 | 239 |
240 if (pCSObj->IsName()) { | 240 if (pCSObj->IsName()) { |
241 CFX_ByteString name = pCSObj->GetString(); | 241 CFX_ByteString name = pCSObj->GetString(); |
242 CPDF_ColorSpace* pCS = CPDF_ColorSpace::ColorspaceFromName(name); | 242 CPDF_ColorSpace* pCS = CPDF_ColorSpace::ColorspaceFromName(name); |
243 if (!pCS && pResources) { | 243 if (!pCS && pResources) { |
244 CPDF_Dictionary* pList = pResources->GetDictBy("ColorSpace"); | 244 CPDF_Dictionary* pList = pResources->GetDictFor("ColorSpace"); |
245 if (pList) { | 245 if (pList) { |
246 pdfium::ScopedSetInsertion<CPDF_Object*> insertion(pVisited, pCSObj); | 246 pdfium::ScopedSetInsertion<CPDF_Object*> insertion(pVisited, pCSObj); |
247 return GetColorSpaceImpl(pList->GetDirectObjectBy(name), nullptr, | 247 return GetColorSpaceImpl(pList->GetDirectObjectFor(name), nullptr, |
248 pVisited); | 248 pVisited); |
249 } | 249 } |
250 } | 250 } |
251 if (!pCS || !pResources) | 251 if (!pCS || !pResources) |
252 return pCS; | 252 return pCS; |
253 | 253 |
254 CPDF_Dictionary* pColorSpaces = pResources->GetDictBy("ColorSpace"); | 254 CPDF_Dictionary* pColorSpaces = pResources->GetDictFor("ColorSpace"); |
255 if (!pColorSpaces) | 255 if (!pColorSpaces) |
256 return pCS; | 256 return pCS; |
257 | 257 |
258 CPDF_Object* pDefaultCS = nullptr; | 258 CPDF_Object* pDefaultCS = nullptr; |
259 switch (pCS->GetFamily()) { | 259 switch (pCS->GetFamily()) { |
260 case PDFCS_DEVICERGB: | 260 case PDFCS_DEVICERGB: |
261 pDefaultCS = pColorSpaces->GetDirectObjectBy("DefaultRGB"); | 261 pDefaultCS = pColorSpaces->GetDirectObjectFor("DefaultRGB"); |
262 break; | 262 break; |
263 case PDFCS_DEVICEGRAY: | 263 case PDFCS_DEVICEGRAY: |
264 pDefaultCS = pColorSpaces->GetDirectObjectBy("DefaultGray"); | 264 pDefaultCS = pColorSpaces->GetDirectObjectFor("DefaultGray"); |
265 break; | 265 break; |
266 case PDFCS_DEVICECMYK: | 266 case PDFCS_DEVICECMYK: |
267 pDefaultCS = pColorSpaces->GetDirectObjectBy("DefaultCMYK"); | 267 pDefaultCS = pColorSpaces->GetDirectObjectFor("DefaultCMYK"); |
268 break; | 268 break; |
269 } | 269 } |
270 if (!pDefaultCS) | 270 if (!pDefaultCS) |
271 return pCS; | 271 return pCS; |
272 | 272 |
273 pdfium::ScopedSetInsertion<CPDF_Object*> insertion(pVisited, pCSObj); | 273 pdfium::ScopedSetInsertion<CPDF_Object*> insertion(pVisited, pCSObj); |
274 return GetColorSpaceImpl(pDefaultCS, nullptr, pVisited); | 274 return GetColorSpaceImpl(pDefaultCS, nullptr, pVisited); |
275 } | 275 } |
276 | 276 |
277 CPDF_Array* pArray = pCSObj->AsArray(); | 277 CPDF_Array* pArray = pCSObj->AsArray(); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 if (ptData->get()) { | 350 if (ptData->get()) { |
351 return ptData->AddRef(); | 351 return ptData->AddRef(); |
352 } | 352 } |
353 } | 353 } |
354 CPDF_Pattern* pPattern = nullptr; | 354 CPDF_Pattern* pPattern = nullptr; |
355 if (bShading) { | 355 if (bShading) { |
356 pPattern = new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, TRUE, matrix); | 356 pPattern = new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, TRUE, matrix); |
357 } else { | 357 } else { |
358 CPDF_Dictionary* pDict = pPatternObj ? pPatternObj->GetDict() : nullptr; | 358 CPDF_Dictionary* pDict = pPatternObj ? pPatternObj->GetDict() : nullptr; |
359 if (pDict) { | 359 if (pDict) { |
360 int type = pDict->GetIntegerBy("PatternType"); | 360 int type = pDict->GetIntegerFor("PatternType"); |
361 if (type == CPDF_Pattern::TILING) { | 361 if (type == CPDF_Pattern::TILING) { |
362 pPattern = new CPDF_TilingPattern(m_pPDFDoc, pPatternObj, matrix); | 362 pPattern = new CPDF_TilingPattern(m_pPDFDoc, pPatternObj, matrix); |
363 } else if (type == CPDF_Pattern::SHADING) { | 363 } else if (type == CPDF_Pattern::SHADING) { |
364 pPattern = | 364 pPattern = |
365 new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, FALSE, matrix); | 365 new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, FALSE, matrix); |
366 } | 366 } |
367 } | 367 } |
368 } | 368 } |
369 if (!pPattern) | 369 if (!pPattern) |
370 return nullptr; | 370 return nullptr; |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 | 484 |
485 CPDF_StreamAcc* CPDF_DocPageData::GetFontFileStreamAcc( | 485 CPDF_StreamAcc* CPDF_DocPageData::GetFontFileStreamAcc( |
486 CPDF_Stream* pFontStream) { | 486 CPDF_Stream* pFontStream) { |
487 ASSERT(pFontStream); | 487 ASSERT(pFontStream); |
488 | 488 |
489 auto it = m_FontFileMap.find(pFontStream); | 489 auto it = m_FontFileMap.find(pFontStream); |
490 if (it != m_FontFileMap.end()) | 490 if (it != m_FontFileMap.end()) |
491 return it->second->AddRef(); | 491 return it->second->AddRef(); |
492 | 492 |
493 CPDF_Dictionary* pFontDict = pFontStream->GetDict(); | 493 CPDF_Dictionary* pFontDict = pFontStream->GetDict(); |
494 int32_t org_size = pFontDict->GetIntegerBy("Length1") + | 494 int32_t org_size = pFontDict->GetIntegerFor("Length1") + |
495 pFontDict->GetIntegerBy("Length2") + | 495 pFontDict->GetIntegerFor("Length2") + |
496 pFontDict->GetIntegerBy("Length3"); | 496 pFontDict->GetIntegerFor("Length3"); |
497 org_size = std::max(org_size, 0); | 497 org_size = std::max(org_size, 0); |
498 | 498 |
499 CPDF_StreamAcc* pFontFile = new CPDF_StreamAcc; | 499 CPDF_StreamAcc* pFontFile = new CPDF_StreamAcc; |
500 pFontFile->LoadAllData(pFontStream, FALSE, org_size); | 500 pFontFile->LoadAllData(pFontStream, FALSE, org_size); |
501 | 501 |
502 CPDF_CountedStreamAcc* pCountedFont = new CPDF_CountedStreamAcc(pFontFile); | 502 CPDF_CountedStreamAcc* pCountedFont = new CPDF_CountedStreamAcc(pFontFile); |
503 m_FontFileMap[pFontStream] = pCountedFont; | 503 m_FontFileMap[pFontStream] = pCountedFont; |
504 return pCountedFont->AddRef(); | 504 return pCountedFont->AddRef(); |
505 } | 505 } |
506 | 506 |
(...skipping 29 matching lines...) Expand all Loading... |
536 } | 536 } |
537 | 537 |
538 CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr( | 538 CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr( |
539 CPDF_Object* pPatternObj) const { | 539 CPDF_Object* pPatternObj) const { |
540 if (!pPatternObj) | 540 if (!pPatternObj) |
541 return nullptr; | 541 return nullptr; |
542 | 542 |
543 auto it = m_PatternMap.find(pPatternObj); | 543 auto it = m_PatternMap.find(pPatternObj); |
544 return it != m_PatternMap.end() ? it->second : nullptr; | 544 return it != m_PatternMap.end() ? it->second : nullptr; |
545 } | 545 } |
OLD | NEW |