diff options
author | Lei Zhang <thestig@chromium.org> | 2018-01-11 14:34:06 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-01-11 14:34:06 +0000 |
commit | 241752f3c188ed992a26618361e55b1d7f2be7cc (patch) | |
tree | 68cc3709bb5e5f83a8f357b64385c07a90c2f076 | |
parent | 96d6b4df3a96976bb3d9ba068a88bf655f3da856 (diff) | |
download | pdfium-241752f3c188ed992a26618361e55b1d7f2be7cc.tar.xz |
Change FPDFText_GetCharBox() to return a boolean.
BUG=pdfium:858
Change-Id: Id8b6c032d60894eaf14ae0ba52098a60b2485fca
Reviewed-on: https://pdfium-review.googlesource.com/22731
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
-rw-r--r-- | fpdfsdk/fpdftext.cpp | 22 | ||||
-rw-r--r-- | fpdfsdk/fpdftext_embeddertest.cpp | 18 | ||||
-rw-r--r-- | public/fpdf_text.h | 16 |
3 files changed, 38 insertions, 18 deletions
diff --git a/fpdfsdk/fpdftext.cpp b/fpdfsdk/fpdftext.cpp index bc86c1c099..68bf4f83d7 100644 --- a/fpdfsdk/fpdftext.cpp +++ b/fpdfsdk/fpdftext.cpp @@ -105,24 +105,26 @@ FPDF_EXPORT double FPDF_CALLCONV FPDFText_GetFontSize(FPDF_TEXTPAGE text_page, return charinfo.m_FontSize; } -FPDF_EXPORT void FPDF_CALLCONV FPDFText_GetCharBox(FPDF_TEXTPAGE text_page, - int index, - double* left, - double* right, - double* bottom, - double* top) { - if (!text_page) - return; +FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetCharBox(FPDF_TEXTPAGE text_page, + int index, + double* left, + double* right, + double* bottom, + double* top) { + if (!text_page || index < 0) + return false; + CPDF_TextPage* textpage = CPDFTextPageFromFPDFTextPage(text_page); + if (index >= textpage->CountChars()) + return false; - if (index < 0 || index >= textpage->CountChars()) - return; FPDF_CHAR_INFO charinfo; textpage->GetCharInfo(index, &charinfo); *left = charinfo.m_CharBox.left; *right = charinfo.m_CharBox.right; *bottom = charinfo.m_CharBox.bottom; *top = charinfo.m_CharBox.top; + return true; } FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV diff --git a/fpdfsdk/fpdftext_embeddertest.cpp b/fpdfsdk/fpdftext_embeddertest.cpp index a9637be5df..86d32a711a 100644 --- a/fpdfsdk/fpdftext_embeddertest.cpp +++ b/fpdfsdk/fpdftext_embeddertest.cpp @@ -87,7 +87,23 @@ TEST_F(FPDFTextEmbeddertest, Text) { double right = 0.0; double bottom = 0.0; double top = 0.0; - FPDFText_GetCharBox(textpage, 4, &left, &right, &bottom, &top); + EXPECT_FALSE(FPDFText_GetCharBox(nullptr, 4, &left, &right, &bottom, &top)); + EXPECT_DOUBLE_EQ(0.0, left); + EXPECT_DOUBLE_EQ(0.0, right); + EXPECT_DOUBLE_EQ(0.0, bottom); + EXPECT_DOUBLE_EQ(0.0, top); + EXPECT_FALSE(FPDFText_GetCharBox(textpage, -1, &left, &right, &bottom, &top)); + EXPECT_DOUBLE_EQ(0.0, left); + EXPECT_DOUBLE_EQ(0.0, right); + EXPECT_DOUBLE_EQ(0.0, bottom); + EXPECT_DOUBLE_EQ(0.0, top); + EXPECT_FALSE(FPDFText_GetCharBox(textpage, 55, &left, &right, &bottom, &top)); + EXPECT_DOUBLE_EQ(0.0, left); + EXPECT_DOUBLE_EQ(0.0, right); + EXPECT_DOUBLE_EQ(0.0, bottom); + EXPECT_DOUBLE_EQ(0.0, top); + + EXPECT_TRUE(FPDFText_GetCharBox(textpage, 4, &left, &right, &bottom, &top)); EXPECT_NEAR(41.071, left, 0.001); EXPECT_NEAR(46.243, right, 0.001); EXPECT_NEAR(49.844, bottom, 0.001); diff --git a/public/fpdf_text.h b/public/fpdf_text.h index 90ccaf76ae..043dc169c9 100644 --- a/public/fpdf_text.h +++ b/public/fpdf_text.h @@ -102,16 +102,18 @@ FPDF_EXPORT double FPDF_CALLCONV FPDFText_GetFontSize(FPDF_TEXTPAGE text_page, // top - Pointer to a double number receiving top position of // the character box. // Return Value: -// None. +// On success, return TRUE and fill in |left|, |right|, |bottom|, and +// |top|. If |text_page| is invalid, or if |index| is out of bounds, +// then return FALSE, and the out parameters remain unmodified. // Comments: // All positions are measured in PDF "user space". // -FPDF_EXPORT void FPDF_CALLCONV FPDFText_GetCharBox(FPDF_TEXTPAGE text_page, - int index, - double* left, - double* right, - double* bottom, - double* top); +FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetCharBox(FPDF_TEXTPAGE text_page, + int index, + double* left, + double* right, + double* bottom, + double* top); // Function: FPDFText_GetCharOrigin // Get origin of a particular character. |