| Index: core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
|
| index 168cbf3a611392e07020342ef2c41b3efe5a92ec..87b9e025bccda9979d2bd5985469699d0d0f590d 100644
|
| --- a/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
|
| +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp
|
| @@ -8,6 +8,8 @@
|
|
|
| #include <limits.h>
|
|
|
| +#include <algorithm>
|
| +
|
| #include "core/include/fpdfapi/fpdf_page.h"
|
| #include "core/include/fpdfapi/fpdf_module.h"
|
| #include "core/include/fxcodec/fx_codec.h"
|
| @@ -41,6 +43,24 @@ int ComponentsForFamily(int family) {
|
| return 4;
|
| }
|
|
|
| +void ReverseRGB(uint8_t* pDestBuf, const uint8_t* pSrcBuf, int pixels) {
|
| + if (pDestBuf == pSrcBuf) {
|
| + for (int i = 0; i < pixels; i++) {
|
| + uint8_t temp = pDestBuf[2];
|
| + pDestBuf[2] = pDestBuf[0];
|
| + pDestBuf[0] = temp;
|
| + pDestBuf += 3;
|
| + }
|
| + } else {
|
| + for (int i = 0; i < pixels; i++) {
|
| + *pDestBuf++ = pSrcBuf[2];
|
| + *pDestBuf++ = pSrcBuf[1];
|
| + *pDestBuf++ = pSrcBuf[0];
|
| + pSrcBuf += 3;
|
| + }
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| CPDF_DeviceCS::CPDF_DeviceCS(CPDF_Document* pDoc, int family)
|
| @@ -82,9 +102,9 @@ FX_BOOL CPDF_DeviceCS::GetRGB(FX_FLOAT* pBuf,
|
| AdobeCMYK_to_sRGB(pBuf[0], pBuf[1], pBuf[2], pBuf[3], R, G, B);
|
| } else {
|
| FX_FLOAT k = pBuf[3];
|
| - R = 1.0f - FX_MIN(1.0f, pBuf[0] + k);
|
| - G = 1.0f - FX_MIN(1.0f, pBuf[1] + k);
|
| - B = 1.0f - FX_MIN(1.0f, pBuf[2] + k);
|
| + R = 1.0f - std::min(1.0f, pBuf[0] + k);
|
| + G = 1.0f - std::min(1.0f, pBuf[1] + k);
|
| + B = 1.0f - std::min(1.0f, pBuf[2] + k);
|
| }
|
| } else {
|
| ASSERT(m_Family == PDFCS_PATTERN);
|
| @@ -148,22 +168,7 @@ FX_BOOL CPDF_DeviceCS::v_SetCMYK(FX_FLOAT* pBuf,
|
| }
|
| return FALSE;
|
| }
|
| -static void ReverseRGB(uint8_t* pDestBuf, const uint8_t* pSrcBuf, int pixels) {
|
| - if (pDestBuf == pSrcBuf)
|
| - for (int i = 0; i < pixels; i++) {
|
| - uint8_t temp = pDestBuf[2];
|
| - pDestBuf[2] = pDestBuf[0];
|
| - pDestBuf[0] = temp;
|
| - pDestBuf += 3;
|
| - }
|
| - else
|
| - for (int i = 0; i < pixels; i++) {
|
| - *pDestBuf++ = pSrcBuf[2];
|
| - *pDestBuf++ = pSrcBuf[1];
|
| - *pDestBuf++ = pSrcBuf[0];
|
| - pSrcBuf += 3;
|
| - }
|
| -}
|
| +
|
| void CPDF_DeviceCS::TranslateImageLine(uint8_t* pDestBuf,
|
| const uint8_t* pSrcBuf,
|
| int pixels,
|
| @@ -196,9 +201,9 @@ void CPDF_DeviceCS::TranslateImageLine(uint8_t* pDestBuf,
|
| pDestBuf[2], pDestBuf[1], pDestBuf[0]);
|
| } else {
|
| uint8_t k = pSrcBuf[3];
|
| - pDestBuf[2] = 255 - FX_MIN(255, pSrcBuf[0] + k);
|
| - pDestBuf[1] = 255 - FX_MIN(255, pSrcBuf[1] + k);
|
| - pDestBuf[0] = 255 - FX_MIN(255, pSrcBuf[2] + k);
|
| + pDestBuf[2] = 255 - std::min(255, pSrcBuf[0] + k);
|
| + pDestBuf[1] = 255 - std::min(255, pSrcBuf[1] + k);
|
| + pDestBuf[0] = 255 - std::min(255, pSrcBuf[2] + k);
|
| }
|
| pSrcBuf += 4;
|
| pDestBuf += 3;
|
| @@ -1012,11 +1017,13 @@ CPDF_ColorSpace* CPDF_PatternCS::GetBaseCS() const {
|
| }
|
| class CPDF_SeparationCS : public CPDF_ColorSpace {
|
| public:
|
| - CPDF_SeparationCS(CPDF_Document* pDoc)
|
| + explicit CPDF_SeparationCS(CPDF_Document* pDoc)
|
| : CPDF_ColorSpace(pDoc, PDFCS_SEPARATION, 1),
|
| m_pAltCS(nullptr),
|
| m_pFunc(nullptr) {}
|
| ~CPDF_SeparationCS() override;
|
| +
|
| + // CPDF_ColorSpace:
|
| void GetDefaultValue(int iComponent,
|
| FX_FLOAT& value,
|
| FX_FLOAT& min,
|
| @@ -1109,11 +1116,13 @@ void CPDF_SeparationCS::EnableStdConversion(FX_BOOL bEnabled) {
|
| }
|
| class CPDF_DeviceNCS : public CPDF_ColorSpace {
|
| public:
|
| - CPDF_DeviceNCS(CPDF_Document* pDoc)
|
| + explicit CPDF_DeviceNCS(CPDF_Document* pDoc)
|
| : CPDF_ColorSpace(pDoc, PDFCS_DEVICEN, 0),
|
| m_pAltCS(nullptr),
|
| m_pFunc(nullptr) {}
|
| ~CPDF_DeviceNCS() override;
|
| +
|
| + // CPDF_ColorSpace:
|
| void GetDefaultValue(int iComponent,
|
| FX_FLOAT& value,
|
| FX_FLOAT& min,
|
| @@ -1183,10 +1192,11 @@ void CPDF_DeviceNCS::EnableStdConversion(FX_BOOL bEnabled) {
|
| m_pAltCS->EnableStdConversion(bEnabled);
|
| }
|
| }
|
| +
|
| CPDF_ColorSpace* CPDF_ColorSpace::GetStockCS(int family) {
|
| return CPDF_ModuleMgr::Get()->GetPageModule()->GetStockCS(family);
|
| - ;
|
| }
|
| +
|
| CPDF_ColorSpace* _CSFromName(const CFX_ByteString& name) {
|
| if (name == "DeviceRGB" || name == "RGB") {
|
| return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB);
|
|
|