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 <vector> | 7 #include <vector> |
8 | 8 |
9 #include "../../../../third_party/base/nonstd_unique_ptr.h" | 9 #include "../../../../third_party/base/nonstd_unique_ptr.h" |
10 #include "../../../include/fpdfapi/fpdf_module.h" | 10 #include "../../../include/fpdfapi/fpdf_module.h" |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
475 if (!m_bImageMask) { | 475 if (!m_bImageMask) { |
476 CPDF_Object* pFilter = m_pDict->GetElementValue(FX_BSTRC("Filter")); | 476 CPDF_Object* pFilter = m_pDict->GetElementValue(FX_BSTRC("Filter")); |
477 if (pFilter) { | 477 if (pFilter) { |
478 CFX_ByteString filter; | 478 CFX_ByteString filter; |
479 if (pFilter->IsName()) { | 479 if (pFilter->IsName()) { |
480 filter = pFilter->GetString(); | 480 filter = pFilter->GetString(); |
481 if (filter == FX_BSTRC("JPXDecode")) { | 481 if (filter == FX_BSTRC("JPXDecode")) { |
482 m_bDoBpcCheck = FALSE; | 482 m_bDoBpcCheck = FALSE; |
483 return TRUE; | 483 return TRUE; |
484 } | 484 } |
485 } else if (pFilter->GetType() == PDFOBJ_ARRAY) { | 485 } else if (CPDF_Array* pArray = pFilter->AsArray()) { |
486 CPDF_Array* pArray = (CPDF_Array*)pFilter; | |
487 if (pArray->GetString(pArray->GetCount() - 1) == | 486 if (pArray->GetString(pArray->GetCount() - 1) == |
488 FX_BSTRC("JPXDecode")) { | 487 FX_BSTRC("JPXDecode")) { |
489 m_bDoBpcCheck = FALSE; | 488 m_bDoBpcCheck = FALSE; |
490 return TRUE; | 489 return TRUE; |
491 } | 490 } |
492 } | 491 } |
493 } | 492 } |
494 } | 493 } |
495 m_bImageMask = TRUE; | 494 m_bImageMask = TRUE; |
496 m_bpc = m_nComponents = 1; | 495 m_bpc = m_nComponents = 1; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
563 } | 562 } |
564 pCompData[i].m_DecodeStep = | 563 pCompData[i].m_DecodeStep = |
565 (pCompData[i].m_DecodeStep - pCompData[i].m_DecodeMin) / max_data; | 564 (pCompData[i].m_DecodeStep - pCompData[i].m_DecodeMin) / max_data; |
566 } | 565 } |
567 } | 566 } |
568 if (!m_pDict->KeyExist(FX_BSTRC("SMask"))) { | 567 if (!m_pDict->KeyExist(FX_BSTRC("SMask"))) { |
569 CPDF_Object* pMask = m_pDict->GetElementValue(FX_BSTRC("Mask")); | 568 CPDF_Object* pMask = m_pDict->GetElementValue(FX_BSTRC("Mask")); |
570 if (pMask == NULL) { | 569 if (pMask == NULL) { |
571 return pCompData; | 570 return pCompData; |
572 } | 571 } |
573 if (pMask->GetType() == PDFOBJ_ARRAY) { | 572 if (CPDF_Array* pArray = pMask->AsArray()) { |
574 CPDF_Array* pArray = (CPDF_Array*)pMask; | |
575 if (pArray->GetCount() >= m_nComponents * 2) { | 573 if (pArray->GetCount() >= m_nComponents * 2) { |
576 for (FX_DWORD i = 0; i < m_nComponents; i++) { | 574 for (FX_DWORD i = 0; i < m_nComponents; i++) { |
577 int min_num = pArray->GetInteger(i * 2); | 575 int min_num = pArray->GetInteger(i * 2); |
578 int max_num = pArray->GetInteger(i * 2 + 1); | 576 int max_num = pArray->GetInteger(i * 2 + 1); |
579 pCompData[i].m_ColorKeyMin = FX_MAX(min_num, 0); | 577 pCompData[i].m_ColorKeyMin = FX_MAX(min_num, 0); |
580 pCompData[i].m_ColorKeyMax = FX_MIN(max_num, max_data); | 578 pCompData[i].m_ColorKeyMax = FX_MIN(max_num, max_data); |
581 } | 579 } |
582 } | 580 } |
583 bColorKey = TRUE; | 581 bColorKey = TRUE; |
584 } | 582 } |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 m_bpc = 1; | 944 m_bpc = 1; |
947 m_nComponents = 1; | 945 m_nComponents = 1; |
948 } | 946 } |
949 if (filter == FX_BSTRC("RunLengthDecode")) { | 947 if (filter == FX_BSTRC("RunLengthDecode")) { |
950 if (m_bpc != 1) { | 948 if (m_bpc != 1) { |
951 m_bpc = 8; | 949 m_bpc = 8; |
952 } | 950 } |
953 } else if (filter == FX_BSTRC("DCTDecode")) { | 951 } else if (filter == FX_BSTRC("DCTDecode")) { |
954 m_bpc = 8; | 952 m_bpc = 8; |
955 } | 953 } |
956 } else if (pFilter->GetType() == PDFOBJ_ARRAY) { | 954 } else if (CPDF_Array* pArray = pFilter->AsArray()) { |
957 CPDF_Array* pArray = (CPDF_Array*)pFilter; | |
958 if (pArray->GetString(pArray->GetCount() - 1) == | 955 if (pArray->GetString(pArray->GetCount() - 1) == |
959 FX_BSTRC("CCITTFaxDecode") || | 956 FX_BSTRC("CCITTFaxDecode") || |
960 pArray->GetString(pArray->GetCount() - 1) == | 957 pArray->GetString(pArray->GetCount() - 1) == |
961 FX_BSTRC("JBIG2Decode")) { | 958 FX_BSTRC("JBIG2Decode")) { |
962 m_bpc = 1; | 959 m_bpc = 1; |
963 m_nComponents = 1; | 960 m_nComponents = 1; |
964 } | 961 } |
965 if (pArray->GetString(pArray->GetCount() - 1) == FX_BSTRC("DCTDecode")) { | 962 if (pArray->GetString(pArray->GetCount() - 1) == FX_BSTRC("DCTDecode")) { |
966 // Previously, pArray->GetString(pArray->GetCount() - 1) == | 963 // Previously, pArray->GetString(pArray->GetCount() - 1) == |
967 // FX_BSTRC("RunLengthDecode") was checked in the "if" statement as | 964 // FX_BSTRC("RunLengthDecode") was checked in the "if" statement as |
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1655 } | 1652 } |
1656 FX_BOOL CPDF_ImageLoader::Continue(void* LoadHandle, IFX_Pause* pPause) { | 1653 FX_BOOL CPDF_ImageLoader::Continue(void* LoadHandle, IFX_Pause* pPause) { |
1657 return ((CPDF_ProgressiveImageLoaderHandle*)LoadHandle)->Continue(pPause); | 1654 return ((CPDF_ProgressiveImageLoaderHandle*)LoadHandle)->Continue(pPause); |
1658 } | 1655 } |
1659 CPDF_ImageLoader::~CPDF_ImageLoader() { | 1656 CPDF_ImageLoader::~CPDF_ImageLoader() { |
1660 if (!m_bCached) { | 1657 if (!m_bCached) { |
1661 delete m_pBitmap; | 1658 delete m_pBitmap; |
1662 delete m_pMask; | 1659 delete m_pMask; |
1663 } | 1660 } |
1664 } | 1661 } |
OLD | NEW |