diff options
author | Henrique Nakashima <hnakashima@chromium.org> | 2018-01-16 16:39:05 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-01-16 16:39:05 +0000 |
commit | 2615590b040a2d49413be41cad298e242d1072e8 (patch) | |
tree | e4c084d34019b6fd576005ca6f3d352a25b04961 | |
parent | 2056fac754e679baea695390854fe7b0ce7acb28 (diff) | |
download | pdfium-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.cpp | 13 | ||||
-rw-r--r-- | fpdfsdk/fpdfview_c_api_test.c | 1 | ||||
-rw-r--r-- | fpdfsdk/fpdfview_embeddertest.cpp | 9 | ||||
-rw-r--r-- | public/fpdfview.h | 13 |
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: |