summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrique Nakashima <hnakashima@chromium.org>2018-01-16 16:39:05 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-01-16 16:39:05 +0000
commit2615590b040a2d49413be41cad298e242d1072e8 (patch)
treee4c084d34019b6fd576005ca6f3d352a25b04961
parent2056fac754e679baea695390854fe7b0ce7acb28 (diff)
downloadpdfium-2615590b040a2d49413be41cad298e242d1072e8.tar.xz
Add FPDF_GetPageBoundingBox API.chromium/3323
This API returns the intersection of the media box and the crop box of a page. Bug: pdfium:973 Change-Id: I57a19ee526ea6d4cd621e1ad6019e51f69f92308 Reviewed-on: https://pdfium-review.googlesource.com/22810 Commit-Queue: Henrique Nakashima <hnakashima@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
-rw-r--r--fpdfsdk/fpdfview.cpp13
-rw-r--r--fpdfsdk/fpdfview_c_api_test.c1
-rw-r--r--fpdfsdk/fpdfview_embeddertest.cpp9
-rw-r--r--public/fpdfview.h13
4 files changed, 36 insertions, 0 deletions
diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
index aad29462cc..cec44a48f9 100644
--- a/fpdfsdk/fpdfview.cpp
+++ b/fpdfsdk/fpdfview.cpp
@@ -726,6 +726,19 @@ FPDF_EXPORT double FPDF_CALLCONV FPDF_GetPageHeight(FPDF_PAGE page) {
return pPage ? pPage->GetPageHeight() : 0.0;
}
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetPageBoundingBox(FPDF_PAGE page,
+ FS_RECTF* rect) {
+ if (!rect)
+ return false;
+
+ CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
+ if (!pPage)
+ return false;
+
+ FSRECTFFromCFXFloatRect(pPage->GetPageBBox(), rect);
+ return true;
+}
+
#if defined(_WIN32)
namespace {
diff --git a/fpdfsdk/fpdfview_c_api_test.c b/fpdfsdk/fpdfview_c_api_test.c
index ad1d8a70ce..53d8776be0 100644
--- a/fpdfsdk/fpdfview_c_api_test.c
+++ b/fpdfsdk/fpdfview_c_api_test.c
@@ -332,6 +332,7 @@ int CheckPDFiumCApi() {
CHK(FPDF_LoadPage);
CHK(FPDF_GetPageWidth);
CHK(FPDF_GetPageHeight);
+ CHK(FPDF_GetPageBoundingBox);
CHK(FPDF_GetPageSizeByIndex);
#ifdef _WIN32
CHK(FPDF_RenderPage);
diff --git a/fpdfsdk/fpdfview_embeddertest.cpp b/fpdfsdk/fpdfview_embeddertest.cpp
index 0055099dd8..7e93574059 100644
--- a/fpdfsdk/fpdfview_embeddertest.cpp
+++ b/fpdfsdk/fpdfview_embeddertest.cpp
@@ -99,8 +99,17 @@ TEST_F(FPDFViewEmbeddertest, Page) {
EXPECT_TRUE(OpenDocument("about_blank.pdf"));
FPDF_PAGE page = LoadPage(0);
EXPECT_NE(nullptr, page);
+
EXPECT_EQ(612.0, FPDF_GetPageWidth(page));
EXPECT_EQ(792.0, FPDF_GetPageHeight(page));
+
+ FS_RECTF rect;
+ EXPECT_TRUE(FPDF_GetPageBoundingBox(page, &rect));
+ EXPECT_EQ(0.0, rect.left);
+ EXPECT_EQ(0.0, rect.bottom);
+ EXPECT_EQ(612.0, rect.right);
+ EXPECT_EQ(792.0, rect.top);
+
UnloadPage(page);
EXPECT_EQ(nullptr, LoadPage(1));
}
diff --git a/public/fpdfview.h b/public/fpdfview.h
index 0898ec6770..ffa4678347 100644
--- a/public/fpdfview.h
+++ b/public/fpdfview.h
@@ -554,6 +554,19 @@ FPDF_EXPORT double FPDF_CALLCONV FPDF_GetPageWidth(FPDF_PAGE page);
// One point is 1/72 inch (around 0.3528 mm)
FPDF_EXPORT double FPDF_CALLCONV FPDF_GetPageHeight(FPDF_PAGE page);
+// Experimental API.
+// Function: FPDF_GetPageBoundingBox
+// Get the bounding box of the page. This is the intersection between
+// its media box and its crop box.
+// Parameters:
+// page - Handle to the page. Returned by FPDF_LoadPage.
+// rect - Pointer to a rect to receive the page bounding box.
+// On an error, |rect| won't be filled.
+// Return value:
+// True for success.
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetPageBoundingBox(FPDF_PAGE page,
+ FS_RECTF* rect);
+
// Function: FPDF_GetPageSizeByIndex
// Get the size of the page at the given index.
// Parameters: