summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2018-04-13 18:33:46 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-13 18:33:46 +0000
commitecc0123613fa6f455a5a0b498695fb2ea54eed64 (patch)
treec63e944e49e34f9c0f8768e1ea41f9e9a39c6779
parentdc62019316b411c2e8fe1e9c1a3aa5fb89762cd4 (diff)
downloadpdfium-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>
-rw-r--r--core/fpdfapi/page/cpdf_colorstate.cpp48
-rw-r--r--core/fpdfapi/page/cpdf_colorstate.h4
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;
};