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 "core/src/fpdfapi/fpdf_render/render_int.h" | 7 #include "core/src/fpdfapi/fpdf_render/render_int.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
702 | 702 |
703 FX_DWORD width = 0; | 703 FX_DWORD width = 0; |
704 FX_DWORD height = 0; | 704 FX_DWORD height = 0; |
705 FX_DWORD components = 0; | 705 FX_DWORD components = 0; |
706 pJpxModule->GetImageInfo(context->decoder(), &width, &height, &components); | 706 pJpxModule->GetImageInfo(context->decoder(), &width, &height, &components); |
707 if (static_cast<int>(width) < m_Width || static_cast<int>(height) < m_Height) | 707 if (static_cast<int>(width) < m_Width || static_cast<int>(height) < m_Height) |
708 return; | 708 return; |
709 | 709 |
710 FX_BOOL bSwapRGB = FALSE; | 710 FX_BOOL bSwapRGB = FALSE; |
711 if (m_pColorSpace) { | 711 if (m_pColorSpace) { |
712 if (components != (FX_DWORD)m_pColorSpace->CountComponents()) | 712 if (components != m_pColorSpace->CountComponents()) |
713 return; | 713 return; |
714 | 714 |
715 if (m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB)) { | 715 if (m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB)) { |
716 bSwapRGB = TRUE; | 716 bSwapRGB = TRUE; |
717 m_pColorSpace = nullptr; | 717 m_pColorSpace = nullptr; |
718 } | 718 } |
719 } else { | 719 } else { |
720 if (components == 3) { | 720 if (components == 3) { |
721 bSwapRGB = TRUE; | 721 bSwapRGB = TRUE; |
722 } else if (components == 4) { | 722 } else if (components == 4) { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
769 } | 769 } |
770 m_bpc = 8; | 770 m_bpc = 8; |
771 } | 771 } |
772 | 772 |
773 CPDF_DIBSource* CPDF_DIBSource::LoadMask(FX_DWORD& MatteColor) { | 773 CPDF_DIBSource* CPDF_DIBSource::LoadMask(FX_DWORD& MatteColor) { |
774 MatteColor = 0xFFFFFFFF; | 774 MatteColor = 0xFFFFFFFF; |
775 CPDF_Stream* pSoftMask = m_pDict->GetStreamBy("SMask"); | 775 CPDF_Stream* pSoftMask = m_pDict->GetStreamBy("SMask"); |
776 if (pSoftMask) { | 776 if (pSoftMask) { |
777 CPDF_Array* pMatte = pSoftMask->GetDict()->GetArrayBy("Matte"); | 777 CPDF_Array* pMatte = pSoftMask->GetDict()->GetArrayBy("Matte"); |
778 if (pMatte && m_pColorSpace && | 778 if (pMatte && m_pColorSpace && |
779 (FX_DWORD)m_pColorSpace->CountComponents() <= m_nComponents) { | 779 m_pColorSpace->CountComponents() <= m_nComponents) { |
780 std::vector<FX_FLOAT> colors(m_nComponents); | 780 std::vector<FX_FLOAT> colors(m_nComponents); |
781 for (FX_DWORD i = 0; i < m_nComponents; i++) { | 781 for (FX_DWORD i = 0; i < m_nComponents; i++) { |
782 colors[i] = pMatte->GetFloatAt(i); | 782 colors[i] = pMatte->GetFloatAt(i); |
783 } | 783 } |
784 FX_FLOAT R, G, B; | 784 FX_FLOAT R, G, B; |
785 m_pColorSpace->GetRGB(colors.data(), R, G, B); | 785 m_pColorSpace->GetRGB(colors.data(), R, G, B); |
786 MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), | 786 MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), |
787 FXSYS_round(B * 255)); | 787 FXSYS_round(B * 255)); |
788 } | 788 } |
789 return LoadMaskDIB(pSoftMask); | 789 return LoadMaskDIB(pSoftMask); |
790 } | 790 } |
791 | 791 |
792 if (CPDF_Stream* pStream = ToStream(m_pDict->GetElementValue("Mask"))) | 792 if (CPDF_Stream* pStream = ToStream(m_pDict->GetElementValue("Mask"))) |
793 return LoadMaskDIB(pStream); | 793 return LoadMaskDIB(pStream); |
794 | 794 |
795 return nullptr; | 795 return nullptr; |
796 } | 796 } |
797 | 797 |
798 int CPDF_DIBSource::StratLoadMask() { | 798 int CPDF_DIBSource::StratLoadMask() { |
799 m_MatteColor = 0XFFFFFFFF; | 799 m_MatteColor = 0XFFFFFFFF; |
800 m_pMaskStream = m_pDict->GetStreamBy("SMask"); | 800 m_pMaskStream = m_pDict->GetStreamBy("SMask"); |
801 if (m_pMaskStream) { | 801 if (m_pMaskStream) { |
802 CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArrayBy("Matte"); | 802 CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArrayBy("Matte"); |
803 if (pMatte && m_pColorSpace && | 803 if (pMatte && m_pColorSpace && |
804 (FX_DWORD)m_pColorSpace->CountComponents() <= m_nComponents) { | 804 m_pColorSpace->CountComponents() <= m_nComponents) { |
805 FX_FLOAT R, G, B; | 805 FX_FLOAT R, G, B; |
806 std::vector<FX_FLOAT> colors(m_nComponents); | 806 std::vector<FX_FLOAT> colors(m_nComponents); |
807 for (FX_DWORD i = 0; i < m_nComponents; i++) { | 807 for (FX_DWORD i = 0; i < m_nComponents; i++) { |
808 colors[i] = pMatte->GetFloatAt(i); | 808 colors[i] = pMatte->GetFloatAt(i); |
809 } | 809 } |
810 m_pColorSpace->GetRGB(colors.data(), R, G, B); | 810 m_pColorSpace->GetRGB(colors.data(), R, G, B); |
811 m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), | 811 m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), |
812 FXSYS_round(B * 255)); | 812 FXSYS_round(B * 255)); |
813 } | 813 } |
814 return StartLoadMaskDIB(); | 814 return StartLoadMaskDIB(); |
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1642 IFX_Pause* pPause) { | 1642 IFX_Pause* pPause) { |
1643 return LoadHandle->Continue(pPause); | 1643 return LoadHandle->Continue(pPause); |
1644 } | 1644 } |
1645 | 1645 |
1646 CPDF_ImageLoader::~CPDF_ImageLoader() { | 1646 CPDF_ImageLoader::~CPDF_ImageLoader() { |
1647 if (!m_bCached) { | 1647 if (!m_bCached) { |
1648 delete m_pBitmap; | 1648 delete m_pBitmap; |
1649 delete m_pMask; | 1649 delete m_pMask; |
1650 } | 1650 } |
1651 } | 1651 } |
OLD | NEW |