| 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 |