| Index: fpdfsdk/src/fpdfview.cpp
|
| diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
|
| index 8b3dff2fba44d36451d119fb2b67507630b3c809..7e568062f008a866dc1f0bf0f2deb9168b56dae8 100644
|
| --- a/fpdfsdk/src/fpdfview.cpp
|
| +++ b/fpdfsdk/src/fpdfview.cpp
|
| @@ -23,16 +23,30 @@
|
| #include "third_party/base/nonstd_unique_ptr.h"
|
| #include "third_party/base/numerics/safe_conversions_impl.h"
|
|
|
| +UnderlyingDocumentType* UnderlyingFromFPDFDocument(FPDF_DOCUMENT doc) {
|
| + return static_cast<UnderlyingDocumentType*>(doc);
|
| +}
|
| +
|
| +FPDF_DOCUMENT FPDFDocumentFromUnderlying(UnderlyingDocumentType* doc) {
|
| + return static_cast<FPDF_DOCUMENT>(doc);
|
| +}
|
| +
|
| +UnderlyingPageType* UnderlyingFromFPDFPage(FPDF_PAGE page) {
|
| + return static_cast<UnderlyingPageType*>(page);
|
| +}
|
| +
|
| CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc) {
|
| - return doc ? static_cast<CPDFXFA_Document*>(doc)->GetPDFDoc() : nullptr;
|
| + return doc ? UnderlyingFromFPDFDocument(doc)->GetPDFDoc() : nullptr;
|
| }
|
|
|
| FPDF_DOCUMENT FPDFDocumentFromCPDFDocument(CPDF_Document* doc) {
|
| - return doc ? new CPDFXFA_Document(doc, CPDFXFA_App::GetInstance()) : nullptr;
|
| + return doc ? FPDFDocumentFromUnderlying(
|
| + new CPDFXFA_Document(doc, CPDFXFA_App::GetInstance()))
|
| + : nullptr;
|
| }
|
|
|
| CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page) {
|
| - return page ? static_cast<CPDFXFA_Page*>(page)->GetPDFPage() : nullptr;
|
| + return page ? UnderlyingFromFPDFPage(page)->GetPDFPage() : nullptr;
|
| }
|
|
|
| CFPDF_FileStream::CFPDF_FileStream(FPDF_FILEHANDLER* pFS) {
|
| @@ -416,15 +430,15 @@ DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document) {
|
| }
|
|
|
| DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document) {
|
| - CPDFXFA_Document* pDoc = static_cast<CPDFXFA_Document*>(document);
|
| + UnderlyingDocumentType* pDoc = UnderlyingFromFPDFDocument(document);
|
| return pDoc ? pDoc->GetPageCount() : 0;
|
| }
|
|
|
| DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document,
|
| int page_index) {
|
| - if (!document)
|
| + UnderlyingDocumentType* pDoc = UnderlyingFromFPDFDocument(document);
|
| + if (!pDoc)
|
| return nullptr;
|
| - CPDFXFA_Document* pDoc = static_cast<CPDFXFA_Document*>(document);
|
| if (page_index < 0 || page_index >= pDoc->GetPageCount())
|
| return nullptr;
|
|
|
| @@ -432,12 +446,12 @@ DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document,
|
| }
|
|
|
| DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) {
|
| - CPDFXFA_Page* pPage = static_cast<CPDFXFA_Page*>(page);
|
| + UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
|
| return pPage ? pPage->GetPageWidth() : 0.0;
|
| }
|
|
|
| DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page) {
|
| - CPDFXFA_Page* pPage = static_cast<CPDFXFA_Page*>(page);
|
| + UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
|
| return pPage ? pPage->GetPageHeight() : 0.0;
|
| }
|
|
|
| @@ -678,8 +692,7 @@ DLLEXPORT void STDCALL FPDF_DeviceToPage(FPDF_PAGE page,
|
| double* page_y) {
|
| if (page == NULL || page_x == NULL || page_y == NULL)
|
| return;
|
| - CPDFXFA_Page* pPage = (CPDFXFA_Page*)page;
|
| -
|
| + UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
|
| pPage->DeviceToPage(start_x, start_y, size_x, size_y, rotate, device_x,
|
| device_y, page_x, page_y);
|
| }
|
| @@ -696,7 +709,7 @@ DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page,
|
| int* device_y) {
|
| if (!device_x || !device_y)
|
| return;
|
| - CPDFXFA_Page* pPage = (CPDFXFA_Page*)page;
|
| + UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page);
|
| if (!pPage)
|
| return;
|
| pPage->PageToDevice(start_x, start_y, size_x, size_y, rotate, page_x, page_y,
|
|
|