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 "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 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 CPDF_Page* pPage = FX_NEW CPDF_Page; | 95 CPDF_Page* pPage = FX_NEW CPDF_Page; |
96 pPage->Load(pDoc,pPageDict); | 96 pPage->Load(pDoc,pPageDict); |
97 pPage->ParseContent(); | 97 pPage->ParseContent(); |
98 | 98 |
99 return pPage; | 99 return pPage; |
100 } | 100 } |
101 | 101 |
102 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) | 102 DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page) |
103 { | 103 { |
104 CPDF_Page* pPage = (CPDF_Page*)page; | 104 CPDF_Page* pPage = (CPDF_Page*)page; |
105 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") | 105 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() |
106 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) | 106 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) |
107 { | 107 { |
108 return -1; | 108 return -1; |
109 } | 109 } |
110 CPDF_Dictionary* pDict = pPage->m_pFormDict; | 110 CPDF_Dictionary* pDict = pPage->m_pFormDict; |
111 | 111 |
112 int rotate = 0; | 112 int rotate = 0; |
113 if(pDict != NULL) | 113 if(pDict != NULL) |
114 { | 114 { |
115 » » if(pDict->KeyExist("Rotate")) | 115 » » if (pDict->KeyExist("Rotate")) |
116 » » » rotate = pDict->GetElement("Rotate")->GetDirect()->GetIn
teger() / 90; | 116 » » » rotate = pDict->GetElement("Rotate")->GetDirect()? pDict
->GetElement("Rotate")->GetDirect()->GetInteger() / 90 : 0; |
117 else | 117 else |
118 { | 118 { |
119 if(pDict->KeyExist("Parent")) | 119 if(pDict->KeyExist("Parent")) |
120 { | 120 { |
121 CPDF_Dictionary* pPages = (CPDF_Dictionary*)pDic
t->GetElement("Parent")->GetDirect(); | 121 CPDF_Dictionary* pPages = (CPDF_Dictionary*)pDic
t->GetElement("Parent")->GetDirect(); |
122 while(pPages) | 122 while(pPages) |
123 { | 123 { |
124 if(pPages->KeyExist("Rotate")) | 124 if(pPages->KeyExist("Rotate")) |
125 { | 125 { |
126 » » » » » » rotate = pPages->GetElement("Rot
ate")->GetDirect()->GetInteger() / 90; | 126 » » » » » » rotate = pPages->GetElement("Rot
ate")->GetDirect()? pPages->GetElement("Rotate")->GetDirect()->GetInteger() / 90
: 0; |
127 break; | 127 break; |
128 } | 128 } |
129 else if(pPages->KeyExist("Parent")) | 129 else if(pPages->KeyExist("Parent")) |
130 pPages = (CPDF_Dictionary*)pPage
s->GetElement("Parent")->GetDirect(); | 130 pPages = (CPDF_Dictionary*)pPage
s->GetElement("Parent")->GetDirect(); |
131 else break; | 131 else break; |
132 } | 132 } |
133 } | 133 } |
134 } | 134 } |
135 } | 135 } |
136 else | 136 else |
137 { | 137 { |
138 return -1; | 138 return -1; |
139 } | 139 } |
140 | 140 |
141 return rotate; | 141 return rotate; |
142 } | 142 } |
143 | 143 |
144 DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, FPDF_PAGEOBJECT pag
e_obj) | 144 DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, FPDF_PAGEOBJECT pag
e_obj) |
145 { | 145 { |
146 CPDF_Page* pPage = (CPDF_Page*)page; | 146 CPDF_Page* pPage = (CPDF_Page*)page; |
147 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") | 147 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() |
148 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) | 148 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) |
149 { | 149 { |
150 return; | 150 return; |
151 } | 151 } |
152 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj; | 152 CPDF_PageObject* pPageObj = (CPDF_PageObject*)page_obj; |
153 if(pPageObj == NULL) | 153 if(pPageObj == NULL) |
154 return; | 154 return; |
155 FX_POSITION LastPersition = pPage->GetLastObjectPosition(); | 155 FX_POSITION LastPersition = pPage->GetLastObjectPosition(); |
156 | 156 |
157 pPage->InsertObject(LastPersition, pPageObj); | 157 pPage->InsertObject(LastPersition, pPageObj); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 } | 192 } |
193 | 193 |
194 // pPage->ParseContent(); | 194 // pPage->ParseContent(); |
195 //pPage->GenerateContent(); | 195 //pPage->GenerateContent(); |
196 | 196 |
197 } | 197 } |
198 | 198 |
199 DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) | 199 DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page) |
200 { | 200 { |
201 CPDF_Page* pPage = (CPDF_Page*)page; | 201 CPDF_Page* pPage = (CPDF_Page*)page; |
202 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") | 202 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() |
203 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) | 203 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) |
204 { | 204 { |
205 return -1; | 205 return -1; |
206 } | 206 } |
207 return pPage->CountObjects(); | 207 return pPage->CountObjects(); |
208 // return 0; | 208 // return 0; |
209 } | 209 } |
210 | 210 |
211 DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, int index) | 211 DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, int index) |
212 { | 212 { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 return TRUE; | 256 return TRUE; |
257 if(pFormObj->m_pForm && (!(pFormObj->m_pForm->m_Transparency & P
DFTRANS_ISOLATED) && (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP))) | 257 if(pFormObj->m_pForm && (!(pFormObj->m_pForm->m_Transparency & P
DFTRANS_ISOLATED) && (pFormObj->m_pForm->m_Transparency & PDFTRANS_GROUP))) |
258 return TRUE; | 258 return TRUE; |
259 } | 259 } |
260 return FALSE; | 260 return FALSE; |
261 } | 261 } |
262 | 262 |
263 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) | 263 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page) |
264 { | 264 { |
265 CPDF_Page* pPage = (CPDF_Page*)page; | 265 CPDF_Page* pPage = (CPDF_Page*)page; |
266 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") | 266 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() |
267 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) | 267 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) |
268 { | 268 { |
269 return FALSE; | 269 return FALSE; |
270 } | 270 } |
271 CPDF_PageContentGenerate CG(pPage); | 271 CPDF_PageContentGenerate CG(pPage); |
272 CG.GenerateContent(); | 272 CG.GenerateContent(); |
273 | 273 |
274 return TRUE; | 274 return TRUE; |
275 } | 275 } |
276 | 276 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 //Transform AP's rectangle | 311 //Transform AP's rectangle |
312 //To Do | 312 //To Do |
313 | 313 |
314 } | 314 } |
315 | 315 |
316 } | 316 } |
317 | 317 |
318 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) | 318 DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate) |
319 { | 319 { |
320 CPDF_Page* pPage = (CPDF_Page*)page; | 320 CPDF_Page* pPage = (CPDF_Page*)page; |
321 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") | 321 » if (!pPage || !pPage->m_pFormDict || !pPage->m_pFormDict->KeyExist("Type
") || !pPage->m_pFormDict->GetElement("Type")->GetDirect() |
322 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) | 322 || pPage->m_pFormDict->GetElement("Type")->GetDirect()->GetStrin
g().Compare("Page")) |
323 { | 323 { |
324 return; | 324 return; |
325 } | 325 } |
326 CPDF_Dictionary* pDict = pPage->m_pFormDict; | 326 CPDF_Dictionary* pDict = pPage->m_pFormDict; |
327 rotate %=4; | 327 rotate %=4; |
328 | 328 |
329 pDict->SetAt("Rotate", FX_NEW CPDF_Number(rotate * 90)); | 329 pDict->SetAt("Rotate", FX_NEW CPDF_Number(rotate * 90)); |
330 } | 330 } |
OLD | NEW |