| 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 |