Index: core/fpdfapi/fpdf_render/fpdf_render.cpp |
diff --git a/core/fpdfapi/fpdf_render/fpdf_render.cpp b/core/fpdfapi/fpdf_render/fpdf_render.cpp |
index c36d7f4cd31de79652d6eb51983edf0d88a482a2..23443b15c56440834ca31a9fb67afaba5385fdf1 100644 |
--- a/core/fpdfapi/fpdf_render/fpdf_render.cpp |
+++ b/core/fpdfapi/fpdf_render/fpdf_render.cpp |
@@ -194,21 +194,17 @@ FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext, |
if (pInitialStates && !m_pType3Char) { |
m_InitialStates.CopyStates(*pInitialStates); |
if (pParentState) { |
- const CPDF_ColorStateData* pColorData = |
- m_InitialStates.m_ColorState.GetObject(); |
- const CPDF_ColorStateData* pParentData = |
- pParentState->m_InitialStates.m_ColorState.GetObject(); |
- if (!pColorData || pColorData->m_FillColor.IsNull()) { |
- CPDF_ColorStateData* pData = |
- m_InitialStates.m_ColorState.GetPrivateCopy(); |
- pData->m_FillRGB = pParentData->m_FillRGB; |
- pData->m_FillColor.Copy(&pParentData->m_FillColor); |
+ if (!m_InitialStates.m_ColorState.HasFillColor()) { |
+ m_InitialStates.m_ColorState.SetFillRGB( |
+ pParentState->m_InitialStates.m_ColorState.GetFillRGB()); |
+ m_InitialStates.m_ColorState.GetMutableFillColor()->Copy( |
+ pParentState->m_InitialStates.m_ColorState.GetFillColor()); |
} |
- if (!pColorData || pColorData->m_StrokeColor.IsNull()) { |
- CPDF_ColorStateData* pData = |
- m_InitialStates.m_ColorState.GetPrivateCopy(); |
- pData->m_StrokeRGB = pParentData->m_FillRGB; |
- pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor); |
+ if (!m_InitialStates.m_ColorState.HasStrokeColor()) { |
+ m_InitialStates.m_ColorState.SetStrokeRGB( |
+ pParentState->m_InitialStates.m_ColorState.GetFillRGB()); |
+ m_InitialStates.m_ColorState.GetMutableStrokeColor()->Copy( |
+ pParentState->m_InitialStates.m_ColorState.GetStrokeColor()); |
} |
} |
} else { |
@@ -912,20 +908,19 @@ void CPDF_RenderContext::GetBackground(CFX_DIBitmap* pBuffer, |
CPDF_GraphicStates* CPDF_RenderStatus::CloneObjStates( |
const CPDF_GraphicStates* pSrcStates, |
FX_BOOL bStroke) { |
- if (!pSrcStates) { |
+ if (!pSrcStates) |
return nullptr; |
- } |
+ |
CPDF_GraphicStates* pStates = new CPDF_GraphicStates; |
pStates->CopyStates(*pSrcStates); |
const CPDF_Color* pObjColor = bStroke |
? pSrcStates->m_ColorState.GetStrokeColor() |
: pSrcStates->m_ColorState.GetFillColor(); |
if (!pObjColor->IsNull()) { |
- CPDF_ColorStateData* pColorData = pStates->m_ColorState.GetPrivateCopy(); |
- pColorData->m_FillRGB = |
- bStroke ? pSrcStates->m_ColorState.GetObject()->m_StrokeRGB |
- : pSrcStates->m_ColorState.GetObject()->m_FillRGB; |
- pColorData->m_StrokeRGB = pColorData->m_FillRGB; |
+ pStates->m_ColorState.SetFillRGB( |
+ bStroke ? pSrcStates->m_ColorState.GetStrokeRGB() |
+ : pSrcStates->m_ColorState.GetFillRGB()); |
+ pStates->m_ColorState.SetStrokeRGB(pStates->m_ColorState.GetFillRGB()); |
} |
return pStates; |
} |