summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/cpdf_colorstate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/page/cpdf_colorstate.cpp')
-rw-r--r--core/fpdfapi/page/cpdf_colorstate.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/core/fpdfapi/page/cpdf_colorstate.cpp b/core/fpdfapi/page/cpdf_colorstate.cpp
index 16d2770600..492114ab00 100644
--- a/core/fpdfapi/page/cpdf_colorstate.cpp
+++ b/core/fpdfapi/page/cpdf_colorstate.cpp
@@ -70,18 +70,15 @@ bool CPDF_ColorState::HasStrokeColor() const {
}
void CPDF_ColorState::SetFillColor(CPDF_ColorSpace* pCS,
- float* pValue,
- uint32_t nValues) {
+ const std::vector<float>& values) {
ColorData* pData = m_Ref.GetPrivateCopy();
- SetColor(pData->m_FillColor, &pData->m_FillColorRef, pCS, pValue, nValues);
+ SetColor(pCS, values, &pData->m_FillColor, &pData->m_FillColorRef);
}
void CPDF_ColorState::SetStrokeColor(CPDF_ColorSpace* pCS,
- float* pValue,
- uint32_t nValues) {
+ const std::vector<float>& values) {
ColorData* pData = m_Ref.GetPrivateCopy();
- SetColor(pData->m_StrokeColor, &pData->m_StrokeColorRef, pCS, pValue,
- nValues);
+ SetColor(pCS, values, &pData->m_StrokeColor, &pData->m_StrokeColorRef);
}
void CPDF_ColorState::SetFillPattern(CPDF_Pattern* pPattern,
@@ -119,24 +116,27 @@ void CPDF_ColorState::SetStrokePattern(CPDF_Pattern* pPattern,
pData->m_StrokeColor.GetRGB(&R, &G, &B) ? FXSYS_BGR(B, G, R) : 0xFFFFFFFF;
}
-void CPDF_ColorState::SetColor(CPDF_Color& color,
- FX_COLORREF* colorref,
- CPDF_ColorSpace* pCS,
- float* pValue,
- uint32_t nValues) {
+void CPDF_ColorState::SetColor(CPDF_ColorSpace* pCS,
+ const std::vector<float>& values,
+ CPDF_Color* color,
+ FX_COLORREF* colorref) {
+ ASSERT(color);
+ ASSERT(colorref);
+
if (pCS)
- color.SetColorSpace(pCS);
- else if (color.IsNull())
- color.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY));
+ color->SetColorSpace(pCS);
+ else if (color->IsNull())
+ color->SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY));
- if (color.GetColorSpace()->CountComponents() > nValues)
+ if (color->GetColorSpace()->CountComponents() > values.size())
return;
- color.SetValue(pValue);
+ if (!color->IsPattern())
+ color->SetValueForNonPattern(values);
int R;
int G;
int B;
- *colorref = color.GetRGB(&R, &G, &B) ? FXSYS_BGR(B, G, R) : 0xFFFFFFFF;
+ *colorref = color->GetRGB(&R, &G, &B) ? FXSYS_BGR(B, G, R) : 0xFFFFFFFF;
}
CPDF_ColorState::ColorData::ColorData()