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

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

Issue 1420583003: Revert "Revert "Add type cast definitions for CPDF_Dictionary."" (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 2 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 "../../../include/fpdfapi/fpdf_page.h" 7 #include "../../../include/fpdfapi/fpdf_page.h"
8 #include "../../../include/fpdfapi/fpdf_module.h" 8 #include "../../../include/fpdfapi/fpdf_module.h"
9 #include "../../../include/fpdfapi/fpdf_serial.h" 9 #include "../../../include/fpdfapi/fpdf_serial.h"
10 #include "pageint.h" 10 #include "pageint.h"
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 return; 411 return;
412 } 412 }
413 FX_BOOL bDirect = TRUE; 413 FX_BOOL bDirect = TRUE;
414 if (pProperty->GetType() == PDFOBJ_NAME) { 414 if (pProperty->GetType() == PDFOBJ_NAME) {
415 pProperty = FindResourceObj(FX_BSTRC("Properties"), pProperty->GetString()); 415 pProperty = FindResourceObj(FX_BSTRC("Properties"), pProperty->GetString());
416 if (pProperty == NULL) { 416 if (pProperty == NULL) {
417 return; 417 return;
418 } 418 }
419 bDirect = FALSE; 419 bDirect = FALSE;
420 } 420 }
421 if (pProperty->GetType() != PDFOBJ_DICTIONARY) { 421 if (CPDF_Dictionary* pDict = pProperty->AsDictionary()) {
422 return; 422 m_CurContentMark.GetModify()->AddMark(tag, pDict, bDirect);
423 } 423 }
424 m_CurContentMark.GetModify()->AddMark(tag, (CPDF_Dictionary*)pProperty,
425 bDirect);
426 } 424 }
427 void CPDF_StreamContentParser::Handle_BeginMarkedContent() { 425 void CPDF_StreamContentParser::Handle_BeginMarkedContent() {
428 if (!m_Options.m_bMarkedContent) { 426 if (!m_Options.m_bMarkedContent) {
429 return; 427 return;
430 } 428 }
431 CFX_ByteString tag = GetString(0); 429 CFX_ByteString tag = GetString(0);
432 m_CurContentMark.GetModify()->AddMark(tag, NULL, FALSE); 430 m_CurContentMark.GetModify()->AddMark(tag, NULL, FALSE);
433 } 431 }
434 struct _FX_BSTR { 432 struct _FX_BSTR {
435 const FX_CHAR* m_Ptr; 433 const FX_CHAR* m_Ptr;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 0) { 478 0) {
481 return CFX_ByteStringC(table[i].m_Ptr, table[i].m_Size); 479 return CFX_ByteStringC(table[i].m_Ptr, table[i].m_Size);
482 } 480 }
483 i += 2; 481 i += 2;
484 } 482 }
485 return CFX_ByteStringC(); 483 return CFX_ByteStringC();
486 } 484 }
487 void _PDF_ReplaceAbbr(CPDF_Object* pObj) { 485 void _PDF_ReplaceAbbr(CPDF_Object* pObj) {
488 switch (pObj->GetType()) { 486 switch (pObj->GetType()) {
489 case PDFOBJ_DICTIONARY: { 487 case PDFOBJ_DICTIONARY: {
490 CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj; 488 CPDF_Dictionary* pDict = pObj->AsDictionary();
491 FX_POSITION pos = pDict->GetStartPos(); 489 FX_POSITION pos = pDict->GetStartPos();
492 while (pos) { 490 while (pos) {
493 CFX_ByteString key; 491 CFX_ByteString key;
494 CPDF_Object* value = pDict->GetNextElement(pos, key); 492 CPDF_Object* value = pDict->GetNextElement(pos, key);
495 CFX_ByteStringC fullname = _PDF_FindFullName( 493 CFX_ByteStringC fullname = _PDF_FindFullName(
496 _PDF_InlineKeyAbbr, sizeof _PDF_InlineKeyAbbr / sizeof(_FX_BSTR), 494 _PDF_InlineKeyAbbr, sizeof _PDF_InlineKeyAbbr / sizeof(_FX_BSTR),
497 key); 495 key);
498 if (!fullname.IsEmpty()) { 496 if (!fullname.IsEmpty()) {
499 pDict->ReplaceKey(key, fullname); 497 pDict->ReplaceKey(key, fullname);
500 key = fullname; 498 key = fullname;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 0) { 541 0) {
544 return CFX_ByteStringC(table[i + 1].m_Ptr, table[i + 1].m_Size); 542 return CFX_ByteStringC(table[i + 1].m_Ptr, table[i + 1].m_Size);
545 } 543 }
546 i += 2; 544 i += 2;
547 } 545 }
548 return CFX_ByteStringC(); 546 return CFX_ByteStringC();
549 } 547 }
550 void _PDF_ReplaceFull(CPDF_Object* pObj) { 548 void _PDF_ReplaceFull(CPDF_Object* pObj) {
551 switch (pObj->GetType()) { 549 switch (pObj->GetType()) {
552 case PDFOBJ_DICTIONARY: { 550 case PDFOBJ_DICTIONARY: {
553 CPDF_Dictionary* pDict = (CPDF_Dictionary*)pObj; 551 CPDF_Dictionary* pDict = pObj->AsDictionary();
554 FX_POSITION pos = pDict->GetStartPos(); 552 FX_POSITION pos = pDict->GetStartPos();
555 while (pos) { 553 while (pos) {
556 CFX_ByteString key; 554 CFX_ByteString key;
557 CPDF_Object* value = pDict->GetNextElement(pos, key); 555 CPDF_Object* value = pDict->GetNextElement(pos, key);
558 CFX_ByteStringC abbrName = _PDF_FindAbbrName( 556 CFX_ByteStringC abbrName = _PDF_FindAbbrName(
559 _PDF_InlineKeyAbbr, sizeof(_PDF_InlineKeyAbbr) / sizeof(_FX_BSTR), 557 _PDF_InlineKeyAbbr, sizeof(_PDF_InlineKeyAbbr) / sizeof(_FX_BSTR),
560 key); 558 key);
561 if (!abbrName.IsEmpty()) { 559 if (!abbrName.IsEmpty()) {
562 pDict->ReplaceKey(key, abbrName); 560 pDict->ReplaceKey(key, abbrName);
563 key = abbrName; 561 key = abbrName;
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 m_pCurStates->m_ColorState.SetFillColor(pCS, &value, 1); 877 m_pCurStates->m_ColorState.SetFillColor(pCS, &value, 1);
880 } 878 }
881 void CPDF_StreamContentParser::Handle_SetGray_Stroke() { 879 void CPDF_StreamContentParser::Handle_SetGray_Stroke() {
882 FX_FLOAT value = GetNumber(0); 880 FX_FLOAT value = GetNumber(0);
883 CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); 881 CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY);
884 m_pCurStates->m_ColorState.SetStrokeColor(pCS, &value, 1); 882 m_pCurStates->m_ColorState.SetStrokeColor(pCS, &value, 1);
885 } 883 }
886 void CPDF_StreamContentParser::Handle_SetExtendGraphState() { 884 void CPDF_StreamContentParser::Handle_SetExtendGraphState() {
887 CFX_ByteString name = GetString(0); 885 CFX_ByteString name = GetString(0);
888 CPDF_Dictionary* pGS = 886 CPDF_Dictionary* pGS =
889 (CPDF_Dictionary*)FindResourceObj(FX_BSTRC("ExtGState"), name); 887 ToDictionary(FindResourceObj(FX_BSTRC("ExtGState"), name));
890 if (pGS == NULL || pGS->GetType() != PDFOBJ_DICTIONARY) { 888 if (!pGS) {
891 m_bResourceMissing = TRUE; 889 m_bResourceMissing = TRUE;
892 return; 890 return;
893 } 891 }
894 m_pCurStates->ProcessExtGS(pGS, this); 892 m_pCurStates->ProcessExtGS(pGS, this);
895 } 893 }
896 void CPDF_StreamContentParser::Handle_ClosePath() { 894 void CPDF_StreamContentParser::Handle_ClosePath() {
897 if (m_Options.m_bTextOnly) { 895 if (m_Options.m_bTextOnly) {
898 return; 896 return;
899 } 897 }
900 if (m_PathPointCount == 0) { 898 if (m_PathPointCount == 0) {
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
1210 return NULL; 1208 return NULL;
1211 } 1209 }
1212 CPDF_Object* pRes = pList->GetElementValue(name); 1210 CPDF_Object* pRes = pList->GetElementValue(name);
1213 return pRes; 1211 return pRes;
1214 } 1212 }
1215 CPDF_Object* pRes = pList->GetElementValue(name); 1213 CPDF_Object* pRes = pList->GetElementValue(name);
1216 return pRes; 1214 return pRes;
1217 } 1215 }
1218 CPDF_Font* CPDF_StreamContentParser::FindFont(const CFX_ByteString& name) { 1216 CPDF_Font* CPDF_StreamContentParser::FindFont(const CFX_ByteString& name) {
1219 CPDF_Dictionary* pFontDict = 1217 CPDF_Dictionary* pFontDict =
1220 (CPDF_Dictionary*)FindResourceObj(FX_BSTRC("Font"), name); 1218 ToDictionary(FindResourceObj(FX_BSTRC("Font"), name));
1221 if (pFontDict == NULL || pFontDict->GetType() != PDFOBJ_DICTIONARY) { 1219 if (!pFontDict) {
1222 m_bResourceMissing = TRUE; 1220 m_bResourceMissing = TRUE;
1223 return CPDF_Font::GetStockFont(m_pDocument, FX_BSTRC("Helvetica")); 1221 return CPDF_Font::GetStockFont(m_pDocument, FX_BSTRC("Helvetica"));
1224 } 1222 }
1223
1225 CPDF_Font* pFont = m_pDocument->LoadFont(pFontDict); 1224 CPDF_Font* pFont = m_pDocument->LoadFont(pFontDict);
1226 if (pFont && pFont->GetType3Font()) { 1225 if (pFont && pFont->GetType3Font()) {
1227 pFont->GetType3Font()->SetPageResources(m_pResources); 1226 pFont->GetType3Font()->SetPageResources(m_pResources);
1228 pFont->GetType3Font()->CheckType3FontMetrics(); 1227 pFont->GetType3Font()->CheckType3FontMetrics();
1229 } 1228 }
1230 return pFont; 1229 return pFont;
1231 } 1230 }
1232 CPDF_ColorSpace* CPDF_StreamContentParser::FindColorSpace( 1231 CPDF_ColorSpace* CPDF_StreamContentParser::FindColorSpace(
1233 const CFX_ByteString& name) { 1232 const CFX_ByteString& name) {
1234 if (name == FX_BSTRC("Pattern")) { 1233 if (name == FX_BSTRC("Pattern")) {
(...skipping 19 matching lines...) Expand all
1254 if (pCSObj == NULL) { 1253 if (pCSObj == NULL) {
1255 m_bResourceMissing = TRUE; 1254 m_bResourceMissing = TRUE;
1256 return NULL; 1255 return NULL;
1257 } 1256 }
1258 return m_pDocument->LoadColorSpace(pCSObj); 1257 return m_pDocument->LoadColorSpace(pCSObj);
1259 } 1258 }
1260 CPDF_Pattern* CPDF_StreamContentParser::FindPattern(const CFX_ByteString& name, 1259 CPDF_Pattern* CPDF_StreamContentParser::FindPattern(const CFX_ByteString& name,
1261 FX_BOOL bShading) { 1260 FX_BOOL bShading) {
1262 CPDF_Object* pPattern = FindResourceObj( 1261 CPDF_Object* pPattern = FindResourceObj(
1263 bShading ? FX_BSTRC("Shading") : FX_BSTRC("Pattern"), name); 1262 bShading ? FX_BSTRC("Shading") : FX_BSTRC("Pattern"), name);
1264 if (pPattern == NULL || (pPattern->GetType() != PDFOBJ_DICTIONARY && 1263 if (pPattern == NULL ||
1265 pPattern->GetType() != PDFOBJ_STREAM)) { 1264 (!pPattern->IsDictionary() && pPattern->GetType() != PDFOBJ_STREAM)) {
1266 m_bResourceMissing = TRUE; 1265 m_bResourceMissing = TRUE;
1267 return NULL; 1266 return NULL;
1268 } 1267 }
1269 return m_pDocument->LoadPattern(pPattern, bShading, 1268 return m_pDocument->LoadPattern(pPattern, bShading,
1270 &m_pCurStates->m_ParentMatrix); 1269 &m_pCurStates->m_ParentMatrix);
1271 } 1270 }
1272 void CPDF_StreamContentParser::ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y) { 1271 void CPDF_StreamContentParser::ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y) {
1273 m_pCurStates->m_TextMatrix.Transform(x, y, x, y); 1272 m_pCurStates->m_TextMatrix.Transform(x, y, x, y);
1274 ConvertUserSpace(x, y); 1273 ConvertUserSpace(x, y);
1275 } 1274 }
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1587 buf.AppendChar((char)code); 1586 buf.AppendChar((char)code);
1588 } 1587 }
1589 bFirst = !bFirst; 1588 bFirst = !bFirst;
1590 } 1589 }
1591 } 1590 }
1592 if (!bFirst) { 1591 if (!bFirst) {
1593 buf.AppendChar((char)code); 1592 buf.AppendChar((char)code);
1594 } 1593 }
1595 return buf.GetByteString(); 1594 return buf.GetByteString();
1596 } 1595 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp ('k') | core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698