| 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/src/fpdfapi/fpdf_page/pageint.h" | 7 #include "core/src/fpdfapi/fpdf_page/pageint.h" |
| 8 | 8 |
| 9 #include "core/include/fpdfapi/fpdf_module.h" | 9 #include "core/include/fpdfapi/fpdf_module.h" |
| 10 #include "core/include/fpdfapi/fpdf_page.h" | 10 #include "core/include/fpdfapi/fpdf_page.h" |
| (...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 if (name == m_LastImageName && m_pLastImage && m_pLastImage->GetStream() && | 701 if (name == m_LastImageName && m_pLastImage && m_pLastImage->GetStream() && |
| 702 m_pLastImage->GetStream()->GetObjNum()) { | 702 m_pLastImage->GetStream()->GetObjNum()) { |
| 703 AddImage(nullptr, m_pLastImage, FALSE); | 703 AddImage(nullptr, m_pLastImage, FALSE); |
| 704 return; | 704 return; |
| 705 } | 705 } |
| 706 | 706 |
| 707 if (m_Options.m_bTextOnly) { | 707 if (m_Options.m_bTextOnly) { |
| 708 if (!m_pResources) | 708 if (!m_pResources) |
| 709 return; | 709 return; |
| 710 | 710 |
| 711 CPDF_Dictionary* pList = m_pResources->GetDict("XObject"); | 711 CPDF_Dictionary* pList = m_pResources->GetDictBy("XObject"); |
| 712 if (!pList && m_pPageResources && m_pResources != m_pPageResources) | 712 if (!pList && m_pPageResources && m_pResources != m_pPageResources) |
| 713 pList = m_pPageResources->GetDict("XObject"); | 713 pList = m_pPageResources->GetDictBy("XObject"); |
| 714 if (!pList) | 714 if (!pList) |
| 715 return; | 715 return; |
| 716 CPDF_Reference* pRes = ToReference(pList->GetElement(name)); | 716 CPDF_Reference* pRes = ToReference(pList->GetElement(name)); |
| 717 if (!pRes) | 717 if (!pRes) |
| 718 return; | 718 return; |
| 719 | 719 |
| 720 FX_BOOL bForm; | 720 FX_BOOL bForm; |
| 721 if (m_pDocument->IsFormStream(pRes->GetRefObjNum(), bForm) && !bForm) | 721 if (m_pDocument->IsFormStream(pRes->GetRefObjNum(), bForm) && !bForm) |
| 722 return; | 722 return; |
| 723 } | 723 } |
| 724 | 724 |
| 725 CPDF_Stream* pXObject = ToStream(FindResourceObj("XObject", name)); | 725 CPDF_Stream* pXObject = ToStream(FindResourceObj("XObject", name)); |
| 726 if (!pXObject) { | 726 if (!pXObject) { |
| 727 m_bResourceMissing = TRUE; | 727 m_bResourceMissing = TRUE; |
| 728 return; | 728 return; |
| 729 } | 729 } |
| 730 | 730 |
| 731 CFX_ByteStringC type = pXObject->GetDict() | 731 CFX_ByteStringC type = pXObject->GetDict() |
| 732 ? pXObject->GetDict()->GetConstString("Subtype") | 732 ? pXObject->GetDict()->GetConstStringBy("Subtype") |
| 733 : CFX_ByteStringC(); | 733 : CFX_ByteStringC(); |
| 734 if (type == "Image") { | 734 if (type == "Image") { |
| 735 if (m_Options.m_bTextOnly) { | 735 if (m_Options.m_bTextOnly) { |
| 736 return; | 736 return; |
| 737 } | 737 } |
| 738 CPDF_ImageObject* pObj = AddImage(pXObject, NULL, FALSE); | 738 CPDF_ImageObject* pObj = AddImage(pXObject, NULL, FALSE); |
| 739 m_LastImageName = name; | 739 m_LastImageName = name; |
| 740 m_pLastImage = pObj->m_pImage; | 740 m_pLastImage = pObj->m_pImage; |
| 741 if (!m_pObjectList->HasImageMask()) | 741 if (!m_pObjectList->HasImageMask()) |
| 742 m_pObjectList->SetHasImageMask(m_pLastImage->IsMask()); | 742 m_pObjectList->SetHasImageMask(m_pLastImage->IsMask()); |
| 743 } else if (type == "Form") { | 743 } else if (type == "Form") { |
| 744 AddForm(pXObject); | 744 AddForm(pXObject); |
| 745 } else { | 745 } else { |
| 746 return; | 746 return; |
| 747 } | 747 } |
| 748 } | 748 } |
| 749 | 749 |
| 750 void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) { | 750 void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) { |
| 751 if (!m_Options.m_bSeparateForm) { | 751 if (!m_Options.m_bSeparateForm) { |
| 752 CPDF_Dictionary* pResources = pStream->GetDict()->GetDict("Resources"); | 752 CPDF_Dictionary* pResources = pStream->GetDict()->GetDictBy("Resources"); |
| 753 CFX_Matrix form_matrix = pStream->GetDict()->GetMatrix("Matrix"); | 753 CFX_Matrix form_matrix = pStream->GetDict()->GetMatrixBy("Matrix"); |
| 754 form_matrix.Concat(m_pCurStates->m_CTM); | 754 form_matrix.Concat(m_pCurStates->m_CTM); |
| 755 CPDF_Array* pBBox = pStream->GetDict()->GetArray("BBox"); | 755 CPDF_Array* pBBox = pStream->GetDict()->GetArrayBy("BBox"); |
| 756 CFX_FloatRect form_bbox; | 756 CFX_FloatRect form_bbox; |
| 757 CPDF_Path ClipPath; | 757 CPDF_Path ClipPath; |
| 758 if (pBBox) { | 758 if (pBBox) { |
| 759 form_bbox = pStream->GetDict()->GetRect("BBox"); | 759 form_bbox = pStream->GetDict()->GetRectBy("BBox"); |
| 760 ClipPath.New(); | 760 ClipPath.New(); |
| 761 ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right, | 761 ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right, |
| 762 form_bbox.top); | 762 form_bbox.top); |
| 763 ClipPath.Transform(&form_matrix); | 763 ClipPath.Transform(&form_matrix); |
| 764 form_bbox.Transform(&form_matrix); | 764 form_bbox.Transform(&form_matrix); |
| 765 } | 765 } |
| 766 CPDF_StreamContentParser parser(m_pDocument, m_pPageResources, m_pResources, | 766 CPDF_StreamContentParser parser(m_pDocument, m_pPageResources, m_pResources, |
| 767 &m_mtContentToUser, m_pObjectList, | 767 &m_mtContentToUser, m_pObjectList, |
| 768 pResources, &form_bbox, &m_Options, | 768 pResources, &form_bbox, &m_Options, |
| 769 m_pCurStates.get(), m_Level + 1); | 769 m_pCurStates.get(), m_Level + 1); |
| (...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1242 } | 1242 } |
| 1243 } | 1243 } |
| 1244 | 1244 |
| 1245 CPDF_Object* CPDF_StreamContentParser::FindResourceObj( | 1245 CPDF_Object* CPDF_StreamContentParser::FindResourceObj( |
| 1246 const CFX_ByteStringC& type, | 1246 const CFX_ByteStringC& type, |
| 1247 const CFX_ByteString& name) { | 1247 const CFX_ByteString& name) { |
| 1248 if (!m_pResources) { | 1248 if (!m_pResources) { |
| 1249 return NULL; | 1249 return NULL; |
| 1250 } | 1250 } |
| 1251 if (m_pResources == m_pPageResources) { | 1251 if (m_pResources == m_pPageResources) { |
| 1252 CPDF_Dictionary* pList = m_pResources->GetDict(type); | 1252 CPDF_Dictionary* pList = m_pResources->GetDictBy(type); |
| 1253 if (!pList) { | 1253 if (!pList) { |
| 1254 return NULL; | 1254 return NULL; |
| 1255 } | 1255 } |
| 1256 CPDF_Object* pRes = pList->GetElementValue(name); | 1256 CPDF_Object* pRes = pList->GetElementValue(name); |
| 1257 return pRes; | 1257 return pRes; |
| 1258 } | 1258 } |
| 1259 CPDF_Dictionary* pList = m_pResources->GetDict(type); | 1259 CPDF_Dictionary* pList = m_pResources->GetDictBy(type); |
| 1260 if (!pList) { | 1260 if (!pList) { |
| 1261 if (!m_pPageResources) { | 1261 if (!m_pPageResources) { |
| 1262 return NULL; | 1262 return NULL; |
| 1263 } | 1263 } |
| 1264 CPDF_Dictionary* pList = m_pPageResources->GetDict(type); | 1264 CPDF_Dictionary* pList = m_pPageResources->GetDictBy(type); |
| 1265 if (!pList) { | 1265 if (!pList) { |
| 1266 return NULL; | 1266 return NULL; |
| 1267 } | 1267 } |
| 1268 CPDF_Object* pRes = pList->GetElementValue(name); | 1268 CPDF_Object* pRes = pList->GetElementValue(name); |
| 1269 return pRes; | 1269 return pRes; |
| 1270 } | 1270 } |
| 1271 CPDF_Object* pRes = pList->GetElementValue(name); | 1271 CPDF_Object* pRes = pList->GetElementValue(name); |
| 1272 return pRes; | 1272 return pRes; |
| 1273 } | 1273 } |
| 1274 | 1274 |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1420 } | 1420 } |
| 1421 int n = pArray->GetCount(); | 1421 int n = pArray->GetCount(); |
| 1422 int nsegs = 0; | 1422 int nsegs = 0; |
| 1423 for (int i = 0; i < n; i++) { | 1423 for (int i = 0; i < n; i++) { |
| 1424 if (pArray->GetElementValue(i)->IsString()) | 1424 if (pArray->GetElementValue(i)->IsString()) |
| 1425 nsegs++; | 1425 nsegs++; |
| 1426 } | 1426 } |
| 1427 if (nsegs == 0) { | 1427 if (nsegs == 0) { |
| 1428 for (int i = 0; i < n; i++) { | 1428 for (int i = 0; i < n; i++) { |
| 1429 m_pCurStates->m_TextX -= | 1429 m_pCurStates->m_TextX -= |
| 1430 FXSYS_Mul(pArray->GetNumber(i), | 1430 FXSYS_Mul(pArray->GetNumberAt(i), |
| 1431 m_pCurStates->m_TextState.GetFontSize()) / | 1431 m_pCurStates->m_TextState.GetFontSize()) / |
| 1432 1000; | 1432 1000; |
| 1433 } | 1433 } |
| 1434 return; | 1434 return; |
| 1435 } | 1435 } |
| 1436 CFX_ByteString* pStrs = new CFX_ByteString[nsegs]; | 1436 CFX_ByteString* pStrs = new CFX_ByteString[nsegs]; |
| 1437 FX_FLOAT* pKerning = FX_Alloc(FX_FLOAT, nsegs); | 1437 FX_FLOAT* pKerning = FX_Alloc(FX_FLOAT, nsegs); |
| 1438 int iSegment = 0; | 1438 int iSegment = 0; |
| 1439 FX_FLOAT fInitKerning = 0; | 1439 FX_FLOAT fInitKerning = 0; |
| 1440 for (int i = 0; i < n; i++) { | 1440 for (int i = 0; i < n; i++) { |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1813 } else { | 1813 } else { |
| 1814 PDF_ReplaceAbbr(pElement); | 1814 PDF_ReplaceAbbr(pElement); |
| 1815 } | 1815 } |
| 1816 } | 1816 } |
| 1817 break; | 1817 break; |
| 1818 } | 1818 } |
| 1819 default: | 1819 default: |
| 1820 break; | 1820 break; |
| 1821 } | 1821 } |
| 1822 } | 1822 } |
| OLD | NEW |