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

Side by Side Diff: core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp

Issue 1541703003: Use std::map as CPDF_Dictionary's underlying store. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: XFA still uses CFX_CMapByteStringToPtr :( Created 4 years, 12 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
OLDNEW
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 "pageint.h" 7 #include "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 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 return CFX_ByteStringC(table[i].m_Ptr, table[i].m_Size); 481 return CFX_ByteStringC(table[i].m_Ptr, table[i].m_Size);
482 } 482 }
483 i += 2; 483 i += 2;
484 } 484 }
485 return CFX_ByteStringC(); 485 return CFX_ByteStringC();
486 } 486 }
487 void _PDF_ReplaceAbbr(CPDF_Object* pObj) { 487 void _PDF_ReplaceAbbr(CPDF_Object* pObj) {
488 switch (pObj->GetType()) { 488 switch (pObj->GetType()) {
489 case PDFOBJ_DICTIONARY: { 489 case PDFOBJ_DICTIONARY: {
490 CPDF_Dictionary* pDict = pObj->AsDictionary(); 490 CPDF_Dictionary* pDict = pObj->AsDictionary();
491 FX_POSITION pos = pDict->GetStartPos(); 491 for (const auto& it : *pDict) {
492 while (pos) { 492 CFX_ByteString key = it.first;
493 CFX_ByteString key; 493 CPDF_Object* value = it.second;
494 CPDF_Object* value = pDict->GetNextElement(pos, key);
495 CFX_ByteStringC fullname = _PDF_FindFullName( 494 CFX_ByteStringC fullname = _PDF_FindFullName(
496 _PDF_InlineKeyAbbr, sizeof _PDF_InlineKeyAbbr / sizeof(_FX_BSTR), 495 _PDF_InlineKeyAbbr, sizeof _PDF_InlineKeyAbbr / sizeof(_FX_BSTR),
497 key); 496 key);
498 if (!fullname.IsEmpty()) { 497 if (!fullname.IsEmpty()) {
499 pDict->ReplaceKey(key, fullname); 498 pDict->ReplaceKey(key, fullname);
500 key = fullname; 499 key = fullname;
501 } 500 }
502 501
503 if (value->IsName()) { 502 if (value->IsName()) {
504 CFX_ByteString name = value->GetString(); 503 CFX_ByteString name = value->GetString();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 return CFX_ByteStringC(table[i + 1].m_Ptr, table[i + 1].m_Size); 544 return CFX_ByteStringC(table[i + 1].m_Ptr, table[i + 1].m_Size);
546 } 545 }
547 i += 2; 546 i += 2;
548 } 547 }
549 return CFX_ByteStringC(); 548 return CFX_ByteStringC();
550 } 549 }
551 void _PDF_ReplaceFull(CPDF_Object* pObj) { 550 void _PDF_ReplaceFull(CPDF_Object* pObj) {
552 switch (pObj->GetType()) { 551 switch (pObj->GetType()) {
553 case PDFOBJ_DICTIONARY: { 552 case PDFOBJ_DICTIONARY: {
554 CPDF_Dictionary* pDict = pObj->AsDictionary(); 553 CPDF_Dictionary* pDict = pObj->AsDictionary();
555 FX_POSITION pos = pDict->GetStartPos(); 554 for (const auto& it : *pDict) {
556 while (pos) { 555 CFX_ByteString key = it.first;
557 CFX_ByteString key; 556 CPDF_Object* value = it.second;
558 CPDF_Object* value = pDict->GetNextElement(pos, key);
559 CFX_ByteStringC abbrName = _PDF_FindAbbrName( 557 CFX_ByteStringC abbrName = _PDF_FindAbbrName(
560 _PDF_InlineKeyAbbr, sizeof(_PDF_InlineKeyAbbr) / sizeof(_FX_BSTR), 558 _PDF_InlineKeyAbbr, sizeof(_PDF_InlineKeyAbbr) / sizeof(_FX_BSTR),
561 key); 559 key);
562 if (!abbrName.IsEmpty()) { 560 if (!abbrName.IsEmpty()) {
563 pDict->ReplaceKey(key, abbrName); 561 pDict->ReplaceKey(key, abbrName);
564 key = abbrName; 562 key = abbrName;
565 } 563 }
566 if (value->IsName()) { 564 if (value->IsName()) {
567 CFX_ByteString name = value->GetString(); 565 CFX_ByteString name = value->GetString();
568 abbrName = _PDF_FindAbbrName( 566 abbrName = _PDF_FindAbbrName(
(...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after
1518 m_pObjectList->m_ObjectList.AddTail(pPathObj); 1516 m_pObjectList->m_ObjectList.AddTail(pPathObj);
1519 } 1517 }
1520 if (PathClipType) { 1518 if (PathClipType) {
1521 if (!matrix.IsIdentity()) { 1519 if (!matrix.IsIdentity()) {
1522 Path.Transform(&matrix); 1520 Path.Transform(&matrix);
1523 matrix.SetIdentity(); 1521 matrix.SetIdentity();
1524 } 1522 }
1525 m_pCurStates->m_ClipPath.AppendPath(Path, PathClipType, TRUE); 1523 m_pCurStates->m_ClipPath.AppendPath(Path, PathClipType, TRUE);
1526 } 1524 }
1527 } 1525 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698