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