From dc62019316b411c2e8fe1e9c1a3aa5fb89762cd4 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 13 Apr 2018 18:31:55 +0000 Subject: Get rid of CPDF_Color::GetColorSpace(). Replace it with more narrowly focused methods to get specific bits from the colorspace. Change-Id: Ifd2980f0fd06230d4d94d28eddf72219d2e9e6eb Reviewed-on: https://pdfium-review.googlesource.com/30590 Reviewed-by: Henrique Nakashima Commit-Queue: Lei Zhang --- core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp | 3 +-- core/fpdfapi/page/cpdf_color.cpp | 8 ++++++++ core/fpdfapi/page/cpdf_color.h | 4 ++-- core/fpdfapi/page/cpdf_colorstate.cpp | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp index 0584e7be48..2a59123344 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp +++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp @@ -37,8 +37,7 @@ std::ostream& operator<<(std::ostream& ar, const CFX_Matrix& matrix) { bool GetColor(const CPDF_Color* pColor, float* rgb) { int intRGB[3]; - if (!pColor || - pColor->GetColorSpace() != CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB) || + if (!pColor || !pColor->IsColorSpaceRGB() || !pColor->GetRGB(&intRGB[0], &intRGB[1], &intRGB[2])) { return false; } diff --git a/core/fpdfapi/page/cpdf_color.cpp b/core/fpdfapi/page/cpdf_color.cpp index 3c87457d1b..dfee9d93ca 100644 --- a/core/fpdfapi/page/cpdf_color.cpp +++ b/core/fpdfapi/page/cpdf_color.cpp @@ -146,6 +146,14 @@ void CPDF_Color::Copy(const CPDF_Color& src) { pPattern->pattern_obj(), false, pPattern->parent_matrix()); } +uint32_t CPDF_Color::CountComponents() const { + return m_pCS->CountComponents(); +} + +bool CPDF_Color::IsColorSpaceRGB() const { + return m_pCS == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); +} + bool CPDF_Color::GetRGB(int* R, int* G, int* B) const { if (!m_pCS || !m_pBuffer) return false; diff --git a/core/fpdfapi/page/cpdf_color.h b/core/fpdfapi/page/cpdf_color.h index 9b94f0d53b..3448c152e2 100644 --- a/core/fpdfapi/page/cpdf_color.h +++ b/core/fpdfapi/page/cpdf_color.h @@ -29,13 +29,13 @@ class CPDF_Color { void SetValueForPattern(CPDF_Pattern* pPattern, const std::vector& values); + uint32_t CountComponents() const; + bool IsColorSpaceRGB() const; bool GetRGB(int* R, int* G, int* B) const; // Should only be called if IsPattern() returns true. CPDF_Pattern* GetPattern() const; - const CPDF_ColorSpace* GetColorSpace() const { return m_pCS; } - protected: void ReleaseBuffer(); void ReleaseColorSpace(); diff --git a/core/fpdfapi/page/cpdf_colorstate.cpp b/core/fpdfapi/page/cpdf_colorstate.cpp index 492114ab00..9abd9f78e4 100644 --- a/core/fpdfapi/page/cpdf_colorstate.cpp +++ b/core/fpdfapi/page/cpdf_colorstate.cpp @@ -128,7 +128,7 @@ void CPDF_ColorState::SetColor(CPDF_ColorSpace* pCS, else if (color->IsNull()) color->SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY)); - if (color->GetColorSpace()->CountComponents() > values.size()) + if (color->CountComponents() > values.size()) return; if (!color->IsPattern()) -- cgit v1.2.3