xref: /aosp_15_r20/external/pdfium/public/fpdf_text.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker 
5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6*3ac0a46fSAndroid Build Coastguard Worker 
7*3ac0a46fSAndroid Build Coastguard Worker #ifndef PUBLIC_FPDF_TEXT_H_
8*3ac0a46fSAndroid Build Coastguard Worker #define PUBLIC_FPDF_TEXT_H_
9*3ac0a46fSAndroid Build Coastguard Worker 
10*3ac0a46fSAndroid Build Coastguard Worker // clang-format off
11*3ac0a46fSAndroid Build Coastguard Worker // NOLINTNEXTLINE(build/include)
12*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfview.h"
13*3ac0a46fSAndroid Build Coastguard Worker 
14*3ac0a46fSAndroid Build Coastguard Worker // Exported Functions
15*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus
16*3ac0a46fSAndroid Build Coastguard Worker extern "C" {
17*3ac0a46fSAndroid Build Coastguard Worker #endif
18*3ac0a46fSAndroid Build Coastguard Worker 
19*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_LoadPage
20*3ac0a46fSAndroid Build Coastguard Worker //          Prepare information about all characters in a page.
21*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
22*3ac0a46fSAndroid Build Coastguard Worker //          page    -   Handle to the page. Returned by FPDF_LoadPage function
23*3ac0a46fSAndroid Build Coastguard Worker //                      (in FPDFVIEW module).
24*3ac0a46fSAndroid Build Coastguard Worker // Return value:
25*3ac0a46fSAndroid Build Coastguard Worker //          A handle to the text page information structure.
26*3ac0a46fSAndroid Build Coastguard Worker //          NULL if something goes wrong.
27*3ac0a46fSAndroid Build Coastguard Worker // Comments:
28*3ac0a46fSAndroid Build Coastguard Worker //          Application must call FPDFText_ClosePage to release the text page
29*3ac0a46fSAndroid Build Coastguard Worker //          information.
30*3ac0a46fSAndroid Build Coastguard Worker //
31*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_TEXTPAGE FPDF_CALLCONV FPDFText_LoadPage(FPDF_PAGE page);
32*3ac0a46fSAndroid Build Coastguard Worker 
33*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_ClosePage
34*3ac0a46fSAndroid Build Coastguard Worker //          Release all resources allocated for a text page information
35*3ac0a46fSAndroid Build Coastguard Worker //          structure.
36*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
37*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
38*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
39*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
40*3ac0a46fSAndroid Build Coastguard Worker //          None.
41*3ac0a46fSAndroid Build Coastguard Worker //
42*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFText_ClosePage(FPDF_TEXTPAGE text_page);
43*3ac0a46fSAndroid Build Coastguard Worker 
44*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_CountChars
45*3ac0a46fSAndroid Build Coastguard Worker //          Get number of characters in a page.
46*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
47*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
48*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
49*3ac0a46fSAndroid Build Coastguard Worker // Return value:
50*3ac0a46fSAndroid Build Coastguard Worker //          Number of characters in the page. Return -1 for error.
51*3ac0a46fSAndroid Build Coastguard Worker //          Generated characters, like additional space characters, new line
52*3ac0a46fSAndroid Build Coastguard Worker //          characters, are also counted.
53*3ac0a46fSAndroid Build Coastguard Worker // Comments:
54*3ac0a46fSAndroid Build Coastguard Worker //          Characters in a page form a "stream", inside the stream, each
55*3ac0a46fSAndroid Build Coastguard Worker //          character has an index.
56*3ac0a46fSAndroid Build Coastguard Worker //          We will use the index parameters in many of FPDFTEXT functions. The
57*3ac0a46fSAndroid Build Coastguard Worker //          first character in the page
58*3ac0a46fSAndroid Build Coastguard Worker //          has an index value of zero.
59*3ac0a46fSAndroid Build Coastguard Worker //
60*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFText_CountChars(FPDF_TEXTPAGE text_page);
61*3ac0a46fSAndroid Build Coastguard Worker 
62*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetUnicode
63*3ac0a46fSAndroid Build Coastguard Worker //          Get Unicode of a character in a page.
64*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
65*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
66*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
67*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
68*3ac0a46fSAndroid Build Coastguard Worker // Return value:
69*3ac0a46fSAndroid Build Coastguard Worker //          The Unicode of the particular character.
70*3ac0a46fSAndroid Build Coastguard Worker //          If a character is not encoded in Unicode and Foxit engine can't
71*3ac0a46fSAndroid Build Coastguard Worker //          convert to Unicode,
72*3ac0a46fSAndroid Build Coastguard Worker //          the return value will be zero.
73*3ac0a46fSAndroid Build Coastguard Worker //
74*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned int FPDF_CALLCONV
75*3ac0a46fSAndroid Build Coastguard Worker FPDFText_GetUnicode(FPDF_TEXTPAGE text_page, int index);
76*3ac0a46fSAndroid Build Coastguard Worker 
77*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
78*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_IsGenerated
79*3ac0a46fSAndroid Build Coastguard Worker //          Get if a character in a page is generated by PDFium.
80*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
81*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
82*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
83*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
84*3ac0a46fSAndroid Build Coastguard Worker // Return value:
85*3ac0a46fSAndroid Build Coastguard Worker //          1 if the character is generated by PDFium.
86*3ac0a46fSAndroid Build Coastguard Worker //          0 if the character is not generated by PDFium.
87*3ac0a46fSAndroid Build Coastguard Worker //          -1 if there was an error.
88*3ac0a46fSAndroid Build Coastguard Worker //
89*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
90*3ac0a46fSAndroid Build Coastguard Worker FPDFText_IsGenerated(FPDF_TEXTPAGE text_page, int index);
91*3ac0a46fSAndroid Build Coastguard Worker 
92*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
93*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_HasUnicodeMapError
94*3ac0a46fSAndroid Build Coastguard Worker //          Get if a character in a page has an invalid unicode mapping.
95*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
96*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
97*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
98*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
99*3ac0a46fSAndroid Build Coastguard Worker // Return value:
100*3ac0a46fSAndroid Build Coastguard Worker //          1 if the character has an invalid unicode mapping.
101*3ac0a46fSAndroid Build Coastguard Worker //          0 if the character has no known unicode mapping issues.
102*3ac0a46fSAndroid Build Coastguard Worker //          -1 if there was an error.
103*3ac0a46fSAndroid Build Coastguard Worker //
104*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
105*3ac0a46fSAndroid Build Coastguard Worker FPDFText_HasUnicodeMapError(FPDF_TEXTPAGE text_page, int index);
106*3ac0a46fSAndroid Build Coastguard Worker 
107*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetFontSize
108*3ac0a46fSAndroid Build Coastguard Worker //          Get the font size of a particular character.
109*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
110*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
111*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
112*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
113*3ac0a46fSAndroid Build Coastguard Worker // Return value:
114*3ac0a46fSAndroid Build Coastguard Worker //          The font size of the particular character, measured in points (about
115*3ac0a46fSAndroid Build Coastguard Worker //          1/72 inch). This is the typographic size of the font (so called
116*3ac0a46fSAndroid Build Coastguard Worker //          "em size").
117*3ac0a46fSAndroid Build Coastguard Worker //
118*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT double FPDF_CALLCONV FPDFText_GetFontSize(FPDF_TEXTPAGE text_page,
119*3ac0a46fSAndroid Build Coastguard Worker                                                       int index);
120*3ac0a46fSAndroid Build Coastguard Worker 
121*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
122*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetFontInfo
123*3ac0a46fSAndroid Build Coastguard Worker //          Get the font name and flags of a particular character.
124*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
125*3ac0a46fSAndroid Build Coastguard Worker //          text_page - Handle to a text page information structure.
126*3ac0a46fSAndroid Build Coastguard Worker //                      Returned by FPDFText_LoadPage function.
127*3ac0a46fSAndroid Build Coastguard Worker //          index     - Zero-based index of the character.
128*3ac0a46fSAndroid Build Coastguard Worker //          buffer    - A buffer receiving the font name.
129*3ac0a46fSAndroid Build Coastguard Worker //          buflen    - The length of |buffer| in bytes.
130*3ac0a46fSAndroid Build Coastguard Worker //          flags     - Optional pointer to an int receiving the font flags.
131*3ac0a46fSAndroid Build Coastguard Worker //                      These flags should be interpreted per PDF spec 1.7
132*3ac0a46fSAndroid Build Coastguard Worker //                      Section 5.7.1 Font Descriptor Flags.
133*3ac0a46fSAndroid Build Coastguard Worker // Return value:
134*3ac0a46fSAndroid Build Coastguard Worker //          On success, return the length of the font name, including the
135*3ac0a46fSAndroid Build Coastguard Worker //          trailing NUL character, in bytes. If this length is less than or
136*3ac0a46fSAndroid Build Coastguard Worker //          equal to |length|, |buffer| is set to the font name, |flags| is
137*3ac0a46fSAndroid Build Coastguard Worker //          set to the font flags. |buffer| is in UTF-8 encoding. Return 0 on
138*3ac0a46fSAndroid Build Coastguard Worker //          failure.
139*3ac0a46fSAndroid Build Coastguard Worker //
140*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
141*3ac0a46fSAndroid Build Coastguard Worker FPDFText_GetFontInfo(FPDF_TEXTPAGE text_page,
142*3ac0a46fSAndroid Build Coastguard Worker                      int index,
143*3ac0a46fSAndroid Build Coastguard Worker                      void* buffer,
144*3ac0a46fSAndroid Build Coastguard Worker                      unsigned long buflen,
145*3ac0a46fSAndroid Build Coastguard Worker                      int* flags);
146*3ac0a46fSAndroid Build Coastguard Worker 
147*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
148*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetFontWeight
149*3ac0a46fSAndroid Build Coastguard Worker //          Get the font weight of a particular character.
150*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
151*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
152*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
153*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
154*3ac0a46fSAndroid Build Coastguard Worker // Return value:
155*3ac0a46fSAndroid Build Coastguard Worker //          On success, return the font weight of the particular character. If
156*3ac0a46fSAndroid Build Coastguard Worker //          |text_page| is invalid, if |index| is out of bounds, or if the
157*3ac0a46fSAndroid Build Coastguard Worker //          character's text object is undefined, return -1.
158*3ac0a46fSAndroid Build Coastguard Worker //
159*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetFontWeight(FPDF_TEXTPAGE text_page,
160*3ac0a46fSAndroid Build Coastguard Worker                                                      int index);
161*3ac0a46fSAndroid Build Coastguard Worker 
162*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
163*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetTextRenderMode
164*3ac0a46fSAndroid Build Coastguard Worker //          Get text rendering mode of character.
165*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
166*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
167*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
168*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
169*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
170*3ac0a46fSAndroid Build Coastguard Worker //          On success, return the render mode value. A valid value is of type
171*3ac0a46fSAndroid Build Coastguard Worker //          FPDF_TEXT_RENDERMODE. If |text_page| is invalid, if |index| is out
172*3ac0a46fSAndroid Build Coastguard Worker //          of bounds, or if the text object is undefined, then return
173*3ac0a46fSAndroid Build Coastguard Worker //          FPDF_TEXTRENDERMODE_UNKNOWN.
174*3ac0a46fSAndroid Build Coastguard Worker //
175*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_TEXT_RENDERMODE FPDF_CALLCONV
176*3ac0a46fSAndroid Build Coastguard Worker FPDFText_GetTextRenderMode(FPDF_TEXTPAGE text_page, int index);
177*3ac0a46fSAndroid Build Coastguard Worker 
178*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
179*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetFillColor
180*3ac0a46fSAndroid Build Coastguard Worker //          Get the fill color of a particular character.
181*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
182*3ac0a46fSAndroid Build Coastguard Worker //          text_page      -   Handle to a text page information structure.
183*3ac0a46fSAndroid Build Coastguard Worker //                             Returned by FPDFText_LoadPage function.
184*3ac0a46fSAndroid Build Coastguard Worker //          index          -   Zero-based index of the character.
185*3ac0a46fSAndroid Build Coastguard Worker //          R              -   Pointer to an unsigned int number receiving the
186*3ac0a46fSAndroid Build Coastguard Worker //                             red value of the fill color.
187*3ac0a46fSAndroid Build Coastguard Worker //          G              -   Pointer to an unsigned int number receiving the
188*3ac0a46fSAndroid Build Coastguard Worker //                             green value of the fill color.
189*3ac0a46fSAndroid Build Coastguard Worker //          B              -   Pointer to an unsigned int number receiving the
190*3ac0a46fSAndroid Build Coastguard Worker //                             blue value of the fill color.
191*3ac0a46fSAndroid Build Coastguard Worker //          A              -   Pointer to an unsigned int number receiving the
192*3ac0a46fSAndroid Build Coastguard Worker //                             alpha value of the fill color.
193*3ac0a46fSAndroid Build Coastguard Worker // Return value:
194*3ac0a46fSAndroid Build Coastguard Worker //          Whether the call succeeded. If false, |R|, |G|, |B| and |A| are
195*3ac0a46fSAndroid Build Coastguard Worker //          unchanged.
196*3ac0a46fSAndroid Build Coastguard Worker //
197*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
198*3ac0a46fSAndroid Build Coastguard Worker FPDFText_GetFillColor(FPDF_TEXTPAGE text_page,
199*3ac0a46fSAndroid Build Coastguard Worker                       int index,
200*3ac0a46fSAndroid Build Coastguard Worker                       unsigned int* R,
201*3ac0a46fSAndroid Build Coastguard Worker                       unsigned int* G,
202*3ac0a46fSAndroid Build Coastguard Worker                       unsigned int* B,
203*3ac0a46fSAndroid Build Coastguard Worker                       unsigned int* A);
204*3ac0a46fSAndroid Build Coastguard Worker 
205*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
206*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetStrokeColor
207*3ac0a46fSAndroid Build Coastguard Worker //          Get the stroke color of a particular character.
208*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
209*3ac0a46fSAndroid Build Coastguard Worker //          text_page      -   Handle to a text page information structure.
210*3ac0a46fSAndroid Build Coastguard Worker //                             Returned by FPDFText_LoadPage function.
211*3ac0a46fSAndroid Build Coastguard Worker //          index          -   Zero-based index of the character.
212*3ac0a46fSAndroid Build Coastguard Worker //          R              -   Pointer to an unsigned int number receiving the
213*3ac0a46fSAndroid Build Coastguard Worker //                             red value of the stroke color.
214*3ac0a46fSAndroid Build Coastguard Worker //          G              -   Pointer to an unsigned int number receiving the
215*3ac0a46fSAndroid Build Coastguard Worker //                             green value of the stroke color.
216*3ac0a46fSAndroid Build Coastguard Worker //          B              -   Pointer to an unsigned int number receiving the
217*3ac0a46fSAndroid Build Coastguard Worker //                             blue value of the stroke color.
218*3ac0a46fSAndroid Build Coastguard Worker //          A              -   Pointer to an unsigned int number receiving the
219*3ac0a46fSAndroid Build Coastguard Worker //                             alpha value of the stroke color.
220*3ac0a46fSAndroid Build Coastguard Worker // Return value:
221*3ac0a46fSAndroid Build Coastguard Worker //          Whether the call succeeded. If false, |R|, |G|, |B| and |A| are
222*3ac0a46fSAndroid Build Coastguard Worker //          unchanged.
223*3ac0a46fSAndroid Build Coastguard Worker //
224*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
225*3ac0a46fSAndroid Build Coastguard Worker FPDFText_GetStrokeColor(FPDF_TEXTPAGE text_page,
226*3ac0a46fSAndroid Build Coastguard Worker                         int index,
227*3ac0a46fSAndroid Build Coastguard Worker                         unsigned int* R,
228*3ac0a46fSAndroid Build Coastguard Worker                         unsigned int* G,
229*3ac0a46fSAndroid Build Coastguard Worker                         unsigned int* B,
230*3ac0a46fSAndroid Build Coastguard Worker                         unsigned int* A);
231*3ac0a46fSAndroid Build Coastguard Worker 
232*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
233*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetCharAngle
234*3ac0a46fSAndroid Build Coastguard Worker //          Get character rotation angle.
235*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
236*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
237*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
238*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
239*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
240*3ac0a46fSAndroid Build Coastguard Worker //          On success, return the angle value in radian. Value will always be
241*3ac0a46fSAndroid Build Coastguard Worker //          greater or equal to 0. If |text_page| is invalid, or if |index| is
242*3ac0a46fSAndroid Build Coastguard Worker //          out of bounds, then return -1.
243*3ac0a46fSAndroid Build Coastguard Worker //
244*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT float FPDF_CALLCONV FPDFText_GetCharAngle(FPDF_TEXTPAGE text_page,
245*3ac0a46fSAndroid Build Coastguard Worker                                                       int index);
246*3ac0a46fSAndroid Build Coastguard Worker 
247*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetCharBox
248*3ac0a46fSAndroid Build Coastguard Worker //          Get bounding box of a particular character.
249*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
250*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
251*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
252*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
253*3ac0a46fSAndroid Build Coastguard Worker //          left        -   Pointer to a double number receiving left position
254*3ac0a46fSAndroid Build Coastguard Worker //                          of the character box.
255*3ac0a46fSAndroid Build Coastguard Worker //          right       -   Pointer to a double number receiving right position
256*3ac0a46fSAndroid Build Coastguard Worker //                          of the character box.
257*3ac0a46fSAndroid Build Coastguard Worker //          bottom      -   Pointer to a double number receiving bottom position
258*3ac0a46fSAndroid Build Coastguard Worker //                          of the character box.
259*3ac0a46fSAndroid Build Coastguard Worker //          top         -   Pointer to a double number receiving top position of
260*3ac0a46fSAndroid Build Coastguard Worker //                          the character box.
261*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
262*3ac0a46fSAndroid Build Coastguard Worker //          On success, return TRUE and fill in |left|, |right|, |bottom|, and
263*3ac0a46fSAndroid Build Coastguard Worker //          |top|. If |text_page| is invalid, or if |index| is out of bounds,
264*3ac0a46fSAndroid Build Coastguard Worker //          then return FALSE, and the out parameters remain unmodified.
265*3ac0a46fSAndroid Build Coastguard Worker // Comments:
266*3ac0a46fSAndroid Build Coastguard Worker //          All positions are measured in PDF "user space".
267*3ac0a46fSAndroid Build Coastguard Worker //
268*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetCharBox(FPDF_TEXTPAGE text_page,
269*3ac0a46fSAndroid Build Coastguard Worker                                                         int index,
270*3ac0a46fSAndroid Build Coastguard Worker                                                         double* left,
271*3ac0a46fSAndroid Build Coastguard Worker                                                         double* right,
272*3ac0a46fSAndroid Build Coastguard Worker                                                         double* bottom,
273*3ac0a46fSAndroid Build Coastguard Worker                                                         double* top);
274*3ac0a46fSAndroid Build Coastguard Worker 
275*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
276*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetLooseCharBox
277*3ac0a46fSAndroid Build Coastguard Worker //          Get a "loose" bounding box of a particular character, i.e., covering
278*3ac0a46fSAndroid Build Coastguard Worker //          the entire glyph bounds, without taking the actual glyph shape into
279*3ac0a46fSAndroid Build Coastguard Worker //          account.
280*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
281*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
282*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
283*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
284*3ac0a46fSAndroid Build Coastguard Worker //          rect        -   Pointer to a FS_RECTF receiving the character box.
285*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
286*3ac0a46fSAndroid Build Coastguard Worker //          On success, return TRUE and fill in |rect|. If |text_page| is
287*3ac0a46fSAndroid Build Coastguard Worker //          invalid, or if |index| is out of bounds, then return FALSE, and the
288*3ac0a46fSAndroid Build Coastguard Worker //          |rect| out parameter remains unmodified.
289*3ac0a46fSAndroid Build Coastguard Worker // Comments:
290*3ac0a46fSAndroid Build Coastguard Worker //          All positions are measured in PDF "user space".
291*3ac0a46fSAndroid Build Coastguard Worker //
292*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
293*3ac0a46fSAndroid Build Coastguard Worker FPDFText_GetLooseCharBox(FPDF_TEXTPAGE text_page, int index, FS_RECTF* rect);
294*3ac0a46fSAndroid Build Coastguard Worker 
295*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
296*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetMatrix
297*3ac0a46fSAndroid Build Coastguard Worker //          Get the effective transformation matrix for a particular character.
298*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
299*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
300*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage().
301*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
302*3ac0a46fSAndroid Build Coastguard Worker //          matrix      -   Pointer to a FS_MATRIX receiving the transformation
303*3ac0a46fSAndroid Build Coastguard Worker //                          matrix.
304*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
305*3ac0a46fSAndroid Build Coastguard Worker //          On success, return TRUE and fill in |matrix|. If |text_page| is
306*3ac0a46fSAndroid Build Coastguard Worker //          invalid, or if |index| is out of bounds, or if |matrix| is NULL,
307*3ac0a46fSAndroid Build Coastguard Worker //          then return FALSE, and |matrix| remains unmodified.
308*3ac0a46fSAndroid Build Coastguard Worker //
309*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetMatrix(FPDF_TEXTPAGE text_page,
310*3ac0a46fSAndroid Build Coastguard Worker                                                        int index,
311*3ac0a46fSAndroid Build Coastguard Worker                                                        FS_MATRIX* matrix);
312*3ac0a46fSAndroid Build Coastguard Worker 
313*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetCharOrigin
314*3ac0a46fSAndroid Build Coastguard Worker //          Get origin of a particular character.
315*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
316*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
317*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
318*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Zero-based index of the character.
319*3ac0a46fSAndroid Build Coastguard Worker //          x           -   Pointer to a double number receiving x coordinate of
320*3ac0a46fSAndroid Build Coastguard Worker //                          the character origin.
321*3ac0a46fSAndroid Build Coastguard Worker //          y           -   Pointer to a double number receiving y coordinate of
322*3ac0a46fSAndroid Build Coastguard Worker //                          the character origin.
323*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
324*3ac0a46fSAndroid Build Coastguard Worker //          Whether the call succeeded. If false, x and y are unchanged.
325*3ac0a46fSAndroid Build Coastguard Worker // Comments:
326*3ac0a46fSAndroid Build Coastguard Worker //          All positions are measured in PDF "user space".
327*3ac0a46fSAndroid Build Coastguard Worker //
328*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
329*3ac0a46fSAndroid Build Coastguard Worker FPDFText_GetCharOrigin(FPDF_TEXTPAGE text_page,
330*3ac0a46fSAndroid Build Coastguard Worker                        int index,
331*3ac0a46fSAndroid Build Coastguard Worker                        double* x,
332*3ac0a46fSAndroid Build Coastguard Worker                        double* y);
333*3ac0a46fSAndroid Build Coastguard Worker 
334*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetCharIndexAtPos
335*3ac0a46fSAndroid Build Coastguard Worker //          Get the index of a character at or nearby a certain position on the
336*3ac0a46fSAndroid Build Coastguard Worker //          page.
337*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
338*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
339*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
340*3ac0a46fSAndroid Build Coastguard Worker //          x           -   X position in PDF "user space".
341*3ac0a46fSAndroid Build Coastguard Worker //          y           -   Y position in PDF "user space".
342*3ac0a46fSAndroid Build Coastguard Worker //          xTolerance  -   An x-axis tolerance value for character hit
343*3ac0a46fSAndroid Build Coastguard Worker //                          detection, in point units.
344*3ac0a46fSAndroid Build Coastguard Worker //          yTolerance  -   A y-axis tolerance value for character hit
345*3ac0a46fSAndroid Build Coastguard Worker //                          detection, in point units.
346*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
347*3ac0a46fSAndroid Build Coastguard Worker //          The zero-based index of the character at, or nearby the point (x,y).
348*3ac0a46fSAndroid Build Coastguard Worker //          If there is no character at or nearby the point, return value will
349*3ac0a46fSAndroid Build Coastguard Worker //          be -1. If an error occurs, -3 will be returned.
350*3ac0a46fSAndroid Build Coastguard Worker //
351*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
352*3ac0a46fSAndroid Build Coastguard Worker FPDFText_GetCharIndexAtPos(FPDF_TEXTPAGE text_page,
353*3ac0a46fSAndroid Build Coastguard Worker                            double x,
354*3ac0a46fSAndroid Build Coastguard Worker                            double y,
355*3ac0a46fSAndroid Build Coastguard Worker                            double xTolerance,
356*3ac0a46fSAndroid Build Coastguard Worker                            double yTolerance);
357*3ac0a46fSAndroid Build Coastguard Worker 
358*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetText
359*3ac0a46fSAndroid Build Coastguard Worker //          Extract unicode text string from the page.
360*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
361*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
362*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
363*3ac0a46fSAndroid Build Coastguard Worker //          start_index -   Index for the start characters.
364*3ac0a46fSAndroid Build Coastguard Worker //          count       -   Number of characters to be extracted.
365*3ac0a46fSAndroid Build Coastguard Worker //          result      -   A buffer (allocated by application) receiving the
366*3ac0a46fSAndroid Build Coastguard Worker //                          extracted unicodes. The size of the buffer must be
367*3ac0a46fSAndroid Build Coastguard Worker //                          able to hold the number of characters plus a
368*3ac0a46fSAndroid Build Coastguard Worker //                          terminator.
369*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
370*3ac0a46fSAndroid Build Coastguard Worker //          Number of characters written into the result buffer, including the
371*3ac0a46fSAndroid Build Coastguard Worker //          trailing terminator.
372*3ac0a46fSAndroid Build Coastguard Worker // Comments:
373*3ac0a46fSAndroid Build Coastguard Worker //          This function ignores characters without unicode information.
374*3ac0a46fSAndroid Build Coastguard Worker //          It returns all characters on the page, even those that are not
375*3ac0a46fSAndroid Build Coastguard Worker //          visible when the page has a cropbox. To filter out the characters
376*3ac0a46fSAndroid Build Coastguard Worker //          outside of the cropbox, use FPDF_GetPageBoundingBox() and
377*3ac0a46fSAndroid Build Coastguard Worker //          FPDFText_GetCharBox().
378*3ac0a46fSAndroid Build Coastguard Worker //
379*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetText(FPDF_TEXTPAGE text_page,
380*3ac0a46fSAndroid Build Coastguard Worker                                                int start_index,
381*3ac0a46fSAndroid Build Coastguard Worker                                                int count,
382*3ac0a46fSAndroid Build Coastguard Worker                                                unsigned short* result);
383*3ac0a46fSAndroid Build Coastguard Worker 
384*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_CountRects
385*3ac0a46fSAndroid Build Coastguard Worker //          Counts number of rectangular areas occupied by a segment of text,
386*3ac0a46fSAndroid Build Coastguard Worker //          and caches the result for subsequent FPDFText_GetRect() calls.
387*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
388*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
389*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
390*3ac0a46fSAndroid Build Coastguard Worker //          start_index -   Index for the start character.
391*3ac0a46fSAndroid Build Coastguard Worker //          count       -   Number of characters, or -1 for all remaining.
392*3ac0a46fSAndroid Build Coastguard Worker // Return value:
393*3ac0a46fSAndroid Build Coastguard Worker //          Number of rectangles, 0 if text_page is null, or -1 on bad
394*3ac0a46fSAndroid Build Coastguard Worker //          start_index.
395*3ac0a46fSAndroid Build Coastguard Worker // Comments:
396*3ac0a46fSAndroid Build Coastguard Worker //          This function, along with FPDFText_GetRect can be used by
397*3ac0a46fSAndroid Build Coastguard Worker //          applications to detect the position on the page for a text segment,
398*3ac0a46fSAndroid Build Coastguard Worker //          so proper areas can be highlighted. The FPDFText_* functions will
399*3ac0a46fSAndroid Build Coastguard Worker //          automatically merge small character boxes into bigger one if those
400*3ac0a46fSAndroid Build Coastguard Worker //          characters are on the same line and use same font settings.
401*3ac0a46fSAndroid Build Coastguard Worker //
402*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFText_CountRects(FPDF_TEXTPAGE text_page,
403*3ac0a46fSAndroid Build Coastguard Worker                                                   int start_index,
404*3ac0a46fSAndroid Build Coastguard Worker                                                   int count);
405*3ac0a46fSAndroid Build Coastguard Worker 
406*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetRect
407*3ac0a46fSAndroid Build Coastguard Worker //          Get a rectangular area from the result generated by
408*3ac0a46fSAndroid Build Coastguard Worker //          FPDFText_CountRects.
409*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
410*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
411*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
412*3ac0a46fSAndroid Build Coastguard Worker //          rect_index  -   Zero-based index for the rectangle.
413*3ac0a46fSAndroid Build Coastguard Worker //          left        -   Pointer to a double value receiving the rectangle
414*3ac0a46fSAndroid Build Coastguard Worker //                          left boundary.
415*3ac0a46fSAndroid Build Coastguard Worker //          top         -   Pointer to a double value receiving the rectangle
416*3ac0a46fSAndroid Build Coastguard Worker //                          top boundary.
417*3ac0a46fSAndroid Build Coastguard Worker //          right       -   Pointer to a double value receiving the rectangle
418*3ac0a46fSAndroid Build Coastguard Worker //                          right boundary.
419*3ac0a46fSAndroid Build Coastguard Worker //          bottom      -   Pointer to a double value receiving the rectangle
420*3ac0a46fSAndroid Build Coastguard Worker //                          bottom boundary.
421*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
422*3ac0a46fSAndroid Build Coastguard Worker //          On success, return TRUE and fill in |left|, |top|, |right|, and
423*3ac0a46fSAndroid Build Coastguard Worker //          |bottom|. If |text_page| is invalid then return FALSE, and the out
424*3ac0a46fSAndroid Build Coastguard Worker //          parameters remain unmodified. If |text_page| is valid but
425*3ac0a46fSAndroid Build Coastguard Worker //          |rect_index| is out of bounds, then return FALSE and set the out
426*3ac0a46fSAndroid Build Coastguard Worker //          parameters to 0.
427*3ac0a46fSAndroid Build Coastguard Worker //
428*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_GetRect(FPDF_TEXTPAGE text_page,
429*3ac0a46fSAndroid Build Coastguard Worker                                                      int rect_index,
430*3ac0a46fSAndroid Build Coastguard Worker                                                      double* left,
431*3ac0a46fSAndroid Build Coastguard Worker                                                      double* top,
432*3ac0a46fSAndroid Build Coastguard Worker                                                      double* right,
433*3ac0a46fSAndroid Build Coastguard Worker                                                      double* bottom);
434*3ac0a46fSAndroid Build Coastguard Worker 
435*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetBoundedText
436*3ac0a46fSAndroid Build Coastguard Worker //          Extract unicode text within a rectangular boundary on the page.
437*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
438*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
439*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
440*3ac0a46fSAndroid Build Coastguard Worker //          left        -   Left boundary.
441*3ac0a46fSAndroid Build Coastguard Worker //          top         -   Top boundary.
442*3ac0a46fSAndroid Build Coastguard Worker //          right       -   Right boundary.
443*3ac0a46fSAndroid Build Coastguard Worker //          bottom      -   Bottom boundary.
444*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   A unicode buffer.
445*3ac0a46fSAndroid Build Coastguard Worker //          buflen      -   Number of characters (not bytes) for the buffer,
446*3ac0a46fSAndroid Build Coastguard Worker //                          excluding an additional terminator.
447*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
448*3ac0a46fSAndroid Build Coastguard Worker //          If buffer is NULL or buflen is zero, return number of characters
449*3ac0a46fSAndroid Build Coastguard Worker //          (not bytes) of text present within the rectangle, excluding a
450*3ac0a46fSAndroid Build Coastguard Worker //          terminating NUL. Generally you should pass a buffer at least one
451*3ac0a46fSAndroid Build Coastguard Worker //          larger than this if you want a terminating NUL, which will be
452*3ac0a46fSAndroid Build Coastguard Worker //          provided if space is available. Otherwise, return number of
453*3ac0a46fSAndroid Build Coastguard Worker //          characters copied into the buffer, including the terminating NUL
454*3ac0a46fSAndroid Build Coastguard Worker //          when space for it is available.
455*3ac0a46fSAndroid Build Coastguard Worker // Comment:
456*3ac0a46fSAndroid Build Coastguard Worker //          If the buffer is too small, as much text as will fit is copied into
457*3ac0a46fSAndroid Build Coastguard Worker //          it.
458*3ac0a46fSAndroid Build Coastguard Worker //
459*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetBoundedText(FPDF_TEXTPAGE text_page,
460*3ac0a46fSAndroid Build Coastguard Worker                                                       double left,
461*3ac0a46fSAndroid Build Coastguard Worker                                                       double top,
462*3ac0a46fSAndroid Build Coastguard Worker                                                       double right,
463*3ac0a46fSAndroid Build Coastguard Worker                                                       double bottom,
464*3ac0a46fSAndroid Build Coastguard Worker                                                       unsigned short* buffer,
465*3ac0a46fSAndroid Build Coastguard Worker                                                       int buflen);
466*3ac0a46fSAndroid Build Coastguard Worker 
467*3ac0a46fSAndroid Build Coastguard Worker // Flags used by FPDFText_FindStart function.
468*3ac0a46fSAndroid Build Coastguard Worker //
469*3ac0a46fSAndroid Build Coastguard Worker // If not set, it will not match case by default.
470*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_MATCHCASE 0x00000001
471*3ac0a46fSAndroid Build Coastguard Worker // If not set, it will not match the whole word by default.
472*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_MATCHWHOLEWORD 0x00000002
473*3ac0a46fSAndroid Build Coastguard Worker // If not set, it will skip past the current match to look for the next match.
474*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_CONSECUTIVE 0x00000004
475*3ac0a46fSAndroid Build Coastguard Worker 
476*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_FindStart
477*3ac0a46fSAndroid Build Coastguard Worker //          Start a search.
478*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
479*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
480*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
481*3ac0a46fSAndroid Build Coastguard Worker //          findwhat    -   A unicode match pattern.
482*3ac0a46fSAndroid Build Coastguard Worker //          flags       -   Option flags.
483*3ac0a46fSAndroid Build Coastguard Worker //          start_index -   Start from this character. -1 for end of the page.
484*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
485*3ac0a46fSAndroid Build Coastguard Worker //          A handle for the search context. FPDFText_FindClose must be called
486*3ac0a46fSAndroid Build Coastguard Worker //          to release this handle.
487*3ac0a46fSAndroid Build Coastguard Worker //
488*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_SCHHANDLE FPDF_CALLCONV
489*3ac0a46fSAndroid Build Coastguard Worker FPDFText_FindStart(FPDF_TEXTPAGE text_page,
490*3ac0a46fSAndroid Build Coastguard Worker                    FPDF_WIDESTRING findwhat,
491*3ac0a46fSAndroid Build Coastguard Worker                    unsigned long flags,
492*3ac0a46fSAndroid Build Coastguard Worker                    int start_index);
493*3ac0a46fSAndroid Build Coastguard Worker 
494*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_FindNext
495*3ac0a46fSAndroid Build Coastguard Worker //          Search in the direction from page start to end.
496*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
497*3ac0a46fSAndroid Build Coastguard Worker //          handle      -   A search context handle returned by
498*3ac0a46fSAndroid Build Coastguard Worker //                          FPDFText_FindStart.
499*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
500*3ac0a46fSAndroid Build Coastguard Worker //          Whether a match is found.
501*3ac0a46fSAndroid Build Coastguard Worker //
502*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_FindNext(FPDF_SCHHANDLE handle);
503*3ac0a46fSAndroid Build Coastguard Worker 
504*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_FindPrev
505*3ac0a46fSAndroid Build Coastguard Worker //          Search in the direction from page end to start.
506*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
507*3ac0a46fSAndroid Build Coastguard Worker //          handle      -   A search context handle returned by
508*3ac0a46fSAndroid Build Coastguard Worker //                          FPDFText_FindStart.
509*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
510*3ac0a46fSAndroid Build Coastguard Worker //          Whether a match is found.
511*3ac0a46fSAndroid Build Coastguard Worker //
512*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFText_FindPrev(FPDF_SCHHANDLE handle);
513*3ac0a46fSAndroid Build Coastguard Worker 
514*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetSchResultIndex
515*3ac0a46fSAndroid Build Coastguard Worker //          Get the starting character index of the search result.
516*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
517*3ac0a46fSAndroid Build Coastguard Worker //          handle      -   A search context handle returned by
518*3ac0a46fSAndroid Build Coastguard Worker //                          FPDFText_FindStart.
519*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
520*3ac0a46fSAndroid Build Coastguard Worker //          Index for the starting character.
521*3ac0a46fSAndroid Build Coastguard Worker //
522*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetSchResultIndex(FPDF_SCHHANDLE handle);
523*3ac0a46fSAndroid Build Coastguard Worker 
524*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_GetSchCount
525*3ac0a46fSAndroid Build Coastguard Worker //          Get the number of matched characters in the search result.
526*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
527*3ac0a46fSAndroid Build Coastguard Worker //          handle      -   A search context handle returned by
528*3ac0a46fSAndroid Build Coastguard Worker //                          FPDFText_FindStart.
529*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
530*3ac0a46fSAndroid Build Coastguard Worker //          Number of matched characters.
531*3ac0a46fSAndroid Build Coastguard Worker //
532*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFText_GetSchCount(FPDF_SCHHANDLE handle);
533*3ac0a46fSAndroid Build Coastguard Worker 
534*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFText_FindClose
535*3ac0a46fSAndroid Build Coastguard Worker //          Release a search context.
536*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
537*3ac0a46fSAndroid Build Coastguard Worker //          handle      -   A search context handle returned by
538*3ac0a46fSAndroid Build Coastguard Worker //                          FPDFText_FindStart.
539*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
540*3ac0a46fSAndroid Build Coastguard Worker //          None.
541*3ac0a46fSAndroid Build Coastguard Worker //
542*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFText_FindClose(FPDF_SCHHANDLE handle);
543*3ac0a46fSAndroid Build Coastguard Worker 
544*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFLink_LoadWebLinks
545*3ac0a46fSAndroid Build Coastguard Worker //          Prepare information about weblinks in a page.
546*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
547*3ac0a46fSAndroid Build Coastguard Worker //          text_page   -   Handle to a text page information structure.
548*3ac0a46fSAndroid Build Coastguard Worker //                          Returned by FPDFText_LoadPage function.
549*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
550*3ac0a46fSAndroid Build Coastguard Worker //          A handle to the page's links information structure, or
551*3ac0a46fSAndroid Build Coastguard Worker //          NULL if something goes wrong.
552*3ac0a46fSAndroid Build Coastguard Worker // Comments:
553*3ac0a46fSAndroid Build Coastguard Worker //          Weblinks are those links implicitly embedded in PDF pages. PDF also
554*3ac0a46fSAndroid Build Coastguard Worker //          has a type of annotation called "link" (FPDFTEXT doesn't deal with
555*3ac0a46fSAndroid Build Coastguard Worker //          that kind of link). FPDFTEXT weblink feature is useful for
556*3ac0a46fSAndroid Build Coastguard Worker //          automatically detecting links in the page contents. For example,
557*3ac0a46fSAndroid Build Coastguard Worker //          things like "https://www.example.com" will be detected, so
558*3ac0a46fSAndroid Build Coastguard Worker //          applications can allow user to click on those characters to activate
559*3ac0a46fSAndroid Build Coastguard Worker //          the link, even the PDF doesn't come with link annotations.
560*3ac0a46fSAndroid Build Coastguard Worker //
561*3ac0a46fSAndroid Build Coastguard Worker //          FPDFLink_CloseWebLinks must be called to release resources.
562*3ac0a46fSAndroid Build Coastguard Worker //
563*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGELINK FPDF_CALLCONV
564*3ac0a46fSAndroid Build Coastguard Worker FPDFLink_LoadWebLinks(FPDF_TEXTPAGE text_page);
565*3ac0a46fSAndroid Build Coastguard Worker 
566*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFLink_CountWebLinks
567*3ac0a46fSAndroid Build Coastguard Worker //          Count number of detected web links.
568*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
569*3ac0a46fSAndroid Build Coastguard Worker //          link_page   -   Handle returned by FPDFLink_LoadWebLinks.
570*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
571*3ac0a46fSAndroid Build Coastguard Worker //          Number of detected web links.
572*3ac0a46fSAndroid Build Coastguard Worker //
573*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFLink_CountWebLinks(FPDF_PAGELINK link_page);
574*3ac0a46fSAndroid Build Coastguard Worker 
575*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFLink_GetURL
576*3ac0a46fSAndroid Build Coastguard Worker //          Fetch the URL information for a detected web link.
577*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
578*3ac0a46fSAndroid Build Coastguard Worker //          link_page   -   Handle returned by FPDFLink_LoadWebLinks.
579*3ac0a46fSAndroid Build Coastguard Worker //          link_index  -   Zero-based index for the link.
580*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   A unicode buffer for the result.
581*3ac0a46fSAndroid Build Coastguard Worker //          buflen      -   Number of 16-bit code units (not bytes) for the
582*3ac0a46fSAndroid Build Coastguard Worker //                          buffer, including an additional terminator.
583*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
584*3ac0a46fSAndroid Build Coastguard Worker //          If |buffer| is NULL or |buflen| is zero, return the number of 16-bit
585*3ac0a46fSAndroid Build Coastguard Worker //          code units (not bytes) needed to buffer the result (an additional
586*3ac0a46fSAndroid Build Coastguard Worker //          terminator is included in this count).
587*3ac0a46fSAndroid Build Coastguard Worker //          Otherwise, copy the result into |buffer|, truncating at |buflen| if
588*3ac0a46fSAndroid Build Coastguard Worker //          the result is too large to fit, and return the number of 16-bit code
589*3ac0a46fSAndroid Build Coastguard Worker //          units actually copied into the buffer (the additional terminator is
590*3ac0a46fSAndroid Build Coastguard Worker //          also included in this count).
591*3ac0a46fSAndroid Build Coastguard Worker //          If |link_index| does not correspond to a valid link, then the result
592*3ac0a46fSAndroid Build Coastguard Worker //          is an empty string.
593*3ac0a46fSAndroid Build Coastguard Worker //
594*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFLink_GetURL(FPDF_PAGELINK link_page,
595*3ac0a46fSAndroid Build Coastguard Worker                                               int link_index,
596*3ac0a46fSAndroid Build Coastguard Worker                                               unsigned short* buffer,
597*3ac0a46fSAndroid Build Coastguard Worker                                               int buflen);
598*3ac0a46fSAndroid Build Coastguard Worker 
599*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFLink_CountRects
600*3ac0a46fSAndroid Build Coastguard Worker //          Count number of rectangular areas for the link.
601*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
602*3ac0a46fSAndroid Build Coastguard Worker //          link_page   -   Handle returned by FPDFLink_LoadWebLinks.
603*3ac0a46fSAndroid Build Coastguard Worker //          link_index  -   Zero-based index for the link.
604*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
605*3ac0a46fSAndroid Build Coastguard Worker //          Number of rectangular areas for the link.  If |link_index| does
606*3ac0a46fSAndroid Build Coastguard Worker //          not correspond to a valid link, then 0 is returned.
607*3ac0a46fSAndroid Build Coastguard Worker //
608*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFLink_CountRects(FPDF_PAGELINK link_page,
609*3ac0a46fSAndroid Build Coastguard Worker                                                   int link_index);
610*3ac0a46fSAndroid Build Coastguard Worker 
611*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFLink_GetRect
612*3ac0a46fSAndroid Build Coastguard Worker //          Fetch the boundaries of a rectangle for a link.
613*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
614*3ac0a46fSAndroid Build Coastguard Worker //          link_page   -   Handle returned by FPDFLink_LoadWebLinks.
615*3ac0a46fSAndroid Build Coastguard Worker //          link_index  -   Zero-based index for the link.
616*3ac0a46fSAndroid Build Coastguard Worker //          rect_index  -   Zero-based index for a rectangle.
617*3ac0a46fSAndroid Build Coastguard Worker //          left        -   Pointer to a double value receiving the rectangle
618*3ac0a46fSAndroid Build Coastguard Worker //                          left boundary.
619*3ac0a46fSAndroid Build Coastguard Worker //          top         -   Pointer to a double value receiving the rectangle
620*3ac0a46fSAndroid Build Coastguard Worker //                          top boundary.
621*3ac0a46fSAndroid Build Coastguard Worker //          right       -   Pointer to a double value receiving the rectangle
622*3ac0a46fSAndroid Build Coastguard Worker //                          right boundary.
623*3ac0a46fSAndroid Build Coastguard Worker //          bottom      -   Pointer to a double value receiving the rectangle
624*3ac0a46fSAndroid Build Coastguard Worker //                          bottom boundary.
625*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
626*3ac0a46fSAndroid Build Coastguard Worker //          On success, return TRUE and fill in |left|, |top|, |right|, and
627*3ac0a46fSAndroid Build Coastguard Worker //          |bottom|. If |link_page| is invalid or if |link_index| does not
628*3ac0a46fSAndroid Build Coastguard Worker //          correspond to a valid link, then return FALSE, and the out
629*3ac0a46fSAndroid Build Coastguard Worker //          parameters remain unmodified.
630*3ac0a46fSAndroid Build Coastguard Worker //
631*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFLink_GetRect(FPDF_PAGELINK link_page,
632*3ac0a46fSAndroid Build Coastguard Worker                                                      int link_index,
633*3ac0a46fSAndroid Build Coastguard Worker                                                      int rect_index,
634*3ac0a46fSAndroid Build Coastguard Worker                                                      double* left,
635*3ac0a46fSAndroid Build Coastguard Worker                                                      double* top,
636*3ac0a46fSAndroid Build Coastguard Worker                                                      double* right,
637*3ac0a46fSAndroid Build Coastguard Worker                                                      double* bottom);
638*3ac0a46fSAndroid Build Coastguard Worker 
639*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
640*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFLink_GetTextRange
641*3ac0a46fSAndroid Build Coastguard Worker //          Fetch the start char index and char count for a link.
642*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
643*3ac0a46fSAndroid Build Coastguard Worker //          link_page         -   Handle returned by FPDFLink_LoadWebLinks.
644*3ac0a46fSAndroid Build Coastguard Worker //          link_index        -   Zero-based index for the link.
645*3ac0a46fSAndroid Build Coastguard Worker //          start_char_index  -   pointer to int receiving the start char index
646*3ac0a46fSAndroid Build Coastguard Worker //          char_count        -   pointer to int receiving the char count
647*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
648*3ac0a46fSAndroid Build Coastguard Worker //          On success, return TRUE and fill in |start_char_index| and
649*3ac0a46fSAndroid Build Coastguard Worker //          |char_count|. if |link_page| is invalid or if |link_index| does
650*3ac0a46fSAndroid Build Coastguard Worker //          not correspond to a valid link, then return FALSE and the out
651*3ac0a46fSAndroid Build Coastguard Worker //          parameters remain unmodified.
652*3ac0a46fSAndroid Build Coastguard Worker //
653*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
654*3ac0a46fSAndroid Build Coastguard Worker FPDFLink_GetTextRange(FPDF_PAGELINK link_page,
655*3ac0a46fSAndroid Build Coastguard Worker                       int link_index,
656*3ac0a46fSAndroid Build Coastguard Worker                       int* start_char_index,
657*3ac0a46fSAndroid Build Coastguard Worker                       int* char_count);
658*3ac0a46fSAndroid Build Coastguard Worker 
659*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFLink_CloseWebLinks
660*3ac0a46fSAndroid Build Coastguard Worker //          Release resources used by weblink feature.
661*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
662*3ac0a46fSAndroid Build Coastguard Worker //          link_page   -   Handle returned by FPDFLink_LoadWebLinks.
663*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
664*3ac0a46fSAndroid Build Coastguard Worker //          None.
665*3ac0a46fSAndroid Build Coastguard Worker //
666*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFLink_CloseWebLinks(FPDF_PAGELINK link_page);
667*3ac0a46fSAndroid Build Coastguard Worker 
668*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus
669*3ac0a46fSAndroid Build Coastguard Worker }
670*3ac0a46fSAndroid Build Coastguard Worker #endif
671*3ac0a46fSAndroid Build Coastguard Worker 
672*3ac0a46fSAndroid Build Coastguard Worker #endif  // PUBLIC_FPDF_TEXT_H_
673