blob: 2a44e45bc83730eaec240daa28f5c8a3d796466e [file] [log] [blame]
Jane Liu4fd9a472017-06-01 18:56:09 -04001// Copyright 2017 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Jane Liu4fd9a472017-06-01 18:56:09 -04005#ifndef PUBLIC_FPDF_ANNOT_H_
6#define PUBLIC_FPDF_ANNOT_H_
7
8// NOLINTNEXTLINE(build/include)
9#include "fpdfview.h"
10
Jane Liuc5ea6302017-07-18 19:31:42 -040011#include "fpdf_doc.h"
Jane Liu4fd9a472017-06-01 18:56:09 -040012
13#ifdef __cplusplus
14extern "C" {
15#endif // __cplusplus
16
17#define FPDF_ANNOT_UNKNOWN 0
18#define FPDF_ANNOT_TEXT 1
19#define FPDF_ANNOT_LINK 2
20#define FPDF_ANNOT_FREETEXT 3
21#define FPDF_ANNOT_LINE 4
22#define FPDF_ANNOT_SQUARE 5
23#define FPDF_ANNOT_CIRCLE 6
24#define FPDF_ANNOT_POLYGON 7
25#define FPDF_ANNOT_POLYLINE 8
26#define FPDF_ANNOT_HIGHLIGHT 9
27#define FPDF_ANNOT_UNDERLINE 10
28#define FPDF_ANNOT_SQUIGGLY 11
29#define FPDF_ANNOT_STRIKEOUT 12
30#define FPDF_ANNOT_STAMP 13
31#define FPDF_ANNOT_CARET 14
32#define FPDF_ANNOT_INK 15
33#define FPDF_ANNOT_POPUP 16
34#define FPDF_ANNOT_FILEATTACHMENT 17
35#define FPDF_ANNOT_SOUND 18
36#define FPDF_ANNOT_MOVIE 19
37#define FPDF_ANNOT_WIDGET 20
38#define FPDF_ANNOT_SCREEN 21
39#define FPDF_ANNOT_PRINTERMARK 22
40#define FPDF_ANNOT_TRAPNET 23
41#define FPDF_ANNOT_WATERMARK 24
42#define FPDF_ANNOT_THREED 25
43#define FPDF_ANNOT_RICHMEDIA 26
44#define FPDF_ANNOT_XFAWIDGET 27
45
Jane Liub137e752017-07-05 15:04:33 -040046// Refer to PDF Reference (6th edition) table 8.16 for all annotation flags.
47#define FPDF_ANNOT_FLAG_NONE 0
48#define FPDF_ANNOT_FLAG_INVISIBLE (1 << 0)
49#define FPDF_ANNOT_FLAG_HIDDEN (1 << 1)
50#define FPDF_ANNOT_FLAG_PRINT (1 << 2)
51#define FPDF_ANNOT_FLAG_NOZOOM (1 << 3)
52#define FPDF_ANNOT_FLAG_NOROTATE (1 << 4)
53#define FPDF_ANNOT_FLAG_NOVIEW (1 << 5)
54#define FPDF_ANNOT_FLAG_READONLY (1 << 6)
55#define FPDF_ANNOT_FLAG_LOCKED (1 << 7)
56#define FPDF_ANNOT_FLAG_TOGGLENOVIEW (1 << 8)
57
Diana Gage7e0c05d2017-07-19 17:33:33 -070058#define FPDF_OBJECT_UNKNOWN 0
59#define FPDF_OBJECT_BOOLEAN 1
60#define FPDF_OBJECT_NUMBER 2
61#define FPDF_OBJECT_STRING 3
62#define FPDF_OBJECT_NAME 4
63#define FPDF_OBJECT_ARRAY 5
64#define FPDF_OBJECT_DICTIONARY 6
65#define FPDF_OBJECT_STREAM 7
66#define FPDF_OBJECT_NULLOBJ 8
67#define FPDF_OBJECT_REFERENCE 9
68
69// Refer to PDF Reference version 1.7 table 8.70 for field flags common to all
70// interactive form field types.
71#define FPDF_FORMFLAG_NONE 0
72#define FPDF_FORMFLAG_READONLY (1 << 0)
73#define FPDF_FORMFLAG_REQUIRED (1 << 1)
74#define FPDF_FORMFLAG_NOEXPORT (1 << 2)
75
76// Refer to PDF Reference version 1.7 table 8.77 for field flags specific to
77// interactive form text fields.
78#define FPDF_FORMFLAG_TEXT_MULTILINE (1 << 12)
79
80// Refer to PDF Reference version 1.7 table 8.79 for field flags specific to
81// interactive form choice fields.
82#define FPDF_FORMFLAG_CHOICE_COMBO (1 << 17)
83#define FPDF_FORMFLAG_CHOICE_EDIT (1 << 18)
84
Jane Liu20eafda2017-06-07 10:33:24 -040085typedef enum FPDFANNOT_COLORTYPE {
86 FPDFANNOT_COLORTYPE_Color = 0,
87 FPDFANNOT_COLORTYPE_InteriorColor
88} FPDFANNOT_COLORTYPE;
89
Jane Liu36567742017-07-06 11:13:35 -040090// Experimental API.
Jane Liubaa7ff42017-06-29 19:18:23 -040091// Check if an annotation subtype is currently supported for creation.
92// Currently supported subtypes: circle, highlight, ink, popup, square,
93// squiggly, stamp, strikeout, text, and underline.
Jane Liu20eafda2017-06-07 10:33:24 -040094//
95// subtype - the subtype to be checked.
96//
Jane Liu8ce58f52017-06-29 13:40:22 -040097// Returns true if this subtype supported.
Jane Liu20eafda2017-06-07 10:33:24 -040098DLLEXPORT FPDF_BOOL STDCALL
99FPDFAnnot_IsSupportedSubtype(FPDF_ANNOTATION_SUBTYPE subtype);
100
Jane Liu36567742017-07-06 11:13:35 -0400101// Experimental API.
Jane Liu20eafda2017-06-07 10:33:24 -0400102// Create an annotation in |page| of the subtype |subtype|. If the specified
103// subtype is illegal or unsupported, then a new annotation will not be created.
Jane Liubaa7ff42017-06-29 19:18:23 -0400104// Must call FPDFPage_CloseAnnot() when the annotation returned by this
105// function is no longer needed.
Jane Liu20eafda2017-06-07 10:33:24 -0400106//
107// page - handle to a page.
108// subtype - the subtype of the new annotation.
Jane Liu20eafda2017-06-07 10:33:24 -0400109//
Jane Liud60e9ad2017-06-26 11:28:36 -0400110// Returns a handle to the new annotation object, or NULL on failure.
111DLLEXPORT FPDF_ANNOTATION STDCALL
112FPDFPage_CreateAnnot(FPDF_PAGE page, FPDF_ANNOTATION_SUBTYPE subtype);
Jane Liu20eafda2017-06-07 10:33:24 -0400113
Jane Liu36567742017-07-06 11:13:35 -0400114// Experimental API.
Jane Liu4fd9a472017-06-01 18:56:09 -0400115// Get the number of annotations in |page|.
116//
117// page - handle to a page.
118//
119// Returns the number of annotations in |page|.
120DLLEXPORT int STDCALL FPDFPage_GetAnnotCount(FPDF_PAGE page);
121
Jane Liu36567742017-07-06 11:13:35 -0400122// Experimental API.
Jane Liubaa7ff42017-06-29 19:18:23 -0400123// Get annotation in |page| at |index|. Must call FPDFPage_CloseAnnot() when the
124// annotation returned by this function is no longer needed.
Jane Liu4fd9a472017-06-01 18:56:09 -0400125//
126// page - handle to a page.
127// index - the index of the annotation.
Jane Liu4fd9a472017-06-01 18:56:09 -0400128//
Jane Liud60e9ad2017-06-26 11:28:36 -0400129// Returns a handle to the annotation object, or NULL on failure.
130DLLEXPORT FPDF_ANNOTATION STDCALL FPDFPage_GetAnnot(FPDF_PAGE page, int index);
Jane Liu4fd9a472017-06-01 18:56:09 -0400131
Jane Liu36567742017-07-06 11:13:35 -0400132// Experimental API.
Jane Liue10509a2017-06-20 16:47:41 -0400133// Close an annotation. Must be called when the annotation returned by
134// FPDFPage_CreateAnnot() or FPDFPage_GetAnnot() is no longer needed. This
135// function does not remove the annotation from the document.
136//
137// annot - handle to an annotation.
138DLLEXPORT void STDCALL FPDFPage_CloseAnnot(FPDF_ANNOTATION annot);
139
Jane Liu36567742017-07-06 11:13:35 -0400140// Experimental API.
Jane Liu8ce58f52017-06-29 13:40:22 -0400141// Remove the annotation in |page| at |index|.
142//
143// page - handle to a page.
144// index - the index of the annotation.
145//
146// Returns true if successful.
147DLLEXPORT FPDF_BOOL STDCALL FPDFPage_RemoveAnnot(FPDF_PAGE page, int index);
148
Jane Liu36567742017-07-06 11:13:35 -0400149// Experimental API.
Jane Liu4fd9a472017-06-01 18:56:09 -0400150// Get the subtype of an annotation.
151//
152// annot - handle to an annotation.
153//
154// Returns the annotation subtype.
155DLLEXPORT FPDF_ANNOTATION_SUBTYPE STDCALL
156FPDFAnnot_GetSubtype(FPDF_ANNOTATION annot);
157
Jane Liubaa7ff42017-06-29 19:18:23 -0400158// Experimental API.
Jane Liu7a9a38b2017-07-11 13:47:37 -0400159// Check if an annotation subtype is currently supported for object extraction,
160// update, and removal.
161// Currently supported subtypes: ink and stamp.
162//
163// subtype - the subtype to be checked.
164//
165// Returns true if this subtype supported.
166DLLEXPORT FPDF_BOOL STDCALL
167FPDFAnnot_IsObjectSupportedSubtype(FPDF_ANNOTATION_SUBTYPE subtype);
168
169// Experimental API.
Jane Liu36567742017-07-06 11:13:35 -0400170// Update |obj| in |annot|. |obj| must be in |annot| already and must have
171// been retrieved by FPDFAnnot_GetObject(). Currently, only ink and stamp
172// annotations are supported by this API. Also note that only path, image, and
173// text objects have APIs for modification; see FPDFPath_*(), FPDFText_*(), and
174// FPDFImageObj_*().
Jane Liubaa7ff42017-06-29 19:18:23 -0400175//
176// annot - handle to an annotation.
Jane Liu36567742017-07-06 11:13:35 -0400177// obj - handle to the object that |annot| needs to update.
Jane Liubaa7ff42017-06-29 19:18:23 -0400178//
179// Return true if successful.
Jane Liu36567742017-07-06 11:13:35 -0400180DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_UpdateObject(FPDF_ANNOTATION annot,
181 FPDF_PAGEOBJECT obj);
Jane Liubaa7ff42017-06-29 19:18:23 -0400182
183// Experimental API.
Jane Liu36567742017-07-06 11:13:35 -0400184// Add |obj| to |annot|. |obj| must have been created by
185// FPDFPageObj_CreateNew{Path|Rect}() or FPDFPageObj_New{Text|Image}Obj(), and
186// will be owned by |annot|. Note that an |obj| cannot belong to more than one
187// |annot|. Currently, only ink and stamp annotations are supported by this API.
188// Also note that only path, image, and text objects have APIs for creation.
Jane Liubaa7ff42017-06-29 19:18:23 -0400189//
190// annot - handle to an annotation.
Jane Liu36567742017-07-06 11:13:35 -0400191// obj - handle to the object that is to be added to |annot|.
Jane Liubaa7ff42017-06-29 19:18:23 -0400192//
193// Return true if successful.
Jane Liu36567742017-07-06 11:13:35 -0400194DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_AppendObject(FPDF_ANNOTATION annot,
195 FPDF_PAGEOBJECT obj);
Jane Liubaa7ff42017-06-29 19:18:23 -0400196
197// Experimental API.
Jane Liu36567742017-07-06 11:13:35 -0400198// Get the total number of objects in |annot|, including path objects, text
199// objects, external objects, image objects, and shading objects.
Jane Liubaa7ff42017-06-29 19:18:23 -0400200//
201// annot - handle to an annotation.
202//
Jane Liu36567742017-07-06 11:13:35 -0400203// Returns the number of objects in |annot|.
204DLLEXPORT int STDCALL FPDFAnnot_GetObjectCount(FPDF_ANNOTATION annot);
Jane Liubaa7ff42017-06-29 19:18:23 -0400205
206// Experimental API.
Jane Liu36567742017-07-06 11:13:35 -0400207// Get the object in |annot| at |index|.
Jane Liubaa7ff42017-06-29 19:18:23 -0400208//
209// annot - handle to an annotation.
Jane Liu36567742017-07-06 11:13:35 -0400210// index - the index of the object.
Jane Liubaa7ff42017-06-29 19:18:23 -0400211//
Jane Liu36567742017-07-06 11:13:35 -0400212// Return a handle to the object, or NULL on failure.
213DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFAnnot_GetObject(FPDF_ANNOTATION annot,
214 int index);
Jane Liubaa7ff42017-06-29 19:18:23 -0400215
Jane Liu36567742017-07-06 11:13:35 -0400216// Experimental API.
Jane Liu7a9a38b2017-07-11 13:47:37 -0400217// Remove the object in |annot| at |index|.
218//
219// annot - handle to an annotation.
220// index - the index of the object to be removed.
221//
222// Return true if successful.
223DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_RemoveObject(FPDF_ANNOTATION annot,
224 int index);
225
226// Experimental API.
Jane Liu06462752017-06-27 16:41:14 -0400227// Set the color of an annotation. Fails when called on annotations with
228// appearance streams already defined; instead use
229// FPDFPath_Set{Stroke|Fill}Color().
Jane Liu20eafda2017-06-07 10:33:24 -0400230//
231// annot - handle to an annotation.
232// type - type of the color to be set.
233// R, G, B - buffer to hold the RGB value of the color. Ranges from 0 to 255.
234// A - buffer to hold the opacity. Ranges from 0 to 255.
235//
Jane Liu8ce58f52017-06-29 13:40:22 -0400236// Returns true if successful.
Jane Liu20eafda2017-06-07 10:33:24 -0400237DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_SetColor(FPDF_ANNOTATION annot,
238 FPDFANNOT_COLORTYPE type,
239 unsigned int R,
240 unsigned int G,
241 unsigned int B,
242 unsigned int A);
Jane Liu4fd9a472017-06-01 18:56:09 -0400243
Jane Liu36567742017-07-06 11:13:35 -0400244// Experimental API.
Jane Liu4fd9a472017-06-01 18:56:09 -0400245// Get the color of an annotation. If no color is specified, default to yellow
Jane Liu06462752017-06-27 16:41:14 -0400246// for highlight annotation, black for all else. Fails when called on
247// annotations with appearance streams already defined; instead use
248// FPDFPath_Get{Stroke|Fill}Color().
Jane Liu4fd9a472017-06-01 18:56:09 -0400249//
Jane Liu20eafda2017-06-07 10:33:24 -0400250// annot - handle to an annotation.
251// type - type of the color requested.
Jane Liu4fd9a472017-06-01 18:56:09 -0400252// R, G, B - buffer to hold the RGB value of the color. Ranges from 0 to 255.
Jane Liu20eafda2017-06-07 10:33:24 -0400253// A - buffer to hold the opacity. Ranges from 0 to 255.
Jane Liu4fd9a472017-06-01 18:56:09 -0400254//
Jane Liu8ce58f52017-06-29 13:40:22 -0400255// Returns true if successful.
Jane Liu4fd9a472017-06-01 18:56:09 -0400256DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_GetColor(FPDF_ANNOTATION annot,
257 FPDFANNOT_COLORTYPE type,
258 unsigned int* R,
259 unsigned int* G,
260 unsigned int* B,
261 unsigned int* A);
262
Jane Liu36567742017-07-06 11:13:35 -0400263// Experimental API.
Jane Liu4fd9a472017-06-01 18:56:09 -0400264// Check if the annotation is of a type that has attachment points
265// (i.e. quadpoints). Quadpoints are the vertices of the rectange that
266// encompasses the texts affected by the annotation. They provide the
Jane Liu20eafda2017-06-07 10:33:24 -0400267// coordinates in the page where the annotation is attached. Only text markup
268// annotations (i.e. highlight, strikeout, squiggly, and underline) and link
269// annotations have quadpoints.
Jane Liu4fd9a472017-06-01 18:56:09 -0400270//
271// annot - handle to an annotation.
272//
273// Returns true if the annotation is of a type that has quadpoints, false
274// otherwise.
275DLLEXPORT FPDF_BOOL STDCALL
276FPDFAnnot_HasAttachmentPoints(FPDF_ANNOTATION annot);
277
Jane Liu36567742017-07-06 11:13:35 -0400278// Experimental API.
Jane Liu06462752017-06-27 16:41:14 -0400279// Set the attachment points (i.e. quadpoints) of an annotation. If the
280// annotation's appearance stream is defined and this annotation is of a type
281// with quadpoints, then update the bounding box too.
Jane Liu20eafda2017-06-07 10:33:24 -0400282//
283// annot - handle to an annotation.
284// quadPoints - the quadpoints to be set.
285//
Jane Liu8ce58f52017-06-29 13:40:22 -0400286// Returns true if successful.
Jane Liu20eafda2017-06-07 10:33:24 -0400287DLLEXPORT FPDF_BOOL STDCALL
Jane Liu06462752017-06-27 16:41:14 -0400288FPDFAnnot_SetAttachmentPoints(FPDF_ANNOTATION annot,
289 const FS_QUADPOINTSF* quadPoints);
Jane Liu20eafda2017-06-07 10:33:24 -0400290
Jane Liu36567742017-07-06 11:13:35 -0400291// Experimental API.
Jane Liu06462752017-06-27 16:41:14 -0400292// Get the attachment points (i.e. quadpoints) of an annotation. If the
293// annotation's appearance stream is defined and this annotation is of a type
294// with quadpoints, then return the bounding box it specifies instead.
Jane Liu4fd9a472017-06-01 18:56:09 -0400295//
Jane Liu20eafda2017-06-07 10:33:24 -0400296// annot - handle to an annotation.
Jane Liu4fd9a472017-06-01 18:56:09 -0400297//
Jane Liud60e9ad2017-06-26 11:28:36 -0400298// Returns a quadpoints object, or an empty set of quadpoints on failure.
299DLLEXPORT FS_QUADPOINTSF STDCALL
300FPDFAnnot_GetAttachmentPoints(FPDF_ANNOTATION annot);
Jane Liu4fd9a472017-06-01 18:56:09 -0400301
Jane Liu36567742017-07-06 11:13:35 -0400302// Experimental API.
Jane Liu06462752017-06-27 16:41:14 -0400303// Set the annotation rectangle defining the location of the annotation. If the
304// annotation's appearance stream is defined and this annotation is of a type
305// without quadpoints, then update the bounding box too.
Jane Liu20eafda2017-06-07 10:33:24 -0400306//
307// annot - handle to an annotation.
308// rect - the annotation rectangle to be set.
309//
Jane Liu8ce58f52017-06-29 13:40:22 -0400310// Returns true if successful.
Jane Liu20eafda2017-06-07 10:33:24 -0400311DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_SetRect(FPDF_ANNOTATION annot,
Jane Liu06462752017-06-27 16:41:14 -0400312 const FS_RECTF* rect);
Jane Liu20eafda2017-06-07 10:33:24 -0400313
Jane Liu36567742017-07-06 11:13:35 -0400314// Experimental API.
Jane Liu06462752017-06-27 16:41:14 -0400315// Get the annotation rectangle defining the location of the annotation. If the
316// annotation's appearance stream is defined and this annotation is of a type
317// without quadpoints, then return the bounding box it specifies instead.
Jane Liu4fd9a472017-06-01 18:56:09 -0400318//
319// annot - handle to an annotation.
Jane Liu4fd9a472017-06-01 18:56:09 -0400320//
Jane Liud60e9ad2017-06-26 11:28:36 -0400321// Returns a rectangle object, or an empty rectangle on failure.
322DLLEXPORT FS_RECTF STDCALL FPDFAnnot_GetRect(FPDF_ANNOTATION annot);
Jane Liu4fd9a472017-06-01 18:56:09 -0400323
Jane Liu36567742017-07-06 11:13:35 -0400324// Experimental API.
Jane Liu2e1a32b2017-07-06 12:01:25 -0400325// Check if |annot|'s dictionary has |key| as a key.
Jane Liu20eafda2017-06-07 10:33:24 -0400326//
327// annot - handle to an annotation.
Jane Liu2e1a32b2017-07-06 12:01:25 -0400328// key - the key to look for.
Jane Liu20eafda2017-06-07 10:33:24 -0400329//
Jane Liu2e1a32b2017-07-06 12:01:25 -0400330// Returns true if |key| exists.
331DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_HasKey(FPDF_ANNOTATION annot,
332 FPDF_WIDESTRING key);
Jane Liu4fd9a472017-06-01 18:56:09 -0400333
Jane Liu36567742017-07-06 11:13:35 -0400334// Experimental API.
Jane Liu57f228d2017-07-13 18:10:30 -0400335// Get the type of the value corresponding to |key| in |annot|'s dictionary.
Jane Liu4fd9a472017-06-01 18:56:09 -0400336//
337// annot - handle to an annotation.
Jane Liu2e1a32b2017-07-06 12:01:25 -0400338// key - the key to look for.
339//
340// Returns the type of the dictionary value.
341DLLEXPORT FPDF_OBJECT_TYPE STDCALL FPDFAnnot_GetValueType(FPDF_ANNOTATION annot,
342 FPDF_WIDESTRING key);
343
344// Experimental API.
345// Set the string value corresponding to |key| in |annot|'s dictionary,
346// overwriting the existing value if any. The value type would be
Jane Liu57f228d2017-07-13 18:10:30 -0400347// FPDF_OBJECT_STRING after this function call succeeds.
Jane Liu2e1a32b2017-07-06 12:01:25 -0400348//
349// annot - handle to an annotation.
350// key - the key to the dictionary entry to be set, encoded in UTF16-LE.
351// value - the string value to be set, encoded in UTF16-LE.
352//
353// Returns true if successful.
354DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_SetStringValue(FPDF_ANNOTATION annot,
355 FPDF_WIDESTRING key,
356 FPDF_WIDESTRING value);
357
358// Experimental API.
359// Get the string value corresponding to |key| in |annot|'s dictionary. |buffer|
360// is only modified if |buflen| is longer than the length of contents. Note that
361// if |key| does not exist in the dictionary or if |key|'s corresponding value
362// in the dictionary is not a string (i.e. the value is not of type
363// FPDF_OBJECT_STRING or FPDF_OBJECT_NAME), then an empty string would be copied
364// to |buffer| and the return value would be 2. On other errors, nothing would
365// be added to |buffer| and the return value would be 0.
366//
367// annot - handle to an annotation.
368// key - the key to the requested dictionary entry.
369// buffer - buffer for holding the value string, encoded in UTF16-LE.
Jane Liu4fd9a472017-06-01 18:56:09 -0400370// buflen - length of the buffer.
371//
Jane Liu2e1a32b2017-07-06 12:01:25 -0400372// Returns the length of the string value.
373DLLEXPORT unsigned long STDCALL FPDFAnnot_GetStringValue(FPDF_ANNOTATION annot,
374 FPDF_WIDESTRING key,
375 void* buffer,
376 unsigned long buflen);
Jane Liu4fd9a472017-06-01 18:56:09 -0400377
Jane Liub137e752017-07-05 15:04:33 -0400378// Experimental API.
379// Get the annotation flags of |annot|.
380//
381// annot - handle to an annotation.
382//
383// Returns the annotation flags.
384DLLEXPORT int STDCALL FPDFAnnot_GetFlags(FPDF_ANNOTATION annot);
385
386// Experimental API.
387// Set the |annot|'s flags to be of the value |flags|.
388//
389// annot - handle to an annotation.
390// flags - the flag values to be set.
391//
392// Returns true if successful.
393DLLEXPORT FPDF_BOOL STDCALL FPDFAnnot_SetFlags(FPDF_ANNOTATION annot,
394 int flags);
395
Diana Gage7e0c05d2017-07-19 17:33:33 -0700396// Experimental API.
397// Get the annotation flags of |annot|, which is an interactive form
398// annotation in |page|.
399//
400// page - handle to a page.
401// annot - handle to an interactive form annotation.
402//
403// Returns the annotation flags specific to interactive forms.
404DLLEXPORT int STDCALL FPDFAnnot_GetFormFieldFlags(FPDF_PAGE page,
405 FPDF_ANNOTATION annot);
406
Jane Liu4fd9a472017-06-01 18:56:09 -0400407#ifdef __cplusplus
408} // extern "C"
409#endif // __cplusplus
410
411#endif // PUBLIC_FPDF_ANNOT_H_