diff options
author | tsepez <tsepez@chromium.org> | 2016-09-19 10:45:09 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-19 10:45:09 -0700 |
commit | e6db16e7e6cdc3dd213c16de0d792b77656ac7a6 (patch) | |
tree | 2097b754b075107b8cd149eb99c62cdd2db06ac8 /core/fpdfapi/fpdf_edit | |
parent | a5b37f6b916f1a35d3fbb3f0b41e9e4b4d265370 (diff) | |
download | pdfium-e6db16e7e6cdc3dd213c16de0d792b77656ac7a6.tar.xz |
Clean up CPDF_Stream.
Replace the CPDF_Stream(nullptr, 0, nullptr) pattern with
a default ctor.
Remove unused parameters from CPDF_Stream::SetData(). Both
are always passed as FALSE.
CPDF_Stream declared its own m_GenNum, which shadowed the one
in CPDF_Object. It was used only to distinguish file/memory
streams, so add a bool explicitly for this purpose.
Remove the union, it would be sad if we confused user data
with a C++ object with virtual function calls.
Use unique_ptrs with appropriate deleters to manage memory.
Review-Url: https://codereview.chromium.org/2347993002
Diffstat (limited to 'core/fpdfapi/fpdf_edit')
-rw-r--r-- | core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp index d3d55b91b5..7acd368683 100644 --- a/core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp +++ b/core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp @@ -53,8 +53,8 @@ void CPDF_PageContentGenerator::GenerateContent() { if (pContent) { pPageDict->RemoveFor("Contents"); } - CPDF_Stream* pStream = new CPDF_Stream(nullptr, 0, nullptr); - pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE); + CPDF_Stream* pStream = new CPDF_Stream; + pStream->SetData(buf.GetBuffer(), buf.GetLength()); m_pDocument->AddIndirectObject(pStream); pPageDict->SetReferenceFor("Contents", m_pDocument, pStream->GetObjNum()); } @@ -109,21 +109,25 @@ void CPDF_PageContentGenerator::ProcessForm(CFX_ByteTextBuf& buf, const uint8_t* data, uint32_t size, CFX_Matrix& matrix) { - if (!data || !size) { + if (!data || !size) return; - } - CPDF_Stream* pStream = new CPDF_Stream(nullptr, 0, nullptr); + CPDF_Dictionary* pFormDict = new CPDF_Dictionary; pFormDict->SetNameFor("Type", "XObject"); pFormDict->SetNameFor("Subtype", "Form"); + CFX_FloatRect bbox = m_pPage->GetPageBBox(); matrix.TransformRect(bbox); pFormDict->SetRectFor("BBox", bbox); + + CPDF_Stream* pStream = new CPDF_Stream; pStream->InitStream(data, size, pFormDict); buf << "q " << matrix << " cm "; + CFX_ByteString name = RealizeResource(pStream, "XObject"); buf << "/" << PDF_NameEncode(name) << " Do Q\n"; } + void CPDF_PageContentGenerator::TransformContent(CFX_Matrix& matrix) { CPDF_Dictionary* pDict = m_pPage->m_pFormDict; CPDF_Object* pContent = @@ -164,8 +168,8 @@ void CPDF_PageContentGenerator::TransformContent(CFX_Matrix& matrix) { contentStream.LoadAllData(pStream); ProcessForm(buf, contentStream.GetData(), contentStream.GetSize(), matrix); } - CPDF_Stream* pStream = new CPDF_Stream(nullptr, 0, nullptr); - pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE); + CPDF_Stream* pStream = new CPDF_Stream; + pStream->SetData(buf.GetBuffer(), buf.GetLength()); m_pDocument->AddIndirectObject(pStream); m_pPage->m_pFormDict->SetReferenceFor("Contents", m_pDocument, pStream->GetObjNum()); |