Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(581)

Side by Side Diff: fpdfsdk/src/fpdfeditpage.cpp

Issue 1406543004: Introduce CPDFPageFromFPDFPage() (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: rebase. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/src/fpdfeditimg.cpp ('k') | fpdfsdk/src/fpdfformfill.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "../../public/fpdf_formfill.h" 8 #include "../../public/fpdf_formfill.h"
9 #include "../include/fsdk_define.h" 9 #include "../include/fsdk_define.h"
10 10
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 pPageDict->SetAt("Resources", new CPDF_Dictionary); 78 pPageDict->SetAt("Resources", new CPDF_Dictionary);
79 79
80 CPDF_Page* pPage = new CPDF_Page; 80 CPDF_Page* pPage = new CPDF_Page;
81 pPage->Load(pDoc, pPageDict); 81 pPage->Load(pDoc, pPageDict);
82 pPage->ParseContent(); 82 pPage->ParseContent();
83 83
84 return pPage; 84 return pPage;
85 } 85 }
86 86
87 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) { 87 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) {
88 CPDF_Page* pPage = (CPDF_Page*)page; 88 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
89 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || 89 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
90 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || 90 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
91 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( 91 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
92 "Page")) { 92 "Page")) {
93 return -1; 93 return -1;
94 } 94 }
95 CPDF_Dictionary* pDict = pPage->m_pFormDict; 95 CPDF_Dictionary* pDict = pPage->m_pFormDict;
96 96
97 int rotate = 0; 97 int rotate = 0;
98 if (pDict != NULL) { 98 if (pDict != NULL) {
(...skipping 23 matching lines...) Expand all
122 } 122 }
123 } else { 123 } else {
124 return -1; 124 return -1;
125 } 125 }
126 126
127 return rotate; 127 return rotate;
128 } 128 }
129 129
130 DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, 130 DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page,
131 FPDF_PAGEOBJECT page_obj) { 131 FPDF_PAGEOBJECT page_obj) {
132 CPDF_Page* pPage = (CPDF_Page*)page; 132 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
133 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || 133 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
134 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || 134 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
135 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( 135 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
136 "Page")) { 136 "Page")) {
137 return; 137 return;
138 } 138 }
139 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj; 139 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj;
140 if (pPageObj == NULL) 140 if (pPageObj == NULL)
141 return; 141 return;
142 FX_POSITION LastPersition = pPage->GetLastObjectPosition(); 142 FX_POSITION LastPersition = pPage->GetLastObjectPosition();
(...skipping 21 matching lines...) Expand all
164 break; 164 break;
165 } 165 }
166 case FPDF_PAGEOBJ_FORM: { 166 case FPDF_PAGEOBJ_FORM: {
167 CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj; 167 CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj;
168 pFormObj->CalcBoundingBox(); 168 pFormObj->CalcBoundingBox();
169 break; 169 break;
170 } 170 }
171 default: 171 default:
172 break; 172 break;
173 } 173 }
174
175 // pPage->ParseContent();
176 // pPage->GenerateContent();
177 } 174 }
178 175
179 DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) { 176 DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) {
180 CPDF_Page* pPage = (CPDF_Page*)page; 177 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
181 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || 178 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
182 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || 179 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
183 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( 180 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
184 "Page")) { 181 "Page")) {
185 return -1; 182 return -1;
186 } 183 }
187 return pPage->CountObjects(); 184 return pPage->CountObjects();
188 // return 0;
189 } 185 }
190 186
191 DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, 187 DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page,
192 int index) { 188 int index) {
193 CPDF_Page* pPage = (CPDF_Page*)page; 189 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
194 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || 190 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
195 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( 191 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
196 "Page")) { 192 "Page")) {
197 return NULL; 193 return NULL;
198 } 194 }
199 return pPage->GetObjectByIndex(index); 195 return pPage->GetObjectByIndex(index);
200 // return NULL;
201 } 196 }
202 197
203 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page) { 198 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page) {
204 if (!page) 199 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
205 return FALSE; 200 return pPage && pPage->BackgroundAlphaNeeded();
206 CPDF_Page* pPage = (CPDF_Page*)page;
207
208 return pPage->BackgroundAlphaNeeded();
209 } 201 }
210 202
211 DLLEXPORT FPDF_BOOL STDCALL 203 DLLEXPORT FPDF_BOOL STDCALL
212 FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) { 204 FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) {
213 if (!pageObject) 205 if (!pageObject)
214 return FALSE; 206 return FALSE;
215 CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject; 207 CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject;
216 208
217 const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; 209 const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState;
218 int blend_type = 210 int blend_type =
(...skipping 21 matching lines...) Expand all
240 return TRUE; 232 return TRUE;
241 if (pFormObj->m_pForm && 233 if (pFormObj->m_pForm &&
242 (!(pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED) && 234 (!(pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED) &&
243 (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP))) 235 (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP)))
244 return TRUE; 236 return TRUE;
245 } 237 }
246 return FALSE; 238 return FALSE;
247 } 239 }
248 240
249 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) { 241 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) {
250 CPDF_Page* pPage = (CPDF_Page*)page; 242 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
251 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || 243 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
252 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || 244 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
253 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( 245 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
254 "Page")) { 246 "Page")) {
255 return FALSE; 247 return FALSE;
256 } 248 }
257 CPDF_PageContentGenerate CG(pPage); 249 CPDF_PageContentGenerate CG(pPage);
258 CG.GenerateContent(); 250 CG.GenerateContent();
259 251
260 return TRUE; 252 return TRUE;
(...skipping 14 matching lines...) Expand all
275 (FX_FLOAT)e, (FX_FLOAT)f); 267 (FX_FLOAT)e, (FX_FLOAT)f);
276 pPageObj->Transform(matrix); 268 pPageObj->Transform(matrix);
277 } 269 }
278 DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page, 270 DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page,
279 double a, 271 double a,
280 double b, 272 double b,
281 double c, 273 double c,
282 double d, 274 double d,
283 double e, 275 double e,
284 double f) { 276 double f) {
285 if (page == NULL) 277 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
278 if (!pPage)
286 return; 279 return;
287 CPDF_Page* pPage = (CPDF_Page*)page;
288 CPDF_AnnotList AnnotList(pPage); 280 CPDF_AnnotList AnnotList(pPage);
289 for (int i = 0; i < AnnotList.Count(); i++) { 281 for (int i = 0; i < AnnotList.Count(); i++) {
290 CPDF_Annot* pAnnot = AnnotList.GetAt(i); 282 CPDF_Annot* pAnnot = AnnotList.GetAt(i);
291 // transformAnnots Rectangle 283 // transformAnnots Rectangle
292 CPDF_Rect rect; 284 CPDF_Rect rect;
293 pAnnot->GetRect(rect); 285 pAnnot->GetRect(rect);
294 CFX_AffineMatrix matrix((FX_FLOAT)a, (FX_FLOAT)b, (FX_FLOAT)c, (FX_FLOAT)d, 286 CFX_AffineMatrix matrix((FX_FLOAT)a, (FX_FLOAT)b, (FX_FLOAT)c, (FX_FLOAT)d,
295 (FX_FLOAT)e, (FX_FLOAT)f); 287 (FX_FLOAT)e, (FX_FLOAT)f);
296 rect.Transform(&matrix); 288 rect.Transform(&matrix);
297 CPDF_Array* pRectArray = NULL; 289 CPDF_Array* pRectArray = NULL;
298 pRectArray = pAnnot->GetAnnotDict()->GetArray("Rect"); 290 pRectArray = pAnnot->GetAnnotDict()->GetArray("Rect");
299 if (!pRectArray) 291 if (!pRectArray)
300 pRectArray = CPDF_Array::Create(); 292 pRectArray = CPDF_Array::Create();
301 pRectArray->SetAt(0, new CPDF_Number(rect.left)); 293 pRectArray->SetAt(0, new CPDF_Number(rect.left));
302 pRectArray->SetAt(1, new CPDF_Number(rect.bottom)); 294 pRectArray->SetAt(1, new CPDF_Number(rect.bottom));
303 pRectArray->SetAt(2, new CPDF_Number(rect.right)); 295 pRectArray->SetAt(2, new CPDF_Number(rect.right));
304 pRectArray->SetAt(3, new CPDF_Number(rect.top)); 296 pRectArray->SetAt(3, new CPDF_Number(rect.top));
305 pAnnot->GetAnnotDict()->SetAt("Rect", pRectArray); 297 pAnnot->GetAnnotDict()->SetAt("Rect", pRectArray);
306 298
307 // Transform AP's rectangle 299 // Transform AP's rectangle
308 // To Do 300 // To Do
309 } 301 }
310 } 302 }
311 303
312 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) { 304 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) {
313 CPDF_Page* pPage = (CPDF_Page*)page; 305 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
314 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") || 306 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
315 !pPage->m_pFormDict->GetElement("Type")->GetDirect() || 307 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
316 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare( 308 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
317 "Page")) { 309 "Page")) {
318 return; 310 return;
319 } 311 }
320 CPDF_Dictionary* pDict = pPage->m_pFormDict; 312 CPDF_Dictionary* pDict = pPage->m_pFormDict;
321 rotate %= 4; 313 rotate %= 4;
322 314
323 pDict->SetAt("Rotate", new CPDF_Number(rotate * 90)); 315 pDict->SetAt("Rotate", new CPDF_Number(rotate * 90));
324 } 316 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdfeditimg.cpp ('k') | fpdfsdk/src/fpdfformfill.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698