Index: core/fpdfapi/fpdf_page/cpdf_contentmarkdata.cpp |
diff --git a/core/fpdfapi/fpdf_page/cpdf_contentmarkdata.cpp b/core/fpdfapi/fpdf_page/cpdf_contentmarkdata.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..076e8ac521d706f4cd8091bca2c6a688cebcd895 |
--- /dev/null |
+++ b/core/fpdfapi/fpdf_page/cpdf_contentmarkdata.cpp |
@@ -0,0 +1,51 @@ |
+// Copyright 2016 PDFium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+ |
+#include "core/fpdfapi/fpdf_page/cpdf_contentmarkdata.h" |
+ |
+#include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h" |
+#include "third_party/base/stl_util.h" |
+ |
+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 { |
+ 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_ContentMarkData::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_ContentMarkData::DeleteLastMark() { |
+ if (!m_Marks.empty()) |
+ m_Marks.pop_back(); |
+} |