Index: xfa/fxfa/app/xfa_textlayout.cpp |
diff --git a/xfa/fxfa/app/xfa_textlayout.cpp b/xfa/fxfa/app/xfa_textlayout.cpp |
index 69b53eedb4d5ac9c382350d15e9f0542cbccd58f..ea4ae4b2da8ac92b765a9164e34036568a0fd6bd 100644 |
--- a/xfa/fxfa/app/xfa_textlayout.cpp |
+++ b/xfa/fxfa/app/xfa_textlayout.cpp |
@@ -66,28 +66,22 @@ CXFA_TextParser::~CXFA_TextParser() { |
if (m_pUASheet) |
m_pUASheet->Release(); |
- FX_POSITION ps = m_mapXMLNodeToParseContext.GetStartPosition(); |
- while (ps) { |
- CFDE_XMLNode* pXMLNode; |
- CXFA_TextParseContext* pParseContext; |
- m_mapXMLNodeToParseContext.GetNextAssoc(ps, pXMLNode, pParseContext); |
- if (pParseContext) |
+ for (auto& pair : m_mapXMLNodeToParseContext) { |
+ if (pair.second) { |
FXTARGET_DeleteWith(CXFA_TextParseContext, m_pAllocator.get(), |
- pParseContext); |
+ pair.second); |
+ } |
} |
- m_mapXMLNodeToParseContext.RemoveAll(); |
} |
+ |
void CXFA_TextParser::Reset() { |
- FX_POSITION ps = m_mapXMLNodeToParseContext.GetStartPosition(); |
- while (ps) { |
- CFDE_XMLNode* pXMLNode; |
- CXFA_TextParseContext* pParseContext; |
- m_mapXMLNodeToParseContext.GetNextAssoc(ps, pXMLNode, pParseContext); |
- if (pParseContext) |
+ for (auto& pair : m_mapXMLNodeToParseContext) { |
+ if (pair.second) { |
FXTARGET_DeleteWith(CXFA_TextParseContext, m_pAllocator.get(), |
- pParseContext); |
+ pair.second); |
+ } |
} |
- m_mapXMLNodeToParseContext.RemoveAll(); |
+ m_mapXMLNodeToParseContext.clear(); |
m_pAllocator.reset(); |
} |
void CXFA_TextParser::InitCSSData(CXFA_TextProvider* pTextProvider) { |
@@ -227,19 +221,26 @@ IFDE_CSSComputedStyle* CXFA_TextParser::CreateStyle( |
} |
return pNewStyle; |
} |
+ |
IFDE_CSSComputedStyle* CXFA_TextParser::ComputeStyle( |
CFDE_XMLNode* pXMLNode, |
IFDE_CSSComputedStyle* pParentStyle) { |
- CXFA_TextParseContext* pContext = static_cast<CXFA_TextParseContext*>( |
- m_mapXMLNodeToParseContext.GetValueAt(pXMLNode)); |
+ auto it = m_mapXMLNodeToParseContext.find(pXMLNode); |
+ if (it == m_mapXMLNodeToParseContext.end()) |
+ return nullptr; |
+ |
+ CXFA_TextParseContext* pContext = it->second; |
if (!pContext) |
return nullptr; |
+ |
pContext->m_pParentStyle = pParentStyle; |
pParentStyle->Retain(); |
+ |
CXFA_CSSTagProvider tagProvider; |
ParseTagInfo(pXMLNode, tagProvider); |
if (tagProvider.m_bContent) |
return nullptr; |
+ |
IFDE_CSSComputedStyle* pStyle = CreateStyle(pParentStyle); |
CFDE_CSSAccelerator* pCSSAccel = m_pSelector->InitAccelerator(); |
pCSSAccel->OnEnterTag(&tagProvider); |
@@ -294,7 +295,7 @@ void CXFA_TextParser::ParseRichText(CFDE_XMLNode* pXMLNode, |
eDisplay = pNewStyle->GetPositionStyles()->GetDisplay(); |
} |
pTextContext->SetDisplay(eDisplay); |
- m_mapXMLNodeToParseContext.SetAt(pXMLNode, pTextContext); |
+ m_mapXMLNodeToParseContext[pXMLNode] = pTextContext; |
} |
for (CFDE_XMLNode* pXMLChild = |
pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild); |
@@ -423,17 +424,18 @@ int32_t CXFA_TextParser::GetHorScale(CXFA_TextProvider* pTextProvider, |
CFDE_XMLNode* pXMLNode) const { |
if (pStyle) { |
CFX_WideString wsValue; |
- if (pStyle->GetCustomStyle(FX_WSTRC(L"xfa-font-horizontal-scale"), |
- wsValue)) { |
+ if (pStyle->GetCustomStyle(L"xfa-font-horizontal-scale", wsValue)) { |
return wsValue.GetInteger(); |
} |
while (pXMLNode) { |
- CXFA_TextParseContext* pContext = static_cast<CXFA_TextParseContext*>( |
- m_mapXMLNodeToParseContext.GetValueAt(pXMLNode)); |
- if (pContext && pContext->m_pParentStyle && |
- pContext->m_pParentStyle->GetCustomStyle( |
- FX_WSTRC(L"xfa-font-horizontal-scale"), wsValue)) { |
- return wsValue.GetInteger(); |
+ auto it = m_mapXMLNodeToParseContext.find(pXMLNode); |
+ if (it != m_mapXMLNodeToParseContext.end()) { |
+ CXFA_TextParseContext* pContext = it->second; |
+ if (pContext && pContext->m_pParentStyle && |
+ pContext->m_pParentStyle->GetCustomStyle( |
+ L"xfa-font-horizontal-scale", wsValue)) { |
+ return wsValue.GetInteger(); |
+ } |
} |
pXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::Parent); |
} |
@@ -587,11 +589,13 @@ bool CXFA_TextParser::GetEmbbedObj(CXFA_TextProvider* pTextProvider, |
} |
return bRet; |
} |
+ |
CXFA_TextParseContext* CXFA_TextParser::GetParseContextFromMap( |
CFDE_XMLNode* pXMLNode) { |
- return (CXFA_TextParseContext*)m_mapXMLNodeToParseContext.GetValueAt( |
- pXMLNode); |
+ auto it = m_mapXMLNodeToParseContext.find(pXMLNode); |
+ return it != m_mapXMLNodeToParseContext.end() ? it->second : nullptr; |
} |
+ |
enum XFA_TABSTOPSSTATUS { |
XFA_TABSTOPSSTATUS_Error, |
XFA_TABSTOPSSTATUS_EOS, |