1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #include "core/fpdfapi/page/cpdf_contentmarkitem.h"
8 
9 #include <utility>
10 
11 #include "core/fpdfapi/parser/cpdf_dictionary.h"
12 
13 CPDF_ContentMarkItem::CPDF_ContentMarkItem()
14     : m_ParamType(None), m_pPropertiesDict(nullptr) {}
15 
16 CPDF_ContentMarkItem::CPDF_ContentMarkItem(const CPDF_ContentMarkItem& that)
17     : m_MarkName(that.m_MarkName),
18       m_ParamType(that.m_ParamType),
19       m_pPropertiesDict(that.m_pPropertiesDict) {
20   if (that.m_pDirectDict)
21     m_pDirectDict = ToDictionary(that.m_pDirectDict->Clone());
22 }
23 
24 CPDF_ContentMarkItem::~CPDF_ContentMarkItem() {}
25 
26 CPDF_Dictionary* CPDF_ContentMarkItem::GetParam() const {
27   switch (m_ParamType) {
28     case PropertiesDict:
29       return m_pPropertiesDict.Get();
30     case DirectDict:
31       return m_pDirectDict.get();
32     case None:
33     default:
34       return nullptr;
35   }
36 }
37 
38 bool CPDF_ContentMarkItem::HasMCID() const {
39   CPDF_Dictionary* pDict = GetParam();
40   return pDict && pDict->KeyExist("MCID");
41 }
42 
43 void CPDF_ContentMarkItem::SetDirectDict(
44     std::unique_ptr<CPDF_Dictionary> pDict) {
45   m_ParamType = DirectDict;
46   m_pDirectDict = std::move(pDict);
47 }
48 
49 void CPDF_ContentMarkItem::SetPropertiesDict(CPDF_Dictionary* pDict) {
50   m_ParamType = PropertiesDict;
51   m_pPropertiesDict = pDict;
52 }
53