diff options
author | Andrew Weintraub <asweintraub@google.com> | 2017-08-11 11:36:51 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-08-12 00:29:04 +0000 |
commit | d3002340caad8d688d0e4928a36e90d354a797bd (patch) | |
tree | e87182d51b22e04ae553354655a061d9d099b1b7 /fpdfsdk | |
parent | 3c03439a81731233a5410fa4ea029721c021d42c (diff) | |
download | pdfium-d3002340caad8d688d0e4928a36e90d354a797bd.tar.xz |
Add a new public method to get the the origin of a character.
Bug:
Change-Id: I376f4af26791cd4ed04049ab179c2b39dd262725
Reviewed-on: https://pdfium-review.googlesource.com/10690
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/fpdftext.cpp | 18 | ||||
-rw-r--r-- | fpdfsdk/fpdftext_embeddertest.cpp | 6 | ||||
-rw-r--r-- | fpdfsdk/fpdfview_c_api_test.c | 1 |
3 files changed, 25 insertions, 0 deletions
diff --git a/fpdfsdk/fpdftext.cpp b/fpdfsdk/fpdftext.cpp index 70acf54ec7..2ea06de5d8 100644 --- a/fpdfsdk/fpdftext.cpp +++ b/fpdfsdk/fpdftext.cpp @@ -123,6 +123,24 @@ FPDF_EXPORT void FPDF_CALLCONV FPDFText_GetCharBox(FPDF_TEXTPAGE text_page, *top = charinfo.m_CharBox.top; } +FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV +FPDFText_GetCharOrigin(FPDF_TEXTPAGE text_page, + int index, + double* x, + double* y) { + if (!text_page) + return false; + CPDF_TextPage* textpage = CPDFTextPageFromFPDFTextPage(text_page); + + if (index < 0 || index >= textpage->CountChars()) + return false; + FPDF_CHAR_INFO charinfo; + textpage->GetCharInfo(index, &charinfo); + *x = charinfo.m_Origin.x; + *y = charinfo.m_Origin.y; + return true; +} + // select FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetCharIndexAtPos(FPDF_TEXTPAGE text_page, diff --git a/fpdfsdk/fpdftext_embeddertest.cpp b/fpdfsdk/fpdftext_embeddertest.cpp index 65f5734122..572368af15 100644 --- a/fpdfsdk/fpdftext_embeddertest.cpp +++ b/fpdfsdk/fpdftext_embeddertest.cpp @@ -71,6 +71,12 @@ TEST_F(FPDFTextEmbeddertest, Text) { EXPECT_NEAR(49.844, bottom, 0.001); EXPECT_NEAR(55.520, top, 0.001); + double x = 0.0; + double y = 0.0; + EXPECT_TRUE(FPDFText_GetCharOrigin(textpage, 4, &x, &y)); + EXPECT_NEAR(40.664, x, 0.001); + EXPECT_NEAR(50.000, y, 0.001); + EXPECT_EQ(4, FPDFText_GetCharIndexAtPos(textpage, 42.0, 50.0, 1.0, 1.0)); EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(textpage, 0.0, 0.0, 1.0, 1.0)); EXPECT_EQ(-1, FPDFText_GetCharIndexAtPos(textpage, 199.0, 199.0, 1.0, 1.0)); diff --git a/fpdfsdk/fpdfview_c_api_test.c b/fpdfsdk/fpdfview_c_api_test.c index 8276eb64b7..88b7465744 100644 --- a/fpdfsdk/fpdfview_c_api_test.c +++ b/fpdfsdk/fpdfview_c_api_test.c @@ -254,6 +254,7 @@ int CheckPDFiumCApi() { CHK(FPDFText_GetUnicode); CHK(FPDFText_GetFontSize); CHK(FPDFText_GetCharBox); + CHK(FPDFText_GetCharOrigin); CHK(FPDFText_GetCharIndexAtPos); CHK(FPDFText_GetText); CHK(FPDFText_CountRects); |