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 7e8c8348a542dbc500f911f43bccf96537fe237d..a675dfe09c8c41caeab351dd6c2a2100300af968 100644 |
--- a/core/fpdfapi/fpdf_render/fpdf_render.cpp |
+++ b/core/fpdfapi/fpdf_render/fpdf_render.cpp |
@@ -188,12 +188,10 @@ FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext, |
if (pInitialStates && !m_pType3Char) { |
m_InitialStates.CopyStates(*pInitialStates); |
if (pParentState) { |
- CPDF_ColorStateData* pColorData = |
- (CPDF_ColorStateData*)(const CPDF_ColorStateData*) |
- m_InitialStates.m_ColorState; |
- CPDF_ColorStateData* pParentData = |
- (CPDF_ColorStateData*)(const CPDF_ColorStateData*) |
- pParentState->m_InitialStates.m_ColorState; |
+ 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.GetModify(); |
pData->m_FillRGB = pParentData->m_FillRGB; |
@@ -466,20 +464,20 @@ FX_BOOL CPDF_RenderStatus::ProcessPath(const CPDF_PathObject* pPathObj, |
FillType |= FX_FILL_STROKE; |
} |
const CPDF_GeneralStateData* pGeneralData = |
- ((CPDF_PageObject*)pPathObj)->m_GeneralState; |
+ static_cast<const CPDF_PageObject*>(pPathObj)->m_GeneralState.GetObject(); |
if (pGeneralData && pGeneralData->m_StrokeAdjust) { |
FillType |= FX_STROKE_ADJUST; |
} |
if (m_pType3Char) { |
FillType |= FX_FILL_TEXT_MODE; |
} |
- CFX_GraphStateData graphState(*pPathObj->m_GraphState); |
+ CFX_GraphStateData graphState(*pPathObj->m_GraphState.GetObject()); |
if (m_Options.m_Flags & RENDER_THINLINE) { |
graphState.m_LineWidth = 0; |
} |
- return m_pDevice->DrawPathWithBlend(pPathObj->m_Path, &path_matrix, |
- &graphState, fill_argb, stroke_argb, |
- FillType, m_curBlend); |
+ return m_pDevice->DrawPathWithBlend(pPathObj->m_Path.GetObject(), |
+ &path_matrix, &graphState, fill_argb, |
+ stroke_argb, FillType, m_curBlend); |
} |
CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { |
@@ -489,8 +487,7 @@ CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { |
} |
FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, |
FX_BOOL bType3) const { |
- CPDF_ColorStateData* pColorData = |
- (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; |
+ const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); |
if (m_pType3Char && !bType3 && |
(!m_pType3Char->m_bColored || |
(m_pType3Char->m_bColored && |
@@ -498,14 +495,13 @@ FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, |
return m_T3FillColor; |
} |
if (!pColorData || pColorData->m_FillColor.IsNull()) { |
- pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) |
- m_InitialStates.m_ColorState; |
+ pColorData = m_InitialStates.m_ColorState.GetObject(); |
} |
FX_COLORREF rgb = pColorData->m_FillRGB; |
if (rgb == (uint32_t)-1) { |
return 0; |
} |
- const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; |
+ const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); |
int alpha; |
if (pGeneralData) { |
alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); |
@@ -524,22 +520,20 @@ FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, |
return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); |
} |
FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { |
- CPDF_ColorStateData* pColorData = |
- (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; |
+ const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); |
if (m_pType3Char && (!m_pType3Char->m_bColored || |
(m_pType3Char->m_bColored && |
(!pColorData || pColorData->m_StrokeColor.IsNull())))) { |
return m_T3FillColor; |
} |
if (!pColorData || pColorData->m_StrokeColor.IsNull()) { |
- pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) |
- m_InitialStates.m_ColorState; |
+ pColorData = m_InitialStates.m_ColorState.GetObject(); |
} |
FX_COLORREF rgb = pColorData->m_StrokeRGB; |
if (rgb == (uint32_t)-1) { |
return 0; |
} |
- const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; |
+ const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); |
int alpha; |
if (pGeneralData) { |
alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); |
@@ -573,7 +567,7 @@ void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath, |
m_pDevice->RestoreState(true); |
int nClipPath = ClipPath.GetPathCount(); |
for (int i = 0; i < nClipPath; ++i) { |
- const CFX_PathData* pPathData = ClipPath.GetPath(i); |
+ const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject(); |
if (!pPathData) |
continue; |
@@ -629,7 +623,7 @@ void CPDF_RenderStatus::DrawClipPath(CPDF_ClipPath ClipPath, |
int nClipPath = ClipPath.GetPathCount(); |
int i; |
for (i = 0; i < nClipPath; i++) { |
- const CFX_PathData* pPathData = ClipPath.GetPath(i); |
+ const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject(); |
if (!pPathData) { |
continue; |
} |
@@ -647,22 +641,24 @@ FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj, |
CFX_Matrix path_matrix = pPathObj->m_Matrix; |
path_matrix.Concat(*pObj2Device); |
if (bStroke) { |
- CFX_GraphStateData graphState(*pPathObj->m_GraphState); |
+ CFX_GraphStateData graphState(*pPathObj->m_GraphState.GetObject()); |
if (m_Options.m_Flags & RENDER_THINLINE) { |
graphState.m_LineWidth = 0; |
} |
- return m_pDevice->SetClip_PathStroke(pPathObj->m_Path, &path_matrix, |
- &graphState); |
+ return m_pDevice->SetClip_PathStroke(pPathObj->m_Path.GetObject(), |
+ &path_matrix, &graphState); |
} |
int fill_mode = pPathObj->m_FillType; |
if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { |
fill_mode |= FXFILL_NOPATHSMOOTH; |
} |
- return m_pDevice->SetClip_PathFill(pPathObj->m_Path, &path_matrix, fill_mode); |
+ return m_pDevice->SetClip_PathFill(pPathObj->m_Path.GetObject(), &path_matrix, |
+ fill_mode); |
} |
FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, |
const CFX_Matrix* pObj2Device) { |
- const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; |
+ const CPDF_GeneralStateData* pGeneralState = |
+ pPageObj->m_GeneralState.GetObject(); |
int blend_type = |
pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; |
if (blend_type == FXDIB_BLEND_UNSUPPORTED) { |
@@ -792,7 +788,7 @@ FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, |
&text_device, textobj->m_nChars, textobj->m_pCharCodes, |
textobj->m_pCharPos, textobj->m_TextState.GetFont(), |
textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix, |
- textobj->m_GraphState, (FX_ARGB)-1, 0, nullptr, 0); |
+ textobj->m_GraphState.GetObject(), (FX_ARGB)-1, 0, nullptr, 0); |
} |
} |
CPDF_RenderStatus bitmap_render; |