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

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

Issue 1417893003: Add type cast definitions for CPDF_Array. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 1 month 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/fxcodec/fx_codec.h" 9 #include "../../../include/fxcodec/fx_codec.h"
10 #include "pageint.h" 10 #include "pageint.h"
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 FX_BOOL bDecode) { 325 FX_BOOL bDecode) {
326 if (m_Pos == m_Size) { 326 if (m_Pos == m_Size) {
327 return NULL; 327 return NULL;
328 } 328 }
329 if (PDF_CharType[m_pBuf[m_Pos]] == 'W') { 329 if (PDF_CharType[m_pBuf[m_Pos]] == 'W') {
330 m_Pos++; 330 m_Pos++;
331 } 331 }
332 CFX_ByteString Decoder; 332 CFX_ByteString Decoder;
333 CPDF_Dictionary* pParam = NULL; 333 CPDF_Dictionary* pParam = NULL;
334 CPDF_Object* pFilter = pDict->GetElementValue(FX_BSTRC("Filter")); 334 CPDF_Object* pFilter = pDict->GetElementValue(FX_BSTRC("Filter"));
335 if (pFilter == NULL) { 335 if (pFilter) {
336 } else if (pFilter->GetType() == PDFOBJ_ARRAY) { 336 if (CPDF_Array* pArray = pFilter->AsArray()) {
337 Decoder = ((CPDF_Array*)pFilter)->GetString(0); 337 Decoder = pArray->GetString(0);
338 CPDF_Array* pParams = pDict->GetArray(FX_BSTRC("DecodeParms")); 338 CPDF_Array* pParams = pDict->GetArray(FX_BSTRC("DecodeParms"));
339 if (pParams) { 339 if (pParams)
340 pParam = pParams->GetDict(0); 340 pParam = pParams->GetDict(0);
341 } else {
342 Decoder = pFilter->GetString();
343 pParam = pDict->GetDict(FX_BSTRC("DecodeParms"));
341 } 344 }
342 } else {
343 Decoder = pFilter->GetString();
344 pParam = pDict->GetDict(FX_BSTRC("DecodeParms"));
345 } 345 }
346 FX_DWORD width = pDict->GetInteger(FX_BSTRC("Width")); 346 FX_DWORD width = pDict->GetInteger(FX_BSTRC("Width"));
347 FX_DWORD height = pDict->GetInteger(FX_BSTRC("Height")); 347 FX_DWORD height = pDict->GetInteger(FX_BSTRC("Height"));
348 FX_DWORD OrigSize = 0; 348 FX_DWORD OrigSize = 0;
349 if (pCSObj != NULL) { 349 if (pCSObj != NULL) {
350 FX_DWORD bpc = pDict->GetInteger(FX_BSTRC("BitsPerComponent")); 350 FX_DWORD bpc = pDict->GetInteger(FX_BSTRC("BitsPerComponent"));
351 FX_DWORD nComponents = 1; 351 FX_DWORD nComponents = 1;
352 CPDF_ColorSpace* pCS = pDoc->LoadColorSpace(pCSObj); 352 CPDF_ColorSpace* pCS = pDoc->LoadColorSpace(pCSObj);
353 if (pCS == NULL) { 353 if (pCS == NULL) {
354 nComponents = 3; 354 nComponents = 3;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 dwStreamSize = 396 dwStreamSize =
397 PDF_DecodeInlineStream(m_pBuf + m_Pos, m_Size - m_Pos, width, height, 397 PDF_DecodeInlineStream(m_pBuf + m_Pos, m_Size - m_Pos, width, height,
398 Decoder, pParam, pData, dwDestSize); 398 Decoder, pParam, pData, dwDestSize);
399 if ((int)dwStreamSize < 0) { 399 if ((int)dwStreamSize < 0) {
400 FX_Free(pData); 400 FX_Free(pData);
401 return NULL; 401 return NULL;
402 } 402 }
403 if (bDecode) { 403 if (bDecode) {
404 m_Pos += dwStreamSize; 404 m_Pos += dwStreamSize;
405 dwStreamSize = dwDestSize; 405 dwStreamSize = dwDestSize;
406 if (pFilter->GetType() == PDFOBJ_ARRAY) { 406 if (CPDF_Array* pArray = pFilter->AsArray()) {
407 ((CPDF_Array*)pFilter)->RemoveAt(0); 407 pArray->RemoveAt(0);
408 CPDF_Array* pParams = pDict->GetArray(FX_BSTRC("DecodeParms")); 408 CPDF_Array* pParams = pDict->GetArray(FX_BSTRC("DecodeParms"));
409 if (pParams) { 409 if (pParams)
410 pParams->RemoveAt(0); 410 pParams->RemoveAt(0);
411 }
412 } else { 411 } else {
413 pDict->RemoveAt(FX_BSTRC("Filter")); 412 pDict->RemoveAt(FX_BSTRC("Filter"));
414 pDict->RemoveAt(FX_BSTRC("DecodeParms")); 413 pDict->RemoveAt(FX_BSTRC("DecodeParms"));
415 } 414 }
416 } else { 415 } else {
417 FX_Free(pData); 416 FX_Free(pData);
418 FX_DWORD dwSavePos = m_Pos; 417 FX_DWORD dwSavePos = m_Pos;
419 m_Pos += dwStreamSize; 418 m_Pos += dwStreamSize;
420 while (1) { 419 while (1) {
421 FX_DWORD dwPrevPos = m_Pos; 420 FX_DWORD dwPrevPos = m_Pos;
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 CPDF_Object* pContent = 957 CPDF_Object* pContent =
959 pPage->m_pFormDict->GetElementValue(FX_BSTRC("Contents")); 958 pPage->m_pFormDict->GetElementValue(FX_BSTRC("Contents"));
960 if (pContent == NULL) { 959 if (pContent == NULL) {
961 m_Status = Done; 960 m_Status = Done;
962 return; 961 return;
963 } 962 }
964 if (pContent->GetType() == PDFOBJ_STREAM) { 963 if (pContent->GetType() == PDFOBJ_STREAM) {
965 m_nStreams = 0; 964 m_nStreams = 0;
966 m_pSingleStream = new CPDF_StreamAcc; 965 m_pSingleStream = new CPDF_StreamAcc;
967 m_pSingleStream->LoadAllData((CPDF_Stream*)pContent, FALSE); 966 m_pSingleStream->LoadAllData((CPDF_Stream*)pContent, FALSE);
968 } else if (pContent->GetType() == PDFOBJ_ARRAY) { 967 } else if (CPDF_Array* pArray = pContent->AsArray()) {
969 CPDF_Array* pArray = (CPDF_Array*)pContent;
970 m_nStreams = pArray->GetCount(); 968 m_nStreams = pArray->GetCount();
971 if (m_nStreams == 0) { 969 if (m_nStreams == 0) {
972 m_Status = Done; 970 m_Status = Done;
973 return; 971 return;
974 } 972 }
975 m_pStreamArray = FX_Alloc(CPDF_StreamAcc*, m_nStreams); 973 m_pStreamArray = FX_Alloc(CPDF_StreamAcc*, m_nStreams);
976 } else { 974 } else {
977 m_Status = Done; 975 m_Status = Done;
978 return; 976 return;
979 } 977 }
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 } 1142 }
1145 m_Status = Done; 1143 m_Status = Done;
1146 return; 1144 return;
1147 } 1145 }
1148 steps++; 1146 steps++;
1149 if (pPause && pPause->NeedToPauseNow()) { 1147 if (pPause && pPause->NeedToPauseNow()) {
1150 break; 1148 break;
1151 } 1149 }
1152 } 1150 }
1153 } 1151 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp ('k') | core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698