xref: /aosp_15_r20/external/pdfium/public/fpdf_edit.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_EDIT_H_
8*3ac0a46fSAndroid Build Coastguard Worker #define PUBLIC_FPDF_EDIT_H_
9*3ac0a46fSAndroid Build Coastguard Worker 
10*3ac0a46fSAndroid Build Coastguard Worker #include <stdint.h>
11*3ac0a46fSAndroid Build Coastguard Worker 
12*3ac0a46fSAndroid Build Coastguard Worker // NOLINTNEXTLINE(build/include)
13*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfview.h"
14*3ac0a46fSAndroid Build Coastguard Worker 
15*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ARGB(a, r, g, b)                                      \
16*3ac0a46fSAndroid Build Coastguard Worker   ((uint32_t)(((uint32_t)(b)&0xff) | (((uint32_t)(g)&0xff) << 8) | \
17*3ac0a46fSAndroid Build Coastguard Worker               (((uint32_t)(r)&0xff) << 16) | (((uint32_t)(a)&0xff) << 24)))
18*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_GetBValue(argb) ((uint8_t)(argb))
19*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_GetGValue(argb) ((uint8_t)(((uint16_t)(argb)) >> 8))
20*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_GetRValue(argb) ((uint8_t)((argb) >> 16))
21*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_GetAValue(argb) ((uint8_t)((argb) >> 24))
22*3ac0a46fSAndroid Build Coastguard Worker 
23*3ac0a46fSAndroid Build Coastguard Worker // Refer to PDF Reference version 1.7 table 4.12 for all color space families.
24*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_UNKNOWN 0
25*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_DEVICEGRAY 1
26*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_DEVICERGB 2
27*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_DEVICECMYK 3
28*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_CALGRAY 4
29*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_CALRGB 5
30*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_LAB 6
31*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_ICCBASED 7
32*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_SEPARATION 8
33*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_DEVICEN 9
34*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_INDEXED 10
35*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_COLORSPACE_PATTERN 11
36*3ac0a46fSAndroid Build Coastguard Worker 
37*3ac0a46fSAndroid Build Coastguard Worker // The page object constants.
38*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PAGEOBJ_UNKNOWN 0
39*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PAGEOBJ_TEXT 1
40*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PAGEOBJ_PATH 2
41*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PAGEOBJ_IMAGE 3
42*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PAGEOBJ_SHADING 4
43*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PAGEOBJ_FORM 5
44*3ac0a46fSAndroid Build Coastguard Worker 
45*3ac0a46fSAndroid Build Coastguard Worker // The path segment constants.
46*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_SEGMENT_UNKNOWN -1
47*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_SEGMENT_LINETO 0
48*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_SEGMENT_BEZIERTO 1
49*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_SEGMENT_MOVETO 2
50*3ac0a46fSAndroid Build Coastguard Worker 
51*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_FILLMODE_NONE 0
52*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_FILLMODE_ALTERNATE 1
53*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_FILLMODE_WINDING 2
54*3ac0a46fSAndroid Build Coastguard Worker 
55*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_FONT_TYPE1 1
56*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_FONT_TRUETYPE 2
57*3ac0a46fSAndroid Build Coastguard Worker 
58*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_LINECAP_BUTT 0
59*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_LINECAP_ROUND 1
60*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_LINECAP_PROJECTING_SQUARE 2
61*3ac0a46fSAndroid Build Coastguard Worker 
62*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_LINEJOIN_MITER 0
63*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_LINEJOIN_ROUND 1
64*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_LINEJOIN_BEVEL 2
65*3ac0a46fSAndroid Build Coastguard Worker 
66*3ac0a46fSAndroid Build Coastguard Worker // See FPDF_SetPrintMode() for descriptions.
67*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_EMF 0
68*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_TEXTONLY 1
69*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_POSTSCRIPT2 2
70*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_POSTSCRIPT3 3
71*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_POSTSCRIPT2_PASSTHROUGH 4
72*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_POSTSCRIPT3_PASSTHROUGH 5
73*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_EMF_IMAGE_MASKS 6
74*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_POSTSCRIPT3_TYPE42 7
75*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTMODE_POSTSCRIPT3_TYPE42_PASSTHROUGH 8
76*3ac0a46fSAndroid Build Coastguard Worker 
77*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_IMAGEOBJ_METADATA {
78*3ac0a46fSAndroid Build Coastguard Worker   // The image width in pixels.
79*3ac0a46fSAndroid Build Coastguard Worker   unsigned int width;
80*3ac0a46fSAndroid Build Coastguard Worker   // The image height in pixels.
81*3ac0a46fSAndroid Build Coastguard Worker   unsigned int height;
82*3ac0a46fSAndroid Build Coastguard Worker   // The image's horizontal pixel-per-inch.
83*3ac0a46fSAndroid Build Coastguard Worker   float horizontal_dpi;
84*3ac0a46fSAndroid Build Coastguard Worker   // The image's vertical pixel-per-inch.
85*3ac0a46fSAndroid Build Coastguard Worker   float vertical_dpi;
86*3ac0a46fSAndroid Build Coastguard Worker   // The number of bits used to represent each pixel.
87*3ac0a46fSAndroid Build Coastguard Worker   unsigned int bits_per_pixel;
88*3ac0a46fSAndroid Build Coastguard Worker   // The image's colorspace. See above for the list of FPDF_COLORSPACE_*.
89*3ac0a46fSAndroid Build Coastguard Worker   int colorspace;
90*3ac0a46fSAndroid Build Coastguard Worker   // The image's marked content ID. Useful for pairing with associated alt-text.
91*3ac0a46fSAndroid Build Coastguard Worker   // A value of -1 indicates no ID.
92*3ac0a46fSAndroid Build Coastguard Worker   int marked_content_id;
93*3ac0a46fSAndroid Build Coastguard Worker } FPDF_IMAGEOBJ_METADATA;
94*3ac0a46fSAndroid Build Coastguard Worker 
95*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus
96*3ac0a46fSAndroid Build Coastguard Worker extern "C" {
97*3ac0a46fSAndroid Build Coastguard Worker #endif  // __cplusplus
98*3ac0a46fSAndroid Build Coastguard Worker 
99*3ac0a46fSAndroid Build Coastguard Worker // Create a new PDF document.
100*3ac0a46fSAndroid Build Coastguard Worker //
101*3ac0a46fSAndroid Build Coastguard Worker // Returns a handle to a new document, or NULL on failure.
102*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV FPDF_CreateNewDocument();
103*3ac0a46fSAndroid Build Coastguard Worker 
104*3ac0a46fSAndroid Build Coastguard Worker // Create a new PDF page.
105*3ac0a46fSAndroid Build Coastguard Worker //
106*3ac0a46fSAndroid Build Coastguard Worker //   document   - handle to document.
107*3ac0a46fSAndroid Build Coastguard Worker //   page_index - suggested 0-based index of the page to create. If it is larger
108*3ac0a46fSAndroid Build Coastguard Worker //                than document's current last index(L), the created page index
109*3ac0a46fSAndroid Build Coastguard Worker //                is the next available index -- L+1.
110*3ac0a46fSAndroid Build Coastguard Worker //   width      - the page width in points.
111*3ac0a46fSAndroid Build Coastguard Worker //   height     - the page height in points.
112*3ac0a46fSAndroid Build Coastguard Worker //
113*3ac0a46fSAndroid Build Coastguard Worker // Returns the handle to the new page or NULL on failure.
114*3ac0a46fSAndroid Build Coastguard Worker //
115*3ac0a46fSAndroid Build Coastguard Worker // The page should be closed with FPDF_ClosePage() when finished as
116*3ac0a46fSAndroid Build Coastguard Worker // with any other page in the document.
117*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDFPage_New(FPDF_DOCUMENT document,
118*3ac0a46fSAndroid Build Coastguard Worker                                                  int page_index,
119*3ac0a46fSAndroid Build Coastguard Worker                                                  double width,
120*3ac0a46fSAndroid Build Coastguard Worker                                                  double height);
121*3ac0a46fSAndroid Build Coastguard Worker 
122*3ac0a46fSAndroid Build Coastguard Worker // Delete the page at |page_index|.
123*3ac0a46fSAndroid Build Coastguard Worker //
124*3ac0a46fSAndroid Build Coastguard Worker //   document   - handle to document.
125*3ac0a46fSAndroid Build Coastguard Worker //   page_index - the index of the page to delete.
126*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFPage_Delete(FPDF_DOCUMENT document,
127*3ac0a46fSAndroid Build Coastguard Worker                                                int page_index);
128*3ac0a46fSAndroid Build Coastguard Worker 
129*3ac0a46fSAndroid Build Coastguard Worker // Get the rotation of |page|.
130*3ac0a46fSAndroid Build Coastguard Worker //
131*3ac0a46fSAndroid Build Coastguard Worker //   page - handle to a page
132*3ac0a46fSAndroid Build Coastguard Worker //
133*3ac0a46fSAndroid Build Coastguard Worker // Returns one of the following indicating the page rotation:
134*3ac0a46fSAndroid Build Coastguard Worker //   0 - No rotation.
135*3ac0a46fSAndroid Build Coastguard Worker //   1 - Rotated 90 degrees clockwise.
136*3ac0a46fSAndroid Build Coastguard Worker //   2 - Rotated 180 degrees clockwise.
137*3ac0a46fSAndroid Build Coastguard Worker //   3 - Rotated 270 degrees clockwise.
138*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFPage_GetRotation(FPDF_PAGE page);
139*3ac0a46fSAndroid Build Coastguard Worker 
140*3ac0a46fSAndroid Build Coastguard Worker // Set rotation for |page|.
141*3ac0a46fSAndroid Build Coastguard Worker //
142*3ac0a46fSAndroid Build Coastguard Worker //   page   - handle to a page.
143*3ac0a46fSAndroid Build Coastguard Worker //   rotate - the rotation value, one of:
144*3ac0a46fSAndroid Build Coastguard Worker //              0 - No rotation.
145*3ac0a46fSAndroid Build Coastguard Worker //              1 - Rotated 90 degrees clockwise.
146*3ac0a46fSAndroid Build Coastguard Worker //              2 - Rotated 180 degrees clockwise.
147*3ac0a46fSAndroid Build Coastguard Worker //              3 - Rotated 270 degrees clockwise.
148*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFPage_SetRotation(FPDF_PAGE page, int rotate);
149*3ac0a46fSAndroid Build Coastguard Worker 
150*3ac0a46fSAndroid Build Coastguard Worker // Insert |page_obj| into |page|.
151*3ac0a46fSAndroid Build Coastguard Worker //
152*3ac0a46fSAndroid Build Coastguard Worker //   page     - handle to a page
153*3ac0a46fSAndroid Build Coastguard Worker //   page_obj - handle to a page object. The |page_obj| will be automatically
154*3ac0a46fSAndroid Build Coastguard Worker //              freed.
155*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFPage_InsertObject(FPDF_PAGE page,
156*3ac0a46fSAndroid Build Coastguard Worker                                                      FPDF_PAGEOBJECT page_obj);
157*3ac0a46fSAndroid Build Coastguard Worker 
158*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
159*3ac0a46fSAndroid Build Coastguard Worker // Remove |page_obj| from |page|.
160*3ac0a46fSAndroid Build Coastguard Worker //
161*3ac0a46fSAndroid Build Coastguard Worker //   page     - handle to a page
162*3ac0a46fSAndroid Build Coastguard Worker //   page_obj - handle to a page object to be removed.
163*3ac0a46fSAndroid Build Coastguard Worker //
164*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
165*3ac0a46fSAndroid Build Coastguard Worker //
166*3ac0a46fSAndroid Build Coastguard Worker // Ownership is transferred to the caller. Call FPDFPageObj_Destroy() to free
167*3ac0a46fSAndroid Build Coastguard Worker // it.
168*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
169*3ac0a46fSAndroid Build Coastguard Worker FPDFPage_RemoveObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_obj);
170*3ac0a46fSAndroid Build Coastguard Worker 
171*3ac0a46fSAndroid Build Coastguard Worker // Get number of page objects inside |page|.
172*3ac0a46fSAndroid Build Coastguard Worker //
173*3ac0a46fSAndroid Build Coastguard Worker //   page - handle to a page.
174*3ac0a46fSAndroid Build Coastguard Worker //
175*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of objects in |page|.
176*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObjects(FPDF_PAGE page);
177*3ac0a46fSAndroid Build Coastguard Worker 
178*3ac0a46fSAndroid Build Coastguard Worker // Get object in |page| at |index|.
179*3ac0a46fSAndroid Build Coastguard Worker //
180*3ac0a46fSAndroid Build Coastguard Worker //   page  - handle to a page.
181*3ac0a46fSAndroid Build Coastguard Worker //   index - the index of a page object.
182*3ac0a46fSAndroid Build Coastguard Worker //
183*3ac0a46fSAndroid Build Coastguard Worker // Returns the handle to the page object, or NULL on failed.
184*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPage_GetObject(FPDF_PAGE page,
185*3ac0a46fSAndroid Build Coastguard Worker                                                              int index);
186*3ac0a46fSAndroid Build Coastguard Worker 
187*3ac0a46fSAndroid Build Coastguard Worker // Checks if |page| contains transparency.
188*3ac0a46fSAndroid Build Coastguard Worker //
189*3ac0a46fSAndroid Build Coastguard Worker //   page - handle to a page.
190*3ac0a46fSAndroid Build Coastguard Worker //
191*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if |page| contains transparency.
192*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_HasTransparency(FPDF_PAGE page);
193*3ac0a46fSAndroid Build Coastguard Worker 
194*3ac0a46fSAndroid Build Coastguard Worker // Generate the content of |page|.
195*3ac0a46fSAndroid Build Coastguard Worker //
196*3ac0a46fSAndroid Build Coastguard Worker //   page - handle to a page.
197*3ac0a46fSAndroid Build Coastguard Worker //
198*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
199*3ac0a46fSAndroid Build Coastguard Worker //
200*3ac0a46fSAndroid Build Coastguard Worker // Before you save the page to a file, or reload the page, you must call
201*3ac0a46fSAndroid Build Coastguard Worker // |FPDFPage_GenerateContent| or any changes to |page| will be lost.
202*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_GenerateContent(FPDF_PAGE page);
203*3ac0a46fSAndroid Build Coastguard Worker 
204*3ac0a46fSAndroid Build Coastguard Worker // Destroy |page_obj| by releasing its resources. |page_obj| must have been
205*3ac0a46fSAndroid Build Coastguard Worker // created by FPDFPageObj_CreateNew{Path|Rect}() or
206*3ac0a46fSAndroid Build Coastguard Worker // FPDFPageObj_New{Text|Image}Obj(). This function must be called on
207*3ac0a46fSAndroid Build Coastguard Worker // newly-created objects if they are not added to a page through
208*3ac0a46fSAndroid Build Coastguard Worker // FPDFPage_InsertObject() or to an annotation through FPDFAnnot_AppendObject().
209*3ac0a46fSAndroid Build Coastguard Worker //
210*3ac0a46fSAndroid Build Coastguard Worker //   page_obj - handle to a page object.
211*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFPageObj_Destroy(FPDF_PAGEOBJECT page_obj);
212*3ac0a46fSAndroid Build Coastguard Worker 
213*3ac0a46fSAndroid Build Coastguard Worker // Checks if |page_object| contains transparency.
214*3ac0a46fSAndroid Build Coastguard Worker //
215*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
216*3ac0a46fSAndroid Build Coastguard Worker //
217*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if |page_object| contains transparency.
218*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
219*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT page_object);
220*3ac0a46fSAndroid Build Coastguard Worker 
221*3ac0a46fSAndroid Build Coastguard Worker // Get type of |page_object|.
222*3ac0a46fSAndroid Build Coastguard Worker //
223*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
224*3ac0a46fSAndroid Build Coastguard Worker //
225*3ac0a46fSAndroid Build Coastguard Worker // Returns one of the FPDF_PAGEOBJ_* values on success, FPDF_PAGEOBJ_UNKNOWN on
226*3ac0a46fSAndroid Build Coastguard Worker // error.
227*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetType(FPDF_PAGEOBJECT page_object);
228*3ac0a46fSAndroid Build Coastguard Worker 
229*3ac0a46fSAndroid Build Coastguard Worker // Transform |page_object| by the given matrix.
230*3ac0a46fSAndroid Build Coastguard Worker //
231*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
232*3ac0a46fSAndroid Build Coastguard Worker //   a           - matrix value.
233*3ac0a46fSAndroid Build Coastguard Worker //   b           - matrix value.
234*3ac0a46fSAndroid Build Coastguard Worker //   c           - matrix value.
235*3ac0a46fSAndroid Build Coastguard Worker //   d           - matrix value.
236*3ac0a46fSAndroid Build Coastguard Worker //   e           - matrix value.
237*3ac0a46fSAndroid Build Coastguard Worker //   f           - matrix value.
238*3ac0a46fSAndroid Build Coastguard Worker //
239*3ac0a46fSAndroid Build Coastguard Worker // The matrix is composed as:
240*3ac0a46fSAndroid Build Coastguard Worker //   |a c e|
241*3ac0a46fSAndroid Build Coastguard Worker //   |b d f|
242*3ac0a46fSAndroid Build Coastguard Worker // and can be used to scale, rotate, shear and translate the |page_object|.
243*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV
244*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object,
245*3ac0a46fSAndroid Build Coastguard Worker                       double a,
246*3ac0a46fSAndroid Build Coastguard Worker                       double b,
247*3ac0a46fSAndroid Build Coastguard Worker                       double c,
248*3ac0a46fSAndroid Build Coastguard Worker                       double d,
249*3ac0a46fSAndroid Build Coastguard Worker                       double e,
250*3ac0a46fSAndroid Build Coastguard Worker                       double f);
251*3ac0a46fSAndroid Build Coastguard Worker 
252*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
253*3ac0a46fSAndroid Build Coastguard Worker // Get the transform matrix of a page object.
254*3ac0a46fSAndroid Build Coastguard Worker //
255*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
256*3ac0a46fSAndroid Build Coastguard Worker //   matrix      - pointer to struct to receive the matrix value.
257*3ac0a46fSAndroid Build Coastguard Worker //
258*3ac0a46fSAndroid Build Coastguard Worker // The matrix is composed as:
259*3ac0a46fSAndroid Build Coastguard Worker //   |a c e|
260*3ac0a46fSAndroid Build Coastguard Worker //   |b d f|
261*3ac0a46fSAndroid Build Coastguard Worker // and used to scale, rotate, shear and translate the page object.
262*3ac0a46fSAndroid Build Coastguard Worker //
263*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
264*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
265*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetMatrix(FPDF_PAGEOBJECT page_object, FS_MATRIX* matrix);
266*3ac0a46fSAndroid Build Coastguard Worker 
267*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
268*3ac0a46fSAndroid Build Coastguard Worker // Set the transform matrix of a page object.
269*3ac0a46fSAndroid Build Coastguard Worker //
270*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
271*3ac0a46fSAndroid Build Coastguard Worker //   matrix      - pointer to struct with the matrix value.
272*3ac0a46fSAndroid Build Coastguard Worker //
273*3ac0a46fSAndroid Build Coastguard Worker // The matrix is composed as:
274*3ac0a46fSAndroid Build Coastguard Worker //   |a c e|
275*3ac0a46fSAndroid Build Coastguard Worker //   |b d f|
276*3ac0a46fSAndroid Build Coastguard Worker // and can be used to scale, rotate, shear and translate the page object.
277*3ac0a46fSAndroid Build Coastguard Worker //
278*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
279*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
280*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetMatrix(FPDF_PAGEOBJECT path, const FS_MATRIX* matrix);
281*3ac0a46fSAndroid Build Coastguard Worker 
282*3ac0a46fSAndroid Build Coastguard Worker // Transform all annotations in |page|.
283*3ac0a46fSAndroid Build Coastguard Worker //
284*3ac0a46fSAndroid Build Coastguard Worker //   page - handle to a page.
285*3ac0a46fSAndroid Build Coastguard Worker //   a    - matrix value.
286*3ac0a46fSAndroid Build Coastguard Worker //   b    - matrix value.
287*3ac0a46fSAndroid Build Coastguard Worker //   c    - matrix value.
288*3ac0a46fSAndroid Build Coastguard Worker //   d    - matrix value.
289*3ac0a46fSAndroid Build Coastguard Worker //   e    - matrix value.
290*3ac0a46fSAndroid Build Coastguard Worker //   f    - matrix value.
291*3ac0a46fSAndroid Build Coastguard Worker //
292*3ac0a46fSAndroid Build Coastguard Worker // The matrix is composed as:
293*3ac0a46fSAndroid Build Coastguard Worker //   |a c e|
294*3ac0a46fSAndroid Build Coastguard Worker //   |b d f|
295*3ac0a46fSAndroid Build Coastguard Worker // and can be used to scale, rotate, shear and translate the |page| annotations.
296*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFPage_TransformAnnots(FPDF_PAGE page,
297*3ac0a46fSAndroid Build Coastguard Worker                                                         double a,
298*3ac0a46fSAndroid Build Coastguard Worker                                                         double b,
299*3ac0a46fSAndroid Build Coastguard Worker                                                         double c,
300*3ac0a46fSAndroid Build Coastguard Worker                                                         double d,
301*3ac0a46fSAndroid Build Coastguard Worker                                                         double e,
302*3ac0a46fSAndroid Build Coastguard Worker                                                         double f);
303*3ac0a46fSAndroid Build Coastguard Worker 
304*3ac0a46fSAndroid Build Coastguard Worker // Create a new image object.
305*3ac0a46fSAndroid Build Coastguard Worker //
306*3ac0a46fSAndroid Build Coastguard Worker //   document - handle to a document.
307*3ac0a46fSAndroid Build Coastguard Worker //
308*3ac0a46fSAndroid Build Coastguard Worker // Returns a handle to a new image object.
309*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV
310*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_NewImageObj(FPDF_DOCUMENT document);
311*3ac0a46fSAndroid Build Coastguard Worker 
312*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
313*3ac0a46fSAndroid Build Coastguard Worker // Get number of content marks in |page_object|.
314*3ac0a46fSAndroid Build Coastguard Worker //
315*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
316*3ac0a46fSAndroid Build Coastguard Worker //
317*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of content marks in |page_object|, or -1 in case of
318*3ac0a46fSAndroid Build Coastguard Worker // failure.
319*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
320*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_CountMarks(FPDF_PAGEOBJECT page_object);
321*3ac0a46fSAndroid Build Coastguard Worker 
322*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
323*3ac0a46fSAndroid Build Coastguard Worker // Get content mark in |page_object| at |index|.
324*3ac0a46fSAndroid Build Coastguard Worker //
325*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
326*3ac0a46fSAndroid Build Coastguard Worker //   index       - the index of a page object.
327*3ac0a46fSAndroid Build Coastguard Worker //
328*3ac0a46fSAndroid Build Coastguard Worker // Returns the handle to the content mark, or NULL on failure. The handle is
329*3ac0a46fSAndroid Build Coastguard Worker // still owned by the library, and it should not be freed directly. It becomes
330*3ac0a46fSAndroid Build Coastguard Worker // invalid if the page object is destroyed, either directly or indirectly by
331*3ac0a46fSAndroid Build Coastguard Worker // unloading the page.
332*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECTMARK FPDF_CALLCONV
333*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetMark(FPDF_PAGEOBJECT page_object, unsigned long index);
334*3ac0a46fSAndroid Build Coastguard Worker 
335*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
336*3ac0a46fSAndroid Build Coastguard Worker // Add a new content mark to a |page_object|.
337*3ac0a46fSAndroid Build Coastguard Worker //
338*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
339*3ac0a46fSAndroid Build Coastguard Worker //   name        - the name (tag) of the mark.
340*3ac0a46fSAndroid Build Coastguard Worker //
341*3ac0a46fSAndroid Build Coastguard Worker // Returns the handle to the content mark, or NULL on failure. The handle is
342*3ac0a46fSAndroid Build Coastguard Worker // still owned by the library, and it should not be freed directly. It becomes
343*3ac0a46fSAndroid Build Coastguard Worker // invalid if the page object is destroyed, either directly or indirectly by
344*3ac0a46fSAndroid Build Coastguard Worker // unloading the page.
345*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECTMARK FPDF_CALLCONV
346*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_AddMark(FPDF_PAGEOBJECT page_object, FPDF_BYTESTRING name);
347*3ac0a46fSAndroid Build Coastguard Worker 
348*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
349*3ac0a46fSAndroid Build Coastguard Worker // Removes a content |mark| from a |page_object|.
350*3ac0a46fSAndroid Build Coastguard Worker // The mark handle will be invalid after the removal.
351*3ac0a46fSAndroid Build Coastguard Worker //
352*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to a page object.
353*3ac0a46fSAndroid Build Coastguard Worker //   mark        - handle to a content mark in that object to remove.
354*3ac0a46fSAndroid Build Coastguard Worker //
355*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the operation succeeded, FALSE if it failed.
356*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
357*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_RemoveMark(FPDF_PAGEOBJECT page_object, FPDF_PAGEOBJECTMARK mark);
358*3ac0a46fSAndroid Build Coastguard Worker 
359*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
360*3ac0a46fSAndroid Build Coastguard Worker // Get the name of a content mark.
361*3ac0a46fSAndroid Build Coastguard Worker //
362*3ac0a46fSAndroid Build Coastguard Worker //   mark       - handle to a content mark.
363*3ac0a46fSAndroid Build Coastguard Worker //   buffer     - buffer for holding the returned name in UTF-16LE. This is only
364*3ac0a46fSAndroid Build Coastguard Worker //                modified if |buflen| is longer than the length of the name.
365*3ac0a46fSAndroid Build Coastguard Worker //                Optional, pass null to just retrieve the size of the buffer
366*3ac0a46fSAndroid Build Coastguard Worker //                needed.
367*3ac0a46fSAndroid Build Coastguard Worker //   buflen     - length of the buffer.
368*3ac0a46fSAndroid Build Coastguard Worker //   out_buflen - pointer to variable that will receive the minimum buffer size
369*3ac0a46fSAndroid Build Coastguard Worker //                to contain the name. Not filled if FALSE is returned.
370*3ac0a46fSAndroid Build Coastguard Worker //
371*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the operation succeeded, FALSE if it failed.
372*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
373*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_GetName(FPDF_PAGEOBJECTMARK mark,
374*3ac0a46fSAndroid Build Coastguard Worker                         void* buffer,
375*3ac0a46fSAndroid Build Coastguard Worker                         unsigned long buflen,
376*3ac0a46fSAndroid Build Coastguard Worker                         unsigned long* out_buflen);
377*3ac0a46fSAndroid Build Coastguard Worker 
378*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
379*3ac0a46fSAndroid Build Coastguard Worker // Get the number of key/value pair parameters in |mark|.
380*3ac0a46fSAndroid Build Coastguard Worker //
381*3ac0a46fSAndroid Build Coastguard Worker //   mark   - handle to a content mark.
382*3ac0a46fSAndroid Build Coastguard Worker //
383*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of key/value pair parameters |mark|, or -1 in case of
384*3ac0a46fSAndroid Build Coastguard Worker // failure.
385*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
386*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_CountParams(FPDF_PAGEOBJECTMARK mark);
387*3ac0a46fSAndroid Build Coastguard Worker 
388*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
389*3ac0a46fSAndroid Build Coastguard Worker // Get the key of a property in a content mark.
390*3ac0a46fSAndroid Build Coastguard Worker //
391*3ac0a46fSAndroid Build Coastguard Worker //   mark       - handle to a content mark.
392*3ac0a46fSAndroid Build Coastguard Worker //   index      - index of the property.
393*3ac0a46fSAndroid Build Coastguard Worker //   buffer     - buffer for holding the returned key in UTF-16LE. This is only
394*3ac0a46fSAndroid Build Coastguard Worker //                modified if |buflen| is longer than the length of the key.
395*3ac0a46fSAndroid Build Coastguard Worker //                Optional, pass null to just retrieve the size of the buffer
396*3ac0a46fSAndroid Build Coastguard Worker //                needed.
397*3ac0a46fSAndroid Build Coastguard Worker //   buflen     - length of the buffer.
398*3ac0a46fSAndroid Build Coastguard Worker //   out_buflen - pointer to variable that will receive the minimum buffer size
399*3ac0a46fSAndroid Build Coastguard Worker //                to contain the key. Not filled if FALSE is returned.
400*3ac0a46fSAndroid Build Coastguard Worker //
401*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the operation was successful, FALSE otherwise.
402*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
403*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_GetParamKey(FPDF_PAGEOBJECTMARK mark,
404*3ac0a46fSAndroid Build Coastguard Worker                             unsigned long index,
405*3ac0a46fSAndroid Build Coastguard Worker                             void* buffer,
406*3ac0a46fSAndroid Build Coastguard Worker                             unsigned long buflen,
407*3ac0a46fSAndroid Build Coastguard Worker                             unsigned long* out_buflen);
408*3ac0a46fSAndroid Build Coastguard Worker 
409*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
410*3ac0a46fSAndroid Build Coastguard Worker // Get the type of the value of a property in a content mark by key.
411*3ac0a46fSAndroid Build Coastguard Worker //
412*3ac0a46fSAndroid Build Coastguard Worker //   mark   - handle to a content mark.
413*3ac0a46fSAndroid Build Coastguard Worker //   key    - string key of the property.
414*3ac0a46fSAndroid Build Coastguard Worker //
415*3ac0a46fSAndroid Build Coastguard Worker // Returns the type of the value, or FPDF_OBJECT_UNKNOWN in case of failure.
416*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_OBJECT_TYPE FPDF_CALLCONV
417*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_GetParamValueType(FPDF_PAGEOBJECTMARK mark,
418*3ac0a46fSAndroid Build Coastguard Worker                                   FPDF_BYTESTRING key);
419*3ac0a46fSAndroid Build Coastguard Worker 
420*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
421*3ac0a46fSAndroid Build Coastguard Worker // Get the value of a number property in a content mark by key as int.
422*3ac0a46fSAndroid Build Coastguard Worker // FPDFPageObjMark_GetParamValueType() should have returned FPDF_OBJECT_NUMBER
423*3ac0a46fSAndroid Build Coastguard Worker // for this property.
424*3ac0a46fSAndroid Build Coastguard Worker //
425*3ac0a46fSAndroid Build Coastguard Worker //   mark      - handle to a content mark.
426*3ac0a46fSAndroid Build Coastguard Worker //   key       - string key of the property.
427*3ac0a46fSAndroid Build Coastguard Worker //   out_value - pointer to variable that will receive the value. Not filled if
428*3ac0a46fSAndroid Build Coastguard Worker //               false is returned.
429*3ac0a46fSAndroid Build Coastguard Worker //
430*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the key maps to a number value, FALSE otherwise.
431*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
432*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_GetParamIntValue(FPDF_PAGEOBJECTMARK mark,
433*3ac0a46fSAndroid Build Coastguard Worker                                  FPDF_BYTESTRING key,
434*3ac0a46fSAndroid Build Coastguard Worker                                  int* out_value);
435*3ac0a46fSAndroid Build Coastguard Worker 
436*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
437*3ac0a46fSAndroid Build Coastguard Worker // Get the value of a string property in a content mark by key.
438*3ac0a46fSAndroid Build Coastguard Worker //
439*3ac0a46fSAndroid Build Coastguard Worker //   mark       - handle to a content mark.
440*3ac0a46fSAndroid Build Coastguard Worker //   key        - string key of the property.
441*3ac0a46fSAndroid Build Coastguard Worker //   buffer     - buffer for holding the returned value in UTF-16LE. This is
442*3ac0a46fSAndroid Build Coastguard Worker //                only modified if |buflen| is longer than the length of the
443*3ac0a46fSAndroid Build Coastguard Worker //                value.
444*3ac0a46fSAndroid Build Coastguard Worker //                Optional, pass null to just retrieve the size of the buffer
445*3ac0a46fSAndroid Build Coastguard Worker //                needed.
446*3ac0a46fSAndroid Build Coastguard Worker //   buflen     - length of the buffer.
447*3ac0a46fSAndroid Build Coastguard Worker //   out_buflen - pointer to variable that will receive the minimum buffer size
448*3ac0a46fSAndroid Build Coastguard Worker //                to contain the value. Not filled if FALSE is returned.
449*3ac0a46fSAndroid Build Coastguard Worker //
450*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the key maps to a string/blob value, FALSE otherwise.
451*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
452*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_GetParamStringValue(FPDF_PAGEOBJECTMARK mark,
453*3ac0a46fSAndroid Build Coastguard Worker                                     FPDF_BYTESTRING key,
454*3ac0a46fSAndroid Build Coastguard Worker                                     void* buffer,
455*3ac0a46fSAndroid Build Coastguard Worker                                     unsigned long buflen,
456*3ac0a46fSAndroid Build Coastguard Worker                                     unsigned long* out_buflen);
457*3ac0a46fSAndroid Build Coastguard Worker 
458*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
459*3ac0a46fSAndroid Build Coastguard Worker // Get the value of a blob property in a content mark by key.
460*3ac0a46fSAndroid Build Coastguard Worker //
461*3ac0a46fSAndroid Build Coastguard Worker //   mark       - handle to a content mark.
462*3ac0a46fSAndroid Build Coastguard Worker //   key        - string key of the property.
463*3ac0a46fSAndroid Build Coastguard Worker //   buffer     - buffer for holding the returned value. This is only modified
464*3ac0a46fSAndroid Build Coastguard Worker //                if |buflen| is at least as long as the length of the value.
465*3ac0a46fSAndroid Build Coastguard Worker //                Optional, pass null to just retrieve the size of the buffer
466*3ac0a46fSAndroid Build Coastguard Worker //                needed.
467*3ac0a46fSAndroid Build Coastguard Worker //   buflen     - length of the buffer.
468*3ac0a46fSAndroid Build Coastguard Worker //   out_buflen - pointer to variable that will receive the minimum buffer size
469*3ac0a46fSAndroid Build Coastguard Worker //                to contain the value. Not filled if FALSE is returned.
470*3ac0a46fSAndroid Build Coastguard Worker //
471*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the key maps to a string/blob value, FALSE otherwise.
472*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
473*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_GetParamBlobValue(FPDF_PAGEOBJECTMARK mark,
474*3ac0a46fSAndroid Build Coastguard Worker                                   FPDF_BYTESTRING key,
475*3ac0a46fSAndroid Build Coastguard Worker                                   void* buffer,
476*3ac0a46fSAndroid Build Coastguard Worker                                   unsigned long buflen,
477*3ac0a46fSAndroid Build Coastguard Worker                                   unsigned long* out_buflen);
478*3ac0a46fSAndroid Build Coastguard Worker 
479*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
480*3ac0a46fSAndroid Build Coastguard Worker // Set the value of an int property in a content mark by key. If a parameter
481*3ac0a46fSAndroid Build Coastguard Worker // with key |key| exists, its value is set to |value|. Otherwise, it is added as
482*3ac0a46fSAndroid Build Coastguard Worker // a new parameter.
483*3ac0a46fSAndroid Build Coastguard Worker //
484*3ac0a46fSAndroid Build Coastguard Worker //   document    - handle to the document.
485*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to the page object with the mark.
486*3ac0a46fSAndroid Build Coastguard Worker //   mark        - handle to a content mark.
487*3ac0a46fSAndroid Build Coastguard Worker //   key         - string key of the property.
488*3ac0a46fSAndroid Build Coastguard Worker //   value       - int value to set.
489*3ac0a46fSAndroid Build Coastguard Worker //
490*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the operation succeeded, FALSE otherwise.
491*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
492*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_SetIntParam(FPDF_DOCUMENT document,
493*3ac0a46fSAndroid Build Coastguard Worker                             FPDF_PAGEOBJECT page_object,
494*3ac0a46fSAndroid Build Coastguard Worker                             FPDF_PAGEOBJECTMARK mark,
495*3ac0a46fSAndroid Build Coastguard Worker                             FPDF_BYTESTRING key,
496*3ac0a46fSAndroid Build Coastguard Worker                             int value);
497*3ac0a46fSAndroid Build Coastguard Worker 
498*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
499*3ac0a46fSAndroid Build Coastguard Worker // Set the value of a string property in a content mark by key. If a parameter
500*3ac0a46fSAndroid Build Coastguard Worker // with key |key| exists, its value is set to |value|. Otherwise, it is added as
501*3ac0a46fSAndroid Build Coastguard Worker // a new parameter.
502*3ac0a46fSAndroid Build Coastguard Worker //
503*3ac0a46fSAndroid Build Coastguard Worker //   document    - handle to the document.
504*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to the page object with the mark.
505*3ac0a46fSAndroid Build Coastguard Worker //   mark        - handle to a content mark.
506*3ac0a46fSAndroid Build Coastguard Worker //   key         - string key of the property.
507*3ac0a46fSAndroid Build Coastguard Worker //   value       - string value to set.
508*3ac0a46fSAndroid Build Coastguard Worker //
509*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the operation succeeded, FALSE otherwise.
510*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
511*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_SetStringParam(FPDF_DOCUMENT document,
512*3ac0a46fSAndroid Build Coastguard Worker                                FPDF_PAGEOBJECT page_object,
513*3ac0a46fSAndroid Build Coastguard Worker                                FPDF_PAGEOBJECTMARK mark,
514*3ac0a46fSAndroid Build Coastguard Worker                                FPDF_BYTESTRING key,
515*3ac0a46fSAndroid Build Coastguard Worker                                FPDF_BYTESTRING value);
516*3ac0a46fSAndroid Build Coastguard Worker 
517*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
518*3ac0a46fSAndroid Build Coastguard Worker // Set the value of a blob property in a content mark by key. If a parameter
519*3ac0a46fSAndroid Build Coastguard Worker // with key |key| exists, its value is set to |value|. Otherwise, it is added as
520*3ac0a46fSAndroid Build Coastguard Worker // a new parameter.
521*3ac0a46fSAndroid Build Coastguard Worker //
522*3ac0a46fSAndroid Build Coastguard Worker //   document    - handle to the document.
523*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to the page object with the mark.
524*3ac0a46fSAndroid Build Coastguard Worker //   mark        - handle to a content mark.
525*3ac0a46fSAndroid Build Coastguard Worker //   key         - string key of the property.
526*3ac0a46fSAndroid Build Coastguard Worker //   value       - pointer to blob value to set.
527*3ac0a46fSAndroid Build Coastguard Worker //   value_len   - size in bytes of |value|.
528*3ac0a46fSAndroid Build Coastguard Worker //
529*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the operation succeeded, FALSE otherwise.
530*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
531*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_SetBlobParam(FPDF_DOCUMENT document,
532*3ac0a46fSAndroid Build Coastguard Worker                              FPDF_PAGEOBJECT page_object,
533*3ac0a46fSAndroid Build Coastguard Worker                              FPDF_PAGEOBJECTMARK mark,
534*3ac0a46fSAndroid Build Coastguard Worker                              FPDF_BYTESTRING key,
535*3ac0a46fSAndroid Build Coastguard Worker                              void* value,
536*3ac0a46fSAndroid Build Coastguard Worker                              unsigned long value_len);
537*3ac0a46fSAndroid Build Coastguard Worker 
538*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
539*3ac0a46fSAndroid Build Coastguard Worker // Removes a property from a content mark by key.
540*3ac0a46fSAndroid Build Coastguard Worker //
541*3ac0a46fSAndroid Build Coastguard Worker //   page_object - handle to the page object with the mark.
542*3ac0a46fSAndroid Build Coastguard Worker //   mark        - handle to a content mark.
543*3ac0a46fSAndroid Build Coastguard Worker //   key         - string key of the property.
544*3ac0a46fSAndroid Build Coastguard Worker //
545*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE if the operation succeeded, FALSE otherwise.
546*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
547*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObjMark_RemoveParam(FPDF_PAGEOBJECT page_object,
548*3ac0a46fSAndroid Build Coastguard Worker                             FPDF_PAGEOBJECTMARK mark,
549*3ac0a46fSAndroid Build Coastguard Worker                             FPDF_BYTESTRING key);
550*3ac0a46fSAndroid Build Coastguard Worker 
551*3ac0a46fSAndroid Build Coastguard Worker // Load an image from a JPEG image file and then set it into |image_object|.
552*3ac0a46fSAndroid Build Coastguard Worker //
553*3ac0a46fSAndroid Build Coastguard Worker //   pages        - pointer to the start of all loaded pages, may be NULL.
554*3ac0a46fSAndroid Build Coastguard Worker //   count        - number of |pages|, may be 0.
555*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
556*3ac0a46fSAndroid Build Coastguard Worker //   file_access  - file access handler which specifies the JPEG image file.
557*3ac0a46fSAndroid Build Coastguard Worker //
558*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
559*3ac0a46fSAndroid Build Coastguard Worker //
560*3ac0a46fSAndroid Build Coastguard Worker // The image object might already have an associated image, which is shared and
561*3ac0a46fSAndroid Build Coastguard Worker // cached by the loaded pages. In that case, we need to clear the cached image
562*3ac0a46fSAndroid Build Coastguard Worker // for all the loaded pages. Pass |pages| and page count (|count|) to this API
563*3ac0a46fSAndroid Build Coastguard Worker // to clear the image cache. If the image is not previously shared, or NULL is a
564*3ac0a46fSAndroid Build Coastguard Worker // valid |pages| value.
565*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
566*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages,
567*3ac0a46fSAndroid Build Coastguard Worker                           int count,
568*3ac0a46fSAndroid Build Coastguard Worker                           FPDF_PAGEOBJECT image_object,
569*3ac0a46fSAndroid Build Coastguard Worker                           FPDF_FILEACCESS* file_access);
570*3ac0a46fSAndroid Build Coastguard Worker 
571*3ac0a46fSAndroid Build Coastguard Worker // Load an image from a JPEG image file and then set it into |image_object|.
572*3ac0a46fSAndroid Build Coastguard Worker //
573*3ac0a46fSAndroid Build Coastguard Worker //   pages        - pointer to the start of all loaded pages, may be NULL.
574*3ac0a46fSAndroid Build Coastguard Worker //   count        - number of |pages|, may be 0.
575*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
576*3ac0a46fSAndroid Build Coastguard Worker //   file_access  - file access handler which specifies the JPEG image file.
577*3ac0a46fSAndroid Build Coastguard Worker //
578*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
579*3ac0a46fSAndroid Build Coastguard Worker //
580*3ac0a46fSAndroid Build Coastguard Worker // The image object might already have an associated image, which is shared and
581*3ac0a46fSAndroid Build Coastguard Worker // cached by the loaded pages. In that case, we need to clear the cached image
582*3ac0a46fSAndroid Build Coastguard Worker // for all the loaded pages. Pass |pages| and page count (|count|) to this API
583*3ac0a46fSAndroid Build Coastguard Worker // to clear the image cache. If the image is not previously shared, or NULL is a
584*3ac0a46fSAndroid Build Coastguard Worker // valid |pages| value. This function loads the JPEG image inline, so the image
585*3ac0a46fSAndroid Build Coastguard Worker // content is copied to the file. This allows |file_access| and its associated
586*3ac0a46fSAndroid Build Coastguard Worker // data to be deleted after this function returns.
587*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
588*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_LoadJpegFileInline(FPDF_PAGE* pages,
589*3ac0a46fSAndroid Build Coastguard Worker                                 int count,
590*3ac0a46fSAndroid Build Coastguard Worker                                 FPDF_PAGEOBJECT image_object,
591*3ac0a46fSAndroid Build Coastguard Worker                                 FPDF_FILEACCESS* file_access);
592*3ac0a46fSAndroid Build Coastguard Worker 
593*3ac0a46fSAndroid Build Coastguard Worker // TODO(thestig): Start deprecating this once FPDFPageObj_SetMatrix() is stable.
594*3ac0a46fSAndroid Build Coastguard Worker //
595*3ac0a46fSAndroid Build Coastguard Worker // Set the transform matrix of |image_object|.
596*3ac0a46fSAndroid Build Coastguard Worker //
597*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
598*3ac0a46fSAndroid Build Coastguard Worker //   a            - matrix value.
599*3ac0a46fSAndroid Build Coastguard Worker //   b            - matrix value.
600*3ac0a46fSAndroid Build Coastguard Worker //   c            - matrix value.
601*3ac0a46fSAndroid Build Coastguard Worker //   d            - matrix value.
602*3ac0a46fSAndroid Build Coastguard Worker //   e            - matrix value.
603*3ac0a46fSAndroid Build Coastguard Worker //   f            - matrix value.
604*3ac0a46fSAndroid Build Coastguard Worker //
605*3ac0a46fSAndroid Build Coastguard Worker // The matrix is composed as:
606*3ac0a46fSAndroid Build Coastguard Worker //   |a c e|
607*3ac0a46fSAndroid Build Coastguard Worker //   |b d f|
608*3ac0a46fSAndroid Build Coastguard Worker // and can be used to scale, rotate, shear and translate the |image_object|.
609*3ac0a46fSAndroid Build Coastguard Worker //
610*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
611*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
612*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object,
613*3ac0a46fSAndroid Build Coastguard Worker                        double a,
614*3ac0a46fSAndroid Build Coastguard Worker                        double b,
615*3ac0a46fSAndroid Build Coastguard Worker                        double c,
616*3ac0a46fSAndroid Build Coastguard Worker                        double d,
617*3ac0a46fSAndroid Build Coastguard Worker                        double e,
618*3ac0a46fSAndroid Build Coastguard Worker                        double f);
619*3ac0a46fSAndroid Build Coastguard Worker 
620*3ac0a46fSAndroid Build Coastguard Worker // Set |bitmap| to |image_object|.
621*3ac0a46fSAndroid Build Coastguard Worker //
622*3ac0a46fSAndroid Build Coastguard Worker //   pages        - pointer to the start of all loaded pages, may be NULL.
623*3ac0a46fSAndroid Build Coastguard Worker //   count        - number of |pages|, may be 0.
624*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
625*3ac0a46fSAndroid Build Coastguard Worker //   bitmap       - handle of the bitmap.
626*3ac0a46fSAndroid Build Coastguard Worker //
627*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
628*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
629*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_SetBitmap(FPDF_PAGE* pages,
630*3ac0a46fSAndroid Build Coastguard Worker                        int count,
631*3ac0a46fSAndroid Build Coastguard Worker                        FPDF_PAGEOBJECT image_object,
632*3ac0a46fSAndroid Build Coastguard Worker                        FPDF_BITMAP bitmap);
633*3ac0a46fSAndroid Build Coastguard Worker 
634*3ac0a46fSAndroid Build Coastguard Worker // Get a bitmap rasterization of |image_object|. FPDFImageObj_GetBitmap() only
635*3ac0a46fSAndroid Build Coastguard Worker // operates on |image_object| and does not take the associated image mask into
636*3ac0a46fSAndroid Build Coastguard Worker // account. It also ignores the matrix for |image_object|.
637*3ac0a46fSAndroid Build Coastguard Worker // The returned bitmap will be owned by the caller, and FPDFBitmap_Destroy()
638*3ac0a46fSAndroid Build Coastguard Worker // must be called on the returned bitmap when it is no longer needed.
639*3ac0a46fSAndroid Build Coastguard Worker //
640*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
641*3ac0a46fSAndroid Build Coastguard Worker //
642*3ac0a46fSAndroid Build Coastguard Worker // Returns the bitmap.
643*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV
644*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_GetBitmap(FPDF_PAGEOBJECT image_object);
645*3ac0a46fSAndroid Build Coastguard Worker 
646*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
647*3ac0a46fSAndroid Build Coastguard Worker // Get a bitmap rasterization of |image_object| that takes the image mask and
648*3ac0a46fSAndroid Build Coastguard Worker // image matrix into account. To render correctly, the caller must provide the
649*3ac0a46fSAndroid Build Coastguard Worker // |document| associated with |image_object|. If there is a |page| associated
650*3ac0a46fSAndroid Build Coastguard Worker // with |image_object|, the caller should provide that as well.
651*3ac0a46fSAndroid Build Coastguard Worker // The returned bitmap will be owned by the caller, and FPDFBitmap_Destroy()
652*3ac0a46fSAndroid Build Coastguard Worker // must be called on the returned bitmap when it is no longer needed.
653*3ac0a46fSAndroid Build Coastguard Worker //
654*3ac0a46fSAndroid Build Coastguard Worker //   document     - handle to a document associated with |image_object|.
655*3ac0a46fSAndroid Build Coastguard Worker //   page         - handle to an optional page associated with |image_object|.
656*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
657*3ac0a46fSAndroid Build Coastguard Worker //
658*3ac0a46fSAndroid Build Coastguard Worker // Returns the bitmap or NULL on failure.
659*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV
660*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_GetRenderedBitmap(FPDF_DOCUMENT document,
661*3ac0a46fSAndroid Build Coastguard Worker                                FPDF_PAGE page,
662*3ac0a46fSAndroid Build Coastguard Worker                                FPDF_PAGEOBJECT image_object);
663*3ac0a46fSAndroid Build Coastguard Worker 
664*3ac0a46fSAndroid Build Coastguard Worker // Get the decoded image data of |image_object|. The decoded data is the
665*3ac0a46fSAndroid Build Coastguard Worker // uncompressed image data, i.e. the raw image data after having all filters
666*3ac0a46fSAndroid Build Coastguard Worker // applied. |buffer| is only modified if |buflen| is longer than the length of
667*3ac0a46fSAndroid Build Coastguard Worker // the decoded image data.
668*3ac0a46fSAndroid Build Coastguard Worker //
669*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
670*3ac0a46fSAndroid Build Coastguard Worker //   buffer       - buffer for holding the decoded image data.
671*3ac0a46fSAndroid Build Coastguard Worker //   buflen       - length of the buffer in bytes.
672*3ac0a46fSAndroid Build Coastguard Worker //
673*3ac0a46fSAndroid Build Coastguard Worker // Returns the length of the decoded image data.
674*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
675*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_GetImageDataDecoded(FPDF_PAGEOBJECT image_object,
676*3ac0a46fSAndroid Build Coastguard Worker                                  void* buffer,
677*3ac0a46fSAndroid Build Coastguard Worker                                  unsigned long buflen);
678*3ac0a46fSAndroid Build Coastguard Worker 
679*3ac0a46fSAndroid Build Coastguard Worker // Get the raw image data of |image_object|. The raw data is the image data as
680*3ac0a46fSAndroid Build Coastguard Worker // stored in the PDF without applying any filters. |buffer| is only modified if
681*3ac0a46fSAndroid Build Coastguard Worker // |buflen| is longer than the length of the raw image data.
682*3ac0a46fSAndroid Build Coastguard Worker //
683*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
684*3ac0a46fSAndroid Build Coastguard Worker //   buffer       - buffer for holding the raw image data.
685*3ac0a46fSAndroid Build Coastguard Worker //   buflen       - length of the buffer in bytes.
686*3ac0a46fSAndroid Build Coastguard Worker //
687*3ac0a46fSAndroid Build Coastguard Worker // Returns the length of the raw image data.
688*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
689*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_GetImageDataRaw(FPDF_PAGEOBJECT image_object,
690*3ac0a46fSAndroid Build Coastguard Worker                              void* buffer,
691*3ac0a46fSAndroid Build Coastguard Worker                              unsigned long buflen);
692*3ac0a46fSAndroid Build Coastguard Worker 
693*3ac0a46fSAndroid Build Coastguard Worker // Get the number of filters (i.e. decoders) of the image in |image_object|.
694*3ac0a46fSAndroid Build Coastguard Worker //
695*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
696*3ac0a46fSAndroid Build Coastguard Worker //
697*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of |image_object|'s filters.
698*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
699*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_GetImageFilterCount(FPDF_PAGEOBJECT image_object);
700*3ac0a46fSAndroid Build Coastguard Worker 
701*3ac0a46fSAndroid Build Coastguard Worker // Get the filter at |index| of |image_object|'s list of filters. Note that the
702*3ac0a46fSAndroid Build Coastguard Worker // filters need to be applied in order, i.e. the first filter should be applied
703*3ac0a46fSAndroid Build Coastguard Worker // first, then the second, etc. |buffer| is only modified if |buflen| is longer
704*3ac0a46fSAndroid Build Coastguard Worker // than the length of the filter string.
705*3ac0a46fSAndroid Build Coastguard Worker //
706*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
707*3ac0a46fSAndroid Build Coastguard Worker //   index        - the index of the filter requested.
708*3ac0a46fSAndroid Build Coastguard Worker //   buffer       - buffer for holding filter string, encoded in UTF-8.
709*3ac0a46fSAndroid Build Coastguard Worker //   buflen       - length of the buffer.
710*3ac0a46fSAndroid Build Coastguard Worker //
711*3ac0a46fSAndroid Build Coastguard Worker // Returns the length of the filter string.
712*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
713*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_GetImageFilter(FPDF_PAGEOBJECT image_object,
714*3ac0a46fSAndroid Build Coastguard Worker                             int index,
715*3ac0a46fSAndroid Build Coastguard Worker                             void* buffer,
716*3ac0a46fSAndroid Build Coastguard Worker                             unsigned long buflen);
717*3ac0a46fSAndroid Build Coastguard Worker 
718*3ac0a46fSAndroid Build Coastguard Worker // Get the image metadata of |image_object|, including dimension, DPI, bits per
719*3ac0a46fSAndroid Build Coastguard Worker // pixel, and colorspace. If the |image_object| is not an image object or if it
720*3ac0a46fSAndroid Build Coastguard Worker // does not have an image, then the return value will be false. Otherwise,
721*3ac0a46fSAndroid Build Coastguard Worker // failure to retrieve any specific parameter would result in its value being 0.
722*3ac0a46fSAndroid Build Coastguard Worker //
723*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
724*3ac0a46fSAndroid Build Coastguard Worker //   page         - handle to the page that |image_object| is on. Required for
725*3ac0a46fSAndroid Build Coastguard Worker //                  retrieving the image's bits per pixel and colorspace.
726*3ac0a46fSAndroid Build Coastguard Worker //   metadata     - receives the image metadata; must not be NULL.
727*3ac0a46fSAndroid Build Coastguard Worker //
728*3ac0a46fSAndroid Build Coastguard Worker // Returns true if successful.
729*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
730*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_GetImageMetadata(FPDF_PAGEOBJECT image_object,
731*3ac0a46fSAndroid Build Coastguard Worker                               FPDF_PAGE page,
732*3ac0a46fSAndroid Build Coastguard Worker                               FPDF_IMAGEOBJ_METADATA* metadata);
733*3ac0a46fSAndroid Build Coastguard Worker 
734*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
735*3ac0a46fSAndroid Build Coastguard Worker // Get the image size in pixels. Faster method to get only image size.
736*3ac0a46fSAndroid Build Coastguard Worker //
737*3ac0a46fSAndroid Build Coastguard Worker //   image_object - handle to an image object.
738*3ac0a46fSAndroid Build Coastguard Worker //   width        - receives the image width in pixels; must not be NULL.
739*3ac0a46fSAndroid Build Coastguard Worker //   height       - receives the image height in pixels; must not be NULL.
740*3ac0a46fSAndroid Build Coastguard Worker //
741*3ac0a46fSAndroid Build Coastguard Worker // Returns true if successful.
742*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
743*3ac0a46fSAndroid Build Coastguard Worker FPDFImageObj_GetImagePixelSize(FPDF_PAGEOBJECT image_object,
744*3ac0a46fSAndroid Build Coastguard Worker                                unsigned int* width,
745*3ac0a46fSAndroid Build Coastguard Worker                                unsigned int* height);
746*3ac0a46fSAndroid Build Coastguard Worker 
747*3ac0a46fSAndroid Build Coastguard Worker // Create a new path object at an initial position.
748*3ac0a46fSAndroid Build Coastguard Worker //
749*3ac0a46fSAndroid Build Coastguard Worker //   x - initial horizontal position.
750*3ac0a46fSAndroid Build Coastguard Worker //   y - initial vertical position.
751*3ac0a46fSAndroid Build Coastguard Worker //
752*3ac0a46fSAndroid Build Coastguard Worker // Returns a handle to a new path object.
753*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPageObj_CreateNewPath(float x,
754*3ac0a46fSAndroid Build Coastguard Worker                                                                     float y);
755*3ac0a46fSAndroid Build Coastguard Worker 
756*3ac0a46fSAndroid Build Coastguard Worker // Create a closed path consisting of a rectangle.
757*3ac0a46fSAndroid Build Coastguard Worker //
758*3ac0a46fSAndroid Build Coastguard Worker //   x - horizontal position for the left boundary of the rectangle.
759*3ac0a46fSAndroid Build Coastguard Worker //   y - vertical position for the bottom boundary of the rectangle.
760*3ac0a46fSAndroid Build Coastguard Worker //   w - width of the rectangle.
761*3ac0a46fSAndroid Build Coastguard Worker //   h - height of the rectangle.
762*3ac0a46fSAndroid Build Coastguard Worker //
763*3ac0a46fSAndroid Build Coastguard Worker // Returns a handle to the new path object.
764*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPageObj_CreateNewRect(float x,
765*3ac0a46fSAndroid Build Coastguard Worker                                                                     float y,
766*3ac0a46fSAndroid Build Coastguard Worker                                                                     float w,
767*3ac0a46fSAndroid Build Coastguard Worker                                                                     float h);
768*3ac0a46fSAndroid Build Coastguard Worker 
769*3ac0a46fSAndroid Build Coastguard Worker // Get the bounding box of |page_object|.
770*3ac0a46fSAndroid Build Coastguard Worker //
771*3ac0a46fSAndroid Build Coastguard Worker // page_object  - handle to a page object.
772*3ac0a46fSAndroid Build Coastguard Worker // left         - pointer where the left coordinate will be stored
773*3ac0a46fSAndroid Build Coastguard Worker // bottom       - pointer where the bottom coordinate will be stored
774*3ac0a46fSAndroid Build Coastguard Worker // right        - pointer where the right coordinate will be stored
775*3ac0a46fSAndroid Build Coastguard Worker // top          - pointer where the top coordinate will be stored
776*3ac0a46fSAndroid Build Coastguard Worker //
777*3ac0a46fSAndroid Build Coastguard Worker // On success, returns TRUE and fills in the 4 coordinates.
778*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
779*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetBounds(FPDF_PAGEOBJECT page_object,
780*3ac0a46fSAndroid Build Coastguard Worker                       float* left,
781*3ac0a46fSAndroid Build Coastguard Worker                       float* bottom,
782*3ac0a46fSAndroid Build Coastguard Worker                       float* right,
783*3ac0a46fSAndroid Build Coastguard Worker                       float* top);
784*3ac0a46fSAndroid Build Coastguard Worker 
785*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
786*3ac0a46fSAndroid Build Coastguard Worker // Get the quad points that bounds |page_object|.
787*3ac0a46fSAndroid Build Coastguard Worker //
788*3ac0a46fSAndroid Build Coastguard Worker // page_object  - handle to a page object.
789*3ac0a46fSAndroid Build Coastguard Worker // quad_points  - pointer where the quadrilateral points will be stored.
790*3ac0a46fSAndroid Build Coastguard Worker //
791*3ac0a46fSAndroid Build Coastguard Worker // On success, returns TRUE and fills in |quad_points|.
792*3ac0a46fSAndroid Build Coastguard Worker //
793*3ac0a46fSAndroid Build Coastguard Worker // Similar to FPDFPageObj_GetBounds(), this returns the bounds of a page
794*3ac0a46fSAndroid Build Coastguard Worker // object. When the object is rotated by a non-multiple of 90 degrees, this API
795*3ac0a46fSAndroid Build Coastguard Worker // returns a tighter bound that cannot be represented with just the 4 sides of
796*3ac0a46fSAndroid Build Coastguard Worker // a rectangle.
797*3ac0a46fSAndroid Build Coastguard Worker //
798*3ac0a46fSAndroid Build Coastguard Worker // Currently only works the following |page_object| types: FPDF_PAGEOBJ_TEXT and
799*3ac0a46fSAndroid Build Coastguard Worker // FPDF_PAGEOBJ_IMAGE.
800*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
801*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetRotatedBounds(FPDF_PAGEOBJECT page_object,
802*3ac0a46fSAndroid Build Coastguard Worker                              FS_QUADPOINTSF* quad_points);
803*3ac0a46fSAndroid Build Coastguard Worker 
804*3ac0a46fSAndroid Build Coastguard Worker // Set the blend mode of |page_object|.
805*3ac0a46fSAndroid Build Coastguard Worker //
806*3ac0a46fSAndroid Build Coastguard Worker // page_object  - handle to a page object.
807*3ac0a46fSAndroid Build Coastguard Worker // blend_mode   - string containing the blend mode.
808*3ac0a46fSAndroid Build Coastguard Worker //
809*3ac0a46fSAndroid Build Coastguard Worker // Blend mode can be one of following: Color, ColorBurn, ColorDodge, Darken,
810*3ac0a46fSAndroid Build Coastguard Worker // Difference, Exclusion, HardLight, Hue, Lighten, Luminosity, Multiply, Normal,
811*3ac0a46fSAndroid Build Coastguard Worker // Overlay, Saturation, Screen, SoftLight
812*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV
813*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetBlendMode(FPDF_PAGEOBJECT page_object,
814*3ac0a46fSAndroid Build Coastguard Worker                          FPDF_BYTESTRING blend_mode);
815*3ac0a46fSAndroid Build Coastguard Worker 
816*3ac0a46fSAndroid Build Coastguard Worker // Set the stroke RGBA of a page object. Range of values: 0 - 255.
817*3ac0a46fSAndroid Build Coastguard Worker //
818*3ac0a46fSAndroid Build Coastguard Worker // page_object  - the handle to the page object.
819*3ac0a46fSAndroid Build Coastguard Worker // R            - the red component for the object's stroke color.
820*3ac0a46fSAndroid Build Coastguard Worker // G            - the green component for the object's stroke color.
821*3ac0a46fSAndroid Build Coastguard Worker // B            - the blue component for the object's stroke color.
822*3ac0a46fSAndroid Build Coastguard Worker // A            - the stroke alpha for the object.
823*3ac0a46fSAndroid Build Coastguard Worker //
824*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
825*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
826*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetStrokeColor(FPDF_PAGEOBJECT page_object,
827*3ac0a46fSAndroid Build Coastguard Worker                            unsigned int R,
828*3ac0a46fSAndroid Build Coastguard Worker                            unsigned int G,
829*3ac0a46fSAndroid Build Coastguard Worker                            unsigned int B,
830*3ac0a46fSAndroid Build Coastguard Worker                            unsigned int A);
831*3ac0a46fSAndroid Build Coastguard Worker 
832*3ac0a46fSAndroid Build Coastguard Worker // Get the stroke RGBA of a page object. Range of values: 0 - 255.
833*3ac0a46fSAndroid Build Coastguard Worker //
834*3ac0a46fSAndroid Build Coastguard Worker // page_object  - the handle to the page object.
835*3ac0a46fSAndroid Build Coastguard Worker // R            - the red component of the path stroke color.
836*3ac0a46fSAndroid Build Coastguard Worker // G            - the green component of the object's stroke color.
837*3ac0a46fSAndroid Build Coastguard Worker // B            - the blue component of the object's stroke color.
838*3ac0a46fSAndroid Build Coastguard Worker // A            - the stroke alpha of the object.
839*3ac0a46fSAndroid Build Coastguard Worker //
840*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
841*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
842*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetStrokeColor(FPDF_PAGEOBJECT page_object,
843*3ac0a46fSAndroid Build Coastguard Worker                            unsigned int* R,
844*3ac0a46fSAndroid Build Coastguard Worker                            unsigned int* G,
845*3ac0a46fSAndroid Build Coastguard Worker                            unsigned int* B,
846*3ac0a46fSAndroid Build Coastguard Worker                            unsigned int* A);
847*3ac0a46fSAndroid Build Coastguard Worker 
848*3ac0a46fSAndroid Build Coastguard Worker // Set the stroke width of a page object.
849*3ac0a46fSAndroid Build Coastguard Worker //
850*3ac0a46fSAndroid Build Coastguard Worker // path   - the handle to the page object.
851*3ac0a46fSAndroid Build Coastguard Worker // width  - the width of the stroke.
852*3ac0a46fSAndroid Build Coastguard Worker //
853*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
854*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
855*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetStrokeWidth(FPDF_PAGEOBJECT page_object, float width);
856*3ac0a46fSAndroid Build Coastguard Worker 
857*3ac0a46fSAndroid Build Coastguard Worker // Get the stroke width of a page object.
858*3ac0a46fSAndroid Build Coastguard Worker //
859*3ac0a46fSAndroid Build Coastguard Worker // path   - the handle to the page object.
860*3ac0a46fSAndroid Build Coastguard Worker // width  - the width of the stroke.
861*3ac0a46fSAndroid Build Coastguard Worker //
862*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
863*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
864*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetStrokeWidth(FPDF_PAGEOBJECT page_object, float* width);
865*3ac0a46fSAndroid Build Coastguard Worker 
866*3ac0a46fSAndroid Build Coastguard Worker // Get the line join of |page_object|.
867*3ac0a46fSAndroid Build Coastguard Worker //
868*3ac0a46fSAndroid Build Coastguard Worker // page_object  - handle to a page object.
869*3ac0a46fSAndroid Build Coastguard Worker //
870*3ac0a46fSAndroid Build Coastguard Worker // Returns the line join, or -1 on failure.
871*3ac0a46fSAndroid Build Coastguard Worker // Line join can be one of following: FPDF_LINEJOIN_MITER, FPDF_LINEJOIN_ROUND,
872*3ac0a46fSAndroid Build Coastguard Worker // FPDF_LINEJOIN_BEVEL
873*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
874*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetLineJoin(FPDF_PAGEOBJECT page_object);
875*3ac0a46fSAndroid Build Coastguard Worker 
876*3ac0a46fSAndroid Build Coastguard Worker // Set the line join of |page_object|.
877*3ac0a46fSAndroid Build Coastguard Worker //
878*3ac0a46fSAndroid Build Coastguard Worker // page_object  - handle to a page object.
879*3ac0a46fSAndroid Build Coastguard Worker // line_join    - line join
880*3ac0a46fSAndroid Build Coastguard Worker //
881*3ac0a46fSAndroid Build Coastguard Worker // Line join can be one of following: FPDF_LINEJOIN_MITER, FPDF_LINEJOIN_ROUND,
882*3ac0a46fSAndroid Build Coastguard Worker // FPDF_LINEJOIN_BEVEL
883*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
884*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetLineJoin(FPDF_PAGEOBJECT page_object, int line_join);
885*3ac0a46fSAndroid Build Coastguard Worker 
886*3ac0a46fSAndroid Build Coastguard Worker // Get the line cap of |page_object|.
887*3ac0a46fSAndroid Build Coastguard Worker //
888*3ac0a46fSAndroid Build Coastguard Worker // page_object - handle to a page object.
889*3ac0a46fSAndroid Build Coastguard Worker //
890*3ac0a46fSAndroid Build Coastguard Worker // Returns the line cap, or -1 on failure.
891*3ac0a46fSAndroid Build Coastguard Worker // Line cap can be one of following: FPDF_LINECAP_BUTT, FPDF_LINECAP_ROUND,
892*3ac0a46fSAndroid Build Coastguard Worker // FPDF_LINECAP_PROJECTING_SQUARE
893*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
894*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetLineCap(FPDF_PAGEOBJECT page_object);
895*3ac0a46fSAndroid Build Coastguard Worker 
896*3ac0a46fSAndroid Build Coastguard Worker // Set the line cap of |page_object|.
897*3ac0a46fSAndroid Build Coastguard Worker //
898*3ac0a46fSAndroid Build Coastguard Worker // page_object - handle to a page object.
899*3ac0a46fSAndroid Build Coastguard Worker // line_cap    - line cap
900*3ac0a46fSAndroid Build Coastguard Worker //
901*3ac0a46fSAndroid Build Coastguard Worker // Line cap can be one of following: FPDF_LINECAP_BUTT, FPDF_LINECAP_ROUND,
902*3ac0a46fSAndroid Build Coastguard Worker // FPDF_LINECAP_PROJECTING_SQUARE
903*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
904*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetLineCap(FPDF_PAGEOBJECT page_object, int line_cap);
905*3ac0a46fSAndroid Build Coastguard Worker 
906*3ac0a46fSAndroid Build Coastguard Worker // Set the fill RGBA of a page object. Range of values: 0 - 255.
907*3ac0a46fSAndroid Build Coastguard Worker //
908*3ac0a46fSAndroid Build Coastguard Worker // page_object  - the handle to the page object.
909*3ac0a46fSAndroid Build Coastguard Worker // R            - the red component for the object's fill color.
910*3ac0a46fSAndroid Build Coastguard Worker // G            - the green component for the object's fill color.
911*3ac0a46fSAndroid Build Coastguard Worker // B            - the blue component for the object's fill color.
912*3ac0a46fSAndroid Build Coastguard Worker // A            - the fill alpha for the object.
913*3ac0a46fSAndroid Build Coastguard Worker //
914*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
915*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
916*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetFillColor(FPDF_PAGEOBJECT page_object,
917*3ac0a46fSAndroid Build Coastguard Worker                          unsigned int R,
918*3ac0a46fSAndroid Build Coastguard Worker                          unsigned int G,
919*3ac0a46fSAndroid Build Coastguard Worker                          unsigned int B,
920*3ac0a46fSAndroid Build Coastguard Worker                          unsigned int A);
921*3ac0a46fSAndroid Build Coastguard Worker 
922*3ac0a46fSAndroid Build Coastguard Worker // Get the fill RGBA of a page object. Range of values: 0 - 255.
923*3ac0a46fSAndroid Build Coastguard Worker //
924*3ac0a46fSAndroid Build Coastguard Worker // page_object  - the handle to the page object.
925*3ac0a46fSAndroid Build Coastguard Worker // R            - the red component of the object's fill color.
926*3ac0a46fSAndroid Build Coastguard Worker // G            - the green component of the object's fill color.
927*3ac0a46fSAndroid Build Coastguard Worker // B            - the blue component of the object's fill color.
928*3ac0a46fSAndroid Build Coastguard Worker // A            - the fill alpha of the object.
929*3ac0a46fSAndroid Build Coastguard Worker //
930*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
931*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
932*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetFillColor(FPDF_PAGEOBJECT page_object,
933*3ac0a46fSAndroid Build Coastguard Worker                          unsigned int* R,
934*3ac0a46fSAndroid Build Coastguard Worker                          unsigned int* G,
935*3ac0a46fSAndroid Build Coastguard Worker                          unsigned int* B,
936*3ac0a46fSAndroid Build Coastguard Worker                          unsigned int* A);
937*3ac0a46fSAndroid Build Coastguard Worker 
938*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
939*3ac0a46fSAndroid Build Coastguard Worker // Get the line dash |phase| of |page_object|.
940*3ac0a46fSAndroid Build Coastguard Worker //
941*3ac0a46fSAndroid Build Coastguard Worker // page_object - handle to a page object.
942*3ac0a46fSAndroid Build Coastguard Worker // phase - pointer where the dashing phase will be stored.
943*3ac0a46fSAndroid Build Coastguard Worker //
944*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
945*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
946*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetDashPhase(FPDF_PAGEOBJECT page_object, float* phase);
947*3ac0a46fSAndroid Build Coastguard Worker 
948*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
949*3ac0a46fSAndroid Build Coastguard Worker // Set the line dash phase of |page_object|.
950*3ac0a46fSAndroid Build Coastguard Worker //
951*3ac0a46fSAndroid Build Coastguard Worker // page_object - handle to a page object.
952*3ac0a46fSAndroid Build Coastguard Worker // phase - line dash phase.
953*3ac0a46fSAndroid Build Coastguard Worker //
954*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
955*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
956*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetDashPhase(FPDF_PAGEOBJECT page_object, float phase);
957*3ac0a46fSAndroid Build Coastguard Worker 
958*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
959*3ac0a46fSAndroid Build Coastguard Worker // Get the line dash array of |page_object|.
960*3ac0a46fSAndroid Build Coastguard Worker //
961*3ac0a46fSAndroid Build Coastguard Worker // page_object - handle to a page object.
962*3ac0a46fSAndroid Build Coastguard Worker //
963*3ac0a46fSAndroid Build Coastguard Worker // Returns the line dash array size or -1 on failure.
964*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
965*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetDashCount(FPDF_PAGEOBJECT page_object);
966*3ac0a46fSAndroid Build Coastguard Worker 
967*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
968*3ac0a46fSAndroid Build Coastguard Worker // Get the line dash array of |page_object|.
969*3ac0a46fSAndroid Build Coastguard Worker //
970*3ac0a46fSAndroid Build Coastguard Worker // page_object - handle to a page object.
971*3ac0a46fSAndroid Build Coastguard Worker // dash_array - pointer where the dashing array will be stored.
972*3ac0a46fSAndroid Build Coastguard Worker // dash_count - number of elements in |dash_array|.
973*3ac0a46fSAndroid Build Coastguard Worker //
974*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
975*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
976*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_GetDashArray(FPDF_PAGEOBJECT page_object,
977*3ac0a46fSAndroid Build Coastguard Worker                          float* dash_array,
978*3ac0a46fSAndroid Build Coastguard Worker                          size_t dash_count);
979*3ac0a46fSAndroid Build Coastguard Worker 
980*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
981*3ac0a46fSAndroid Build Coastguard Worker // Set the line dash array of |page_object|.
982*3ac0a46fSAndroid Build Coastguard Worker //
983*3ac0a46fSAndroid Build Coastguard Worker // page_object - handle to a page object.
984*3ac0a46fSAndroid Build Coastguard Worker // dash_array - the dash array.
985*3ac0a46fSAndroid Build Coastguard Worker // dash_count - number of elements in |dash_array|.
986*3ac0a46fSAndroid Build Coastguard Worker // phase - the line dash phase.
987*3ac0a46fSAndroid Build Coastguard Worker //
988*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
989*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
990*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_SetDashArray(FPDF_PAGEOBJECT page_object,
991*3ac0a46fSAndroid Build Coastguard Worker                          const float* dash_array,
992*3ac0a46fSAndroid Build Coastguard Worker                          size_t dash_count,
993*3ac0a46fSAndroid Build Coastguard Worker                          float phase);
994*3ac0a46fSAndroid Build Coastguard Worker 
995*3ac0a46fSAndroid Build Coastguard Worker // Get number of segments inside |path|.
996*3ac0a46fSAndroid Build Coastguard Worker //
997*3ac0a46fSAndroid Build Coastguard Worker //   path - handle to a path.
998*3ac0a46fSAndroid Build Coastguard Worker //
999*3ac0a46fSAndroid Build Coastguard Worker // A segment is a command, created by e.g. FPDFPath_MoveTo(),
1000*3ac0a46fSAndroid Build Coastguard Worker // FPDFPath_LineTo() or FPDFPath_BezierTo().
1001*3ac0a46fSAndroid Build Coastguard Worker //
1002*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of objects in |path| or -1 on failure.
1003*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFPath_CountSegments(FPDF_PAGEOBJECT path);
1004*3ac0a46fSAndroid Build Coastguard Worker 
1005*3ac0a46fSAndroid Build Coastguard Worker // Get segment in |path| at |index|.
1006*3ac0a46fSAndroid Build Coastguard Worker //
1007*3ac0a46fSAndroid Build Coastguard Worker //   path  - handle to a path.
1008*3ac0a46fSAndroid Build Coastguard Worker //   index - the index of a segment.
1009*3ac0a46fSAndroid Build Coastguard Worker //
1010*3ac0a46fSAndroid Build Coastguard Worker // Returns the handle to the segment, or NULL on faiure.
1011*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PATHSEGMENT FPDF_CALLCONV
1012*3ac0a46fSAndroid Build Coastguard Worker FPDFPath_GetPathSegment(FPDF_PAGEOBJECT path, int index);
1013*3ac0a46fSAndroid Build Coastguard Worker 
1014*3ac0a46fSAndroid Build Coastguard Worker // Get coordinates of |segment|.
1015*3ac0a46fSAndroid Build Coastguard Worker //
1016*3ac0a46fSAndroid Build Coastguard Worker //   segment  - handle to a segment.
1017*3ac0a46fSAndroid Build Coastguard Worker //   x      - the horizontal position of the segment.
1018*3ac0a46fSAndroid Build Coastguard Worker //   y      - the vertical position of the segment.
1019*3ac0a46fSAndroid Build Coastguard Worker //
1020*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success, otherwise |x| and |y| is not set.
1021*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
1022*3ac0a46fSAndroid Build Coastguard Worker FPDFPathSegment_GetPoint(FPDF_PATHSEGMENT segment, float* x, float* y);
1023*3ac0a46fSAndroid Build Coastguard Worker 
1024*3ac0a46fSAndroid Build Coastguard Worker // Get type of |segment|.
1025*3ac0a46fSAndroid Build Coastguard Worker //
1026*3ac0a46fSAndroid Build Coastguard Worker //   segment - handle to a segment.
1027*3ac0a46fSAndroid Build Coastguard Worker //
1028*3ac0a46fSAndroid Build Coastguard Worker // Returns one of the FPDF_SEGMENT_* values on success,
1029*3ac0a46fSAndroid Build Coastguard Worker // FPDF_SEGMENT_UNKNOWN on error.
1030*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFPathSegment_GetType(FPDF_PATHSEGMENT segment);
1031*3ac0a46fSAndroid Build Coastguard Worker 
1032*3ac0a46fSAndroid Build Coastguard Worker // Gets if the |segment| closes the current subpath of a given path.
1033*3ac0a46fSAndroid Build Coastguard Worker //
1034*3ac0a46fSAndroid Build Coastguard Worker //   segment - handle to a segment.
1035*3ac0a46fSAndroid Build Coastguard Worker //
1036*3ac0a46fSAndroid Build Coastguard Worker // Returns close flag for non-NULL segment, FALSE otherwise.
1037*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
1038*3ac0a46fSAndroid Build Coastguard Worker FPDFPathSegment_GetClose(FPDF_PATHSEGMENT segment);
1039*3ac0a46fSAndroid Build Coastguard Worker 
1040*3ac0a46fSAndroid Build Coastguard Worker // Move a path's current point.
1041*3ac0a46fSAndroid Build Coastguard Worker //
1042*3ac0a46fSAndroid Build Coastguard Worker // path   - the handle to the path object.
1043*3ac0a46fSAndroid Build Coastguard Worker // x      - the horizontal position of the new current point.
1044*3ac0a46fSAndroid Build Coastguard Worker // y      - the vertical position of the new current point.
1045*3ac0a46fSAndroid Build Coastguard Worker //
1046*3ac0a46fSAndroid Build Coastguard Worker // Note that no line will be created between the previous current point and the
1047*3ac0a46fSAndroid Build Coastguard Worker // new one.
1048*3ac0a46fSAndroid Build Coastguard Worker //
1049*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
1050*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_MoveTo(FPDF_PAGEOBJECT path,
1051*3ac0a46fSAndroid Build Coastguard Worker                                                     float x,
1052*3ac0a46fSAndroid Build Coastguard Worker                                                     float y);
1053*3ac0a46fSAndroid Build Coastguard Worker 
1054*3ac0a46fSAndroid Build Coastguard Worker // Add a line between the current point and a new point in the path.
1055*3ac0a46fSAndroid Build Coastguard Worker //
1056*3ac0a46fSAndroid Build Coastguard Worker // path   - the handle to the path object.
1057*3ac0a46fSAndroid Build Coastguard Worker // x      - the horizontal position of the new point.
1058*3ac0a46fSAndroid Build Coastguard Worker // y      - the vertical position of the new point.
1059*3ac0a46fSAndroid Build Coastguard Worker //
1060*3ac0a46fSAndroid Build Coastguard Worker // The path's current point is changed to (x, y).
1061*3ac0a46fSAndroid Build Coastguard Worker //
1062*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
1063*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_LineTo(FPDF_PAGEOBJECT path,
1064*3ac0a46fSAndroid Build Coastguard Worker                                                     float x,
1065*3ac0a46fSAndroid Build Coastguard Worker                                                     float y);
1066*3ac0a46fSAndroid Build Coastguard Worker 
1067*3ac0a46fSAndroid Build Coastguard Worker // Add a cubic Bezier curve to the given path, starting at the current point.
1068*3ac0a46fSAndroid Build Coastguard Worker //
1069*3ac0a46fSAndroid Build Coastguard Worker // path   - the handle to the path object.
1070*3ac0a46fSAndroid Build Coastguard Worker // x1     - the horizontal position of the first Bezier control point.
1071*3ac0a46fSAndroid Build Coastguard Worker // y1     - the vertical position of the first Bezier control point.
1072*3ac0a46fSAndroid Build Coastguard Worker // x2     - the horizontal position of the second Bezier control point.
1073*3ac0a46fSAndroid Build Coastguard Worker // y2     - the vertical position of the second Bezier control point.
1074*3ac0a46fSAndroid Build Coastguard Worker // x3     - the horizontal position of the ending point of the Bezier curve.
1075*3ac0a46fSAndroid Build Coastguard Worker // y3     - the vertical position of the ending point of the Bezier curve.
1076*3ac0a46fSAndroid Build Coastguard Worker //
1077*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
1078*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_BezierTo(FPDF_PAGEOBJECT path,
1079*3ac0a46fSAndroid Build Coastguard Worker                                                       float x1,
1080*3ac0a46fSAndroid Build Coastguard Worker                                                       float y1,
1081*3ac0a46fSAndroid Build Coastguard Worker                                                       float x2,
1082*3ac0a46fSAndroid Build Coastguard Worker                                                       float y2,
1083*3ac0a46fSAndroid Build Coastguard Worker                                                       float x3,
1084*3ac0a46fSAndroid Build Coastguard Worker                                                       float y3);
1085*3ac0a46fSAndroid Build Coastguard Worker 
1086*3ac0a46fSAndroid Build Coastguard Worker // Close the current subpath of a given path.
1087*3ac0a46fSAndroid Build Coastguard Worker //
1088*3ac0a46fSAndroid Build Coastguard Worker // path   - the handle to the path object.
1089*3ac0a46fSAndroid Build Coastguard Worker //
1090*3ac0a46fSAndroid Build Coastguard Worker // This will add a line between the current point and the initial point of the
1091*3ac0a46fSAndroid Build Coastguard Worker // subpath, thus terminating the current subpath.
1092*3ac0a46fSAndroid Build Coastguard Worker //
1093*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
1094*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_Close(FPDF_PAGEOBJECT path);
1095*3ac0a46fSAndroid Build Coastguard Worker 
1096*3ac0a46fSAndroid Build Coastguard Worker // Set the drawing mode of a path.
1097*3ac0a46fSAndroid Build Coastguard Worker //
1098*3ac0a46fSAndroid Build Coastguard Worker // path     - the handle to the path object.
1099*3ac0a46fSAndroid Build Coastguard Worker // fillmode - the filling mode to be set: one of the FPDF_FILLMODE_* flags.
1100*3ac0a46fSAndroid Build Coastguard Worker // stroke   - a boolean specifying if the path should be stroked or not.
1101*3ac0a46fSAndroid Build Coastguard Worker //
1102*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
1103*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_SetDrawMode(FPDF_PAGEOBJECT path,
1104*3ac0a46fSAndroid Build Coastguard Worker                                                          int fillmode,
1105*3ac0a46fSAndroid Build Coastguard Worker                                                          FPDF_BOOL stroke);
1106*3ac0a46fSAndroid Build Coastguard Worker 
1107*3ac0a46fSAndroid Build Coastguard Worker // Get the drawing mode of a path.
1108*3ac0a46fSAndroid Build Coastguard Worker //
1109*3ac0a46fSAndroid Build Coastguard Worker // path     - the handle to the path object.
1110*3ac0a46fSAndroid Build Coastguard Worker // fillmode - the filling mode of the path: one of the FPDF_FILLMODE_* flags.
1111*3ac0a46fSAndroid Build Coastguard Worker // stroke   - a boolean specifying if the path is stroked or not.
1112*3ac0a46fSAndroid Build Coastguard Worker //
1113*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
1114*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_GetDrawMode(FPDF_PAGEOBJECT path,
1115*3ac0a46fSAndroid Build Coastguard Worker                                                          int* fillmode,
1116*3ac0a46fSAndroid Build Coastguard Worker                                                          FPDF_BOOL* stroke);
1117*3ac0a46fSAndroid Build Coastguard Worker 
1118*3ac0a46fSAndroid Build Coastguard Worker // Create a new text object using one of the standard PDF fonts.
1119*3ac0a46fSAndroid Build Coastguard Worker //
1120*3ac0a46fSAndroid Build Coastguard Worker // document   - handle to the document.
1121*3ac0a46fSAndroid Build Coastguard Worker // font       - string containing the font name, without spaces.
1122*3ac0a46fSAndroid Build Coastguard Worker // font_size  - the font size for the new text object.
1123*3ac0a46fSAndroid Build Coastguard Worker //
1124*3ac0a46fSAndroid Build Coastguard Worker // Returns a handle to a new text object, or NULL on failure
1125*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV
1126*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_NewTextObj(FPDF_DOCUMENT document,
1127*3ac0a46fSAndroid Build Coastguard Worker                        FPDF_BYTESTRING font,
1128*3ac0a46fSAndroid Build Coastguard Worker                        float font_size);
1129*3ac0a46fSAndroid Build Coastguard Worker 
1130*3ac0a46fSAndroid Build Coastguard Worker // Set the text for a text object. If it had text, it will be replaced.
1131*3ac0a46fSAndroid Build Coastguard Worker //
1132*3ac0a46fSAndroid Build Coastguard Worker // text_object  - handle to the text object.
1133*3ac0a46fSAndroid Build Coastguard Worker // text         - the UTF-16LE encoded string containing the text to be added.
1134*3ac0a46fSAndroid Build Coastguard Worker //
1135*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
1136*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
1137*3ac0a46fSAndroid Build Coastguard Worker FPDFText_SetText(FPDF_PAGEOBJECT text_object, FPDF_WIDESTRING text);
1138*3ac0a46fSAndroid Build Coastguard Worker 
1139*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1140*3ac0a46fSAndroid Build Coastguard Worker // Set the text using charcodes for a text object. If it had text, it will be
1141*3ac0a46fSAndroid Build Coastguard Worker // replaced.
1142*3ac0a46fSAndroid Build Coastguard Worker //
1143*3ac0a46fSAndroid Build Coastguard Worker // text_object  - handle to the text object.
1144*3ac0a46fSAndroid Build Coastguard Worker // charcodes    - pointer to an array of charcodes to be added.
1145*3ac0a46fSAndroid Build Coastguard Worker // count        - number of elements in |charcodes|.
1146*3ac0a46fSAndroid Build Coastguard Worker //
1147*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success
1148*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
1149*3ac0a46fSAndroid Build Coastguard Worker FPDFText_SetCharcodes(FPDF_PAGEOBJECT text_object,
1150*3ac0a46fSAndroid Build Coastguard Worker                       const uint32_t* charcodes,
1151*3ac0a46fSAndroid Build Coastguard Worker                       size_t count);
1152*3ac0a46fSAndroid Build Coastguard Worker 
1153*3ac0a46fSAndroid Build Coastguard Worker // Returns a font object loaded from a stream of data. The font is loaded
1154*3ac0a46fSAndroid Build Coastguard Worker // into the document.
1155*3ac0a46fSAndroid Build Coastguard Worker //
1156*3ac0a46fSAndroid Build Coastguard Worker // document   - handle to the document.
1157*3ac0a46fSAndroid Build Coastguard Worker // data       - the stream of data, which will be copied by the font object.
1158*3ac0a46fSAndroid Build Coastguard Worker // size       - size of the stream, in bytes.
1159*3ac0a46fSAndroid Build Coastguard Worker // font_type  - FPDF_FONT_TYPE1 or FPDF_FONT_TRUETYPE depending on the font
1160*3ac0a46fSAndroid Build Coastguard Worker // type.
1161*3ac0a46fSAndroid Build Coastguard Worker // cid        - a boolean specifying if the font is a CID font or not.
1162*3ac0a46fSAndroid Build Coastguard Worker //
1163*3ac0a46fSAndroid Build Coastguard Worker // The loaded font can be closed using FPDFFont_Close.
1164*3ac0a46fSAndroid Build Coastguard Worker //
1165*3ac0a46fSAndroid Build Coastguard Worker // Returns NULL on failure
1166*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_FONT FPDF_CALLCONV FPDFText_LoadFont(FPDF_DOCUMENT document,
1167*3ac0a46fSAndroid Build Coastguard Worker                                                       const uint8_t* data,
1168*3ac0a46fSAndroid Build Coastguard Worker                                                       uint32_t size,
1169*3ac0a46fSAndroid Build Coastguard Worker                                                       int font_type,
1170*3ac0a46fSAndroid Build Coastguard Worker                                                       FPDF_BOOL cid);
1171*3ac0a46fSAndroid Build Coastguard Worker 
1172*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1173*3ac0a46fSAndroid Build Coastguard Worker // Loads one of the standard 14 fonts per PDF spec 1.7 page 416. The preferred
1174*3ac0a46fSAndroid Build Coastguard Worker // way of using font style is using a dash to separate the name from the style,
1175*3ac0a46fSAndroid Build Coastguard Worker // for example 'Helvetica-BoldItalic'.
1176*3ac0a46fSAndroid Build Coastguard Worker //
1177*3ac0a46fSAndroid Build Coastguard Worker // document   - handle to the document.
1178*3ac0a46fSAndroid Build Coastguard Worker // font       - string containing the font name, without spaces.
1179*3ac0a46fSAndroid Build Coastguard Worker //
1180*3ac0a46fSAndroid Build Coastguard Worker // The loaded font can be closed using FPDFFont_Close.
1181*3ac0a46fSAndroid Build Coastguard Worker //
1182*3ac0a46fSAndroid Build Coastguard Worker // Returns NULL on failure.
1183*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_FONT FPDF_CALLCONV
1184*3ac0a46fSAndroid Build Coastguard Worker FPDFText_LoadStandardFont(FPDF_DOCUMENT document, FPDF_BYTESTRING font);
1185*3ac0a46fSAndroid Build Coastguard Worker 
1186*3ac0a46fSAndroid Build Coastguard Worker // Get the font size of a text object.
1187*3ac0a46fSAndroid Build Coastguard Worker //
1188*3ac0a46fSAndroid Build Coastguard Worker //   text - handle to a text.
1189*3ac0a46fSAndroid Build Coastguard Worker //   size - pointer to the font size of the text object, measured in points
1190*3ac0a46fSAndroid Build Coastguard Worker //   (about 1/72 inch)
1191*3ac0a46fSAndroid Build Coastguard Worker //
1192*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
1193*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
1194*3ac0a46fSAndroid Build Coastguard Worker FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text, float* size);
1195*3ac0a46fSAndroid Build Coastguard Worker 
1196*3ac0a46fSAndroid Build Coastguard Worker // Close a loaded PDF font.
1197*3ac0a46fSAndroid Build Coastguard Worker //
1198*3ac0a46fSAndroid Build Coastguard Worker // font   - Handle to the loaded font.
1199*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFFont_Close(FPDF_FONT font);
1200*3ac0a46fSAndroid Build Coastguard Worker 
1201*3ac0a46fSAndroid Build Coastguard Worker // Create a new text object using a loaded font.
1202*3ac0a46fSAndroid Build Coastguard Worker //
1203*3ac0a46fSAndroid Build Coastguard Worker // document   - handle to the document.
1204*3ac0a46fSAndroid Build Coastguard Worker // font       - handle to the font object.
1205*3ac0a46fSAndroid Build Coastguard Worker // font_size  - the font size for the new text object.
1206*3ac0a46fSAndroid Build Coastguard Worker //
1207*3ac0a46fSAndroid Build Coastguard Worker // Returns a handle to a new text object, or NULL on failure
1208*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV
1209*3ac0a46fSAndroid Build Coastguard Worker FPDFPageObj_CreateTextObj(FPDF_DOCUMENT document,
1210*3ac0a46fSAndroid Build Coastguard Worker                           FPDF_FONT font,
1211*3ac0a46fSAndroid Build Coastguard Worker                           float font_size);
1212*3ac0a46fSAndroid Build Coastguard Worker 
1213*3ac0a46fSAndroid Build Coastguard Worker // Get the text rendering mode of a text object.
1214*3ac0a46fSAndroid Build Coastguard Worker //
1215*3ac0a46fSAndroid Build Coastguard Worker // text     - the handle to the text object.
1216*3ac0a46fSAndroid Build Coastguard Worker //
1217*3ac0a46fSAndroid Build Coastguard Worker // Returns one of the known FPDF_TEXT_RENDERMODE enum values on success,
1218*3ac0a46fSAndroid Build Coastguard Worker // FPDF_TEXTRENDERMODE_UNKNOWN on error.
1219*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_TEXT_RENDERMODE FPDF_CALLCONV
1220*3ac0a46fSAndroid Build Coastguard Worker FPDFTextObj_GetTextRenderMode(FPDF_PAGEOBJECT text);
1221*3ac0a46fSAndroid Build Coastguard Worker 
1222*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1223*3ac0a46fSAndroid Build Coastguard Worker // Set the text rendering mode of a text object.
1224*3ac0a46fSAndroid Build Coastguard Worker //
1225*3ac0a46fSAndroid Build Coastguard Worker // text         - the handle to the text object.
1226*3ac0a46fSAndroid Build Coastguard Worker // render_mode  - the FPDF_TEXT_RENDERMODE enum value to be set (cannot set to
1227*3ac0a46fSAndroid Build Coastguard Worker //                FPDF_TEXTRENDERMODE_UNKNOWN).
1228*3ac0a46fSAndroid Build Coastguard Worker //
1229*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success.
1230*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
1231*3ac0a46fSAndroid Build Coastguard Worker FPDFTextObj_SetTextRenderMode(FPDF_PAGEOBJECT text,
1232*3ac0a46fSAndroid Build Coastguard Worker                               FPDF_TEXT_RENDERMODE render_mode);
1233*3ac0a46fSAndroid Build Coastguard Worker 
1234*3ac0a46fSAndroid Build Coastguard Worker // Get the text of a text object.
1235*3ac0a46fSAndroid Build Coastguard Worker //
1236*3ac0a46fSAndroid Build Coastguard Worker // text_object      - the handle to the text object.
1237*3ac0a46fSAndroid Build Coastguard Worker // text_page        - the handle to the text page.
1238*3ac0a46fSAndroid Build Coastguard Worker // buffer           - the address of a buffer that receives the text.
1239*3ac0a46fSAndroid Build Coastguard Worker // length           - the size, in bytes, of |buffer|.
1240*3ac0a46fSAndroid Build Coastguard Worker //
1241*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of bytes in the text (including the trailing NUL
1242*3ac0a46fSAndroid Build Coastguard Worker // character) on success, 0 on error.
1243*3ac0a46fSAndroid Build Coastguard Worker //
1244*3ac0a46fSAndroid Build Coastguard Worker // Regardless of the platform, the |buffer| is always in UTF-16LE encoding.
1245*3ac0a46fSAndroid Build Coastguard Worker // If |length| is less than the returned length, or |buffer| is NULL, |buffer|
1246*3ac0a46fSAndroid Build Coastguard Worker // will not be modified.
1247*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
1248*3ac0a46fSAndroid Build Coastguard Worker FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object,
1249*3ac0a46fSAndroid Build Coastguard Worker                     FPDF_TEXTPAGE text_page,
1250*3ac0a46fSAndroid Build Coastguard Worker                     FPDF_WCHAR* buffer,
1251*3ac0a46fSAndroid Build Coastguard Worker                     unsigned long length);
1252*3ac0a46fSAndroid Build Coastguard Worker 
1253*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1254*3ac0a46fSAndroid Build Coastguard Worker // Get a bitmap rasterization of |text_object|. To render correctly, the caller
1255*3ac0a46fSAndroid Build Coastguard Worker // must provide the |document| associated with |text_object|. If there is a
1256*3ac0a46fSAndroid Build Coastguard Worker // |page| associated with |text_object|, the caller should provide that as well.
1257*3ac0a46fSAndroid Build Coastguard Worker // The returned bitmap will be owned by the caller, and FPDFBitmap_Destroy()
1258*3ac0a46fSAndroid Build Coastguard Worker // must be called on the returned bitmap when it is no longer needed.
1259*3ac0a46fSAndroid Build Coastguard Worker //
1260*3ac0a46fSAndroid Build Coastguard Worker //   document    - handle to a document associated with |text_object|.
1261*3ac0a46fSAndroid Build Coastguard Worker //   page        - handle to an optional page associated with |text_object|.
1262*3ac0a46fSAndroid Build Coastguard Worker //   text_object - handle to a text object.
1263*3ac0a46fSAndroid Build Coastguard Worker //   scale       - the scaling factor, which must be greater than 0.
1264*3ac0a46fSAndroid Build Coastguard Worker //
1265*3ac0a46fSAndroid Build Coastguard Worker // Returns the bitmap or NULL on failure.
1266*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV
1267*3ac0a46fSAndroid Build Coastguard Worker FPDFTextObj_GetRenderedBitmap(FPDF_DOCUMENT document,
1268*3ac0a46fSAndroid Build Coastguard Worker                               FPDF_PAGE page,
1269*3ac0a46fSAndroid Build Coastguard Worker                               FPDF_PAGEOBJECT text_object,
1270*3ac0a46fSAndroid Build Coastguard Worker                               float scale);
1271*3ac0a46fSAndroid Build Coastguard Worker 
1272*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1273*3ac0a46fSAndroid Build Coastguard Worker // Get the font of a text object.
1274*3ac0a46fSAndroid Build Coastguard Worker //
1275*3ac0a46fSAndroid Build Coastguard Worker // text - the handle to the text object.
1276*3ac0a46fSAndroid Build Coastguard Worker //
1277*3ac0a46fSAndroid Build Coastguard Worker // Returns a handle to the font object held by |text| which retains ownership.
1278*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_FONT FPDF_CALLCONV FPDFTextObj_GetFont(FPDF_PAGEOBJECT text);
1279*3ac0a46fSAndroid Build Coastguard Worker 
1280*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1281*3ac0a46fSAndroid Build Coastguard Worker // Get the font name of a font.
1282*3ac0a46fSAndroid Build Coastguard Worker //
1283*3ac0a46fSAndroid Build Coastguard Worker // font   - the handle to the font object.
1284*3ac0a46fSAndroid Build Coastguard Worker // buffer - the address of a buffer that receives the font name.
1285*3ac0a46fSAndroid Build Coastguard Worker // length - the size, in bytes, of |buffer|.
1286*3ac0a46fSAndroid Build Coastguard Worker //
1287*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of bytes in the font name (including the trailing NUL
1288*3ac0a46fSAndroid Build Coastguard Worker // character) on success, 0 on error.
1289*3ac0a46fSAndroid Build Coastguard Worker //
1290*3ac0a46fSAndroid Build Coastguard Worker // Regardless of the platform, the |buffer| is always in UTF-8 encoding.
1291*3ac0a46fSAndroid Build Coastguard Worker // If |length| is less than the returned length, or |buffer| is NULL, |buffer|
1292*3ac0a46fSAndroid Build Coastguard Worker // will not be modified.
1293*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
1294*3ac0a46fSAndroid Build Coastguard Worker FPDFFont_GetFontName(FPDF_FONT font, char* buffer, unsigned long length);
1295*3ac0a46fSAndroid Build Coastguard Worker 
1296*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1297*3ac0a46fSAndroid Build Coastguard Worker // Get the decoded data from the |font| object.
1298*3ac0a46fSAndroid Build Coastguard Worker //
1299*3ac0a46fSAndroid Build Coastguard Worker // font       - The handle to the font object. (Required)
1300*3ac0a46fSAndroid Build Coastguard Worker // buffer     - The address of a buffer that receives the font data.
1301*3ac0a46fSAndroid Build Coastguard Worker // buflen     - Length of the buffer.
1302*3ac0a46fSAndroid Build Coastguard Worker // out_buflen - Pointer to variable that will receive the minimum buffer size
1303*3ac0a46fSAndroid Build Coastguard Worker //              to contain the font data. Not filled if the return value is
1304*3ac0a46fSAndroid Build Coastguard Worker //              FALSE. (Required)
1305*3ac0a46fSAndroid Build Coastguard Worker //
1306*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success. In which case, |out_buflen| will be filled, and
1307*3ac0a46fSAndroid Build Coastguard Worker // |buffer| will be filled if it is large enough. Returns FALSE if any of the
1308*3ac0a46fSAndroid Build Coastguard Worker // required parameters are null.
1309*3ac0a46fSAndroid Build Coastguard Worker //
1310*3ac0a46fSAndroid Build Coastguard Worker // The decoded data is the uncompressed font data. i.e. the raw font data after
1311*3ac0a46fSAndroid Build Coastguard Worker // having all stream filters applied, when the data is embedded.
1312*3ac0a46fSAndroid Build Coastguard Worker //
1313*3ac0a46fSAndroid Build Coastguard Worker // If the font is not embedded, then this API will instead return the data for
1314*3ac0a46fSAndroid Build Coastguard Worker // the substitution font it is using.
1315*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFFont_GetFontData(FPDF_FONT font,
1316*3ac0a46fSAndroid Build Coastguard Worker                                                          uint8_t* buffer,
1317*3ac0a46fSAndroid Build Coastguard Worker                                                          size_t buflen,
1318*3ac0a46fSAndroid Build Coastguard Worker                                                          size_t* out_buflen);
1319*3ac0a46fSAndroid Build Coastguard Worker 
1320*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1321*3ac0a46fSAndroid Build Coastguard Worker // Get whether |font| is embedded or not.
1322*3ac0a46fSAndroid Build Coastguard Worker //
1323*3ac0a46fSAndroid Build Coastguard Worker // font - the handle to the font object.
1324*3ac0a46fSAndroid Build Coastguard Worker //
1325*3ac0a46fSAndroid Build Coastguard Worker // Returns 1 if the font is embedded, 0 if it not, and -1 on failure.
1326*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFFont_GetIsEmbedded(FPDF_FONT font);
1327*3ac0a46fSAndroid Build Coastguard Worker 
1328*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1329*3ac0a46fSAndroid Build Coastguard Worker // Get the descriptor flags of a font.
1330*3ac0a46fSAndroid Build Coastguard Worker //
1331*3ac0a46fSAndroid Build Coastguard Worker // font - the handle to the font object.
1332*3ac0a46fSAndroid Build Coastguard Worker //
1333*3ac0a46fSAndroid Build Coastguard Worker // Returns the bit flags specifying various characteristics of the font as
1334*3ac0a46fSAndroid Build Coastguard Worker // defined in ISO 32000-1:2008, table 123, -1 on failure.
1335*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFFont_GetFlags(FPDF_FONT font);
1336*3ac0a46fSAndroid Build Coastguard Worker 
1337*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1338*3ac0a46fSAndroid Build Coastguard Worker // Get the font weight of a font.
1339*3ac0a46fSAndroid Build Coastguard Worker //
1340*3ac0a46fSAndroid Build Coastguard Worker // font - the handle to the font object.
1341*3ac0a46fSAndroid Build Coastguard Worker //
1342*3ac0a46fSAndroid Build Coastguard Worker // Returns the font weight, -1 on failure.
1343*3ac0a46fSAndroid Build Coastguard Worker // Typical values are 400 (normal) and 700 (bold).
1344*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFFont_GetWeight(FPDF_FONT font);
1345*3ac0a46fSAndroid Build Coastguard Worker 
1346*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1347*3ac0a46fSAndroid Build Coastguard Worker // Get the italic angle of a font.
1348*3ac0a46fSAndroid Build Coastguard Worker //
1349*3ac0a46fSAndroid Build Coastguard Worker // font  - the handle to the font object.
1350*3ac0a46fSAndroid Build Coastguard Worker // angle - pointer where the italic angle will be stored
1351*3ac0a46fSAndroid Build Coastguard Worker //
1352*3ac0a46fSAndroid Build Coastguard Worker // The italic angle of a |font| is defined as degrees counterclockwise
1353*3ac0a46fSAndroid Build Coastguard Worker // from vertical. For a font that slopes to the right, this will be negative.
1354*3ac0a46fSAndroid Build Coastguard Worker //
1355*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success; |angle| unmodified on failure.
1356*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFFont_GetItalicAngle(FPDF_FONT font,
1357*3ac0a46fSAndroid Build Coastguard Worker                                                             int* angle);
1358*3ac0a46fSAndroid Build Coastguard Worker 
1359*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1360*3ac0a46fSAndroid Build Coastguard Worker // Get ascent distance of a font.
1361*3ac0a46fSAndroid Build Coastguard Worker //
1362*3ac0a46fSAndroid Build Coastguard Worker // font       - the handle to the font object.
1363*3ac0a46fSAndroid Build Coastguard Worker // font_size  - the size of the |font|.
1364*3ac0a46fSAndroid Build Coastguard Worker // ascent     - pointer where the font ascent will be stored
1365*3ac0a46fSAndroid Build Coastguard Worker //
1366*3ac0a46fSAndroid Build Coastguard Worker // Ascent is the maximum distance in points above the baseline reached by the
1367*3ac0a46fSAndroid Build Coastguard Worker // glyphs of the |font|. One point is 1/72 inch (around 0.3528 mm).
1368*3ac0a46fSAndroid Build Coastguard Worker //
1369*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success; |ascent| unmodified on failure.
1370*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFFont_GetAscent(FPDF_FONT font,
1371*3ac0a46fSAndroid Build Coastguard Worker                                                        float font_size,
1372*3ac0a46fSAndroid Build Coastguard Worker                                                        float* ascent);
1373*3ac0a46fSAndroid Build Coastguard Worker 
1374*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1375*3ac0a46fSAndroid Build Coastguard Worker // Get descent distance of a font.
1376*3ac0a46fSAndroid Build Coastguard Worker //
1377*3ac0a46fSAndroid Build Coastguard Worker // font       - the handle to the font object.
1378*3ac0a46fSAndroid Build Coastguard Worker // font_size  - the size of the |font|.
1379*3ac0a46fSAndroid Build Coastguard Worker // descent    - pointer where the font descent will be stored
1380*3ac0a46fSAndroid Build Coastguard Worker //
1381*3ac0a46fSAndroid Build Coastguard Worker // Descent is the maximum distance in points below the baseline reached by the
1382*3ac0a46fSAndroid Build Coastguard Worker // glyphs of the |font|. One point is 1/72 inch (around 0.3528 mm).
1383*3ac0a46fSAndroid Build Coastguard Worker //
1384*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success; |descent| unmodified on failure.
1385*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFFont_GetDescent(FPDF_FONT font,
1386*3ac0a46fSAndroid Build Coastguard Worker                                                         float font_size,
1387*3ac0a46fSAndroid Build Coastguard Worker                                                         float* descent);
1388*3ac0a46fSAndroid Build Coastguard Worker 
1389*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1390*3ac0a46fSAndroid Build Coastguard Worker // Get the width of a glyph in a font.
1391*3ac0a46fSAndroid Build Coastguard Worker //
1392*3ac0a46fSAndroid Build Coastguard Worker // font       - the handle to the font object.
1393*3ac0a46fSAndroid Build Coastguard Worker // glyph      - the glyph.
1394*3ac0a46fSAndroid Build Coastguard Worker // font_size  - the size of the font.
1395*3ac0a46fSAndroid Build Coastguard Worker // width      - pointer where the glyph width will be stored
1396*3ac0a46fSAndroid Build Coastguard Worker //
1397*3ac0a46fSAndroid Build Coastguard Worker // Glyph width is the distance from the end of the prior glyph to the next
1398*3ac0a46fSAndroid Build Coastguard Worker // glyph. This will be the vertical distance for vertical writing.
1399*3ac0a46fSAndroid Build Coastguard Worker //
1400*3ac0a46fSAndroid Build Coastguard Worker // Returns TRUE on success; |width| unmodified on failure.
1401*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFFont_GetGlyphWidth(FPDF_FONT font,
1402*3ac0a46fSAndroid Build Coastguard Worker                                                            uint32_t glyph,
1403*3ac0a46fSAndroid Build Coastguard Worker                                                            float font_size,
1404*3ac0a46fSAndroid Build Coastguard Worker                                                            float* width);
1405*3ac0a46fSAndroid Build Coastguard Worker 
1406*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1407*3ac0a46fSAndroid Build Coastguard Worker // Get the glyphpath describing how to draw a font glyph.
1408*3ac0a46fSAndroid Build Coastguard Worker //
1409*3ac0a46fSAndroid Build Coastguard Worker // font       - the handle to the font object.
1410*3ac0a46fSAndroid Build Coastguard Worker // glyph      - the glyph being drawn.
1411*3ac0a46fSAndroid Build Coastguard Worker // font_size  - the size of the font.
1412*3ac0a46fSAndroid Build Coastguard Worker //
1413*3ac0a46fSAndroid Build Coastguard Worker // Returns the handle to the segment, or NULL on faiure.
1414*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_GLYPHPATH FPDF_CALLCONV FPDFFont_GetGlyphPath(FPDF_FONT font,
1415*3ac0a46fSAndroid Build Coastguard Worker                                                                uint32_t glyph,
1416*3ac0a46fSAndroid Build Coastguard Worker                                                                float font_size);
1417*3ac0a46fSAndroid Build Coastguard Worker 
1418*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1419*3ac0a46fSAndroid Build Coastguard Worker // Get number of segments inside glyphpath.
1420*3ac0a46fSAndroid Build Coastguard Worker //
1421*3ac0a46fSAndroid Build Coastguard Worker // glyphpath - handle to a glyph path.
1422*3ac0a46fSAndroid Build Coastguard Worker //
1423*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of objects in |glyphpath| or -1 on failure.
1424*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
1425*3ac0a46fSAndroid Build Coastguard Worker FPDFGlyphPath_CountGlyphSegments(FPDF_GLYPHPATH glyphpath);
1426*3ac0a46fSAndroid Build Coastguard Worker 
1427*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1428*3ac0a46fSAndroid Build Coastguard Worker // Get segment in glyphpath at index.
1429*3ac0a46fSAndroid Build Coastguard Worker //
1430*3ac0a46fSAndroid Build Coastguard Worker // glyphpath  - handle to a glyph path.
1431*3ac0a46fSAndroid Build Coastguard Worker // index      - the index of a segment.
1432*3ac0a46fSAndroid Build Coastguard Worker //
1433*3ac0a46fSAndroid Build Coastguard Worker // Returns the handle to the segment, or NULL on faiure.
1434*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PATHSEGMENT FPDF_CALLCONV
1435*3ac0a46fSAndroid Build Coastguard Worker FPDFGlyphPath_GetGlyphPathSegment(FPDF_GLYPHPATH glyphpath, int index);
1436*3ac0a46fSAndroid Build Coastguard Worker 
1437*3ac0a46fSAndroid Build Coastguard Worker // Get number of page objects inside |form_object|.
1438*3ac0a46fSAndroid Build Coastguard Worker //
1439*3ac0a46fSAndroid Build Coastguard Worker //   form_object - handle to a form object.
1440*3ac0a46fSAndroid Build Coastguard Worker //
1441*3ac0a46fSAndroid Build Coastguard Worker // Returns the number of objects in |form_object| on success, -1 on error.
1442*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
1443*3ac0a46fSAndroid Build Coastguard Worker FPDFFormObj_CountObjects(FPDF_PAGEOBJECT form_object);
1444*3ac0a46fSAndroid Build Coastguard Worker 
1445*3ac0a46fSAndroid Build Coastguard Worker // Get page object in |form_object| at |index|.
1446*3ac0a46fSAndroid Build Coastguard Worker //
1447*3ac0a46fSAndroid Build Coastguard Worker //   form_object - handle to a form object.
1448*3ac0a46fSAndroid Build Coastguard Worker //   index       - the 0-based index of a page object.
1449*3ac0a46fSAndroid Build Coastguard Worker //
1450*3ac0a46fSAndroid Build Coastguard Worker // Returns the handle to the page object, or NULL on error.
1451*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV
1452*3ac0a46fSAndroid Build Coastguard Worker FPDFFormObj_GetObject(FPDF_PAGEOBJECT form_object, unsigned long index);
1453*3ac0a46fSAndroid Build Coastguard Worker 
1454*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus
1455*3ac0a46fSAndroid Build Coastguard Worker }  // extern "C"
1456*3ac0a46fSAndroid Build Coastguard Worker #endif  // __cplusplus
1457*3ac0a46fSAndroid Build Coastguard Worker 
1458*3ac0a46fSAndroid Build Coastguard Worker #endif  // PUBLIC_FPDF_EDIT_H_
1459