| Index: xfa/fde/fde_render.cpp
|
| diff --git a/xfa/fde/fde_render.cpp b/xfa/fde/fde_render.cpp
|
| index e2c395eeb53e8e5da385fa293f086e5e9c105936..f3189b0877c86d5facf0d7353523a9eb22880701 100644
|
| --- a/xfa/fde/fde_render.cpp
|
| +++ b/xfa/fde/fde_render.cpp
|
| @@ -16,9 +16,7 @@
|
| CFDE_RenderContext::CFDE_RenderContext()
|
| : m_eStatus(FDE_RENDERSTATUS_Reset),
|
| m_pRenderDevice(nullptr),
|
| - m_Transform(),
|
| - m_pCharPos(nullptr),
|
| - m_iCharPosCount(0) {
|
| + m_Transform() {
|
| m_Transform.SetIdentity();
|
| }
|
|
|
| @@ -101,9 +99,7 @@ void CFDE_RenderContext::StopRender() {
|
| m_Transform.SetIdentity();
|
| m_pIterator.reset();
|
| m_pBrush.reset();
|
| - FX_Free(m_pCharPos);
|
| - m_pCharPos = nullptr;
|
| - m_iCharPosCount = 0;
|
| + m_CharPos.clear();
|
| }
|
|
|
| void CFDE_RenderContext::RenderText(IFDE_TextSet* pTextSet,
|
| @@ -122,19 +118,14 @@ void CFDE_RenderContext::RenderText(IFDE_TextSet* pTextSet,
|
| if (!m_pBrush)
|
| m_pBrush.reset(new CFDE_Brush);
|
|
|
| - if (!m_pCharPos)
|
| - m_pCharPos = FX_Alloc(FXTEXT_CHARPOS, iCount);
|
| - else if (m_iCharPosCount < iCount)
|
| - m_pCharPos = FX_Realloc(FXTEXT_CHARPOS, m_pCharPos, iCount);
|
| + if (m_CharPos.size() < static_cast<size_t>(iCount))
|
| + m_CharPos.resize(iCount, FXTEXT_CHARPOS());
|
|
|
| - if (m_iCharPosCount < iCount)
|
| - m_iCharPosCount = iCount;
|
| -
|
| - iCount = pTextSet->GetDisplayPos(pText, m_pCharPos, FALSE);
|
| + iCount = pTextSet->GetDisplayPos(pText, m_CharPos.data(), FALSE);
|
| FX_FLOAT fFontSize = pTextSet->GetFontSize();
|
| FX_ARGB dwColor = pTextSet->GetFontColor();
|
| m_pBrush->SetColor(dwColor);
|
| - m_pRenderDevice->DrawString(m_pBrush.get(), pFont, m_pCharPos, iCount,
|
| + m_pRenderDevice->DrawString(m_pBrush.get(), pFont, m_CharPos.data(), iCount,
|
| fFontSize, &m_Transform);
|
| }
|
|
|
|
|