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 "../include/fsdk_define.h" | 7 #include "../include/fsdk_define.h" |
8 #include "../include/fpdfedit.h" | 8 #include "../include/fpdfedit.h" |
9 | 9 |
10 | 10 |
11 #if _FX_OS_ == _FX_ANDROID_ | 11 #if _FX_OS_ == _FX_ANDROID_ |
12 #include "time.h" | 12 #include "time.h" |
13 #else | 13 #else |
14 #include <ctime> | 14 #include <ctime> |
15 #endif | 15 #endif |
16 | 16 |
17 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument() | 17 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument() |
18 { | 18 { |
19 » CPDF_Document* pDoc = FX_NEW CPDF_Document; | 19 » CPDF_Document* pDoc = new CPDF_Document; |
20 » if (!pDoc) | |
21 » » return NULL; | |
22 pDoc->CreateNewDoc(); | 20 pDoc->CreateNewDoc(); |
23 time_t currentTime; | 21 time_t currentTime; |
24 | 22 |
25 CFX_ByteString DateStr; | 23 CFX_ByteString DateStr; |
26 | 24 |
27 if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) | 25 if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) |
28 { | 26 { |
29 if ( -1 != time( ¤tTime ) ) | 27 if ( -1 != time( ¤tTime ) ) |
30 { | 28 { |
31 tm * pTM = localtime( ¤tTime ); | 29 tm * pTM = localtime( ¤tTime ); |
32 if ( pTM ) | 30 if ( pTM ) |
33 { | 31 { |
34 DateStr.Format( "D:%04d%02d%02d%02d%02d%02d", pT
M->tm_year+1900, pTM->tm_mon+1, | 32 DateStr.Format( "D:%04d%02d%02d%02d%02d%02d", pT
M->tm_year+1900, pTM->tm_mon+1, |
35 pTM->tm_mday, pTM->tm_hour, pTM->tm_min,
pTM->tm_sec ); | 33 pTM->tm_mday, pTM->tm_hour, pTM->tm_min,
pTM->tm_sec ); |
36 } | 34 } |
37 } | 35 } |
38 } | 36 } |
39 | 37 |
40 CPDF_Dictionary* pInfoDict = NULL; | 38 CPDF_Dictionary* pInfoDict = NULL; |
41 pInfoDict = pDoc->GetInfo(); | 39 pInfoDict = pDoc->GetInfo(); |
42 if (pInfoDict) | 40 if (pInfoDict) |
43 { | 41 { |
44 if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) | 42 if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) |
45 pInfoDict->SetAt("CreationDate", new CPDF_String(DateStr
)); | 43 pInfoDict->SetAt("CreationDate", new CPDF_String(DateStr
)); |
46 » » pInfoDict->SetAt("Creator",FX_NEW CPDF_String(L"PDFium")); | 44 » » pInfoDict->SetAt("Creator", new CPDF_String(L"PDFium")); |
47 } | 45 } |
48 | 46 |
49 return pDoc; | 47 return pDoc; |
50 } | 48 } |
51 | 49 |
52 DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index) | 50 DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index) |
53 { | 51 { |
54 CPDF_Document* pDoc = (CPDF_Document*)document; | 52 CPDF_Document* pDoc = (CPDF_Document*)document; |
55 if (pDoc == NULL) | 53 if (pDoc == NULL) |
56 return; | 54 return; |
(...skipping 13 matching lines...) Expand all Loading... |
70 if(page_index < 0) | 68 if(page_index < 0) |
71 page_index = 0; | 69 page_index = 0; |
72 if(pDoc->GetPageCount()<page_index) | 70 if(pDoc->GetPageCount()<page_index) |
73 page_index = pDoc->GetPageCount(); | 71 page_index = pDoc->GetPageCount(); |
74 // if (page_index < 0 || page_index >= pDoc->GetPageCount()) | 72 // if (page_index < 0 || page_index >= pDoc->GetPageCount()) |
75 // return NULL; | 73 // return NULL; |
76 | 74 |
77 CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index); | 75 CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index); |
78 if(!pPageDict) | 76 if(!pPageDict) |
79 return NULL; | 77 return NULL; |
80 » CPDF_Array* pMediaBoxArray = FX_NEW CPDF_Array; | 78 » CPDF_Array* pMediaBoxArray = new CPDF_Array; |
81 » pMediaBoxArray->Add(FX_NEW CPDF_Number(0)); | 79 » pMediaBoxArray->Add(new CPDF_Number(0)); |
82 » pMediaBoxArray->Add(FX_NEW CPDF_Number(0)); | 80 » pMediaBoxArray->Add(new CPDF_Number(0)); |
83 » pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(width))); | 81 » pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(width))); |
84 » pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(height))); | 82 » pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(height))); |
85 | 83 |
86 pPageDict->SetAt("MediaBox", pMediaBoxArray); | 84 pPageDict->SetAt("MediaBox", pMediaBoxArray); |
87 » pPageDict->SetAt("Rotate", FX_NEW CPDF_Number(0)); | 85 » pPageDict->SetAt("Rotate", new CPDF_Number(0)); |
88 » pPageDict->SetAt("Resources", FX_NEW CPDF_Dictionary); | 86 » pPageDict->SetAt("Resources", new CPDF_Dictionary); |
89 | 87 |
90 » CPDF_Page* pPage = FX_NEW CPDF_Page; | 88 » CPDF_Page* pPage = new CPDF_Page; |
91 pPage->Load(pDoc,pPageDict); | 89 pPage->Load(pDoc,pPageDict); |
92 pPage->ParseContent(); | 90 pPage->ParseContent(); |
93 | 91 |
94 return pPage; | 92 return pPage; |
95 } | 93 } |
96 | 94 |
97 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) | 95 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) |
98 { | 96 { |
99 CPDF_Page* pPage = (CPDF_Page*)page; | 97 CPDF_Page* pPage = (CPDF_Page*)page; |
100 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() | 98 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 | 266 |
269 return TRUE; | 267 return TRUE; |
270 } | 268 } |
271 | 269 |
272 DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, | 270 DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, |
273 double a, double b, double c, double d, double e, doubl
e f) | 271 double a, double b, double c, double d, double e, doubl
e f) |
274 { | 272 { |
275 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_object; | 273 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_object; |
276 if(pPageObj == NULL) | 274 if(pPageObj == NULL) |
277 return; | 275 return; |
278 //PDF_ImageObject* pImageObj = FX_NEW CPDF_ImageObject; | |
279 CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_FLOAT)d,
(FX_FLOAT)e,(FX_FLOAT)f); | 276 CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_FLOAT)d,
(FX_FLOAT)e,(FX_FLOAT)f); |
280 pPageObj->Transform(matrix); | 277 pPageObj->Transform(matrix); |
281 } | 278 } |
282 DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page, | 279 DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page, |
283
double a, double b, double c, double d, double e, double f) | 280
double a, double b, double c, double d, double e, double f) |
284 { | 281 { |
285 if(page == NULL) | 282 if(page == NULL) |
286 return; | 283 return; |
287 CPDF_Page* pPage = (CPDF_Page*)page; | 284 CPDF_Page* pPage = (CPDF_Page*)page; |
288 CPDF_AnnotList AnnotList(pPage); | 285 CPDF_AnnotList AnnotList(pPage); |
289 for (int i=0; i<AnnotList.Count();i++) | 286 for (int i=0; i<AnnotList.Count();i++) |
290 { | 287 { |
291 CPDF_Annot* pAnnot = AnnotList.GetAt(i); | 288 CPDF_Annot* pAnnot = AnnotList.GetAt(i); |
292 // transformAnnots Rectangle | 289 // transformAnnots Rectangle |
293 CPDF_Rect rect; | 290 CPDF_Rect rect; |
294 pAnnot->GetRect(rect); | 291 pAnnot->GetRect(rect); |
295 CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_
FLOAT)d,(FX_FLOAT)e,(FX_FLOAT)f); | 292 CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_
FLOAT)d,(FX_FLOAT)e,(FX_FLOAT)f); |
296 rect.Transform(&matrix); | 293 rect.Transform(&matrix); |
297 CPDF_Array *pRectArray = NULL; | 294 CPDF_Array *pRectArray = NULL; |
298 pRectArray = pAnnot->m_pAnnotDict->GetArray("Rect"); | 295 pRectArray = pAnnot->m_pAnnotDict->GetArray("Rect"); |
299 if (!pRectArray) pRectArray=CPDF_Array::Create(); | 296 if (!pRectArray) pRectArray=CPDF_Array::Create(); |
300 » » pRectArray->SetAt(0,FX_NEW CPDF_Number(rect.left)); | 297 » » pRectArray->SetAt(0, new CPDF_Number(rect.left)); |
301 » » pRectArray->SetAt(1,FX_NEW CPDF_Number(rect.bottom)); | 298 » » pRectArray->SetAt(1, new CPDF_Number(rect.bottom)); |
302 » » pRectArray->SetAt(2,FX_NEW CPDF_Number(rect.right)); | 299 » » pRectArray->SetAt(2, new CPDF_Number(rect.right)); |
303 » » pRectArray->SetAt(3,FX_NEW CPDF_Number(rect.top)); | 300 » » pRectArray->SetAt(3, new CPDF_Number(rect.top)); |
304 pAnnot->m_pAnnotDict->SetAt("Rect",pRectArray); | 301 pAnnot->m_pAnnotDict->SetAt("Rect",pRectArray); |
305 | 302 |
306 //Transform AP's rectangle | 303 //Transform AP's rectangle |
307 //To Do | 304 //To Do |
308 | |
309 } | 305 } |
310 | 306 |
311 } | 307 } |
312 | 308 |
313 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) | 309 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) |
314 { | 310 { |
315 CPDF_Page* pPage = (CPDF_Page*)page; | 311 CPDF_Page* pPage = (CPDF_Page*)page; |
316 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() | 312 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() |
317 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) | 313 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) |
318 { | 314 { |
319 return; | 315 return; |
320 } | 316 } |
321 CPDF_Dictionary* pDict = pPage->m_pFormDict; | 317 CPDF_Dictionary* pDict = pPage->m_pFormDict; |
322 rotate %=4; | 318 rotate %=4; |
323 | 319 |
324 » pDict->SetAt("Rotate", FX_NEW CPDF_Number(rotate * 90)); | 320 » pDict->SetAt("Rotate", new CPDF_Number(rotate * 90)); |
325 } | 321 } |
OLD | NEW |