Index: xfa/fde/fde_render.cpp |
diff --git a/xfa/fde/fde_render.cpp b/xfa/fde/fde_render.cpp |
index fed831348a55ec957547bd1e8a5ad61a1b4d0c14..59bb5f1aa20c642664d06f8fd4aeb7a620198929 100644 |
--- a/xfa/fde/fde_render.cpp |
+++ b/xfa/fde/fde_render.cpp |
@@ -24,7 +24,7 @@ class CFDE_RenderContext : public IFDE_RenderContext, public CFX_Target { |
IFDE_CanvasSet* pCanvasSet, |
const CFX_Matrix& tmDoc2Device); |
virtual FDE_RENDERSTATUS GetStatus() const { return m_eStatus; } |
- virtual FDE_RENDERSTATUS DoRender(IFX_Pause* pPause = NULL); |
+ virtual FDE_RENDERSTATUS DoRender(IFX_Pause* pPause = nullptr); |
virtual void StopRender(); |
void RenderPath(IFDE_PathSet* pPathSet, FDE_HVISUALOBJ hPath); |
void RenderText(IFDE_TextSet* pTextSet, FDE_HVISUALOBJ hText); |
@@ -36,7 +36,7 @@ class CFDE_RenderContext : public IFDE_RenderContext, public CFX_Target { |
protected: |
FDE_RENDERSTATUS m_eStatus; |
IFDE_RenderDevice* m_pRenderDevice; |
- IFDE_SolidBrush* m_pSolidBrush; |
+ CFDE_Brush* m_pBrush; |
CFX_Matrix m_Transform; |
FXTEXT_CHARPOS* m_pCharPos; |
int32_t m_iCharPosCount; |
@@ -93,51 +93,52 @@ void FDE_GetPageMatrix(CFX_Matrix& pageMatrix, |
} |
pageMatrix = m; |
} |
+ |
IFDE_RenderContext* IFDE_RenderContext::Create() { |
return new CFDE_RenderContext; |
} |
+ |
CFDE_RenderContext::CFDE_RenderContext() |
: m_eStatus(FDE_RENDERSTATUS_Reset), |
- m_pRenderDevice(NULL), |
- m_pSolidBrush(NULL), |
+ m_pRenderDevice(nullptr), |
+ m_pBrush(nullptr), |
m_Transform(), |
- m_pCharPos(NULL), |
+ m_pCharPos(nullptr), |
m_iCharPosCount(0), |
- m_pIterator(NULL) { |
+ m_pIterator(nullptr) { |
m_Transform.SetIdentity(); |
} |
+ |
CFDE_RenderContext::~CFDE_RenderContext() { |
StopRender(); |
} |
+ |
FX_BOOL CFDE_RenderContext::StartRender(IFDE_RenderDevice* pRenderDevice, |
IFDE_CanvasSet* pCanvasSet, |
const CFX_Matrix& tmDoc2Device) { |
- if (m_pRenderDevice != NULL) { |
+ if (m_pRenderDevice) |
return FALSE; |
- } |
- if (pRenderDevice == NULL) { |
+ if (!pRenderDevice) |
return FALSE; |
- } |
- if (pCanvasSet == NULL) { |
+ if (!pCanvasSet) |
return FALSE; |
- } |
m_eStatus = FDE_RENDERSTATUS_Paused; |
m_pRenderDevice = pRenderDevice; |
m_Transform = tmDoc2Device; |
- if (m_pIterator == NULL) { |
+ if (!m_pIterator) { |
m_pIterator = IFDE_VisualSetIterator::Create(); |
- FXSYS_assert(m_pIterator != NULL); |
+ FXSYS_assert(m_pIterator); |
} |
return m_pIterator->AttachCanvas(pCanvasSet) && m_pIterator->FilterObjects(); |
} |
+ |
FDE_RENDERSTATUS CFDE_RenderContext::DoRender(IFX_Pause* pPause) { |
- if (m_pRenderDevice == NULL) { |
+ if (!m_pRenderDevice) |
return FDE_RENDERSTATUS_Failed; |
- } |
- if (m_pIterator == NULL) { |
+ if (!m_pIterator) |
return FDE_RENDERSTATUS_Failed; |
- } |
+ |
FDE_RENDERSTATUS eStatus = FDE_RENDERSTATUS_Paused; |
CFX_Matrix rm; |
rm.SetReverse(m_Transform); |
@@ -154,15 +155,15 @@ FDE_RENDERSTATUS CFDE_RenderContext::DoRender(IFX_Pause* pPause) { |
int32_t iCount = 0; |
while (TRUE) { |
hVisualObj = m_pIterator->GetNext(pVisualSet); |
- if (hVisualObj == NULL || pVisualSet == NULL) { |
+ if (!hVisualObj || !pVisualSet) { |
eStatus = FDE_RENDERSTATUS_Done; |
break; |
} |
rtObj.Empty(); |
pVisualSet->GetRect(hVisualObj, rtObj); |
- if (!rtDocClip.IntersectWith(rtObj)) { |
+ if (!rtDocClip.IntersectWith(rtObj)) |
continue; |
- } |
+ |
switch (pVisualSet->GetType()) { |
case FDE_VISUALOBJ_Text: |
RenderText((IFDE_TextSet*)pVisualSet, hVisualObj); |
@@ -181,13 +182,14 @@ FDE_RENDERSTATUS CFDE_RenderContext::DoRender(IFX_Pause* pPause) { |
default: |
break; |
} |
- if (iCount >= 100 && pPause != NULL && pPause->NeedToPauseNow()) { |
+ if (iCount >= 100 && pPause && pPause->NeedToPauseNow()) { |
eStatus = FDE_RENDERSTATUS_Paused; |
break; |
} |
} |
return m_eStatus = eStatus; |
} |
+ |
void CFDE_RenderContext::StopRender() { |
m_eStatus = FDE_RENDERSTATUS_Reset; |
m_pRenderDevice = nullptr; |
@@ -196,87 +198,85 @@ void CFDE_RenderContext::StopRender() { |
m_pIterator->Release(); |
m_pIterator = nullptr; |
} |
- if (m_pSolidBrush) { |
- m_pSolidBrush->Release(); |
- m_pSolidBrush = nullptr; |
+ if (m_pBrush) { |
+ delete m_pBrush; |
+ m_pBrush = nullptr; |
} |
FX_Free(m_pCharPos); |
m_pCharPos = nullptr; |
m_iCharPosCount = 0; |
} |
+ |
void CFDE_RenderContext::RenderText(IFDE_TextSet* pTextSet, |
FDE_HVISUALOBJ hText) { |
- FXSYS_assert(m_pRenderDevice != NULL); |
- FXSYS_assert(pTextSet != NULL && hText != NULL); |
+ FXSYS_assert(m_pRenderDevice); |
+ FXSYS_assert(pTextSet && hText); |
+ |
IFX_Font* pFont = pTextSet->GetFont(hText); |
- if (pFont == NULL) { |
+ if (!pFont) |
return; |
- } |
- int32_t iCount = pTextSet->GetDisplayPos(hText, NULL, FALSE); |
- if (iCount < 1) { |
+ |
+ int32_t iCount = pTextSet->GetDisplayPos(hText, nullptr, FALSE); |
+ if (iCount < 1) |
return; |
- } |
- if (m_pSolidBrush == NULL) { |
- m_pSolidBrush = new CFDE_SolidBrush; |
- if (m_pSolidBrush == NULL) { |
- return; |
- } |
- } |
- if (m_pCharPos == NULL) { |
+ |
+ if (!m_pBrush) |
+ m_pBrush = new CFDE_Brush; |
+ |
+ if (!m_pCharPos) |
m_pCharPos = FX_Alloc(FXTEXT_CHARPOS, iCount); |
- } else if (m_iCharPosCount < iCount) { |
+ else if (m_iCharPosCount < iCount) |
m_pCharPos = FX_Realloc(FXTEXT_CHARPOS, m_pCharPos, iCount); |
- } |
- if (m_iCharPosCount < iCount) { |
+ |
+ if (m_iCharPosCount < iCount) |
m_iCharPosCount = iCount; |
- } |
+ |
iCount = pTextSet->GetDisplayPos(hText, m_pCharPos, FALSE); |
FX_FLOAT fFontSize = pTextSet->GetFontSize(hText); |
FX_ARGB dwColor = pTextSet->GetFontColor(hText); |
- m_pSolidBrush->SetColor(dwColor); |
+ m_pBrush->SetColor(dwColor); |
FDE_HDEVICESTATE hState; |
FX_BOOL bClip = ApplyClip(pTextSet, hText, hState); |
- m_pRenderDevice->DrawString(m_pSolidBrush, pFont, m_pCharPos, iCount, |
- fFontSize, &m_Transform); |
- if (bClip) { |
+ m_pRenderDevice->DrawString(m_pBrush, pFont, m_pCharPos, iCount, fFontSize, |
+ &m_Transform); |
+ if (bClip) |
RestoreClip(hState); |
- } |
} |
+ |
void CFDE_RenderContext::RenderPath(IFDE_PathSet* pPathSet, |
FDE_HVISUALOBJ hPath) { |
- FXSYS_assert(m_pRenderDevice != NULL); |
- FXSYS_assert(pPathSet != NULL && hPath != NULL); |
+ FXSYS_assert(m_pRenderDevice); |
+ FXSYS_assert(pPathSet && hPath); |
+ |
IFDE_Path* pPath = pPathSet->GetPath(hPath); |
- if (pPath == NULL) { |
+ if (!pPath) |
return; |
- } |
+ |
FDE_HDEVICESTATE hState; |
FX_BOOL bClip = ApplyClip(pPathSet, hPath, hState); |
int32_t iRenderMode = pPathSet->GetRenderMode(hPath); |
if (iRenderMode & FDE_PATHRENDER_Stroke) { |
- IFDE_Pen* pPen = pPathSet->GetPen(hPath); |
+ CFDE_Pen* pPen = pPathSet->GetPen(hPath); |
FX_FLOAT fWidth = pPathSet->GetPenWidth(hPath); |
- if (pPen != NULL && fWidth > 0) { |
+ if (pPen && fWidth > 0) |
m_pRenderDevice->DrawPath(pPen, fWidth, pPath, &m_Transform); |
- } |
} |
if (iRenderMode & FDE_PATHRENDER_Fill) { |
- IFDE_Brush* pBrush = pPathSet->GetBrush(hPath); |
- if (pBrush != NULL) { |
+ CFDE_Brush* pBrush = pPathSet->GetBrush(hPath); |
+ if (pBrush) |
m_pRenderDevice->FillPath(pBrush, pPath, &m_Transform); |
- } |
} |
- if (bClip) { |
+ if (bClip) |
RestoreClip(hState); |
- } |
} |
+ |
FX_BOOL CFDE_RenderContext::ApplyClip(IFDE_VisualSet* pVisualSet, |
FDE_HVISUALOBJ hObj, |
FDE_HDEVICESTATE& hState) { |
CFX_RectF rtClip; |
- if (!pVisualSet->GetClip(hObj, rtClip)) { |
+ if (!pVisualSet->GetClip(hObj, rtClip)) |
return FALSE; |
- } |
+ |
CFX_RectF rtObj; |
pVisualSet->GetRect(hObj, rtObj); |
rtClip.Offset(rtObj.left, rtObj.top); |
@@ -286,6 +286,7 @@ FX_BOOL CFDE_RenderContext::ApplyClip(IFDE_VisualSet* pVisualSet, |
hState = m_pRenderDevice->SaveState(); |
return m_pRenderDevice->SetClipRect(rtClip); |
} |
+ |
void CFDE_RenderContext::RestoreClip(FDE_HDEVICESTATE hState) { |
m_pRenderDevice->RestoreState(hState); |
} |