1d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Copyright 2017 PDFium Authors. All rights reserved.
2d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
3d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// found in the LICENSE file.
4d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
5d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#ifndef PUBLIC_FPDF_ANNOT_H_
6d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define PUBLIC_FPDF_ANNOT_H_
7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// NOLINTNEXTLINE(build/include)
9d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fpdfview.h"
10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// NOLINTNEXTLINE(build/include)
12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fpdf_doc.h"
13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// NOLINTNEXTLINE(build/include)
14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fpdf_formfill.h"
15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#ifdef __cplusplus
17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannextern "C" {
18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#endif  // __cplusplus
19d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
20d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_UNKNOWN 0
21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_TEXT 1
22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_LINK 2
23d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FREETEXT 3
24d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_LINE 4
25d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_SQUARE 5
26d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_CIRCLE 6
27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_POLYGON 7
28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_POLYLINE 8
29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_HIGHLIGHT 9
30d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_UNDERLINE 10
31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_SQUIGGLY 11
32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_STRIKEOUT 12
33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_STAMP 13
34d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_CARET 14
35d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_INK 15
36d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_POPUP 16
37d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FILEATTACHMENT 17
38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_SOUND 18
39d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_MOVIE 19
40d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_WIDGET 20
41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_SCREEN 21
42d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_PRINTERMARK 22
43d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_TRAPNET 23
44d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_WATERMARK 24
45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_THREED 25
46d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_RICHMEDIA 26
47d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_XFAWIDGET 27
48d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Refer to PDF Reference (6th edition) table 8.16 for all annotation flags.
50d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_NONE 0
51d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_INVISIBLE (1 << 0)
52d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_HIDDEN (1 << 1)
53d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_PRINT (1 << 2)
54d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_NOZOOM (1 << 3)
55d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_NOROTATE (1 << 4)
56d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_NOVIEW (1 << 5)
57d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_READONLY (1 << 6)
58d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_LOCKED (1 << 7)
59d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_FLAG_TOGGLENOVIEW (1 << 8)
60d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
61d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_APPEARANCEMODE_NORMAL 0
62d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_APPEARANCEMODE_ROLLOVER 1
63d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_APPEARANCEMODE_DOWN 2
64d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_ANNOT_APPEARANCEMODE_COUNT 3
65d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
66d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_UNKNOWN 0
67d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_BOOLEAN 1
68d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_NUMBER 2
69d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_STRING 3
70d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_NAME 4
71d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_ARRAY 5
72d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_DICTIONARY 6
73d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_STREAM 7
74d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_NULLOBJ 8
75d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_OBJECT_REFERENCE 9
76d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
77d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Refer to PDF Reference version 1.7 table 8.70 for field flags common to all
78d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// interactive form field types.
79d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_FORMFLAG_NONE 0
80d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_FORMFLAG_READONLY (1 << 0)
81d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_FORMFLAG_REQUIRED (1 << 1)
82d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_FORMFLAG_NOEXPORT (1 << 2)
83d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
84d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Refer to PDF Reference version 1.7 table 8.77 for field flags specific to
85d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// interactive form text fields.
86d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_FORMFLAG_TEXT_MULTILINE (1 << 12)
87d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
88d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Refer to PDF Reference version 1.7 table 8.79 for field flags specific to
89d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// interactive form choice fields.
90d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_FORMFLAG_CHOICE_COMBO (1 << 17)
91d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDF_FORMFLAG_CHOICE_EDIT (1 << 18)
92d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
93d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmanntypedef enum FPDFANNOT_COLORTYPE {
94d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  FPDFANNOT_COLORTYPE_Color = 0,
95d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  FPDFANNOT_COLORTYPE_InteriorColor
96d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} FPDFANNOT_COLORTYPE;
97d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
98d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
99d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Check if an annotation subtype is currently supported for creation.
100d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Currently supported subtypes: circle, highlight, ink, popup, square,
101d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// squiggly, stamp, strikeout, text, and underline.
102d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
103d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   subtype   - the subtype to be checked.
104d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
105d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if this subtype supported.
106d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
107d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_IsSupportedSubtype(FPDF_ANNOTATION_SUBTYPE subtype);
108d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
109d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
110d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Create an annotation in |page| of the subtype |subtype|. If the specified
111d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// subtype is illegal or unsupported, then a new annotation will not be created.
112d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Must call FPDFPage_CloseAnnot() when the annotation returned by this
113d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// function is no longer needed.
114d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
115d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   page      - handle to a page.
116d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   subtype   - the subtype of the new annotation.
117d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
118d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns a handle to the new annotation object, or NULL on failure.
119d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_ANNOTATION FPDF_CALLCONV
120d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFPage_CreateAnnot(FPDF_PAGE page, FPDF_ANNOTATION_SUBTYPE subtype);
121d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
122d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
123d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the number of annotations in |page|.
124d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
125d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   page   - handle to a page.
126d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
127d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the number of annotations in |page|.
128d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT int FPDF_CALLCONV FPDFPage_GetAnnotCount(FPDF_PAGE page);
129d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
130d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
131d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get annotation in |page| at |index|. Must call FPDFPage_CloseAnnot() when the
132d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// annotation returned by this function is no longer needed.
133d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
134d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   page  - handle to a page.
135d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   index - the index of the annotation.
136d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
137d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns a handle to the annotation object, or NULL on failure.
138d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_ANNOTATION FPDF_CALLCONV FPDFPage_GetAnnot(FPDF_PAGE page,
139d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                            int index);
140d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
141d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
142d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the index of |annot| in |page|. This is the opposite of
143d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDFPage_GetAnnot().
144d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
145d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   page  - handle to the page that the annotation is on.
146d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot - handle to an annotation.
147d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
148d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the index of |annot|, or -1 on failure.
149d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT int FPDF_CALLCONV FPDFPage_GetAnnotIndex(FPDF_PAGE page,
150d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                     FPDF_ANNOTATION annot);
151d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
152d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
153d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Close an annotation. Must be called when the annotation returned by
154d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDFPage_CreateAnnot() or FPDFPage_GetAnnot() is no longer needed. This
155d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// function does not remove the annotation from the document.
156d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
157d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
158d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT void FPDF_CALLCONV FPDFPage_CloseAnnot(FPDF_ANNOTATION annot);
159d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
160d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
161d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Remove the annotation in |page| at |index|.
162d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
163d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   page  - handle to a page.
164d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   index - the index of the annotation.
165d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
166d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
167d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_RemoveAnnot(FPDF_PAGE page,
168d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                         int index);
169d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
170d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
171d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the subtype of an annotation.
172d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
173d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
174d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
175d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the annotation subtype.
176d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_ANNOTATION_SUBTYPE FPDF_CALLCONV
177d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetSubtype(FPDF_ANNOTATION annot);
178d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
179d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
180d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Check if an annotation subtype is currently supported for object extraction,
181d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// update, and removal.
182d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Currently supported subtypes: ink and stamp.
183d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
184d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   subtype   - the subtype to be checked.
185d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
186d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if this subtype supported.
187d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
188d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_IsObjectSupportedSubtype(FPDF_ANNOTATION_SUBTYPE subtype);
189d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
190d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
191d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Update |obj| in |annot|. |obj| must be in |annot| already and must have
192d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// been retrieved by FPDFAnnot_GetObject(). Currently, only ink and stamp
193d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// annotations are supported by this API. Also note that only path, image, and
194d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// text objects have APIs for modification; see FPDFPath_*(), FPDFText_*(), and
195d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDFImageObj_*().
196d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
197d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
198d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   obj    - handle to the object that |annot| needs to update.
199d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
200d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Return true if successful.
201d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
202d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_UpdateObject(FPDF_ANNOTATION annot, FPDF_PAGEOBJECT obj);
203d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
204d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
205d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Add |obj| to |annot|. |obj| must have been created by
206d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDFPageObj_CreateNew{Path|Rect}() or FPDFPageObj_New{Text|Image}Obj(), and
207d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// will be owned by |annot|. Note that an |obj| cannot belong to more than one
208d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// |annot|. Currently, only ink and stamp annotations are supported by this API.
209d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Also note that only path, image, and text objects have APIs for creation.
210d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
211d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
212d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   obj    - handle to the object that is to be added to |annot|.
213d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
214d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Return true if successful.
215d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
216d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_AppendObject(FPDF_ANNOTATION annot, FPDF_PAGEOBJECT obj);
217d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
218d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
219d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the total number of objects in |annot|, including path objects, text
220d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// objects, external objects, image objects, and shading objects.
221d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
222d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
223d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
224d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the number of objects in |annot|.
225d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT int FPDF_CALLCONV FPDFAnnot_GetObjectCount(FPDF_ANNOTATION annot);
226d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
227d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
228d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the object in |annot| at |index|.
229d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
230d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
231d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   index  - the index of the object.
232d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
233d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Return a handle to the object, or NULL on failure.
234d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV
235d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetObject(FPDF_ANNOTATION annot, int index);
236d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
237d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
238d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Remove the object in |annot| at |index|.
239d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
240d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
241d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   index  - the index of the object to be removed.
242d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
243d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Return true if successful.
244d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
245d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_RemoveObject(FPDF_ANNOTATION annot, int index);
246d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
247d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
248d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Set the color of an annotation. Fails when called on annotations with
249d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// appearance streams already defined; instead use
250d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDFPath_Set{Stroke|Fill}Color().
251d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
252d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot    - handle to an annotation.
253d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   type     - type of the color to be set.
254d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   R, G, B  - buffer to hold the RGB value of the color. Ranges from 0 to 255.
255d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   A        - buffer to hold the opacity. Ranges from 0 to 255.
256d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
257d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
258d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFAnnot_SetColor(FPDF_ANNOTATION annot,
259d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       FPDFANNOT_COLORTYPE type,
260d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       unsigned int R,
261d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       unsigned int G,
262d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       unsigned int B,
263d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       unsigned int A);
264d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
265d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
266d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the color of an annotation. If no color is specified, default to yellow
267d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// for highlight annotation, black for all else. Fails when called on
268d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// annotations with appearance streams already defined; instead use
269d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDFPath_Get{Stroke|Fill}Color().
270d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
271d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot    - handle to an annotation.
272d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   type     - type of the color requested.
273d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   R, G, B  - buffer to hold the RGB value of the color. Ranges from 0 to 255.
274d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   A        - buffer to hold the opacity. Ranges from 0 to 255.
275d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
276d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
277d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFAnnot_GetColor(FPDF_ANNOTATION annot,
278d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       FPDFANNOT_COLORTYPE type,
279d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       unsigned int* R,
280d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       unsigned int* G,
281d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       unsigned int* B,
282d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       unsigned int* A);
283d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
284d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
285d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Check if the annotation is of a type that has attachment points
286d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// (i.e. quadpoints). Quadpoints are the vertices of the rectange that
287d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// encompasses the texts affected by the annotation. They provide the
288d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// coordinates in the page where the annotation is attached. Only text markup
289d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// annotations (i.e. highlight, strikeout, squiggly, and underline) and link
290d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// annotations have quadpoints.
291d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
292d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
293d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
294d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if the annotation is of a type that has quadpoints, false
295d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// otherwise.
296d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
297d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_HasAttachmentPoints(FPDF_ANNOTATION annot);
298d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
299d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
300d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Set the attachment points (i.e. quadpoints) of an annotation. If the
301d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// annotation's appearance stream is defined and this annotation is of a type
302d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// with quadpoints, then update the bounding box too if the new quadpoints
303d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// define a bigger one.
304d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
305d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot      - handle to an annotation.
306d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   quadPoints - the quadpoints to be set.
307d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
308d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
309d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
310d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_SetAttachmentPoints(FPDF_ANNOTATION annot,
311d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                              const FS_QUADPOINTSF* quadPoints);
312d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
313d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
314d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the attachment points (i.e. quadpoints) of an annotation.
315d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
316d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot      - handle to an annotation.
317d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   quadPoints - receives the quadpoints; must not be NULL.
318d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
319d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
320d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
321d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetAttachmentPoints(FPDF_ANNOTATION annot,
322d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                              FS_QUADPOINTSF* quadPoints);
323d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
324d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
325d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Set the annotation rectangle defining the location of the annotation. If the
326d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// annotation's appearance stream is defined and this annotation is of a type
327d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// without quadpoints, then update the bounding box too if the new rectangle
328d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// defines a bigger one.
329d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
330d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
331d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   rect   - the annotation rectangle to be set.
332d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
333d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
334d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFAnnot_SetRect(FPDF_ANNOTATION annot,
335d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                      const FS_RECTF* rect);
336d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
337d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
338d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the annotation rectangle defining the location of the annotation.
339d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
340d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
341d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   rect   - receives the rectangle; must not be NULL.
342d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
343d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
344d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFAnnot_GetRect(FPDF_ANNOTATION annot,
345d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                      FS_RECTF* rect);
346d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
347d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
348d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Check if |annot|'s dictionary has |key| as a key.
349d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
350d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
351d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   key    - the key to look for, encoded in UTF-8.
352d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
353d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if |key| exists.
354d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFAnnot_HasKey(FPDF_ANNOTATION annot,
355d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                     FPDF_BYTESTRING key);
356d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
357d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
358d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the type of the value corresponding to |key| in |annot|'s dictionary.
359d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
360d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
361d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   key    - the key to look for, encoded in UTF-8.
362d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
363d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the type of the dictionary value.
364d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_OBJECT_TYPE FPDF_CALLCONV
365d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetValueType(FPDF_ANNOTATION annot, FPDF_BYTESTRING key);
366d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
367d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
368d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Set the string value corresponding to |key| in |annot|'s dictionary,
369d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// overwriting the existing value if any. The value type would be
370d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDF_OBJECT_STRING after this function call succeeds.
371d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
372d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
373d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   key    - the key to the dictionary entry to be set, encoded in UTF-8.
374d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   value  - the string value to be set, encoded in UTF16-LE.
375d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
376d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
377d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
378d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_SetStringValue(FPDF_ANNOTATION annot,
379d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                         FPDF_BYTESTRING key,
380d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                         FPDF_WIDESTRING value);
381d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
382d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
383d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the string value corresponding to |key| in |annot|'s dictionary. |buffer|
384d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// is only modified if |buflen| is longer than the length of contents. Note that
385d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// if |key| does not exist in the dictionary or if |key|'s corresponding value
386d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// in the dictionary is not a string (i.e. the value is not of type
387d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDF_OBJECT_STRING or FPDF_OBJECT_NAME), then an empty string would be copied
388d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// to |buffer| and the return value would be 2. On other errors, nothing would
389d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// be added to |buffer| and the return value would be 0.
390d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
391d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
392d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   key    - the key to the requested dictionary entry, encoded in UTF-8.
393d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   buffer - buffer for holding the value string, encoded in UTF16-LE.
394d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   buflen - length of the buffer.
395d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
396d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the length of the string value.
397d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT unsigned long FPDF_CALLCONV
398d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetStringValue(FPDF_ANNOTATION annot,
399d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                         FPDF_BYTESTRING key,
400d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                         void* buffer,
401d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                         unsigned long buflen);
402d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
403d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
404d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Set the AP (appearance string) in |annot|'s dictionary for a given
405d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// |appearanceMode|.
406d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
407d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot          - handle to an annotation.
408d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   appearanceMode - the appearance mode (normal, rollover or down) for which
409d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//                    to get the AP.
410d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   value          - the string value to be set, encoded in UTF16-LE. If
411d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//                    nullptr is passed, the AP is cleared for that mode. If the
412d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//                    mode is Normal, APs for all modes are cleared.
413d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
414d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
415d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
416d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_SetAP(FPDF_ANNOTATION annot,
417d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                FPDF_ANNOT_APPEARANCEMODE appearanceMode,
418d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                FPDF_WIDESTRING value);
419d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
420d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
421d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the AP (appearance string) from |annot|'s dictionary for a given
422d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// |appearanceMode|.
423d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// |buffer| is only modified if |buflen| is large enough to hold the whole AP
424d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// string. If |buflen| is smaller, the total size of the AP is still returned,
425d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// but nothing is copied.
426d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// If there is no appearance stream for |annot| in |appearanceMode|, an empty
427d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// string is written to |buf| and 2 is returned.
428d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// On other errors, nothing is written to |buffer| and 0 is returned.
429d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
430d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot          - handle to an annotation.
431d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   appearanceMode - the appearance mode (normal, rollover or down) for which
432d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//                    to get the AP.
433d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   buffer         - buffer for holding the value string, encoded in UTF16-LE.
434d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   buflen         - length of the buffer.
435d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
436d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the length of the string value.
437d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT unsigned long FPDF_CALLCONV
438d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetAP(FPDF_ANNOTATION annot,
439d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                FPDF_ANNOT_APPEARANCEMODE appearanceMode,
440d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                void* buffer,
441d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                unsigned long buflen);
442d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
443d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
444d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the annotation corresponding to |key| in |annot|'s dictionary. Common
445d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// keys for linking annotations include "IRT" and "Popup". Must call
446d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// FPDFPage_CloseAnnot() when the annotation returned by this function is no
447d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// longer needed.
448d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
449d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot  - handle to an annotation.
450d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   key    - the key to the requested dictionary entry, encoded in UTF-8.
451d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
452d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns a handle to the linked annotation object, or NULL on failure.
453d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_ANNOTATION FPDF_CALLCONV
454d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetLinkedAnnot(FPDF_ANNOTATION annot, FPDF_BYTESTRING key);
455d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
456d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
457d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the annotation flags of |annot|.
458d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
459d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot    - handle to an annotation.
460d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
461d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the annotation flags.
462d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT int FPDF_CALLCONV FPDFAnnot_GetFlags(FPDF_ANNOTATION annot);
463d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
464d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
465d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Set the |annot|'s flags to be of the value |flags|.
466d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
467d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot      - handle to an annotation.
468d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   flags      - the flag values to be set.
469d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
470d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns true if successful.
471d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFAnnot_SetFlags(FPDF_ANNOTATION annot,
472d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                                       int flags);
473d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
474d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
475d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Get the annotation flags of |annot|, which is an interactive form
476d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// annotation in |page|.
477d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
478d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   page     - handle to a page.
479d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//   annot    - handle to an interactive form annotation.
480d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
481d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the annotation flags specific to interactive forms.
482d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT int FPDF_CALLCONV
483d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetFormFieldFlags(FPDF_PAGE page, FPDF_ANNOTATION annot);
484d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
485d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Experimental API.
486d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Retrieves an interactive form annotation whose rectangle contains a given
487d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// point on a page. Must call FPDFPage_CloseAnnot() when the annotation returned
488d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// is no longer needed.
489d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
490d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
491d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//    hHandle     -   handle to the form fill module, returned by
492d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//                    FPDFDOC_InitFormFillEnvironment.
493d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//    page        -   handle to the page, returned by FPDF_LoadPage function.
494d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//    page_x      -   X position in PDF "user space".
495d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//    page_y      -   Y position in PDF "user space".
496d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann//
497d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Returns the interactive form annotation whose rectangle contains the given
498d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// coordinates on the page. If there is no such annotation, return NULL.
499d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDF_EXPORT FPDF_ANNOTATION FPDF_CALLCONV
500d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannFPDFAnnot_GetFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
501d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                              FPDF_PAGE page,
502d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                              double page_x,
503d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                              double page_y);
504d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
505d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#ifdef __cplusplus
506d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann}  // extern "C"
507d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#endif  // __cplusplus
508d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
509d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#endif  // PUBLIC_FPDF_ANNOT_H_
510