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 <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 1401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1412 return; | 1412 return; |
1413 } | 1413 } |
1414 AddTextObject(&str, 0, NULL, 1); | 1414 AddTextObject(&str, 0, NULL, 1); |
1415 } | 1415 } |
1416 | 1416 |
1417 void CPDF_StreamContentParser::Handle_ShowText_Positioning() { | 1417 void CPDF_StreamContentParser::Handle_ShowText_Positioning() { |
1418 CPDF_Array* pArray = GetObject(0) ? GetObject(0)->GetArray() : NULL; | 1418 CPDF_Array* pArray = GetObject(0) ? GetObject(0)->GetArray() : NULL; |
1419 if (!pArray) { | 1419 if (!pArray) { |
1420 return; | 1420 return; |
1421 } | 1421 } |
1422 int n = pArray->GetCount(); | 1422 size_t n = pArray->GetCount(); |
1423 int nsegs = 0; | 1423 size_t nsegs = 0; |
1424 for (int i = 0; i < n; i++) { | 1424 for (size_t i = 0; i < n; i++) { |
1425 if (pArray->GetDirectObjectAt(i)->IsString()) | 1425 if (pArray->GetDirectObjectAt(i)->IsString()) |
1426 nsegs++; | 1426 nsegs++; |
1427 } | 1427 } |
1428 if (nsegs == 0) { | 1428 if (nsegs == 0) { |
1429 for (int i = 0; i < n; i++) { | 1429 for (size_t i = 0; i < n; i++) { |
1430 m_pCurStates->m_TextX -= | 1430 m_pCurStates->m_TextX -= |
1431 (pArray->GetNumberAt(i) * m_pCurStates->m_TextState.GetFontSize()) / | 1431 (pArray->GetNumberAt(i) * 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 size_t iSegment = 0; |
1439 FX_FLOAT fInitKerning = 0; | 1439 FX_FLOAT fInitKerning = 0; |
1440 for (int i = 0; i < n; i++) { | 1440 for (size_t i = 0; i < n; i++) { |
1441 CPDF_Object* pObj = pArray->GetDirectObjectAt(i); | 1441 CPDF_Object* pObj = pArray->GetDirectObjectAt(i); |
1442 if (pObj->IsString()) { | 1442 if (pObj->IsString()) { |
1443 CFX_ByteString str = pObj->GetString(); | 1443 CFX_ByteString str = pObj->GetString(); |
1444 if (str.IsEmpty()) { | 1444 if (str.IsEmpty()) { |
1445 continue; | 1445 continue; |
1446 } | 1446 } |
1447 pStrs[iSegment] = str; | 1447 pStrs[iSegment] = str; |
1448 pKerning[iSegment++] = 0; | 1448 pKerning[iSegment++] = 0; |
1449 } else { | 1449 } else { |
1450 FX_FLOAT num = pObj ? pObj->GetNumber() : 0; | 1450 FX_FLOAT num = pObj ? pObj->GetNumber() : 0; |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1795 for (const auto& op : replacements) { | 1795 for (const auto& op : replacements) { |
1796 if (op.is_replace_key) | 1796 if (op.is_replace_key) |
1797 pDict->ReplaceKey(op.key.AsByteStringC(), op.replacement); | 1797 pDict->ReplaceKey(op.key.AsByteStringC(), op.replacement); |
1798 else | 1798 else |
1799 pDict->SetAtName(op.key.AsByteStringC(), op.replacement); | 1799 pDict->SetAtName(op.key.AsByteStringC(), op.replacement); |
1800 } | 1800 } |
1801 break; | 1801 break; |
1802 } | 1802 } |
1803 case CPDF_Object::ARRAY: { | 1803 case CPDF_Object::ARRAY: { |
1804 CPDF_Array* pArray = pObj->AsArray(); | 1804 CPDF_Array* pArray = pObj->AsArray(); |
1805 for (uint32_t i = 0; i < pArray->GetCount(); i++) { | 1805 for (size_t i = 0; i < pArray->GetCount(); i++) { |
1806 CPDF_Object* pElement = pArray->GetObjectAt(i); | 1806 CPDF_Object* pElement = pArray->GetObjectAt(i); |
1807 if (pElement->IsName()) { | 1807 if (pElement->IsName()) { |
1808 CFX_ByteString name = pElement->GetString(); | 1808 CFX_ByteString name = pElement->GetString(); |
1809 CFX_ByteStringC fullname = PDF_FindFullName( | 1809 CFX_ByteStringC fullname = PDF_FindFullName( |
1810 PDF_InlineValueAbbr, FX_ArraySize(PDF_InlineValueAbbr), | 1810 PDF_InlineValueAbbr, FX_ArraySize(PDF_InlineValueAbbr), |
1811 name.AsByteStringC()); | 1811 name.AsByteStringC()); |
1812 if (!fullname.IsEmpty()) { | 1812 if (!fullname.IsEmpty()) { |
1813 pArray->SetAt(i, new CPDF_Name(fullname)); | 1813 pArray->SetAt(i, new CPDF_Name(fullname)); |
1814 } | 1814 } |
1815 } else { | 1815 } else { |
1816 PDF_ReplaceAbbr(pElement); | 1816 PDF_ReplaceAbbr(pElement); |
1817 } | 1817 } |
1818 } | 1818 } |
1819 break; | 1819 break; |
1820 } | 1820 } |
1821 default: | 1821 default: |
1822 break; | 1822 break; |
1823 } | 1823 } |
1824 } | 1824 } |
OLD | NEW |