diff options
author | Henrique Nakashima <hnakashima@chromium.org> | 2018-07-11 18:58:42 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-07-11 18:58:42 +0000 |
commit | 8ac090c4a57bc27044adc7abe8143ce45388b021 (patch) | |
tree | 1e7edcced6de44e83e11b63578bc1f8b00399f34 /core/fpdfapi/page/cpdf_contentmark.cpp | |
parent | b165ffb64e59998ec6d5f76c82bd2fe53734b3cd (diff) | |
download | pdfium-8ac090c4a57bc27044adc7abe8143ce45388b021.tar.xz |
Split CPDF_ContentMark::AddMark() into three versions.
One version is for a mark without a dictionary. The second is for
a mark with a direct dictionary. The third is for a mark with
indirect properties.
Bug: pdfium:1118
Change-Id: Ice0ff11d5ba4eaf2ccdf57be49b9140ba5c9b159
Reviewed-on: https://pdfium-review.googlesource.com/37550
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Diffstat (limited to 'core/fpdfapi/page/cpdf_contentmark.cpp')
-rw-r--r-- | core/fpdfapi/page/cpdf_contentmark.cpp | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/core/fpdfapi/page/cpdf_contentmark.cpp b/core/fpdfapi/page/cpdf_contentmark.cpp index 912cc0ea03..08b38f20c2 100644 --- a/core/fpdfapi/page/cpdf_contentmark.cpp +++ b/core/fpdfapi/page/cpdf_contentmark.cpp @@ -46,13 +46,26 @@ int CPDF_ContentMark::GetMarkedContentID() const { return m_pMarkData->GetMarkedContentID(); } -void CPDF_ContentMark::AddMark(ByteString name, - CPDF_Dictionary* pDict, - bool bDirect) { +void CPDF_ContentMark::AddMark(ByteString name) { + EnsureMarkDataExists(); + m_pMarkData->AddMark(std::move(name)); +} + +void CPDF_ContentMark::AddMarkWithDirectDict(ByteString name, + CPDF_Dictionary* pDict) { + EnsureMarkDataExists(); + m_pMarkData->AddMarkWithDirectDict(std::move(name), pDict); +} + +void CPDF_ContentMark::AddMarkWithPropertiesDict(ByteString name, + CPDF_Dictionary* pDict) { + EnsureMarkDataExists(); + m_pMarkData->AddMarkWithPropertiesDict(std::move(name), pDict); +} + +void CPDF_ContentMark::EnsureMarkDataExists() { if (!m_pMarkData) m_pMarkData.Reset(new MarkData()); - - m_pMarkData->AddMark(std::move(name), pDict, bDirect); } void CPDF_ContentMark::DeleteLastMark() { @@ -93,17 +106,26 @@ int CPDF_ContentMark::MarkData::GetMarkedContentID() const { return -1; } -void CPDF_ContentMark::MarkData::AddMark(ByteString name, - CPDF_Dictionary* pDict, - bool bDirect) { +void CPDF_ContentMark::MarkData::AddMark(ByteString name) { auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(); pItem->SetName(std::move(name)); - if (pDict) { - if (bDirect) - pItem->SetDirectDict(ToDictionary(pDict->Clone())); - else - pItem->SetPropertiesDict(pDict); - } + m_Marks.push_back(pItem); +} + +void CPDF_ContentMark::MarkData::AddMarkWithDirectDict(ByteString name, + CPDF_Dictionary* pDict) { + auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(); + pItem->SetName(std::move(name)); + pItem->SetDirectDict(ToDictionary(pDict->Clone())); + m_Marks.push_back(pItem); +} + +void CPDF_ContentMark::MarkData::AddMarkWithPropertiesDict( + ByteString name, + CPDF_Dictionary* pDict) { + auto pItem = pdfium::MakeRetain<CPDF_ContentMarkItem>(); + pItem->SetName(std::move(name)); + pItem->SetPropertiesDict(pDict); m_Marks.push_back(pItem); } |