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

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

Issue 453133004: clang-format all code (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 6 years, 4 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
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 "x:/pdf/fpdfapi5/include/fpdfapi.h" 7 // #include "x:/pdf/fpdfapi5/include/fpdfapi.h"
8 #include "../include/fsdk_define.h" 8 #include "../include/fsdk_define.h"
9 #include "../include/fpdfedit.h" 9 #include "../include/fpdfedit.h"
10 10
11
12 #if _FX_OS_ == _FX_ANDROID_ 11 #if _FX_OS_ == _FX_ANDROID_
13 #include "time.h" 12 #include "time.h"
14 #else 13 #else
15 #include <ctime> 14 #include <ctime>
16 #endif 15 #endif
17 16
18 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument() 17 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument() {
19 { 18 CPDF_Document* pDoc = FX_NEW CPDF_Document;
20 » CPDF_Document* pDoc = FX_NEW CPDF_Document; 19 if (!pDoc)
21 » if (!pDoc) 20 return NULL;
22 » » return NULL; 21 pDoc->CreateNewDoc();
23 » pDoc->CreateNewDoc(); 22 time_t currentTime;
24 » time_t currentTime; 23
25 24 CFX_ByteString DateStr;
26 » CFX_ByteString DateStr; 25
27 26 if (FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) {
28 » if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) 27 if (-1 != time(&currentTime)) {
29 » { 28 tm* pTM = localtime(&currentTime);
30 » » if ( -1 != time( &currentTime ) ) 29 if (pTM) {
31 » » { 30 DateStr.Format("D:%04d%02d%02d%02d%02d%02d",
32 » » » tm * pTM = localtime( &currentTime ); 31 pTM->tm_year + 1900,
33 » » » if ( pTM ) 32 pTM->tm_mon + 1,
34 » » » { 33 pTM->tm_mday,
35 » » » » DateStr.Format(»"D:%04d%02d%02d%02d%02d%02d", pT M->tm_year+1900, pTM->tm_mon+1, 34 pTM->tm_hour,
36 » » » » » pTM->tm_mday, pTM->tm_hour, pTM->tm_min, pTM->tm_sec ); 35 pTM->tm_min,
37 » » » } 36 pTM->tm_sec);
38 » » } 37 }
39 » } 38 }
40 » 39 }
41 » CPDF_Dictionary* pInfoDict = NULL; 40
42 » pInfoDict = pDoc->GetInfo(); 41 CPDF_Dictionary* pInfoDict = NULL;
43 » if (pInfoDict) 42 pInfoDict = pDoc->GetInfo();
44 » { 43 if (pInfoDict) {
45 » » if(FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) 44 if (FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
46 » » » pInfoDict->SetAt("CreationDate", new CPDF_String(DateStr )); 45 pInfoDict->SetAt("CreationDate", new CPDF_String(DateStr));
47 #ifdef FOXIT_CHROME_BUILD 46 #ifdef FOXIT_CHROME_BUILD
48 » » pInfoDict->SetAt("Creator",FX_NEW CPDF_String(L"Google")); 47 pInfoDict->SetAt("Creator", FX_NEW CPDF_String(L"Google"));
49 #else 48 #else
50 » » pInfoDict->SetAt("Creator",FX_NEW CPDF_String(L"Foxit PDF SDK DL L 2.0 - Foxit Software")); 49 pInfoDict->SetAt(
50 "Creator",
51 FX_NEW CPDF_String(L"Foxit PDF SDK DLL 2.0 - Foxit Software"));
51 #endif 52 #endif
52 } 53 }
53 54
54 return pDoc; 55 return pDoc;
55 } 56 }
56 57
57 DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index) 58 DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index) {
58 { 59 CPDF_Document* pDoc = (CPDF_Document*)document;
59 CPDF_Document* pDoc = (CPDF_Document*)document; 60 if (pDoc == NULL)
60 if (pDoc == NULL) 61 return;
61 return; 62 if (page_index < 0 || page_index >= pDoc->GetPageCount())
62 if (page_index < 0 || page_index >= pDoc->GetPageCount()) 63 return;
63 return; 64
64 65 pDoc->DeletePage(page_index);
65 pDoc->DeletePage(page_index); 66 }
66 } 67
67 68 DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document,
68 DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, int page_index, double width, double height) 69 int page_index,
69 { 70 double width,
70 if (!document) 71 double height) {
71 return NULL; 72 if (!document)
72 73 return NULL;
73 // CPDF_Parser* pParser = (CPDF_Parser*)document; 74
74 CPDF_Document* pDoc = (CPDF_Document*)document; 75 // CPDF_Parser* pParser = (CPDF_Parser*)document;
75 if(page_index < 0) 76 CPDF_Document* pDoc = (CPDF_Document*)document;
76 page_index = 0; 77 if (page_index < 0)
77 if(pDoc->GetPageCount()<page_index) 78 page_index = 0;
78 page_index = pDoc->GetPageCount(); 79 if (pDoc->GetPageCount() < page_index)
79 // if (page_index < 0 || page_index >= pDoc->GetPageCount()) 80 page_index = pDoc->GetPageCount();
80 // return NULL; 81 // if (page_index < 0 || page_index >= pDoc->GetPageCount())
81 82 // return NULL;
82 CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index); 83
83 if(!pPageDict) 84 CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index);
84 return NULL; 85 if (!pPageDict)
85 CPDF_Array* pMediaBoxArray = FX_NEW CPDF_Array; 86 return NULL;
86 pMediaBoxArray->Add(FX_NEW CPDF_Number(0)); 87 CPDF_Array* pMediaBoxArray = FX_NEW CPDF_Array;
87 pMediaBoxArray->Add(FX_NEW CPDF_Number(0)); 88 pMediaBoxArray->Add(FX_NEW CPDF_Number(0));
88 pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(width))); 89 pMediaBoxArray->Add(FX_NEW CPDF_Number(0));
89 pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(height))); 90 pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(width)));
90 91 pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(height)));
91 pPageDict->SetAt("MediaBox", pMediaBoxArray); 92
92 pPageDict->SetAt("Rotate", FX_NEW CPDF_Number(0)); 93 pPageDict->SetAt("MediaBox", pMediaBoxArray);
93 pPageDict->SetAt("Resources", FX_NEW CPDF_Dictionary); 94 pPageDict->SetAt("Rotate", FX_NEW CPDF_Number(0));
94 95 pPageDict->SetAt("Resources", FX_NEW CPDF_Dictionary);
95 CPDF_Page* pPage = FX_NEW CPDF_Page; 96
96 pPage->Load(pDoc,pPageDict); 97 CPDF_Page* pPage = FX_NEW CPDF_Page;
97 pPage->ParseContent(); 98 pPage->Load(pDoc, pPageDict);
98 99 pPage->ParseContent();
99 return pPage; 100
100 } 101 return pPage;
101 102 }
102 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) 103
103 { 104 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) {
104 CPDF_Page* pPage = (CPDF_Page*)page; 105 CPDF_Page* pPage = (CPDF_Page*)page;
105 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type ") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() 106 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
106 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin g().Compare("Page")) 107 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
107 { 108 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
108 return -1; 109 "Page")) {
109 } 110 return -1;
110 CPDF_Dictionary* pDict = pPage->m_pFormDict; 111 }
111 112 CPDF_Dictionary* pDict = pPage->m_pFormDict;
112 int rotate = 0; 113
113 if(pDict != NULL) 114 int rotate = 0;
114 { 115 if (pDict != NULL) {
115 if (pDict->KeyExist("Rotate")) 116 if (pDict->KeyExist("Rotate"))
116 rotate = pDict->GetElement("Rotate")->GetDirect()? pDict ->GetElement("Rotate")->GetDirect()->GetInteger() / 90 : 0; 117 rotate = pDict->GetElement("Rotate")->GetDirect()
117 else 118 ? pDict->GetElement("Rotate")->GetDirect()->GetInteger() / 90
118 { 119 : 0;
119 if(pDict->KeyExist("Parent")) 120 else {
120 { 121 if (pDict->KeyExist("Parent")) {
121 CPDF_Dictionary* pPages = (CPDF_Dictionary*)pDic t->GetElement("Parent")->GetDirect(); 122 CPDF_Dictionary* pPages =
122 while(pPages) 123 (CPDF_Dictionary*)pDict->GetElement("Parent")->GetDirect();
123 { 124 while (pPages) {
124 if(pPages->KeyExist("Rotate")) 125 if (pPages->KeyExist("Rotate")) {
125 { 126 rotate =
126 rotate = pPages->GetElement("Rot ate")->GetDirect()? pPages->GetElement("Rotate")->GetDirect()->GetInteger() / 90 : 0; 127 pPages->GetElement("Rotate")->GetDirect()
127 break; 128 ? pPages->GetElement("Rotate")->GetDirect()->GetInteger() /
128 } 129 90
129 else if(pPages->KeyExist("Parent")) 130 : 0;
130 pPages = (CPDF_Dictionary*)pPage s->GetElement("Parent")->GetDirect(); 131 break;
131 else break; 132 } else if (pPages->KeyExist("Parent"))
132 } 133 pPages =
133 } 134 (CPDF_Dictionary*)pPages->GetElement("Parent")->GetDirect();
134 } 135 else
135 } 136 break;
136 else 137 }
137 { 138 }
138 return -1; 139 }
139 } 140 } else {
140 141 return -1;
141 return rotate; 142 }
142 } 143
143 144 return rotate;
144 DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, FPDF_PAGEOBJECT pag e_obj) 145 }
145 { 146
146 CPDF_Page* pPage = (CPDF_Page*)page; 147 DLLEXPORT void STDCALL
147 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type ") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() 148 FPDFPage_InsertObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_obj) {
148 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin g().Compare("Page")) 149 CPDF_Page* pPage = (CPDF_Page*)page;
149 { 150 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
150 return; 151 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
151 } 152 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
152 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj; 153 "Page")) {
153 if(pPageObj == NULL) 154 return;
154 return; 155 }
155 FX_POSITION LastPersition = pPage->GetLastObjectPosition(); 156 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj;
156 157 if (pPageObj == NULL)
157 pPage->InsertObject(LastPersition, pPageObj); 158 return;
158 switch(pPageObj->m_Type) 159 FX_POSITION LastPersition = pPage->GetLastObjectPosition();
159 { 160
160 case FPDF_PAGEOBJ_PATH: 161 pPage->InsertObject(LastPersition, pPageObj);
161 { 162 switch (pPageObj->m_Type) {
162 CPDF_PathObject* pPathObj = (CPDF_PathObject*)pPageObj; 163 case FPDF_PAGEOBJ_PATH: {
163 pPathObj->CalcBoundingBox(); 164 CPDF_PathObject* pPathObj = (CPDF_PathObject*)pPageObj;
164 break; 165 pPathObj->CalcBoundingBox();
165 } 166 break;
166 case FPDF_PAGEOBJ_TEXT: 167 }
167 { 168 case FPDF_PAGEOBJ_TEXT: {
168 // CPDF_PathObject* pPathObj = (CPDF_PathObject*)pP ageObj; 169 // CPDF_PathObject* pPathObj = (CPDF_PathObject*)pPageObj;
169 // pPathObj->CalcBoundingBox(); 170 // pPathObj->CalcBoundingBox();
170 break; 171 break;
171 } 172 }
172 case FPDF_PAGEOBJ_IMAGE: 173 case FPDF_PAGEOBJ_IMAGE: {
173 { 174 CPDF_ImageObject* pImageObj = (CPDF_ImageObject*)pPageObj;
174 CPDF_ImageObject* pImageObj = (CPDF_ImageObject*)pPageOb j; 175 pImageObj->CalcBoundingBox();
175 pImageObj->CalcBoundingBox(); 176 break;
176 break; 177 }
177 } 178 case FPDF_PAGEOBJ_SHADING: {
178 case FPDF_PAGEOBJ_SHADING: 179 CPDF_ShadingObject* pShadingObj = (CPDF_ShadingObject*)pPageObj;
179 { 180 pShadingObj->CalcBoundingBox();
180 CPDF_ShadingObject* pShadingObj = (CPDF_ShadingObject*)p PageObj; 181 break;
181 pShadingObj->CalcBoundingBox(); 182 }
182 break; 183 case FPDF_PAGEOBJ_FORM: {
183 } 184 CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj;
184 case FPDF_PAGEOBJ_FORM: 185 pFormObj->CalcBoundingBox();
185 { 186 break;
186 CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj; 187 }
187 pFormObj->CalcBoundingBox(); 188 default:
188 break; 189 break;
189 } 190 }
190 default: 191
191 break; 192 // pPage->ParseContent();
192 } 193 // pPage->GenerateContent();
193 194 }
194 // pPage->ParseContent(); 195
195 //pPage->GenerateContent(); 196 DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) {
196 197 CPDF_Page* pPage = (CPDF_Page*)page;
197 } 198 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
198 199 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
199 DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) 200 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
200 { 201 "Page")) {
201 CPDF_Page* pPage = (CPDF_Page*)page; 202 return -1;
202 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type ") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() 203 }
203 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin g().Compare("Page")) 204 return pPage->CountObjects();
204 { 205 // return 0;
205 return -1; 206 }
206 } 207
207 return pPage->CountObjects(); 208 DLLEXPORT FPDF_PAGEOBJECT STDCALL
208 // return 0; 209 FPDFPage_GetObject(FPDF_PAGE page, int index) {
209 } 210 CPDF_Page* pPage = (CPDF_Page*)page;
210 211 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
211 DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, int index) 212 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
212 { 213 "Page")) {
213 CPDF_Page* pPage = (CPDF_Page*)page; 214 return NULL;
214 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type ") 215 }
215 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin g().Compare("Page")) 216 return pPage->GetObjectByIndex(index);
216 { 217 // return NULL;
217 return NULL; 218 }
218 } 219
219 return pPage->GetObjectByIndex(index); 220 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page) {
220 // return NULL; 221 if (!page)
221 } 222 return FALSE;
222 223 CPDF_Page* pPage = (CPDF_Page*)page;
223 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page) 224
224 { 225 return pPage->BackgroundAlphaNeeded();
225 if(!page) return FALSE; 226 }
226 CPDF_Page* pPage = (CPDF_Page*)page; 227
227 228 DLLEXPORT FPDF_BOOL STDCALL
228 return pPage->BackgroundAlphaNeeded(); 229 FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) {
229 } 230 if (!pageObject)
230 231 return FALSE;
231 DLLEXPORT FPDF_BOOL STDCALL FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObje ct) 232 CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject;
232 { 233
233 if(!pageObject) return FALSE; 234 const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState;
234 CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject; 235 int blend_type =
235 236 pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL;
236 const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; 237 if (blend_type != FXDIB_BLEND_NORMAL)
237 int blend_type = pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEN D_NORMAL; 238 return TRUE;
238 if (blend_type != FXDIB_BLEND_NORMAL) return TRUE; 239
239 240 CPDF_Dictionary* pSMaskDict =
240 CPDF_Dictionary* pSMaskDict = pGeneralState ? (CPDF_Dictionary*)pGeneral State->m_pSoftMask : NULL; 241 pGeneralState ? (CPDF_Dictionary*)pGeneralState->m_pSoftMask : NULL;
241 if(pSMaskDict) return TRUE; 242 if (pSMaskDict)
242 243 return TRUE;
243 if(pGeneralState && pGeneralState->m_FillAlpha != 1.0f) 244
244 return TRUE; 245 if (pGeneralState && pGeneralState->m_FillAlpha != 1.0f)
245 246 return TRUE;
246 if(pPageObj->m_Type == PDFPAGE_PATH) 247
247 { 248 if (pPageObj->m_Type == PDFPAGE_PATH) {
248 if(pGeneralState && pGeneralState->m_StrokeAlpha != 1.0f) 249 if (pGeneralState && pGeneralState->m_StrokeAlpha != 1.0f)
249 return TRUE; 250 return TRUE;
250 } 251 }
251 252
252 if(pPageObj->m_Type == PDFPAGE_FORM) 253 if (pPageObj->m_Type == PDFPAGE_FORM) {
253 { 254 CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj;
254 CPDF_FormObject* pFormObj = (CPDF_FormObject*)pPageObj; 255 if (pFormObj->m_pForm &&
255 if(pFormObj->m_pForm && (pFormObj->m_pForm->m_Transparency & PDF TRANS_ISOLATED)) 256 (pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED))
256 return TRUE; 257 return TRUE;
257 if(pFormObj->m_pForm && (!(pFormObj->m_pForm->m_Transparency & P DFTRANS_ISOLATED) && (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP))) 258 if (pFormObj->m_pForm &&
258 return TRUE; 259 (!(pFormObj->m_pForm->m_Transparency & PDFTRANS_ISOLATED) &&
259 } 260 (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP)))
260 return FALSE; 261 return TRUE;
261 } 262 }
262 263 return FALSE;
263 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) 264 }
264 { 265
265 CPDF_Page* pPage = (CPDF_Page*)page; 266 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) {
266 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type ") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() 267 CPDF_Page* pPage = (CPDF_Page*)page;
267 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin g().Compare("Page")) 268 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
268 { 269 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
269 return FALSE; 270 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
270 } 271 "Page")) {
271 CPDF_PageContentGenerate CG(pPage); 272 return FALSE;
272 CG.GenerateContent(); 273 }
273 274 CPDF_PageContentGenerate CG(pPage);
274 return TRUE; 275 CG.GenerateContent();
276
277 return TRUE;
275 } 278 }
276 279
277 DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, 280 DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object,
278 » » » double a, double b, double c, double d, double e, doubl e f) 281 double a,
279 { 282 double b,
280 » CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_object; 283 double c,
281 » if(pPageObj == NULL) 284 double d,
282 » » return; 285 double e,
283 //PDF_ImageObject* pImageObj = FX_NEW CPDF_ImageObject; 286 double f) {
284 » CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_FLOAT)d, (FX_FLOAT)e,(FX_FLOAT)f); 287 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_object;
285 » pPageObj->Transform(matrix); 288 if (pPageObj == NULL)
289 return;
290 // PDF_ImageObject* pImageObj = FX_NEW CPDF_ImageObject;
291 CFX_AffineMatrix matrix((FX_FLOAT)a,
292 (FX_FLOAT)b,
293 (FX_FLOAT)c,
294 (FX_FLOAT)d,
295 (FX_FLOAT)e,
296 (FX_FLOAT)f);
297 pPageObj->Transform(matrix);
286 } 298 }
287 DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page, 299 DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page,
288 » » » » » » » » » » » double a, double b, double c, double d, double e, double f) 300 double a,
289 { 301 double b,
290 » if(page == NULL) 302 double c,
291 » » return; 303 double d,
292 » CPDF_Page* pPage = (CPDF_Page*)page; 304 double e,
293 » CPDF_AnnotList AnnotList(pPage); 305 double f) {
294 » for (int i=0; i<AnnotList.Count();i++) 306 if (page == NULL)
295 » { 307 return;
296 » » CPDF_Annot* pAnnot = AnnotList.GetAt(i); 308 CPDF_Page* pPage = (CPDF_Page*)page;
297 » » // transformAnnots Rectangle 309 CPDF_AnnotList AnnotList(pPage);
298 » » CPDF_Rect rect; 310 for (int i = 0; i < AnnotList.Count(); i++) {
299 » » pAnnot->GetRect(rect); 311 CPDF_Annot* pAnnot = AnnotList.GetAt(i);
300 » » CFX_AffineMatrix matrix((FX_FLOAT)a,(FX_FLOAT)b,(FX_FLOAT)c,(FX_ FLOAT)d,(FX_FLOAT)e,(FX_FLOAT)f); 312 // transformAnnots Rectangle
301 » » rect.Transform(&matrix); 313 CPDF_Rect rect;
302 » » CPDF_Array *pRectArray = NULL; 314 pAnnot->GetRect(rect);
303 » » pRectArray = pAnnot->m_pAnnotDict->GetArray("Rect"); 315 CFX_AffineMatrix matrix((FX_FLOAT)a,
304 » » if (!pRectArray) pRectArray=CPDF_Array::Create(); 316 (FX_FLOAT)b,
305 » » pRectArray->SetAt(0,FX_NEW CPDF_Number(rect.left)); 317 (FX_FLOAT)c,
306 » » pRectArray->SetAt(1,FX_NEW CPDF_Number(rect.bottom)); 318 (FX_FLOAT)d,
307 » » pRectArray->SetAt(2,FX_NEW CPDF_Number(rect.right)); 319 (FX_FLOAT)e,
308 » » pRectArray->SetAt(3,FX_NEW CPDF_Number(rect.top)); 320 (FX_FLOAT)f);
309 » » pAnnot->m_pAnnotDict->SetAt("Rect",pRectArray); 321 rect.Transform(&matrix);
310 322 CPDF_Array* pRectArray = NULL;
311 » » //Transform AP's rectangle 323 pRectArray = pAnnot->m_pAnnotDict->GetArray("Rect");
312 » » //To Do 324 if (!pRectArray)
313 325 pRectArray = CPDF_Array::Create();
314 » } 326 pRectArray->SetAt(0, FX_NEW CPDF_Number(rect.left));
315 327 pRectArray->SetAt(1, FX_NEW CPDF_Number(rect.bottom));
316 } 328 pRectArray->SetAt(2, FX_NEW CPDF_Number(rect.right));
317 329 pRectArray->SetAt(3, FX_NEW CPDF_Number(rect.top));
318 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) 330 pAnnot->m_pAnnotDict->SetAt("Rect", pRectArray);
319 { 331
320 » CPDF_Page* pPage = (CPDF_Page*)page; 332 // Transform AP's rectangle
321 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type ") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() 333 // To Do
322 » » || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin g().Compare("Page")) 334 }
323 » { 335 }
324 » » return; 336
325 » } 337 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) {
326 » CPDF_Dictionary* pDict = pPage->m_pFormDict; 338 CPDF_Page* pPage = (CPDF_Page*)page;
327 » rotate %=4; 339 if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type") ||
328 340 !pPage->m_pFormDict->GetElement("Type")->GetDirect() ||
329 » pDict->SetAt("Rotate", FX_NEW CPDF_Number(rotate * 90)); 341 pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetString().Compare(
330 } 342 "Page")) {
343 return;
344 }
345 CPDF_Dictionary* pDict = pPage->m_pFormDict;
346 rotate %= 4;
347
348 pDict->SetAt("Rotate", FX_NEW CPDF_Number(rotate * 90));
349 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698