Index: fpdfsdk/src/fpdfview.cpp |
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp |
index 17f52ec26339b8ba6a30348dc6a22c6fa9eff1fb..b2c5618a5205de0aed2da0fbd853e8bb1a7be6b1 100644 |
--- a/fpdfsdk/src/fpdfview.cpp |
+++ b/fpdfsdk/src/fpdfview.cpp |
@@ -20,6 +20,10 @@ CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc) { |
return static_cast<CPDF_Document*>(doc); |
} |
+CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page) { |
+ return static_cast<CPDF_Page*>(page); |
+} |
+ |
CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess) { |
if (pFileAccess) |
m_FileAccess = *pFileAccess; |
@@ -284,15 +288,13 @@ DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, |
} |
DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) { |
- if (!page) |
- return 0.0; |
- return ((CPDF_Page*)page)->GetPageWidth(); |
+ CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
+ return pPage ? pPage->GetPageWidth() : 0.0; |
} |
DLLEXPORT double STDCALL FPDF_GetPageHeight(FPDF_PAGE page) { |
- if (!page) |
- return 0.0; |
- return ((CPDF_Page*)page)->GetPageHeight(); |
+ CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
+ return pPage ? pPage->GetPageHeight() : 0.0; |
} |
void DropContext(void* data) { |
@@ -312,9 +314,9 @@ DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, |
int size_y, |
int rotate, |
int flags) { |
- if (page == NULL) |
+ CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
+ if (!pPage) |
return; |
- CPDF_Page* pPage = (CPDF_Page*)page; |
CRenderContext* pContext = new CRenderContext; |
pPage->SetPrivateData((void*)1, pContext, DropContext); |
@@ -472,10 +474,11 @@ DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, |
int size_y, |
int rotate, |
int flags) { |
- if (bitmap == NULL || page == NULL) |
+ if (!bitmap) |
+ return; |
+ CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
+ if (!pPage) |
return; |
- CPDF_Page* pPage = (CPDF_Page*)page; |
- |
CRenderContext* pContext = new CRenderContext; |
pPage->SetPrivateData((void*)1, pContext, DropContext); |
#ifdef _SKIA_SUPPORT_ |
@@ -570,10 +573,11 @@ DLLEXPORT void STDCALL FPDF_PageToDevice(FPDF_PAGE page, |
double page_y, |
int* device_x, |
int* device_y) { |
- if (page == NULL || device_x == NULL || device_y == NULL) |
+ if (!device_x || !device_y) |
+ return; |
+ CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
+ if (!pPage) |
return; |
- CPDF_Page* pPage = (CPDF_Page*)page; |
- |
CPDF_Matrix page2device; |
pPage->GetDisplayMatrix(page2device, start_x, start_y, size_x, size_y, |
rotate); |
@@ -681,8 +685,8 @@ void FPDF_RenderPage_Retail(CRenderContext* pContext, |
int flags, |
FX_BOOL bNeedToRestore, |
IFSDK_PAUSE_Adapter* pause) { |
- CPDF_Page* pPage = (CPDF_Page*)page; |
- if (pPage == NULL) |
+ CPDF_Page* pPage = CPDFPageFromFPDFPage(page); |
+ if (!pPage) |
return; |
if (!pContext->m_pOptions) |