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 "public/fpdf_edit.h" | 7 #include "public/fpdf_edit.h" |
8 | 8 |
9 #include "core/fpdfapi/fpdf_edit/include/cpdf_pagecontentgenerator.h" | 9 #include "core/fpdfapi/fpdf_edit/include/cpdf_pagecontentgenerator.h" |
10 #include "core/fpdfapi/fpdf_page/include/cpdf_form.h" | 10 #include "core/fpdfapi/fpdf_page/include/cpdf_form.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 pPage->Load(pDoc, pPageDict); | 104 pPage->Load(pDoc, pPageDict); |
105 pPage->ParseContent(nullptr); | 105 pPage->ParseContent(nullptr); |
106 #endif // PDF_ENABLE_XFA | 106 #endif // PDF_ENABLE_XFA |
107 | 107 |
108 return pPage; | 108 return pPage; |
109 } | 109 } |
110 | 110 |
111 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) { | 111 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) { |
112 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 112 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
113 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || | 113 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || |
114 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || | 114 !pPage->m_pFormDict->GetObjectBy("Type")->GetDirect() || |
115 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( | 115 pPage->m_pFormDict->GetObjectBy("Type")->GetDirect()->GetString().Compare( |
116 "Page")) { | 116 "Page")) { |
117 return -1; | 117 return -1; |
118 } | 118 } |
119 CPDF_Dictionary* pDict = pPage->m_pFormDict; | 119 CPDF_Dictionary* pDict = pPage->m_pFormDict; |
120 if (!pDict) | 120 if (!pDict) |
121 return -1; | 121 return -1; |
122 | 122 |
123 while (pDict) { | 123 while (pDict) { |
124 if (pDict->KeyExist("Rotate")) { | 124 if (pDict->KeyExist("Rotate")) { |
125 CPDF_Object* pRotateObj = pDict->GetElement("Rotate")->GetDirect(); | 125 CPDF_Object* pRotateObj = pDict->GetObjectBy("Rotate")->GetDirect(); |
126 return pRotateObj ? pRotateObj->GetInteger() / 90 : 0; | 126 return pRotateObj ? pRotateObj->GetInteger() / 90 : 0; |
127 } | 127 } |
128 if (!pDict->KeyExist("Parent")) | 128 if (!pDict->KeyExist("Parent")) |
129 break; | 129 break; |
130 | 130 |
131 pDict = ToDictionary(pDict->GetElement("Parent")->GetDirect()); | 131 pDict = ToDictionary(pDict->GetObjectBy("Parent")->GetDirect()); |
132 } | 132 } |
133 | 133 |
134 return 0; | 134 return 0; |
135 } | 135 } |
136 | 136 |
137 DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, | 137 DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, |
138 FPDF_PAGEOBJECT page_obj) { | 138 FPDF_PAGEOBJECT page_obj) { |
139 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 139 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
140 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || | 140 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || |
141 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || | 141 !pPage->m_pFormDict->GetObjectBy("Type")->GetDirect() || |
142 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( | 142 pPage->m_pFormDict->GetObjectBy("Type")->GetDirect()->GetString().Compare( |
143 "Page")) { | 143 "Page")) { |
144 return; | 144 return; |
145 } | 145 } |
146 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj; | 146 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj; |
147 if (!pPageObj) | 147 if (!pPageObj) |
148 return; | 148 return; |
149 | 149 |
150 pPage->GetPageObjectList()->push_back( | 150 pPage->GetPageObjectList()->push_back( |
151 std::unique_ptr<CPDF_PageObject>(pPageObj)); | 151 std::unique_ptr<CPDF_PageObject>(pPageObj)); |
152 | 152 |
(...skipping 22 matching lines...) Expand all Loading... |
175 break; | 175 break; |
176 } | 176 } |
177 default: | 177 default: |
178 break; | 178 break; |
179 } | 179 } |
180 } | 180 } |
181 | 181 |
182 DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) { | 182 DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) { |
183 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 183 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
184 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || | 184 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || |
185 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || | 185 !pPage->m_pFormDict->GetObjectBy("Type")->GetDirect() || |
186 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( | 186 pPage->m_pFormDict->GetObjectBy("Type")->GetDirect()->GetString().Compare( |
187 "Page")) { | 187 "Page")) { |
188 return -1; | 188 return -1; |
189 } | 189 } |
190 return pdfium::CollectionSize<int>(*pPage->GetPageObjectList()); | 190 return pdfium::CollectionSize<int>(*pPage->GetPageObjectList()); |
191 } | 191 } |
192 | 192 |
193 DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, | 193 DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, |
194 int index) { | 194 int index) { |
195 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 195 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
196 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || | 196 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || |
197 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( | 197 pPage->m_pFormDict->GetObjectBy("Type")->GetDirect()->GetString().Compare( |
198 "Page")) { | 198 "Page")) { |
199 return nullptr; | 199 return nullptr; |
200 } | 200 } |
201 return pPage->GetPageObjectList()->GetPageObjectByIndex(index); | 201 return pPage->GetPageObjectList()->GetPageObjectByIndex(index); |
202 } | 202 } |
203 | 203 |
204 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page) { | 204 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page) { |
205 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 205 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
206 return pPage && pPage->BackgroundAlphaNeeded(); | 206 return pPage && pPage->BackgroundAlphaNeeded(); |
207 } | 207 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 (!(pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED) && | 240 (!(pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED) && |
241 (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP))) | 241 (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP))) |
242 return TRUE; | 242 return TRUE; |
243 } | 243 } |
244 return FALSE; | 244 return FALSE; |
245 } | 245 } |
246 | 246 |
247 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) { | 247 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) { |
248 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 248 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
249 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || | 249 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || |
250 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || | 250 !pPage->m_pFormDict->GetObjectBy("Type")->GetDirect() || |
251 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( | 251 pPage->m_pFormDict->GetObjectBy("Type")->GetDirect()->GetString().Compare( |
252 "Page")) { | 252 "Page")) { |
253 return FALSE; | 253 return FALSE; |
254 } | 254 } |
255 CPDF_PageContentGenerator CG(pPage); | 255 CPDF_PageContentGenerator CG(pPage); |
256 CG.GenerateContent(); | 256 CG.GenerateContent(); |
257 | 257 |
258 return TRUE; | 258 return TRUE; |
259 } | 259 } |
260 | 260 |
261 DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, | 261 DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 pAnnot->GetAnnotDict()->SetAt("Rect", pRectArray); | 303 pAnnot->GetAnnotDict()->SetAt("Rect", pRectArray); |
304 | 304 |
305 // Transform AP's rectangle | 305 // Transform AP's rectangle |
306 // To Do | 306 // To Do |
307 } | 307 } |
308 } | 308 } |
309 | 309 |
310 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) { | 310 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) { |
311 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); | 311 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
312 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || | 312 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || |
313 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || | 313 !pPage->m_pFormDict->GetObjectBy("Type")->GetDirect() || |
314 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( | 314 pPage->m_pFormDict->GetObjectBy("Type")->GetDirect()->GetString().Compare( |
315 "Page")) { | 315 "Page")) { |
316 return; | 316 return; |
317 } | 317 } |
318 CPDF_Dictionary* pDict = pPage->m_pFormDict; | 318 CPDF_Dictionary* pDict = pPage->m_pFormDict; |
319 rotate %= 4; | 319 rotate %= 4; |
320 | 320 |
321 pDict->SetAt("Rotate", new CPDF_Number(rotate * 90)); | 321 pDict->SetAt("Rotate", new CPDF_Number(rotate * 90)); |
322 } | 322 } |
OLD | NEW |