diff options
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp | 47 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_render/fpdf_render.cpp | 2 | ||||
-rw-r--r-- | core/src/fpdfdoc/doc_annot.cpp | 4 | ||||
-rw-r--r-- | core/src/fxcrt/fx_xml_parser.cpp | 70 |
4 files changed, 53 insertions, 70 deletions
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp index a428287e19..818ec8fd2f 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp @@ -11,6 +11,7 @@ #include "core/include/fpdfapi/fpdf_pageobj.h" #include "core/include/fpdfapi/fpdf_render.h" #include "core/src/fpdfapi/fpdf_render/render_int.h" +#include "third_party/base/stl_util.h" void CPDF_GraphicStates::DefaultStates() { m_ColorState.New()->Default(); @@ -610,44 +611,48 @@ FX_BOOL CPDF_ContentMarkItem::HasMCID() const { } return FALSE; } -CPDF_ContentMarkData::CPDF_ContentMarkData(const CPDF_ContentMarkData& src) { - for (int i = 0; i < src.m_Marks.GetSize(); i++) { - m_Marks.Add(src.m_Marks[i]); - } + +CPDF_ContentMarkData::CPDF_ContentMarkData(const CPDF_ContentMarkData& src) + : m_Marks(src.m_Marks) {} + +int CPDF_ContentMarkData::CountItems() const { + return pdfium::CollectionSize<int>(m_Marks); } + int CPDF_ContentMarkData::GetMCID() const { - CPDF_ContentMarkItem::ParamType type = CPDF_ContentMarkItem::None; - for (int i = 0; i < m_Marks.GetSize(); i++) { - type = m_Marks[i].GetParamType(); + for (const auto& mark : m_Marks) { + CPDF_ContentMarkItem::ParamType type = mark.GetParamType(); if (type == CPDF_ContentMarkItem::PropertiesDict || type == CPDF_ContentMarkItem::DirectDict) { - CPDF_Dictionary* pDict = m_Marks[i].GetParam(); - if (pDict->KeyExist("MCID")) { + CPDF_Dictionary* pDict = mark.GetParam(); + if (pDict->KeyExist("MCID")) return pDict->GetIntegerBy("MCID"); - } } } return -1; } + void CPDF_ContentMarkData::AddMark(const CFX_ByteString& name, CPDF_Dictionary* pDict, FX_BOOL bDirect) { - CPDF_ContentMarkItem& item = m_Marks.Add(); + CPDF_ContentMarkItem item; item.SetName(name); - if (!pDict) { - return; + if (pDict) { + if (bDirect) { + item.SetParam(CPDF_ContentMarkItem::DirectDict, + ToDictionary(pDict->Clone())); + } else { + item.SetParam(CPDF_ContentMarkItem::PropertiesDict, pDict); + } } - item.SetParam(bDirect ? CPDF_ContentMarkItem::DirectDict - : CPDF_ContentMarkItem::PropertiesDict, - bDirect ? ToDictionary(pDict->Clone()) : pDict); + m_Marks.push_back(item); } + void CPDF_ContentMarkData::DeleteLastMark() { - int size = m_Marks.GetSize(); - if (size == 0) { - return; - } - m_Marks.RemoveAt(size - 1); + if (!m_Marks.empty()) + m_Marks.pop_back(); } + FX_BOOL CPDF_ContentMark::HasMark(const CFX_ByteStringC& mark) const { if (!m_pObject) { return FALSE; diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp index 147de51f4d..8e205df281 100644 --- a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp +++ b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp @@ -1332,7 +1332,7 @@ FX_BOOL IPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj) { const CPDF_ContentMarkData* pData = pObj->m_ContentMark; int nItems = pData->CountItems(); for (int i = 0; i < nItems; i++) { - CPDF_ContentMarkItem& item = pData->GetItem(i); + const CPDF_ContentMarkItem& item = pData->GetItem(i); if (item.GetName() == "OC" && item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict && !CheckOCGVisible(item.GetParam())) { diff --git a/core/src/fpdfdoc/doc_annot.cpp b/core/src/fpdfdoc/doc_annot.cpp index a73d24410c..4b0b2b54bc 100644 --- a/core/src/fpdfdoc/doc_annot.cpp +++ b/core/src/fpdfdoc/doc_annot.cpp @@ -310,7 +310,7 @@ void CPDF_Annot::DrawBorder(CFX_RenderDevice* pDevice, int B = (int32_t)(pColor->GetNumberAt(2) * 255); argb = ArgbEncode(0xff, R, G, B); } - CPDF_GraphStateData graph_state; + CFX_GraphStateData graph_state; graph_state.m_LineWidth = width; if (style_char == 'D') { if (pDashArray) { @@ -335,7 +335,7 @@ void CPDF_Annot::DrawBorder(CFX_RenderDevice* pDevice, } CFX_FloatRect rect; GetRect(rect); - CPDF_PathData path; + CFX_PathData path; width /= 2; path.AppendRect(rect.left + width, rect.bottom + width, rect.right - width, rect.top - width); diff --git a/core/src/fxcrt/fx_xml_parser.cpp b/core/src/fxcrt/fx_xml_parser.cpp index 88789437c9..ab729eebaf 100644 --- a/core/src/fxcrt/fx_xml_parser.cpp +++ b/core/src/fxcrt/fx_xml_parser.cpp @@ -8,6 +8,7 @@ #include "core/include/fxcrt/fx_ext.h" #include "core/include/fxcrt/fx_xml.h" +#include "third_party/base/stl_util.h" CXML_Parser::~CXML_Parser() { if (m_bOwnedStream) { @@ -748,67 +749,44 @@ FX_DWORD CXML_Element::FindElement(CXML_Element* pChild) const { } return (FX_DWORD)-1; } + +bool CXML_AttrItem::Matches(const CFX_ByteStringC& space, + const CFX_ByteStringC& name) const { + return (space.IsEmpty() || m_QSpaceName == space) && m_AttrName == name; +} + const CFX_WideString* CXML_AttrMap::Lookup(const CFX_ByteStringC& space, const CFX_ByteStringC& name) const { - if (!m_pMap) { - return NULL; - } - for (int i = 0; i < m_pMap->GetSize(); i++) { - CXML_AttrItem& item = GetAt(i); - if ((space.IsEmpty() || item.m_QSpaceName == space) && - item.m_AttrName == name) { + if (!m_pMap) + return nullptr; + + for (const auto& item : *m_pMap) { + if (item.Matches(space, name)) return &item.m_Value; - } } - return NULL; + return nullptr; } + void CXML_AttrMap::SetAt(const CFX_ByteStringC& space, const CFX_ByteStringC& name, const CFX_WideStringC& value) { - for (int i = 0; i < GetSize(); i++) { - CXML_AttrItem& item = GetAt(i); - if ((space.IsEmpty() || item.m_QSpaceName == space) && - item.m_AttrName == name) { + if (!m_pMap) + m_pMap.reset(new std::vector<CXML_AttrItem>); + + for (CXML_AttrItem& item : *m_pMap) { + if (item.Matches(space, name)) { item.m_Value = value; return; } } - if (!m_pMap) { - m_pMap = new CFX_ObjectArray<CXML_AttrItem>; - } - CXML_AttrItem* pItem = (CXML_AttrItem*)m_pMap->AddSpace(); - if (!pItem) { - return; - } - pItem->m_QSpaceName = space; - pItem->m_AttrName = name; - pItem->m_Value = value; -} -void CXML_AttrMap::RemoveAt(const CFX_ByteStringC& space, - const CFX_ByteStringC& name) { - if (!m_pMap) { - return; - } - for (int i = 0; i < m_pMap->GetSize(); i++) { - CXML_AttrItem& item = GetAt(i); - if ((space.IsEmpty() || item.m_QSpaceName == space) && - item.m_AttrName == name) { - m_pMap->RemoveAt(i); - return; - } - } + + m_pMap->push_back({space, name, value}); } + int CXML_AttrMap::GetSize() const { - return m_pMap ? m_pMap->GetSize() : 0; + return m_pMap ? pdfium::CollectionSize<int>(*m_pMap) : 0; } + CXML_AttrItem& CXML_AttrMap::GetAt(int index) const { return (*m_pMap)[index]; } -void CXML_AttrMap::RemoveAll() { - if (!m_pMap) { - return; - } - m_pMap->RemoveAll(); - delete m_pMap; - m_pMap = NULL; -} |