Index: fpdfsdk/src/fpdf_transformpage.cpp |
diff --git a/fpdfsdk/src/fpdf_transformpage.cpp b/fpdfsdk/src/fpdf_transformpage.cpp |
index 71ba48e04279fbc50ad5da3fb10683a2780956e2..614c7a48fe6f6e23f29edbe91fcd6d52d899b75b 100644 |
--- a/fpdfsdk/src/fpdf_transformpage.cpp |
+++ b/fpdfsdk/src/fpdf_transformpage.cpp |
@@ -7,6 +7,43 @@ |
#include "../../public/fpdf_transformpage.h" |
#include "../include/fsdk_define.h" |
+namespace { |
+ |
+void SetBoundingBox(CPDF_Page* page, |
+ const CFX_ByteStringC& key, |
+ float left, |
+ float bottom, |
+ float right, |
+ float top) { |
+ CPDF_Dictionary* pPageDict = page->m_pFormDict; |
+ CPDF_Array* pBoundingBoxArray = new CPDF_Array; |
+ pBoundingBoxArray->Add(new CPDF_Number(left)); |
+ pBoundingBoxArray->Add(new CPDF_Number(bottom)); |
+ pBoundingBoxArray->Add(new CPDF_Number(right)); |
+ pBoundingBoxArray->Add(new CPDF_Number(top)); |
+ pPageDict->SetAt(key, pBoundingBoxArray); |
+} |
+ |
+FPDF_BOOL GetBoundingBox(CPDF_Page* page, |
+ const CFX_ByteStringC& key, |
+ float* left, |
+ float* bottom, |
+ float* right, |
+ float* top) { |
+ CPDF_Dictionary* pPageDict = page->m_pFormDict; |
+ CPDF_Array* pArray = pPageDict->GetArray(key); |
+ if (!pArray) |
+ return FALSE; |
+ |
+ *left = pArray->GetFloat(0); |
+ *bottom = pArray->GetFloat(1); |
+ *right = pArray->GetFloat(2); |
+ *top = pArray->GetFloat(3); |
+ return TRUE; |
+} |
+ |
+} // namespace |
+ |
DLLEXPORT void STDCALL FPDFPage_SetMediaBox(FPDF_PAGE page, |
float left, |
float bottom, |
@@ -15,14 +52,8 @@ DLLEXPORT void STDCALL FPDFPage_SetMediaBox(FPDF_PAGE page, |
if (!page) |
return; |
- CPDF_Page* pPage = (CPDF_Page*)page; |
- CPDF_Dictionary* pPageDict = pPage->m_pFormDict; |
- CPDF_Array* pMediaBoxArray = new CPDF_Array; |
- pMediaBoxArray->Add(new CPDF_Number(left)); |
- pMediaBoxArray->Add(new CPDF_Number(bottom)); |
- pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(right))); |
- pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(top))); |
- pPageDict->SetAt("MediaBox", pMediaBoxArray); |
+ SetBoundingBox(static_cast<CPDF_Page*>(page), "MediaBox", left, bottom, right, |
+ top); |
} |
DLLEXPORT void STDCALL FPDFPage_SetCropBox(FPDF_PAGE page, |
@@ -33,14 +64,8 @@ DLLEXPORT void STDCALL FPDFPage_SetCropBox(FPDF_PAGE page, |
if (!page) |
return; |
- CPDF_Page* pPage = (CPDF_Page*)page; |
- CPDF_Dictionary* pPageDict = pPage->m_pFormDict; |
- CPDF_Array* pCropBoxArray = new CPDF_Array; |
- pCropBoxArray->Add(new CPDF_Number(left)); |
- pCropBoxArray->Add(new CPDF_Number(bottom)); |
- pCropBoxArray->Add(new CPDF_Number(FX_FLOAT(right))); |
- pCropBoxArray->Add(new CPDF_Number(FX_FLOAT(top))); |
- pPageDict->SetAt("CropBox", pCropBoxArray); |
+ SetBoundingBox(static_cast<CPDF_Page*>(page), "CropBox", left, bottom, right, |
+ top); |
} |
DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetMediaBox(FPDF_PAGE page, |
@@ -48,19 +73,8 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetMediaBox(FPDF_PAGE page, |
float* bottom, |
float* right, |
float* top) { |
- if (!page) |
- return FALSE; |
- CPDF_Page* pPage = (CPDF_Page*)page; |
- CPDF_Dictionary* pPageDict = pPage->m_pFormDict; |
- CPDF_Array* pArray = pPageDict->GetArray("MediaBox"); |
- if (pArray) { |
- *left = pArray->GetFloat(0); |
- *bottom = pArray->GetFloat(1); |
- *right = pArray->GetFloat(2); |
- *top = pArray->GetFloat(3); |
- return TRUE; |
- } |
- return FALSE; |
+ return page && GetBoundingBox(static_cast<CPDF_Page*>(page), "MediaBox", left, |
+ bottom, right, top); |
} |
DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetCropBox(FPDF_PAGE page, |
@@ -68,19 +82,8 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetCropBox(FPDF_PAGE page, |
float* bottom, |
float* right, |
float* top) { |
- if (!page) |
- return FALSE; |
- CPDF_Page* pPage = (CPDF_Page*)page; |
- CPDF_Dictionary* pPageDict = pPage->m_pFormDict; |
- CPDF_Array* pArray = pPageDict->GetArray("CropBox"); |
- if (pArray) { |
- *left = pArray->GetFloat(0); |
- *bottom = pArray->GetFloat(1); |
- *right = pArray->GetFloat(2); |
- *top = pArray->GetFloat(3); |
- return TRUE; |
- } |
- return FALSE; |
+ return page && GetBoundingBox(static_cast<CPDF_Page*>(page), "CropBox", left, |
+ bottom, right, top); |
} |
DLLEXPORT FPDF_BOOL STDCALL FPDFPage_TransFormWithClip(FPDF_PAGE page, |