diff options
author | tsepez <tsepez@chromium.org> | 2016-09-06 12:24:12 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-06 12:24:12 -0700 |
commit | f692e8e33eb2e6811196170238471532edae6858 (patch) | |
tree | a7f45ad5a87a4ddf05530eb2ca23d16eabdba8f2 /core/fpdfapi/fpdf_page/cpdf_contentmark.cpp | |
parent | f40c6f122d6ddd73de21d225fca0c1734c9bdeac (diff) | |
download | pdfium-f692e8e33eb2e6811196170238471532edae6858.tar.xz |
Make CPDF_ContentMarkData private to CPDF_ContentMark
Review-Url: https://codereview.chromium.org/2312743005
Diffstat (limited to 'core/fpdfapi/fpdf_page/cpdf_contentmark.cpp')
-rw-r--r-- | core/fpdfapi/fpdf_page/cpdf_contentmark.cpp | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/core/fpdfapi/fpdf_page/cpdf_contentmark.cpp b/core/fpdfapi/fpdf_page/cpdf_contentmark.cpp index c36f407c36..2e28989976 100644 --- a/core/fpdfapi/fpdf_page/cpdf_contentmark.cpp +++ b/core/fpdfapi/fpdf_page/cpdf_contentmark.cpp @@ -6,6 +6,9 @@ #include "core/fpdfapi/fpdf_page/cpdf_contentmark.h" +#include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h" +#include "third_party/base/stl_util.h" + CPDF_ContentMark::CPDF_ContentMark() {} CPDF_ContentMark::CPDF_ContentMark(const CPDF_ContentMark& that) @@ -26,7 +29,7 @@ const CPDF_ContentMarkItem& CPDF_ContentMark::GetItem(int i) const { } int CPDF_ContentMark::GetMCID() const { - const CPDF_ContentMarkData* pData = m_Ref.GetObject(); + const MarkData* pData = m_Ref.GetObject(); return pData ? pData->GetMCID() : -1; } @@ -43,7 +46,7 @@ void CPDF_ContentMark::DeleteLastMark() { } bool CPDF_ContentMark::HasMark(const CFX_ByteStringC& mark) const { - const CPDF_ContentMarkData* pData = m_Ref.GetObject(); + const MarkData* pData = m_Ref.GetObject(); if (!pData) return false; @@ -56,7 +59,7 @@ bool CPDF_ContentMark::HasMark(const CFX_ByteStringC& mark) const { bool CPDF_ContentMark::LookupMark(const CFX_ByteStringC& mark, CPDF_Dictionary*& pDict) const { - const CPDF_ContentMarkData* pData = m_Ref.GetObject(); + const MarkData* pData = m_Ref.GetObject(); if (!pData) return false; @@ -73,3 +76,57 @@ bool CPDF_ContentMark::LookupMark(const CFX_ByteStringC& mark, } return false; } + +CPDF_ContentMark::MarkData::MarkData() {} + +CPDF_ContentMark::MarkData::MarkData(const MarkData& src) + : m_Marks(src.m_Marks) {} + +CPDF_ContentMark::MarkData::~MarkData() {} + +int CPDF_ContentMark::MarkData::CountItems() const { + return pdfium::CollectionSize<int>(m_Marks); +} + +CPDF_ContentMarkItem& CPDF_ContentMark::MarkData::GetItem(int index) { + return m_Marks[index]; +} + +const CPDF_ContentMarkItem& CPDF_ContentMark::MarkData::GetItem( + int index) const { + return m_Marks[index]; +} + +int CPDF_ContentMark::MarkData::GetMCID() const { + for (const auto& mark : m_Marks) { + CPDF_ContentMarkItem::ParamType type = mark.GetParamType(); + if (type == CPDF_ContentMarkItem::PropertiesDict || + type == CPDF_ContentMarkItem::DirectDict) { + CPDF_Dictionary* pDict = mark.GetParam(); + if (pDict->KeyExist("MCID")) + return pDict->GetIntegerBy("MCID"); + } + } + return -1; +} + +void CPDF_ContentMark::MarkData::AddMark(const CFX_ByteString& name, + CPDF_Dictionary* pDict, + FX_BOOL bDirect) { + CPDF_ContentMarkItem item; + item.SetName(name); + if (pDict) { + if (bDirect) { + item.SetParam(CPDF_ContentMarkItem::DirectDict, + ToDictionary(pDict->Clone())); + } else { + item.SetParam(CPDF_ContentMarkItem::PropertiesDict, pDict); + } + } + m_Marks.push_back(item); +} + +void CPDF_ContentMark::MarkData::DeleteLastMark() { + if (!m_Marks.empty()) + m_Marks.pop_back(); +} |