Chromium Code Reviews| 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 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 758 } | 758 } |
| 759 } | 759 } |
| 760 } | 760 } |
| 761 m_bpc = 8; | 761 m_bpc = 8; |
| 762 } | 762 } |
| 763 CPDF_DIBSource* CPDF_DIBSource::LoadMask(FX_DWORD& MatteColor) { | 763 CPDF_DIBSource* CPDF_DIBSource::LoadMask(FX_DWORD& MatteColor) { |
| 764 MatteColor = 0xFFFFFFFF; | 764 MatteColor = 0xFFFFFFFF; |
| 765 CPDF_Stream* pSoftMask = m_pDict->GetStream(FX_BSTRC("SMask")); | 765 CPDF_Stream* pSoftMask = m_pDict->GetStream(FX_BSTRC("SMask")); |
| 766 if (pSoftMask) { | 766 if (pSoftMask) { |
| 767 CPDF_Array* pMatte = pSoftMask->GetDict()->GetArray(FX_BSTRC("Matte")); | 767 CPDF_Array* pMatte = pSoftMask->GetDict()->GetArray(FX_BSTRC("Matte")); |
| 768 if (pMatte != NULL && m_pColorSpace && | 768 if (pMatte && m_pColorSpace && |
| 769 (FX_DWORD)m_pColorSpace->CountComponents() <= m_nComponents) { | 769 (FX_DWORD)m_pColorSpace->CountComponents() <= m_nComponents) { |
| 770 FX_FLOAT* pColor = FX_Alloc(FX_FLOAT, m_nComponents); | 770 FX_FLOAT* pColor = FX_Alloc(FX_FLOAT, m_nComponents); |
| 771 for (FX_DWORD i = 0; i < m_nComponents; i++) { | 771 for (FX_DWORD i = 0; i < m_nComponents; i++) { |
| 772 pColor[i] = pMatte->GetFloat(i); | 772 pColor[i] = pMatte->GetFloat(i); |
| 773 } | 773 } |
| 774 FX_FLOAT R, G, B; | 774 FX_FLOAT R, G, B; |
| 775 m_pColorSpace->GetRGB(pColor, R, G, B); | 775 m_pColorSpace->GetRGB(pColor, R, G, B); |
| 776 FX_Free(pColor); | 776 FX_Free(pColor); |
| 777 MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), | 777 MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), |
| 778 FXSYS_round(B * 255)); | 778 FXSYS_round(B * 255)); |
| 779 } | 779 } |
| 780 return LoadMaskDIB(pSoftMask); | 780 return LoadMaskDIB(pSoftMask); |
| 781 } | 781 } |
| 782 CPDF_Object* pMask = m_pDict->GetElementValue(FX_BSTRC("Mask")); | 782 |
| 783 if (pMask == NULL) { | 783 if (CPDF_Stream* pStream = |
| 784 return NULL; | 784 ToStream(m_pDict->GetElementValue(FX_BSTRC("Mask")))) |
| 785 } | 785 return LoadMaskDIB(pStream); |
| 786 if (pMask->GetType() == PDFOBJ_STREAM) { | 786 |
| 787 return LoadMaskDIB((CPDF_Stream*)pMask); | 787 return nullptr; |
| 788 } | |
| 789 return NULL; | |
| 790 } | 788 } |
| 791 int CPDF_DIBSource::StratLoadMask() { | 789 int CPDF_DIBSource::StratLoadMask() { |
| 792 m_MatteColor = 0XFFFFFFFF; | 790 m_MatteColor = 0XFFFFFFFF; |
| 793 m_pMaskStream = m_pDict->GetStream(FX_BSTRC("SMask")); | 791 m_pMaskStream = m_pDict->GetStream(FX_BSTRC("SMask")); |
| 794 if (m_pMaskStream) { | 792 if (m_pMaskStream) { |
| 795 CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArray(FX_BSTRC("Matte")); | 793 CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArray(FX_BSTRC("Matte")); |
| 796 if (pMatte != NULL && m_pColorSpace && | 794 if (pMatte != NULL && m_pColorSpace && |
| 797 (FX_DWORD)m_pColorSpace->CountComponents() <= m_nComponents) { | 795 (FX_DWORD)m_pColorSpace->CountComponents() <= m_nComponents) { |
| 798 FX_FLOAT R, G, B; | 796 FX_FLOAT R, G, B; |
| 799 FX_FLOAT* pColor = FX_Alloc(FX_FLOAT, m_nComponents); | 797 FX_FLOAT* pColor = FX_Alloc(FX_FLOAT, m_nComponents); |
| 800 for (FX_DWORD i = 0; i < m_nComponents; i++) { | 798 for (FX_DWORD i = 0; i < m_nComponents; i++) { |
| 801 pColor[i] = pMatte->GetFloat(i); | 799 pColor[i] = pMatte->GetFloat(i); |
| 802 } | 800 } |
| 803 m_pColorSpace->GetRGB(pColor, R, G, B); | 801 m_pColorSpace->GetRGB(pColor, R, G, B); |
| 804 FX_Free(pColor); | 802 FX_Free(pColor); |
| 805 m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), | 803 m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), |
| 806 FXSYS_round(B * 255)); | 804 FXSYS_round(B * 255)); |
| 807 } | 805 } |
| 808 return StartLoadMaskDIB(); | 806 return StartLoadMaskDIB(); |
| 809 } | 807 } |
| 808 | |
| 810 m_pMaskStream = m_pDict->GetElementValue(FX_BSTRC("Mask")); | 809 m_pMaskStream = m_pDict->GetElementValue(FX_BSTRC("Mask")); |
| 811 if (m_pMaskStream == NULL) { | 810 if (!m_pMaskStream) |
|
Tom Sepez
2015/10/22 17:16:45
nit: maybe
return ToStream(m_pMaskStream) ? Sta
dsinclair
2015/10/22 17:42:56
Done.
| |
| 812 return 1; | 811 return 1; |
| 813 } | 812 if (m_pMaskStream->IsStream()) |
| 814 if (m_pMaskStream->GetType() == PDFOBJ_STREAM) { | |
| 815 return StartLoadMaskDIB(); | 813 return StartLoadMaskDIB(); |
| 816 } | |
| 817 return 1; | 814 return 1; |
| 818 } | 815 } |
| 819 int CPDF_DIBSource::ContinueLoadMaskDIB(IFX_Pause* pPause) { | 816 int CPDF_DIBSource::ContinueLoadMaskDIB(IFX_Pause* pPause) { |
| 820 if (m_pMask == NULL) { | 817 if (m_pMask == NULL) { |
| 821 return 1; | 818 return 1; |
| 822 } | 819 } |
| 823 int ret = m_pMask->ContinueLoadDIBSource(pPause); | 820 int ret = m_pMask->ContinueLoadDIBSource(pPause); |
| 824 if (ret == 2) { | 821 if (ret == 2) { |
| 825 return ret; | 822 return ret; |
| 826 } | 823 } |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 842 CPDF_DIBSource* CPDF_DIBSource::LoadMaskDIB(CPDF_Stream* pMask) { | 839 CPDF_DIBSource* CPDF_DIBSource::LoadMaskDIB(CPDF_Stream* pMask) { |
| 843 CPDF_DIBSource* pMaskSource = new CPDF_DIBSource; | 840 CPDF_DIBSource* pMaskSource = new CPDF_DIBSource; |
| 844 if (!pMaskSource->Load(m_pDocument, pMask, NULL, NULL, NULL, NULL, TRUE)) { | 841 if (!pMaskSource->Load(m_pDocument, pMask, NULL, NULL, NULL, NULL, TRUE)) { |
| 845 delete pMaskSource; | 842 delete pMaskSource; |
| 846 return NULL; | 843 return NULL; |
| 847 } | 844 } |
| 848 return pMaskSource; | 845 return pMaskSource; |
| 849 } | 846 } |
| 850 int CPDF_DIBSource::StartLoadMaskDIB() { | 847 int CPDF_DIBSource::StartLoadMaskDIB() { |
| 851 m_pMask = new CPDF_DIBSource; | 848 m_pMask = new CPDF_DIBSource; |
| 852 int ret = m_pMask->StartLoadDIBSource( | 849 int ret = m_pMask->StartLoadDIBSource(m_pDocument, ToStream(m_pMaskStream), |
|
Tom Sepez
2015/10/22 17:16:45
I worry about this. At line 809, we may have assi
dsinclair
2015/10/22 17:42:56
Done. There are 2 assignments and this one usage.
Tom Sepez
2015/10/22 19:11:55
Ok. Looks like were type safe.
| |
| 853 m_pDocument, (CPDF_Stream*)m_pMaskStream, FALSE, NULL, NULL, TRUE); | 850 FALSE, nullptr, nullptr, TRUE); |
| 854 if (ret == 2) { | 851 if (ret == 2) { |
| 855 if (m_Status == 0) { | 852 if (m_Status == 0) |
| 856 m_Status = 2; | 853 m_Status = 2; |
| 857 } | |
| 858 return 2; | 854 return 2; |
| 859 } | 855 } |
| 860 if (!ret) { | 856 if (!ret) { |
| 861 delete m_pMask; | 857 delete m_pMask; |
| 862 m_pMask = NULL; | 858 m_pMask = nullptr; |
| 863 return 1; | 859 return 1; |
| 864 } | 860 } |
| 865 return 1; | 861 return 1; |
| 866 } | 862 } |
| 867 void CPDF_DIBSource::LoadPalette() { | 863 void CPDF_DIBSource::LoadPalette() { |
| 868 if (m_bpc == 0) { | 864 if (m_bpc == 0) { |
| 869 return; | 865 return; |
| 870 } | 866 } |
| 871 if (m_bpc * m_nComponents > 8) { | 867 if (m_bpc * m_nComponents > 8) { |
| 872 return; | 868 return; |
| (...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1652 } | 1648 } |
| 1653 FX_BOOL CPDF_ImageLoader::Continue(void* LoadHandle, IFX_Pause* pPause) { | 1649 FX_BOOL CPDF_ImageLoader::Continue(void* LoadHandle, IFX_Pause* pPause) { |
| 1654 return ((CPDF_ProgressiveImageLoaderHandle*)LoadHandle)->Continue(pPause); | 1650 return ((CPDF_ProgressiveImageLoaderHandle*)LoadHandle)->Continue(pPause); |
| 1655 } | 1651 } |
| 1656 CPDF_ImageLoader::~CPDF_ImageLoader() { | 1652 CPDF_ImageLoader::~CPDF_ImageLoader() { |
| 1657 if (!m_bCached) { | 1653 if (!m_bCached) { |
| 1658 delete m_pBitmap; | 1654 delete m_pBitmap; |
| 1659 delete m_pMask; | 1655 delete m_pMask; |
| 1660 } | 1656 } |
| 1661 } | 1657 } |
| OLD | NEW |