OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "core/include/fpdfapi/fpdf_module.h" | 7 #include "core/include/fpdfapi/fpdf_module.h" |
8 #include "core/include/fpdfapi/fpdf_page.h" | 8 #include "core/include/fpdfapi/fpdf_page.h" |
9 #include "core/include/fpdfapi/fpdf_serial.h" | 9 #include "core/include/fpdfapi/fpdf_serial.h" |
10 #include "core/src/fpdfapi/fpdf_page/pageint.h" | 10 #include "core/src/fpdfapi/fpdf_page/pageint.h" |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 } | 99 } |
100 } | 100 } |
101 void CPDF_PageContentGenerate::ProcessForm(CFX_ByteTextBuf& buf, | 101 void CPDF_PageContentGenerate::ProcessForm(CFX_ByteTextBuf& buf, |
102 const uint8_t* data, | 102 const uint8_t* data, |
103 FX_DWORD size, | 103 FX_DWORD size, |
104 CFX_Matrix& matrix) { | 104 CFX_Matrix& matrix) { |
105 if (!data || !size) { | 105 if (!data || !size) { |
106 return; | 106 return; |
107 } | 107 } |
108 CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); | 108 CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); |
109 CPDF_Dictionary* pFormDict = CPDF_Dictionary::Create(); | 109 CPDF_Dictionary* pFormDict = new CPDF_Dictionary; |
110 pFormDict->SetAtName("Type", "XObject"); | 110 pFormDict->SetAtName("Type", "XObject"); |
111 pFormDict->SetAtName("Subtype", "Form"); | 111 pFormDict->SetAtName("Subtype", "Form"); |
112 CFX_FloatRect bbox = m_pPage->GetPageBBox(); | 112 CFX_FloatRect bbox = m_pPage->GetPageBBox(); |
113 matrix.TransformRect(bbox); | 113 matrix.TransformRect(bbox); |
114 pFormDict->SetAtRect("BBox", bbox); | 114 pFormDict->SetAtRect("BBox", bbox); |
115 pStream->InitStream((uint8_t*)data, size, pFormDict); | 115 pStream->InitStream((uint8_t*)data, size, pFormDict); |
116 buf << "q " << matrix << " cm "; | 116 buf << "q " << matrix << " cm "; |
117 CFX_ByteString name = RealizeResource(pStream, "XObject"); | 117 CFX_ByteString name = RealizeResource(pStream, "XObject"); |
118 buf << "/" << PDF_NameEncode(name) << " Do Q\n"; | 118 buf << "/" << PDF_NameEncode(name) << " Do Q\n"; |
119 } | 119 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 CPDF_StreamAcc contentStream; | 156 CPDF_StreamAcc contentStream; |
157 contentStream.LoadAllData(pStream); | 157 contentStream.LoadAllData(pStream); |
158 ProcessForm(buf, contentStream.GetData(), contentStream.GetSize(), matrix); | 158 ProcessForm(buf, contentStream.GetData(), contentStream.GetSize(), matrix); |
159 } | 159 } |
160 CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); | 160 CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); |
161 pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE); | 161 pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE); |
162 m_pDocument->AddIndirectObject(pStream); | 162 m_pDocument->AddIndirectObject(pStream); |
163 m_pPage->m_pFormDict->SetAtReference("Contents", m_pDocument, | 163 m_pPage->m_pFormDict->SetAtReference("Contents", m_pDocument, |
164 pStream->GetObjNum()); | 164 pStream->GetObjNum()); |
165 } | 165 } |
OLD | NEW |