| Index: core/fpdfapi/fpdf_page/cpdf_contentmarkitem.cpp
|
| diff --git a/core/fpdfapi/fpdf_page/cpdf_contentmarkitem.cpp b/core/fpdfapi/fpdf_page/cpdf_contentmarkitem.cpp
|
| index f44972568d37a81290f6581a7d7bd5d03eda3ca0..5e2d21f850bad5e19f6af414ce464cbfec19eb11 100644
|
| --- a/core/fpdfapi/fpdf_page/cpdf_contentmarkitem.cpp
|
| +++ b/core/fpdfapi/fpdf_page/cpdf_contentmarkitem.cpp
|
| @@ -9,27 +9,42 @@
|
| #include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h"
|
|
|
| CPDF_ContentMarkItem::CPDF_ContentMarkItem()
|
| - : m_ParamType(None), m_pParam(nullptr) {}
|
| -
|
| -CPDF_ContentMarkItem::CPDF_ContentMarkItem(const CPDF_ContentMarkItem& src) {
|
| - m_MarkName = src.m_MarkName;
|
| - m_ParamType = src.m_ParamType;
|
| - if (m_ParamType == DirectDict) {
|
| - m_pParam = ToDictionary(src.m_pParam->Clone());
|
| - } else {
|
| - m_pParam = src.m_pParam;
|
| - }
|
| + : m_ParamType(None), m_pPropertiesDict(nullptr) {}
|
| +
|
| +CPDF_ContentMarkItem::CPDF_ContentMarkItem(const CPDF_ContentMarkItem& that)
|
| + : m_MarkName(that.m_MarkName),
|
| + m_ParamType(that.m_ParamType),
|
| + m_pPropertiesDict(that.m_pPropertiesDict) {
|
| + if (that.m_pDirectDict)
|
| + m_pDirectDict.reset(that.m_pDirectDict->Clone()->AsDictionary());
|
| }
|
|
|
| -CPDF_ContentMarkItem::~CPDF_ContentMarkItem() {
|
| - if (m_ParamType == DirectDict && m_pParam)
|
| - m_pParam->Release();
|
| +CPDF_ContentMarkItem::~CPDF_ContentMarkItem() {}
|
| +
|
| +CPDF_Dictionary* CPDF_ContentMarkItem::GetParam() const {
|
| + switch (m_ParamType) {
|
| + case PropertiesDict:
|
| + return m_pPropertiesDict;
|
| + case DirectDict:
|
| + return m_pDirectDict.get();
|
| + case None:
|
| + default:
|
| + return nullptr;
|
| + }
|
| }
|
|
|
| FX_BOOL CPDF_ContentMarkItem::HasMCID() const {
|
| - if (m_pParam &&
|
| - (m_ParamType == DirectDict || m_ParamType == PropertiesDict)) {
|
| - return m_pParam->KeyExist("MCID");
|
| - }
|
| - return FALSE;
|
| + CPDF_Dictionary* pDict = GetParam();
|
| + return pDict && pDict->KeyExist("MCID");
|
| +}
|
| +
|
| +void CPDF_ContentMarkItem::SetDirectDict(
|
| + std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict) {
|
| + m_ParamType = DirectDict;
|
| + m_pDirectDict = std::move(pDict);
|
| +}
|
| +
|
| +void CPDF_ContentMarkItem::SetPropertiesDict(CPDF_Dictionary* pDict) {
|
| + m_ParamType = PropertiesDict;
|
| + m_pPropertiesDict = pDict;
|
| }
|
|
|