diff options
author | Lei Zhang <thestig@chromium.org> | 2018-04-13 18:33:46 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-04-13 18:33:46 +0000 |
commit | ecc0123613fa6f455a5a0b498695fb2ea54eed64 (patch) | |
tree | c63e944e49e34f9c0f8768e1ea41f9e9a39c6779 /core | |
parent | dc62019316b411c2e8fe1e9c1a3aa5fb89762cd4 (diff) | |
download | pdfium-ecc0123613fa6f455a5a0b498695fb2ea54eed64.tar.xz |
Add CPDF_ColorState::SetPattern().
A common helper method for patterns, just like SetColor().
Change-Id: Iba6a9b33143d2d1278d05bbc2ce7e26b0ae5d197
Reviewed-on: https://pdfium-review.googlesource.com/30591
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'core')
-rw-r--r-- | core/fpdfapi/page/cpdf_colorstate.cpp | 48 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_colorstate.h | 4 |
2 files changed, 27 insertions, 25 deletions
diff --git a/core/fpdfapi/page/cpdf_colorstate.cpp b/core/fpdfapi/page/cpdf_colorstate.cpp index 9abd9f78e4..05421dc873 100644 --- a/core/fpdfapi/page/cpdf_colorstate.cpp +++ b/core/fpdfapi/page/cpdf_colorstate.cpp @@ -84,36 +84,13 @@ void CPDF_ColorState::SetStrokeColor(CPDF_ColorSpace* pCS, void CPDF_ColorState::SetFillPattern(CPDF_Pattern* pPattern, const std::vector<float>& values) { ColorData* pData = m_Ref.GetPrivateCopy(); - pData->m_FillColor.SetValueForPattern(pPattern, values); - int R; - int G; - int B; - bool ret = pData->m_FillColor.GetRGB(&R, &G, &B); - if (CPDF_TilingPattern* pTilingPattern = pPattern->AsTilingPattern()) { - if (!ret && pTilingPattern->colored()) { - pData->m_FillColorRef = 0x00BFBFBF; - return; - } - } - pData->m_FillColorRef = ret ? FXSYS_BGR(B, G, R) : 0xFFFFFFFF; + SetPattern(pPattern, values, &pData->m_FillColor, &pData->m_FillColorRef); } void CPDF_ColorState::SetStrokePattern(CPDF_Pattern* pPattern, const std::vector<float>& values) { ColorData* pData = m_Ref.GetPrivateCopy(); - pData->m_StrokeColor.SetValueForPattern(pPattern, values); - int R; - int G; - int B; - bool ret = pData->m_StrokeColor.GetRGB(&R, &G, &B); - if (CPDF_TilingPattern* pTilingPattern = pPattern->AsTilingPattern()) { - if (!ret && pTilingPattern->colored()) { - pData->m_StrokeColorRef = 0x00BFBFBF; - return; - } - } - pData->m_StrokeColorRef = - pData->m_StrokeColor.GetRGB(&R, &G, &B) ? FXSYS_BGR(B, G, R) : 0xFFFFFFFF; + SetPattern(pPattern, values, &pData->m_StrokeColor, &pData->m_StrokeColorRef); } void CPDF_ColorState::SetColor(CPDF_ColorSpace* pCS, @@ -139,6 +116,27 @@ void CPDF_ColorState::SetColor(CPDF_ColorSpace* pCS, *colorref = color->GetRGB(&R, &G, &B) ? FXSYS_BGR(B, G, R) : 0xFFFFFFFF; } +void CPDF_ColorState::SetPattern(CPDF_Pattern* pPattern, + const std::vector<float>& values, + CPDF_Color* color, + FX_COLORREF* colorref) { + ASSERT(color); + ASSERT(colorref); + + color->SetValueForPattern(pPattern, values); + int R; + int G; + int B; + bool ret = color->GetRGB(&R, &G, &B); + if (CPDF_TilingPattern* pTilingPattern = pPattern->AsTilingPattern()) { + if (!ret && pTilingPattern->colored()) { + *colorref = 0x00BFBFBF; + return; + } + } + *colorref = ret ? FXSYS_BGR(B, G, R) : 0xFFFFFFFF; +} + CPDF_ColorState::ColorData::ColorData() : m_FillColorRef(0), m_StrokeColorRef(0) {} diff --git a/core/fpdfapi/page/cpdf_colorstate.h b/core/fpdfapi/page/cpdf_colorstate.h index a617409268..49416db1d5 100644 --- a/core/fpdfapi/page/cpdf_colorstate.h +++ b/core/fpdfapi/page/cpdf_colorstate.h @@ -68,6 +68,10 @@ class CPDF_ColorState { const std::vector<float>& values, CPDF_Color* color, FX_COLORREF* colorref); + void SetPattern(CPDF_Pattern* pPattern, + const std::vector<float>& values, + CPDF_Color* color, + FX_COLORREF* colorref); SharedCopyOnWrite<ColorData> m_Ref; }; |