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

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

Issue 1484843002: Tidy ifdefs in fpdfsdk. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Fix initialization error warning. Created 5 years 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/fpdftext.cpp ('k') | fpdfsdk/src/fsdk_annothandler.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/fpdfview.h" 7 #include "public/fpdfview.h"
8 8
9 #ifdef PDF_ENABLE_XFA
10 #include "../include/fpdfxfa/fpdfxfa_app.h"
11 #include "../include/fpdfxfa/fpdfxfa_doc.h"
12 #include "../include/fpdfxfa/fpdfxfa_page.h"
13 #include "../include/fpdfxfa/fpdfxfa_util.h"
14 #include "core/include/fpdfapi/fpdf_module.h"
15 #endif
16 #include "core/include/fxcodec/fx_codec.h" 9 #include "core/include/fxcodec/fx_codec.h"
17 #include "core/include/fxcrt/fx_safe_types.h" 10 #include "core/include/fxcrt/fx_safe_types.h"
18 #include "fpdfsdk/include/fsdk_define.h" 11 #include "fpdfsdk/include/fsdk_define.h"
19 #include "fpdfsdk/include/fsdk_mgr.h" 12 #include "fpdfsdk/include/fsdk_mgr.h"
20 #include "fpdfsdk/include/fsdk_rendercontext.h" 13 #include "fpdfsdk/include/fsdk_rendercontext.h"
21 #include "fpdfsdk/include/javascript/IJavaScript.h" 14 #include "fpdfsdk/include/javascript/IJavaScript.h"
22 #include "public/fpdf_ext.h" 15 #include "public/fpdf_ext.h"
23 #ifdef PDF_ENABLE_XFA
24 #include "public/fpdf_formfill.h"
25 #endif
26 #include "public/fpdf_progressive.h" 16 #include "public/fpdf_progressive.h"
27 #include "third_party/base/nonstd_unique_ptr.h" 17 #include "third_party/base/nonstd_unique_ptr.h"
28 #include "third_party/base/numerics/safe_conversions_impl.h" 18 #include "third_party/base/numerics/safe_conversions_impl.h"
29 19
20 #ifdef PDF_ENABLE_XFA
21 #include "../include/fpdfxfa/fpdfxfa_app.h"
22 #include "../include/fpdfxfa/fpdfxfa_doc.h"
23 #include "../include/fpdfxfa/fpdfxfa_page.h"
24 #include "../include/fpdfxfa/fpdfxfa_util.h"
25 #include "core/include/fpdfapi/fpdf_module.h"
26 #include "public/fpdf_formfill.h"
27 #endif // PDF_ENABLE_XFA
28
30 UnderlyingDocumentType* UnderlyingFromFPDFDocument(FPDF_DOCUMENT doc) { 29 UnderlyingDocumentType* UnderlyingFromFPDFDocument(FPDF_DOCUMENT doc) {
31 return static_cast<UnderlyingDocumentType*>(doc); 30 return static_cast<UnderlyingDocumentType*>(doc);
32 } 31 }
33 32
34 FPDF_DOCUMENT FPDFDocumentFromUnderlying(UnderlyingDocumentType* doc) { 33 FPDF_DOCUMENT FPDFDocumentFromUnderlying(UnderlyingDocumentType* doc) {
35 return static_cast<FPDF_DOCUMENT>(doc); 34 return static_cast<FPDF_DOCUMENT>(doc);
36 } 35 }
37 36
38 UnderlyingPageType* UnderlyingFromFPDFPage(FPDF_PAGE page) { 37 UnderlyingPageType* UnderlyingFromFPDFPage(FPDF_PAGE page) {
39 return static_cast<UnderlyingPageType*>(page); 38 return static_cast<UnderlyingPageType*>(page);
40 } 39 }
41 40
42 CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc) { 41 CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc) {
43 #ifndef PDF_ENABLE_XFA 42 #ifdef PDF_ENABLE_XFA
43 return doc ? UnderlyingFromFPDFDocument(doc)->GetPDFDoc() : nullptr;
44 #else // PDF_ENABLE_XFA
44 return UnderlyingFromFPDFDocument(doc); 45 return UnderlyingFromFPDFDocument(doc);
45 #else 46 #endif // PDF_ENABLE_XFA
46 return doc ? UnderlyingFromFPDFDocument(doc)->GetPDFDoc() : nullptr;
47 #endif
48 } 47 }
49 48
50 FPDF_DOCUMENT FPDFDocumentFromCPDFDocument(CPDF_Document* doc) { 49 FPDF_DOCUMENT FPDFDocumentFromCPDFDocument(CPDF_Document* doc) {
51 #ifndef PDF_ENABLE_XFA 50 #ifdef PDF_ENABLE_XFA
52 return FPDFDocumentFromUnderlying(doc);
53 #else
54 return doc ? FPDFDocumentFromUnderlying( 51 return doc ? FPDFDocumentFromUnderlying(
55 new CPDFXFA_Document(doc, CPDFXFA_App::GetInstance())) 52 new CPDFXFA_Document(doc, CPDFXFA_App::GetInstance()))
56 : nullptr; 53 : nullptr;
57 #endif 54 #else // PDF_ENABLE_XFA
55 return FPDFDocumentFromUnderlying(doc);
56 #endif // PDF_ENABLE_XFA
58 } 57 }
59 58
60 CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page) { 59 CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page) {
61 #ifndef PDF_ENABLE_XFA 60 #ifdef PDF_ENABLE_XFA
61 return page ? UnderlyingFromFPDFPage(page)->GetPDFPage() : nullptr;
62 #else // PDF_ENABLE_XFA
62 return UnderlyingFromFPDFPage(page); 63 return UnderlyingFromFPDFPage(page);
63 #else 64 #endif // PDF_ENABLE_XFA
64 return page ? UnderlyingFromFPDFPage(page)->GetPDFPage() : nullptr;
65 } 65 }
66 66
67 #ifdef PDF_ENABLE_XFA
67 CFPDF_FileStream::CFPDF_FileStream(FPDF_FILEHANDLER* pFS) { 68 CFPDF_FileStream::CFPDF_FileStream(FPDF_FILEHANDLER* pFS) {
68 m_pFS = pFS; 69 m_pFS = pFS;
69 m_nCurPos = 0; 70 m_nCurPos = 0;
70 } 71 }
71 72
72 IFX_FileStream* CFPDF_FileStream::Retain() { 73 IFX_FileStream* CFPDF_FileStream::Retain() {
73 return this; 74 return this;
74 } 75 }
75 76
76 void CFPDF_FileStream::Release() { 77 void CFPDF_FileStream::Release() {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 return TRUE; 135 return TRUE;
135 } 136 }
136 return FALSE; 137 return FALSE;
137 } 138 }
138 139
139 FX_BOOL CFPDF_FileStream::Flush() { 140 FX_BOOL CFPDF_FileStream::Flush() {
140 if (!m_pFS || !m_pFS->Flush) 141 if (!m_pFS || !m_pFS->Flush)
141 return TRUE; 142 return TRUE;
142 143
143 return m_pFS->Flush(m_pFS->clientData) == 0; 144 return m_pFS->Flush(m_pFS->clientData) == 0;
144 #endif
145 } 145 }
146 #endif // PDF_ENABLE_XFA
146 147
147 CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess) { 148 CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess) {
148 m_FileAccess = *pFileAccess; 149 m_FileAccess = *pFileAccess;
149 #ifdef PDF_ENABLE_XFA 150 #ifdef PDF_ENABLE_XFA
150 m_BufferOffset = (FX_DWORD)-1; 151 m_BufferOffset = (FX_DWORD)-1;
152 #endif // PDF_ENABLE_XFA
151 } 153 }
152 154
155 #ifdef PDF_ENABLE_XFA
153 FX_BOOL CPDF_CustomAccess::GetByte(FX_DWORD pos, uint8_t& ch) { 156 FX_BOOL CPDF_CustomAccess::GetByte(FX_DWORD pos, uint8_t& ch) {
154 if (pos >= m_FileAccess.m_FileLen) 157 if (pos >= m_FileAccess.m_FileLen)
155 return FALSE; 158 return FALSE;
156 if (m_BufferOffset == (FX_DWORD)-1 || pos < m_BufferOffset || 159 if (m_BufferOffset == (FX_DWORD)-1 || pos < m_BufferOffset ||
157 pos >= m_BufferOffset + 512) { 160 pos >= m_BufferOffset + 512) {
158 // Need to read from file access 161 // Need to read from file access
159 m_BufferOffset = pos; 162 m_BufferOffset = pos;
160 int size = 512; 163 int size = 512;
161 if (pos + 512 > m_FileAccess.m_FileLen) 164 if (pos + 512 > m_FileAccess.m_FileLen)
162 size = m_FileAccess.m_FileLen - pos; 165 size = m_FileAccess.m_FileLen - pos;
163 if (!m_FileAccess.m_GetBlock(m_FileAccess.m_Param, m_BufferOffset, m_Buffer, 166 if (!m_FileAccess.m_GetBlock(m_FileAccess.m_Param, m_BufferOffset, m_Buffer,
164 size)) 167 size))
165 return FALSE; 168 return FALSE;
166 } 169 }
167 ch = m_Buffer[pos - m_BufferOffset]; 170 ch = m_Buffer[pos - m_BufferOffset];
168 return TRUE; 171 return TRUE;
169 } 172 }
170 173
171 FX_BOOL CPDF_CustomAccess::GetBlock(FX_DWORD pos, 174 FX_BOOL CPDF_CustomAccess::GetBlock(FX_DWORD pos,
172 uint8_t* pBuf, 175 uint8_t* pBuf,
173 FX_DWORD size) { 176 FX_DWORD size) {
174 if (pos + size > m_FileAccess.m_FileLen) 177 if (pos + size > m_FileAccess.m_FileLen)
175 return FALSE; 178 return FALSE;
176 return m_FileAccess.m_GetBlock(m_FileAccess.m_Param, pos, pBuf, size); 179 return m_FileAccess.m_GetBlock(m_FileAccess.m_Param, pos, pBuf, size);
177 #endif
178 } 180 }
181 #endif // PDF_ENABLE_XFA
179 182
180 FX_BOOL CPDF_CustomAccess::ReadBlock(void* buffer, 183 FX_BOOL CPDF_CustomAccess::ReadBlock(void* buffer,
181 FX_FILESIZE offset, 184 FX_FILESIZE offset,
182 size_t size) { 185 size_t size) {
183 if (offset < 0) { 186 if (offset < 0) {
184 return FALSE; 187 return FALSE;
185 } 188 }
186 FX_SAFE_FILESIZE newPos = 189 FX_SAFE_FILESIZE newPos =
187 pdfium::base::checked_cast<FX_FILESIZE, size_t>(size); 190 pdfium::base::checked_cast<FX_FILESIZE, size_t>(size);
188 newPos += offset; 191 newPos += offset;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 g_pCodecModule = new CCodec_ModuleMgr(); 232 g_pCodecModule = new CCodec_ModuleMgr();
230 233
231 CFX_GEModule::Create(cfg ? cfg->m_pUserFontPaths : nullptr); 234 CFX_GEModule::Create(cfg ? cfg->m_pUserFontPaths : nullptr);
232 CFX_GEModule::Get()->SetCodecModule(g_pCodecModule); 235 CFX_GEModule::Get()->SetCodecModule(g_pCodecModule);
233 236
234 CPDF_ModuleMgr::Create(); 237 CPDF_ModuleMgr::Create();
235 CPDF_ModuleMgr* pModuleMgr = CPDF_ModuleMgr::Get(); 238 CPDF_ModuleMgr* pModuleMgr = CPDF_ModuleMgr::Get();
236 pModuleMgr->SetCodecModule(g_pCodecModule); 239 pModuleMgr->SetCodecModule(g_pCodecModule);
237 pModuleMgr->InitPageModule(); 240 pModuleMgr->InitPageModule();
238 pModuleMgr->InitRenderModule(); 241 pModuleMgr->InitRenderModule();
239 #ifndef PDF_ENABLE_XFA 242 #ifdef PDF_ENABLE_XFA
243 CPDFXFA_App::GetInstance()->Initialize();
244 #else // PDF_ENABLE_XFA
240 pModuleMgr->LoadEmbeddedGB1CMaps(); 245 pModuleMgr->LoadEmbeddedGB1CMaps();
241 pModuleMgr->LoadEmbeddedJapan1CMaps(); 246 pModuleMgr->LoadEmbeddedJapan1CMaps();
242 pModuleMgr->LoadEmbeddedCNS1CMaps(); 247 pModuleMgr->LoadEmbeddedCNS1CMaps();
243 pModuleMgr->LoadEmbeddedKorea1CMaps(); 248 pModuleMgr->LoadEmbeddedKorea1CMaps();
244 #else 249 #endif // PDF_ENABLE_XFA
245 CPDFXFA_App::GetInstance()->Initialize();
246 #endif
247 if (cfg && cfg->version >= 2) 250 if (cfg && cfg->version >= 2)
248 IJS_Runtime::Initialize(cfg->m_v8EmbedderSlot, cfg->m_pIsolate); 251 IJS_Runtime::Initialize(cfg->m_v8EmbedderSlot, cfg->m_pIsolate);
249 } 252 }
250 253
251 DLLEXPORT void STDCALL FPDF_DestroyLibrary() { 254 DLLEXPORT void STDCALL FPDF_DestroyLibrary() {
252 #ifdef PDF_ENABLE_XFA 255 #ifdef PDF_ENABLE_XFA
253 CPDFXFA_App::ReleaseInstance(); 256 CPDFXFA_App::ReleaseInstance();
254 #endif 257 #endif // PDF_ENABLE_XFA
255 CPDF_ModuleMgr::Destroy(); 258 CPDF_ModuleMgr::Destroy();
256 CFX_GEModule::Destroy(); 259 CFX_GEModule::Destroy();
257 260
258 delete g_pCodecModule; 261 delete g_pCodecModule;
259 g_pCodecModule = nullptr; 262 g_pCodecModule = nullptr;
260 } 263 }
261 264
262 #ifndef _WIN32 265 #ifndef _WIN32
263 int g_LastError; 266 int g_LastError;
264 void SetLastError(int err) { 267 void SetLastError(int err) {
265 g_LastError = err; 268 g_LastError = err;
266 } 269 }
267 270
268 int GetLastError() { 271 int GetLastError() {
269 return g_LastError; 272 return g_LastError;
270 } 273 }
271 #endif 274 #endif // _WIN32
272 275
273 void ProcessParseError(FX_DWORD err_code) { 276 void ProcessParseError(FX_DWORD err_code) {
274 // Translate FPDFAPI error code to FPDFVIEW error code 277 // Translate FPDFAPI error code to FPDFVIEW error code
275 switch (err_code) { 278 switch (err_code) {
276 case PDFPARSE_ERROR_FILE: 279 case PDFPARSE_ERROR_FILE:
277 err_code = FPDF_ERR_FILE; 280 err_code = FPDF_ERR_FILE;
278 break; 281 break;
279 case PDFPARSE_ERROR_FORMAT: 282 case PDFPARSE_ERROR_FORMAT:
280 err_code = FPDF_ERR_FORMAT; 283 err_code = FPDF_ERR_FORMAT;
281 break; 284 break;
(...skipping 23 matching lines...) Expand all
305 308
306 CPDF_Parser* pParser = new CPDF_Parser; 309 CPDF_Parser* pParser = new CPDF_Parser;
307 pParser->SetPassword(password); 310 pParser->SetPassword(password);
308 311
309 FX_DWORD err_code = pParser->StartParse(pFileAccess); 312 FX_DWORD err_code = pParser->StartParse(pFileAccess);
310 if (err_code) { 313 if (err_code) {
311 delete pParser; 314 delete pParser;
312 ProcessParseError(err_code); 315 ProcessParseError(err_code);
313 return NULL; 316 return NULL;
314 } 317 }
315 #ifndef PDF_ENABLE_XFA 318 #ifdef PDF_ENABLE_XFA
316 return pParser->GetDocument();
317 #else
318 CPDF_Document* pPDFDoc = pParser->GetDocument(); 319 CPDF_Document* pPDFDoc = pParser->GetDocument();
319 if (!pPDFDoc) 320 if (!pPDFDoc)
320 return NULL; 321 return NULL;
321 322
322 CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance(); 323 CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance();
323 return new CPDFXFA_Document(pPDFDoc, pProvider); 324 return new CPDFXFA_Document(pPDFDoc, pProvider);
325 #else // PDF_ENABLE_XFA
326 return pParser->GetDocument();
327 #endif // PDF_ENABLE_XFA
324 } 328 }
325 329
330 #ifdef PDF_ENABLE_XFA
326 DLLEXPORT FPDF_BOOL STDCALL FPDF_HasXFAField(FPDF_DOCUMENT document, 331 DLLEXPORT FPDF_BOOL STDCALL FPDF_HasXFAField(FPDF_DOCUMENT document,
327 int* docType) { 332 int* docType) {
328 if (!document) 333 if (!document)
329 return FALSE; 334 return FALSE;
330 335
331 CPDF_Document* pdfDoc = 336 CPDF_Document* pdfDoc =
332 (static_cast<CPDFXFA_Document*>(document))->GetPDFDoc(); 337 (static_cast<CPDFXFA_Document*>(document))->GetPDFDoc();
333 if (!pdfDoc) 338 if (!pdfDoc)
334 return FALSE; 339 return FALSE;
335 340
(...skipping 14 matching lines...) Expand all
350 if (bDynamicXFA) 355 if (bDynamicXFA)
351 *docType = DOCTYPE_DYNAMIC_XFA; 356 *docType = DOCTYPE_DYNAMIC_XFA;
352 else 357 else
353 *docType = DOCTYPE_STATIC_XFA; 358 *docType = DOCTYPE_STATIC_XFA;
354 359
355 return TRUE; 360 return TRUE;
356 } 361 }
357 362
358 DLLEXPORT FPDF_BOOL STDCALL FPDF_LoadXFA(FPDF_DOCUMENT document) { 363 DLLEXPORT FPDF_BOOL STDCALL FPDF_LoadXFA(FPDF_DOCUMENT document) {
359 return document && (static_cast<CPDFXFA_Document*>(document))->LoadXFADoc(); 364 return document && (static_cast<CPDFXFA_Document*>(document))->LoadXFADoc();
360 #endif
361 } 365 }
366 #endif // PDF_ENABLE_XFA
362 367
363 class CMemFile final : public IFX_FileRead { 368 class CMemFile final : public IFX_FileRead {
364 public: 369 public:
365 CMemFile(uint8_t* pBuf, FX_FILESIZE size) : m_pBuf(pBuf), m_size(size) {} 370 CMemFile(uint8_t* pBuf, FX_FILESIZE size) : m_pBuf(pBuf), m_size(size) {}
366 371
367 void Release() override { delete this; } 372 void Release() override { delete this; }
368 FX_FILESIZE GetSize() override { return m_size; } 373 FX_FILESIZE GetSize() override { return m_size; }
369 FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { 374 FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
370 if (offset < 0) { 375 if (offset < 0) {
371 return FALSE; 376 return FALSE;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 return TRUE; 446 return TRUE;
442 } 447 }
443 448
444 // jabdelmalek: changed return type from FX_DWORD to build on Linux (and match 449 // jabdelmalek: changed return type from FX_DWORD to build on Linux (and match
445 // header). 450 // header).
446 DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document) { 451 DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document) {
447 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 452 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
448 if (!pDoc) 453 if (!pDoc)
449 #ifndef PDF_ENABLE_XFA 454 #ifndef PDF_ENABLE_XFA
450 return 0; 455 return 0;
451 #else 456 #else // PDF_ENABLE_XFA
452 return (FX_DWORD)-1; 457 return (FX_DWORD)-1;
453 #endif 458 #endif // PDF_ENABLE_XFA
454 459
455 CPDF_Dictionary* pDict = pDoc->GetParser()->GetEncryptDict(); 460 CPDF_Dictionary* pDict = pDoc->GetParser()->GetEncryptDict();
456 return pDict ? pDict->GetInteger("P") : (FX_DWORD)-1; 461 return pDict ? pDict->GetInteger("P") : (FX_DWORD)-1;
457 } 462 }
458 463
459 DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document) { 464 DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document) {
460 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 465 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
461 if (!pDoc) 466 if (!pDoc)
462 return -1; 467 return -1;
463 468
464 CPDF_Dictionary* pDict = pDoc->GetParser()->GetEncryptDict(); 469 CPDF_Dictionary* pDict = pDoc->GetParser()->GetEncryptDict();
465 return pDict ? pDict->GetInteger("R") : -1; 470 return pDict ? pDict->GetInteger("R") : -1;
466 } 471 }
467 472
468 DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document) { 473 DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document) {
469 UnderlyingDocumentType* pDoc = UnderlyingFromFPDFDocument(document); 474 UnderlyingDocumentType* pDoc = UnderlyingFromFPDFDocument(document);
470 return pDoc ? pDoc->GetPageCount() : 0; 475 return pDoc ? pDoc->GetPageCount() : 0;
471 } 476 }
472 477
473 DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, 478 DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document,
474 int page_index) { 479 int page_index) {
475 UnderlyingDocumentType* pDoc = UnderlyingFromFPDFDocument(document); 480 UnderlyingDocumentType* pDoc = UnderlyingFromFPDFDocument(document);
476 if (!pDoc) 481 if (!pDoc)
477 return nullptr; 482 return nullptr;
478 483
479 if (page_index < 0 || page_index >= pDoc->GetPageCount()) 484 if (page_index < 0 || page_index >= pDoc->GetPageCount())
480 return nullptr; 485 return nullptr;
481 486
482 #ifndef PDF_ENABLE_XFA 487 #ifdef PDF_ENABLE_XFA
488 return pDoc->GetPage(page_index);
489 #else // PDF_ENABLE_XFA
483 CPDF_Dictionary* pDict = pDoc->GetPage(page_index); 490 CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
484 if (pDict == NULL) 491 if (pDict == NULL)
485 return NULL; 492 return NULL;
486 CPDF_Page* pPage = new CPDF_Page; 493 CPDF_Page* pPage = new CPDF_Page;
487 pPage->Load(pDoc, pDict); 494 pPage->Load(pDoc, pDict);
488 pPage->ParseContent(); 495 pPage->ParseContent();
489 return pPage; 496 return pPage;
490 #else 497 #endif // PDF_ENABLE_XFA
491 return pDoc->GetPage(page_index);
492 #endif
493 } 498 }
494 499
495 DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) { 500 DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) {
496 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); 501 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
497 return pPage ? pPage->GetPageWidth() : 0.0; 502 return pPage ? pPage->GetPageWidth() : 0.0;
498 } 503 }
499 504
500 DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page) { 505 DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page) {
501 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); 506 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
502 return pPage ? pPage->GetPageHeight() : 0.0; 507 return pPage ? pPage->GetPageHeight() : 0.0;
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y, 712 FPDF_RenderPage_Retail(pContext, page, start_x, start_y, size_x, size_y,
708 rotate, flags, TRUE, NULL); 713 rotate, flags, TRUE, NULL);
709 714
710 delete pContext; 715 delete pContext;
711 pPage->RemovePrivateData((void*)1); 716 pPage->RemovePrivateData((void*)1);
712 } 717 }
713 718
714 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) { 719 DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) {
715 if (!page) 720 if (!page)
716 return; 721 return;
717 #ifndef PDF_ENABLE_XFA 722 #ifdef PDF_ENABLE_XFA
723 CPDFXFA_Page* pPage = (CPDFXFA_Page*)page;
724 pPage->Release();
725 #else // PDF_ENABLE_XFA
718 CPDFSDK_PageView* pPageView = 726 CPDFSDK_PageView* pPageView =
719 (CPDFSDK_PageView*)(((CPDF_Page*)page))->GetPrivateData((void*)page); 727 (CPDFSDK_PageView*)(((CPDF_Page*)page))->GetPrivateData((void*)page);
720 if (pPageView && pPageView->IsLocked()) { 728 if (pPageView && pPageView->IsLocked()) {
721 pPageView->TakeOverPage(); 729 pPageView->TakeOverPage();
722 return; 730 return;
723 } 731 }
724 delete (CPDF_Page*)page; 732 delete (CPDF_Page*)page;
725 #else 733 #endif // PDF_ENABLE_XFA
726
727 CPDFXFA_Page* pPage = (CPDFXFA_Page*)page;
728 pPage->Release();
729 #endif
730 } 734 }
731 735
732 DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document) { 736 DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document) {
733 #ifndef PDF_ENABLE_XFA 737 #ifdef PDF_ENABLE_XFA
738 delete CPDFDocumentFromFPDFDocument(document);
739 #else // PDF_ENABLE_XFA
734 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 740 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
735 if (!pDoc) 741 if (!pDoc)
736 return; 742 return;
737 743 CPDF_Parser* pParser = pDoc->GetParser();
738 CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
739 if (!pParser) { 744 if (!pParser) {
740 delete pDoc; 745 delete pDoc;
741 return; 746 return;
742 } 747 }
743 delete pParser; 748 delete pParser;
744 #else 749 #endif // PDF_ENABLE_XFA
745 delete CPDFDocumentFromFPDFDocument(document);
746 #endif
747 } 750 }
748 751
749 DLLEXPORT unsigned long STDCALL FPDF_GetLastError() { 752 DLLEXPORT unsigned long STDCALL FPDF_GetLastError() {
750 return GetLastError(); 753 return GetLastError();
751 } 754 }
752 755
753 DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page, 756 DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page,
754 int start_x, 757 int start_x,
755 int start_y, 758 int start_y,
756 int size_x, 759 int size_x,
757 int size_y, 760 int size_y,
758 int rotate, 761 int rotate,
759 int device_x, 762 int device_x,
760 int device_y, 763 int device_y,
761 double* page_x, 764 double* page_x,
762 double* page_y) { 765 double* page_y) {
763 if (page == NULL || page_x == NULL || page_y == NULL) 766 if (page == NULL || page_x == NULL || page_y == NULL)
764 return; 767 return;
765 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); 768 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
766 #ifndef PDF_ENABLE_XFA 769 #ifdef PDF_ENABLE_XFA
767 770 pPage->DeviceToPage(start_x, start_y, size_x, size_y, rotate, device_x,
771 device_y, page_x, page_y);
772 #else // PDF_ENABLE_XFA
768 CPDF_Matrix page2device; 773 CPDF_Matrix page2device;
769 pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, 774 pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y,
770 rotate); 775 rotate);
771 CPDF_Matrix device2page; 776 CPDF_Matrix device2page;
772 device2page.SetReverse(page2device); 777 device2page.SetReverse(page2device);
773
774 FX_FLOAT page_x_f, page_y_f; 778 FX_FLOAT page_x_f, page_y_f;
775 device2page.Transform((FX_FLOAT)(device_x), (FX_FLOAT)(device_y), page_x_f, 779 device2page.Transform((FX_FLOAT)(device_x), (FX_FLOAT)(device_y), page_x_f,
776 page_y_f); 780 page_y_f);
777
778 *page_x = (page_x_f); 781 *page_x = (page_x_f);
779 *page_y = (page_y_f); 782 *page_y = (page_y_f);
780 #else 783 #endif // PDF_ENABLE_XFA
781 pPage->DeviceToPage(start_x, start_y, size_x, size_y, rotate, device_x,
782 device_y, page_x, page_y);
783 #endif
784 } 784 }
785 785
786 DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page, 786 DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page,
787 int start_x, 787 int start_x,
788 int start_y, 788 int start_y,
789 int size_x, 789 int size_x,
790 int size_y, 790 int size_y,
791 int rotate, 791 int rotate,
792 double page_x, 792 double page_x,
793 double page_y, 793 double page_y,
794 int* device_x, 794 int* device_x,
795 int* device_y) { 795 int* device_y) {
796 if (!device_x || !device_y) 796 if (!device_x || !device_y)
797 return; 797 return;
798 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); 798 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
799 if (!pPage) 799 if (!pPage)
800 return; 800 return;
801 #ifndef PDF_ENABLE_XFA 801 #ifdef PDF_ENABLE_XFA
802 pPage->PageToDevice(start_x, start_y, size_x, size_y, rotate, page_x, page_y,
803 device_x, device_y);
804 #else // PDF_ENABLE_XFA
802 CPDF_Matrix page2device; 805 CPDF_Matrix page2device;
803 pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, 806 pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y,
804 rotate); 807 rotate);
805
806 FX_FLOAT device_x_f, device_y_f; 808 FX_FLOAT device_x_f, device_y_f;
807 page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f, 809 page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f,
808 device_y_f); 810 device_y_f);
809
810 *device_x = FXSYS_round(device_x_f); 811 *device_x = FXSYS_round(device_x_f);
811 *device_y = FXSYS_round(device_y_f); 812 *device_y = FXSYS_round(device_y_f);
812 #else 813 #endif // PDF_ENABLE_XFA
813 pPage->PageToDevice(start_x, start_y, size_x, size_y, rotate, page_x, page_y,
814 device_x, device_y);
815 #endif
816 } 814 }
817 815
818 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width, 816 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width,
819 int height, 817 int height,
820 int alpha) { 818 int alpha) {
821 nonstd::unique_ptr<CFX_DIBitmap> pBitmap(new CFX_DIBitmap); 819 nonstd::unique_ptr<CFX_DIBitmap> pBitmap(new CFX_DIBitmap);
822 if (!pBitmap->Create(width, height, alpha ? FXDIB_Argb : FXDIB_Rgb32)) { 820 if (!pBitmap->Create(width, height, alpha ? FXDIB_Argb : FXDIB_Rgb32)) {
823 return NULL; 821 return NULL;
824 } 822 }
825 return pBitmap.release(); 823 return pBitmap.release();
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 pContext->m_pOptions->m_Flags |= RENDER_LIMITEDIMAGECACHE; 925 pContext->m_pOptions->m_Flags |= RENDER_LIMITEDIMAGECACHE;
928 if (flags & FPDF_RENDER_FORCEHALFTONE) 926 if (flags & FPDF_RENDER_FORCEHALFTONE)
929 pContext->m_pOptions->m_Flags |= RENDER_FORCE_HALFTONE; 927 pContext->m_pOptions->m_Flags |= RENDER_FORCE_HALFTONE;
930 #ifndef PDF_ENABLE_XFA 928 #ifndef PDF_ENABLE_XFA
931 if (flags & FPDF_RENDER_NO_SMOOTHTEXT) 929 if (flags & FPDF_RENDER_NO_SMOOTHTEXT)
932 pContext->m_pOptions->m_Flags |= RENDER_NOTEXTSMOOTH; 930 pContext->m_pOptions->m_Flags |= RENDER_NOTEXTSMOOTH;
933 if (flags & FPDF_RENDER_NO_SMOOTHIMAGE) 931 if (flags & FPDF_RENDER_NO_SMOOTHIMAGE)
934 pContext->m_pOptions->m_Flags |= RENDER_NOIMAGESMOOTH; 932 pContext->m_pOptions->m_Flags |= RENDER_NOIMAGESMOOTH;
935 if (flags & FPDF_RENDER_NO_SMOOTHPATH) 933 if (flags & FPDF_RENDER_NO_SMOOTHPATH)
936 pContext->m_pOptions->m_Flags |= RENDER_NOPATHSMOOTH; 934 pContext->m_pOptions->m_Flags |= RENDER_NOPATHSMOOTH;
937 #endif 935 #endif // PDF_ENABLE_XFA
938 // Grayscale output 936 // Grayscale output
939 if (flags & FPDF_GRAYSCALE) { 937 if (flags & FPDF_GRAYSCALE) {
940 pContext->m_pOptions->m_ColorMode = RENDER_COLOR_GRAY; 938 pContext->m_pOptions->m_ColorMode = RENDER_COLOR_GRAY;
941 pContext->m_pOptions->m_ForeColor = 0; 939 pContext->m_pOptions->m_ForeColor = 0;
942 pContext->m_pOptions->m_BackColor = 0xffffff; 940 pContext->m_pOptions->m_BackColor = 0xffffff;
943 } 941 }
944 const CPDF_OCContext::UsageType usage = 942 const CPDF_OCContext::UsageType usage =
945 (flags & FPDF_PRINTING) ? CPDF_OCContext::Print : CPDF_OCContext::View; 943 (flags & FPDF_PRINTING) ? CPDF_OCContext::Print : CPDF_OCContext::View;
946 pContext->m_pOptions->m_AddFlags = flags >> 8; 944 pContext->m_pOptions->m_AddFlags = flags >> 8;
947 pContext->m_pOptions->m_pOCContext = 945 pContext->m_pOptions->m_pOCContext =
(...skipping 29 matching lines...) Expand all
977 } 975 }
978 976
979 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, 977 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document,
980 int page_index, 978 int page_index,
981 double* width, 979 double* width,
982 double* height) { 980 double* height) {
983 UnderlyingDocumentType* pDoc = UnderlyingFromFPDFDocument(document); 981 UnderlyingDocumentType* pDoc = UnderlyingFromFPDFDocument(document);
984 if (!pDoc) 982 if (!pDoc)
985 return FALSE; 983 return FALSE;
986 984
987 #ifndef PDF_ENABLE_XFA 985 #ifdef PDF_ENABLE_XFA
988 CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
989 if (!pDict)
990 #else
991 int count = pDoc->GetPageCount(); 986 int count = pDoc->GetPageCount();
992 if (page_index < 0 || page_index >= count) 987 if (page_index < 0 || page_index >= count)
993 return FALSE; 988 return FALSE;
994
995 CPDFXFA_Page* pPage = pDoc->GetPage(page_index); 989 CPDFXFA_Page* pPage = pDoc->GetPage(page_index);
996 if (!pPage) 990 if (!pPage)
997 #endif
998 return FALSE; 991 return FALSE;
999 992 *width = pPage->GetPageWidth();
1000 #ifndef PDF_ENABLE_XFA 993 *height = pPage->GetPageHeight();
994 #else // PDF_ENABLE_XFA
995 CPDF_Dictionary* pDict = pDoc->GetPage(page_index);
996 if (!pDict)
997 return FALSE;
1001 CPDF_Page page; 998 CPDF_Page page;
1002 page.Load(pDoc, pDict); 999 page.Load(pDoc, pDict);
1003 *width = page.GetPageWidth(); 1000 *width = page.GetPageWidth();
1004 *height = page.GetPageHeight(); 1001 *height = page.GetPageHeight();
1005 #else 1002 #endif // PDF_ENABLE_XFA
1006 *width = pPage->GetPageWidth();
1007 *height = pPage->GetPageHeight();
1008 #endif
1009 1003
1010 return TRUE; 1004 return TRUE;
1011 } 1005 }
1012 1006
1013 DLLEXPORT FPDF_BOOL STDCALL 1007 DLLEXPORT FPDF_BOOL STDCALL
1014 FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document) { 1008 FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document) {
1015 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 1009 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
1016 if (!pDoc) 1010 if (!pDoc)
1017 return TRUE; 1011 return TRUE;
1018 CPDF_ViewerPreferences viewRef(pDoc); 1012 CPDF_ViewerPreferences viewRef(pDoc);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 if (!str) 1121 if (!str)
1128 return -1; 1122 return -1;
1129 1123
1130 if (str->str) { 1124 if (str->str) {
1131 FX_Free(str->str); 1125 FX_Free(str->str);
1132 str->str = NULL; 1126 str->str = NULL;
1133 } 1127 }
1134 str->len = 0; 1128 str->len = 0;
1135 return 0; 1129 return 0;
1136 } 1130 }
1131 #endif // PDF_ENABLE_XFA
1137 1132
1138 #endif
1139 DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, 1133 DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document,
1140 int index, 1134 int index,
1141 void* buffer, 1135 void* buffer,
1142 long* buflen) { 1136 long* buflen) {
1143 if (!buffer) 1137 if (!buffer)
1144 *buflen = 0; 1138 *buflen = 0;
1145 1139
1146 if (index < 0) 1140 if (index < 0)
1147 return nullptr; 1141 return nullptr;
1148 1142
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 if (!buffer) { 1188 if (!buffer) {
1195 *buflen = len; 1189 *buflen = len;
1196 } else if (*buflen >= len) { 1190 } else if (*buflen >= len) {
1197 memcpy(buffer, utf16Name.c_str(), len); 1191 memcpy(buffer, utf16Name.c_str(), len);
1198 *buflen = len; 1192 *buflen = len;
1199 } else { 1193 } else {
1200 *buflen = -1; 1194 *buflen = -1;
1201 } 1195 }
1202 return (FPDF_DEST)pDestObj; 1196 return (FPDF_DEST)pDestObj;
1203 } 1197 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdftext.cpp ('k') | fpdfsdk/src/fsdk_annothandler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698