xref: /aosp_15_r20/external/pdfium/public/fpdfview.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 // This is the main header file for embedders of PDFium. It provides APIs to
8*3ac0a46fSAndroid Build Coastguard Worker // initialize the library, load documents, and render pages, amongst other
9*3ac0a46fSAndroid Build Coastguard Worker // things.
10*3ac0a46fSAndroid Build Coastguard Worker //
11*3ac0a46fSAndroid Build Coastguard Worker // NOTE: None of the PDFium APIs are thread-safe. They expect to be called
12*3ac0a46fSAndroid Build Coastguard Worker // from a single thread. Barring that, embedders are required to ensure (via
13*3ac0a46fSAndroid Build Coastguard Worker // a mutex or similar) that only a single PDFium call can be made at a time.
14*3ac0a46fSAndroid Build Coastguard Worker //
15*3ac0a46fSAndroid Build Coastguard Worker // NOTE: External docs refer to this file as "fpdfview.h", so do not rename
16*3ac0a46fSAndroid Build Coastguard Worker // despite lack of consistency with other public files.
17*3ac0a46fSAndroid Build Coastguard Worker 
18*3ac0a46fSAndroid Build Coastguard Worker #ifndef PUBLIC_FPDFVIEW_H_
19*3ac0a46fSAndroid Build Coastguard Worker #define PUBLIC_FPDFVIEW_H_
20*3ac0a46fSAndroid Build Coastguard Worker 
21*3ac0a46fSAndroid Build Coastguard Worker // clang-format off
22*3ac0a46fSAndroid Build Coastguard Worker 
23*3ac0a46fSAndroid Build Coastguard Worker #include <stddef.h>
24*3ac0a46fSAndroid Build Coastguard Worker 
25*3ac0a46fSAndroid Build Coastguard Worker typedef __SIZE_TYPE__ size_t;
26*3ac0a46fSAndroid Build Coastguard Worker 
27*3ac0a46fSAndroid Build Coastguard Worker #if defined(_WIN32) && !defined(__WINDOWS__)
28*3ac0a46fSAndroid Build Coastguard Worker #include <windows.h>
29*3ac0a46fSAndroid Build Coastguard Worker #endif
30*3ac0a46fSAndroid Build Coastguard Worker 
31*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA
32*3ac0a46fSAndroid Build Coastguard Worker // PDF_USE_XFA is set in confirmation that this version of PDFium can support
33*3ac0a46fSAndroid Build Coastguard Worker // XFA forms as requested by the PDF_ENABLE_XFA setting.
34*3ac0a46fSAndroid Build Coastguard Worker #define PDF_USE_XFA
35*3ac0a46fSAndroid Build Coastguard Worker #endif  // PDF_ENABLE_XFA
36*3ac0a46fSAndroid Build Coastguard Worker 
37*3ac0a46fSAndroid Build Coastguard Worker // PDF object types
38*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_UNKNOWN 0
39*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_BOOLEAN 1
40*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_NUMBER 2
41*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_STRING 3
42*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_NAME 4
43*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_ARRAY 5
44*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_DICTIONARY 6
45*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_STREAM 7
46*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_NULLOBJ 8
47*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_OBJECT_REFERENCE 9
48*3ac0a46fSAndroid Build Coastguard Worker 
49*3ac0a46fSAndroid Build Coastguard Worker // PDF text rendering modes
50*3ac0a46fSAndroid Build Coastguard Worker typedef enum {
51*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_UNKNOWN = -1,
52*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_FILL = 0,
53*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_STROKE = 1,
54*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_FILL_STROKE = 2,
55*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_INVISIBLE = 3,
56*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_FILL_CLIP = 4,
57*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_STROKE_CLIP = 5,
58*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_FILL_STROKE_CLIP = 6,
59*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_CLIP = 7,
60*3ac0a46fSAndroid Build Coastguard Worker   FPDF_TEXTRENDERMODE_LAST = FPDF_TEXTRENDERMODE_CLIP,
61*3ac0a46fSAndroid Build Coastguard Worker } FPDF_TEXT_RENDERMODE;
62*3ac0a46fSAndroid Build Coastguard Worker 
63*3ac0a46fSAndroid Build Coastguard Worker // PDF types - use incomplete types (never completed) to force API type safety.
64*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_action_t__* FPDF_ACTION;
65*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_annotation_t__* FPDF_ANNOTATION;
66*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_attachment_t__* FPDF_ATTACHMENT;
67*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_avail_t__* FPDF_AVAIL;
68*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_bitmap_t__* FPDF_BITMAP;
69*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_bookmark_t__* FPDF_BOOKMARK;
70*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_clippath_t__* FPDF_CLIPPATH;
71*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_dest_t__* FPDF_DEST;
72*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_document_t__* FPDF_DOCUMENT;
73*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_font_t__* FPDF_FONT;
74*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_form_handle_t__* FPDF_FORMHANDLE;
75*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_glyphpath_t__* FPDF_GLYPHPATH;
76*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_javascript_action_t* FPDF_JAVASCRIPT_ACTION;
77*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_link_t__* FPDF_LINK;
78*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_page_t__* FPDF_PAGE;
79*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_pagelink_t__* FPDF_PAGELINK;
80*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_pageobject_t__* FPDF_PAGEOBJECT;  // (text, path, etc.)
81*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_pageobjectmark_t__* FPDF_PAGEOBJECTMARK;
82*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_pagerange_t__* FPDF_PAGERANGE;
83*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_pathsegment_t* FPDF_PATHSEGMENT;
84*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_schhandle_t__* FPDF_SCHHANDLE;
85*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_signature_t__* FPDF_SIGNATURE;
86*3ac0a46fSAndroid Build Coastguard Worker typedef void* FPDF_SKIA_CANVAS;  // Passed into Skia as an SkCanvas.
87*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_structelement_t__* FPDF_STRUCTELEMENT;
88*3ac0a46fSAndroid Build Coastguard Worker typedef const struct fpdf_structelement_attr_t__* FPDF_STRUCTELEMENT_ATTR;
89*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_structtree_t__* FPDF_STRUCTTREE;
90*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_textpage_t__* FPDF_TEXTPAGE;
91*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_widget_t__* FPDF_WIDGET;
92*3ac0a46fSAndroid Build Coastguard Worker typedef struct fpdf_xobject_t__* FPDF_XOBJECT;
93*3ac0a46fSAndroid Build Coastguard Worker 
94*3ac0a46fSAndroid Build Coastguard Worker // Basic data types
95*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_BOOL;
96*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_RESULT;
97*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned long FPDF_DWORD;
98*3ac0a46fSAndroid Build Coastguard Worker typedef float FS_FLOAT;
99*3ac0a46fSAndroid Build Coastguard Worker 
100*3ac0a46fSAndroid Build Coastguard Worker // Duplex types
101*3ac0a46fSAndroid Build Coastguard Worker typedef enum _FPDF_DUPLEXTYPE_ {
102*3ac0a46fSAndroid Build Coastguard Worker   DuplexUndefined = 0,
103*3ac0a46fSAndroid Build Coastguard Worker   Simplex,
104*3ac0a46fSAndroid Build Coastguard Worker   DuplexFlipShortEdge,
105*3ac0a46fSAndroid Build Coastguard Worker   DuplexFlipLongEdge
106*3ac0a46fSAndroid Build Coastguard Worker } FPDF_DUPLEXTYPE;
107*3ac0a46fSAndroid Build Coastguard Worker 
108*3ac0a46fSAndroid Build Coastguard Worker // String types
109*3ac0a46fSAndroid Build Coastguard Worker typedef unsigned short FPDF_WCHAR;
110*3ac0a46fSAndroid Build Coastguard Worker 
111*3ac0a46fSAndroid Build Coastguard Worker // The public PDFium API uses three types of strings: byte string, wide string
112*3ac0a46fSAndroid Build Coastguard Worker // (UTF-16LE encoded), and platform dependent string.
113*3ac0a46fSAndroid Build Coastguard Worker 
114*3ac0a46fSAndroid Build Coastguard Worker // Public PDFium API type for byte strings.
115*3ac0a46fSAndroid Build Coastguard Worker typedef const char* FPDF_BYTESTRING;
116*3ac0a46fSAndroid Build Coastguard Worker 
117*3ac0a46fSAndroid Build Coastguard Worker // The public PDFium API always uses UTF-16LE encoded wide strings, each
118*3ac0a46fSAndroid Build Coastguard Worker // character uses 2 bytes (except surrogation), with the low byte first.
119*3ac0a46fSAndroid Build Coastguard Worker typedef const FPDF_WCHAR* FPDF_WIDESTRING;
120*3ac0a46fSAndroid Build Coastguard Worker 
121*3ac0a46fSAndroid Build Coastguard Worker // Structure for persisting a string beyond the duration of a callback.
122*3ac0a46fSAndroid Build Coastguard Worker // Note: although represented as a char*, string may be interpreted as
123*3ac0a46fSAndroid Build Coastguard Worker // a UTF-16LE formated string. Used only by XFA callbacks.
124*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_BSTR_ {
125*3ac0a46fSAndroid Build Coastguard Worker   char* str;  // String buffer, manipulate only with FPDF_BStr_* methods.
126*3ac0a46fSAndroid Build Coastguard Worker   int len;    // Length of the string, in bytes.
127*3ac0a46fSAndroid Build Coastguard Worker } FPDF_BSTR;
128*3ac0a46fSAndroid Build Coastguard Worker 
129*3ac0a46fSAndroid Build Coastguard Worker // For Windows programmers: In most cases it's OK to treat FPDF_WIDESTRING as a
130*3ac0a46fSAndroid Build Coastguard Worker // Windows unicode string, however, special care needs to be taken if you
131*3ac0a46fSAndroid Build Coastguard Worker // expect to process Unicode larger than 0xffff.
132*3ac0a46fSAndroid Build Coastguard Worker //
133*3ac0a46fSAndroid Build Coastguard Worker // For Linux/Unix programmers: most compiler/library environments use 4 bytes
134*3ac0a46fSAndroid Build Coastguard Worker // for a Unicode character, and you have to convert between FPDF_WIDESTRING and
135*3ac0a46fSAndroid Build Coastguard Worker // system wide string by yourself.
136*3ac0a46fSAndroid Build Coastguard Worker typedef const char* FPDF_STRING;
137*3ac0a46fSAndroid Build Coastguard Worker 
138*3ac0a46fSAndroid Build Coastguard Worker // Matrix for transformation, in the form [a b c d e f], equivalent to:
139*3ac0a46fSAndroid Build Coastguard Worker // | a  b  0 |
140*3ac0a46fSAndroid Build Coastguard Worker // | c  d  0 |
141*3ac0a46fSAndroid Build Coastguard Worker // | e  f  1 |
142*3ac0a46fSAndroid Build Coastguard Worker //
143*3ac0a46fSAndroid Build Coastguard Worker // Translation is performed with [1 0 0 1 tx ty].
144*3ac0a46fSAndroid Build Coastguard Worker // Scaling is performed with [sx 0 0 sy 0 0].
145*3ac0a46fSAndroid Build Coastguard Worker // See PDF Reference 1.7, 4.2.2 Common Transformations for more.
146*3ac0a46fSAndroid Build Coastguard Worker typedef struct _FS_MATRIX_ {
147*3ac0a46fSAndroid Build Coastguard Worker   float a;
148*3ac0a46fSAndroid Build Coastguard Worker   float b;
149*3ac0a46fSAndroid Build Coastguard Worker   float c;
150*3ac0a46fSAndroid Build Coastguard Worker   float d;
151*3ac0a46fSAndroid Build Coastguard Worker   float e;
152*3ac0a46fSAndroid Build Coastguard Worker   float f;
153*3ac0a46fSAndroid Build Coastguard Worker } FS_MATRIX;
154*3ac0a46fSAndroid Build Coastguard Worker 
155*3ac0a46fSAndroid Build Coastguard Worker // Rectangle area(float) in device or page coordinate system.
156*3ac0a46fSAndroid Build Coastguard Worker typedef struct _FS_RECTF_ {
157*3ac0a46fSAndroid Build Coastguard Worker   // The x-coordinate of the left-top corner.
158*3ac0a46fSAndroid Build Coastguard Worker   float left;
159*3ac0a46fSAndroid Build Coastguard Worker   // The y-coordinate of the left-top corner.
160*3ac0a46fSAndroid Build Coastguard Worker   float top;
161*3ac0a46fSAndroid Build Coastguard Worker   // The x-coordinate of the right-bottom corner.
162*3ac0a46fSAndroid Build Coastguard Worker   float right;
163*3ac0a46fSAndroid Build Coastguard Worker   // The y-coordinate of the right-bottom corner.
164*3ac0a46fSAndroid Build Coastguard Worker   float bottom;
165*3ac0a46fSAndroid Build Coastguard Worker } * FS_LPRECTF, FS_RECTF;
166*3ac0a46fSAndroid Build Coastguard Worker 
167*3ac0a46fSAndroid Build Coastguard Worker // Const Pointer to FS_RECTF structure.
168*3ac0a46fSAndroid Build Coastguard Worker typedef const FS_RECTF* FS_LPCRECTF;
169*3ac0a46fSAndroid Build Coastguard Worker 
170*3ac0a46fSAndroid Build Coastguard Worker // Rectangle size. Coordinate system agnostic.
171*3ac0a46fSAndroid Build Coastguard Worker typedef struct FS_SIZEF_ {
172*3ac0a46fSAndroid Build Coastguard Worker   float width;
173*3ac0a46fSAndroid Build Coastguard Worker   float height;
174*3ac0a46fSAndroid Build Coastguard Worker } * FS_LPSIZEF, FS_SIZEF;
175*3ac0a46fSAndroid Build Coastguard Worker 
176*3ac0a46fSAndroid Build Coastguard Worker // Const Pointer to FS_SIZEF structure.
177*3ac0a46fSAndroid Build Coastguard Worker typedef const FS_SIZEF* FS_LPCSIZEF;
178*3ac0a46fSAndroid Build Coastguard Worker 
179*3ac0a46fSAndroid Build Coastguard Worker // 2D Point. Coordinate system agnostic.
180*3ac0a46fSAndroid Build Coastguard Worker typedef struct FS_POINTF_ {
181*3ac0a46fSAndroid Build Coastguard Worker   float x;
182*3ac0a46fSAndroid Build Coastguard Worker   float y;
183*3ac0a46fSAndroid Build Coastguard Worker } * FS_LPPOINTF, FS_POINTF;
184*3ac0a46fSAndroid Build Coastguard Worker 
185*3ac0a46fSAndroid Build Coastguard Worker // Const Pointer to FS_POINTF structure.
186*3ac0a46fSAndroid Build Coastguard Worker typedef const FS_POINTF* FS_LPCPOINTF;
187*3ac0a46fSAndroid Build Coastguard Worker 
188*3ac0a46fSAndroid Build Coastguard Worker typedef struct _FS_QUADPOINTSF {
189*3ac0a46fSAndroid Build Coastguard Worker   FS_FLOAT x1;
190*3ac0a46fSAndroid Build Coastguard Worker   FS_FLOAT y1;
191*3ac0a46fSAndroid Build Coastguard Worker   FS_FLOAT x2;
192*3ac0a46fSAndroid Build Coastguard Worker   FS_FLOAT y2;
193*3ac0a46fSAndroid Build Coastguard Worker   FS_FLOAT x3;
194*3ac0a46fSAndroid Build Coastguard Worker   FS_FLOAT y3;
195*3ac0a46fSAndroid Build Coastguard Worker   FS_FLOAT x4;
196*3ac0a46fSAndroid Build Coastguard Worker   FS_FLOAT y4;
197*3ac0a46fSAndroid Build Coastguard Worker } FS_QUADPOINTSF;
198*3ac0a46fSAndroid Build Coastguard Worker 
199*3ac0a46fSAndroid Build Coastguard Worker // Annotation enums.
200*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_ANNOTATION_SUBTYPE;
201*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_ANNOT_APPEARANCEMODE;
202*3ac0a46fSAndroid Build Coastguard Worker 
203*3ac0a46fSAndroid Build Coastguard Worker // Dictionary value types.
204*3ac0a46fSAndroid Build Coastguard Worker typedef int FPDF_OBJECT_TYPE;
205*3ac0a46fSAndroid Build Coastguard Worker 
206*3ac0a46fSAndroid Build Coastguard Worker #if defined(COMPONENT_BUILD)
207*3ac0a46fSAndroid Build Coastguard Worker // FPDF_EXPORT should be consistent with |export| in the pdfium_fuzzer
208*3ac0a46fSAndroid Build Coastguard Worker // template in testing/fuzzers/BUILD.gn.
209*3ac0a46fSAndroid Build Coastguard Worker #if defined(WIN32)
210*3ac0a46fSAndroid Build Coastguard Worker #if defined(FPDF_IMPLEMENTATION)
211*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT __declspec(dllexport)
212*3ac0a46fSAndroid Build Coastguard Worker #else
213*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT __declspec(dllimport)
214*3ac0a46fSAndroid Build Coastguard Worker #endif  // defined(FPDF_IMPLEMENTATION)
215*3ac0a46fSAndroid Build Coastguard Worker #else
216*3ac0a46fSAndroid Build Coastguard Worker #if defined(FPDF_IMPLEMENTATION)
217*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT __attribute__((visibility("default")))
218*3ac0a46fSAndroid Build Coastguard Worker #else
219*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT
220*3ac0a46fSAndroid Build Coastguard Worker #endif  // defined(FPDF_IMPLEMENTATION)
221*3ac0a46fSAndroid Build Coastguard Worker #endif  // defined(WIN32)
222*3ac0a46fSAndroid Build Coastguard Worker #else
223*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_EXPORT
224*3ac0a46fSAndroid Build Coastguard Worker #endif  // defined(COMPONENT_BUILD)
225*3ac0a46fSAndroid Build Coastguard Worker 
226*3ac0a46fSAndroid Build Coastguard Worker #if defined(WIN32) && defined(FPDFSDK_EXPORTS)
227*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_CALLCONV __stdcall
228*3ac0a46fSAndroid Build Coastguard Worker #else
229*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_CALLCONV
230*3ac0a46fSAndroid Build Coastguard Worker #endif
231*3ac0a46fSAndroid Build Coastguard Worker 
232*3ac0a46fSAndroid Build Coastguard Worker // Exported Functions
233*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus
234*3ac0a46fSAndroid Build Coastguard Worker extern "C" {
235*3ac0a46fSAndroid Build Coastguard Worker #endif
236*3ac0a46fSAndroid Build Coastguard Worker 
237*3ac0a46fSAndroid Build Coastguard Worker // PDF renderer types - Experimental.
238*3ac0a46fSAndroid Build Coastguard Worker // Selection of 2D graphics library to use for rendering to FPDF_BITMAPs.
239*3ac0a46fSAndroid Build Coastguard Worker typedef enum {
240*3ac0a46fSAndroid Build Coastguard Worker   // Anti-Grain Geometry - https://sourceforge.net/projects/agg/
241*3ac0a46fSAndroid Build Coastguard Worker   FPDF_RENDERERTYPE_AGG = 0,
242*3ac0a46fSAndroid Build Coastguard Worker   // Skia - https://skia.org/
243*3ac0a46fSAndroid Build Coastguard Worker   FPDF_RENDERERTYPE_SKIA = 1,
244*3ac0a46fSAndroid Build Coastguard Worker } FPDF_RENDERER_TYPE;
245*3ac0a46fSAndroid Build Coastguard Worker 
246*3ac0a46fSAndroid Build Coastguard Worker // Process-wide options for initializing the library.
247*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_LIBRARY_CONFIG_ {
248*3ac0a46fSAndroid Build Coastguard Worker   // Version number of the interface. Currently must be 2.
249*3ac0a46fSAndroid Build Coastguard Worker   // Support for version 1 will be deprecated in the future.
250*3ac0a46fSAndroid Build Coastguard Worker   int version;
251*3ac0a46fSAndroid Build Coastguard Worker 
252*3ac0a46fSAndroid Build Coastguard Worker   // Array of paths to scan in place of the defaults when using built-in
253*3ac0a46fSAndroid Build Coastguard Worker   // FXGE font loading code. The array is terminated by a NULL pointer.
254*3ac0a46fSAndroid Build Coastguard Worker   // The Array may be NULL itself to use the default paths. May be ignored
255*3ac0a46fSAndroid Build Coastguard Worker   // entirely depending upon the platform.
256*3ac0a46fSAndroid Build Coastguard Worker   const char** m_pUserFontPaths;
257*3ac0a46fSAndroid Build Coastguard Worker 
258*3ac0a46fSAndroid Build Coastguard Worker   // Version 2.
259*3ac0a46fSAndroid Build Coastguard Worker 
260*3ac0a46fSAndroid Build Coastguard Worker   // Pointer to the v8::Isolate to use, or NULL to force PDFium to create one.
261*3ac0a46fSAndroid Build Coastguard Worker   void* m_pIsolate;
262*3ac0a46fSAndroid Build Coastguard Worker 
263*3ac0a46fSAndroid Build Coastguard Worker   // The embedder data slot to use in the v8::Isolate to store PDFium's
264*3ac0a46fSAndroid Build Coastguard Worker   // per-isolate data. The value needs to be in the range
265*3ac0a46fSAndroid Build Coastguard Worker   // [0, |v8::Internals::kNumIsolateDataLots|). Note that 0 is fine for most
266*3ac0a46fSAndroid Build Coastguard Worker   // embedders.
267*3ac0a46fSAndroid Build Coastguard Worker   unsigned int m_v8EmbedderSlot;
268*3ac0a46fSAndroid Build Coastguard Worker 
269*3ac0a46fSAndroid Build Coastguard Worker   // Version 3 - Experimental.
270*3ac0a46fSAndroid Build Coastguard Worker 
271*3ac0a46fSAndroid Build Coastguard Worker   // Pointer to the V8::Platform to use.
272*3ac0a46fSAndroid Build Coastguard Worker   void* m_pPlatform;
273*3ac0a46fSAndroid Build Coastguard Worker 
274*3ac0a46fSAndroid Build Coastguard Worker   // Version 4 - Experimental.
275*3ac0a46fSAndroid Build Coastguard Worker 
276*3ac0a46fSAndroid Build Coastguard Worker   // Explicit specification of core renderer to use. |m_RendererType| must be
277*3ac0a46fSAndroid Build Coastguard Worker   // a valid value for |FPDF_LIBRARY_CONFIG| versions of this level or higher,
278*3ac0a46fSAndroid Build Coastguard Worker   // or else the initialization will fail with an immediate crash.
279*3ac0a46fSAndroid Build Coastguard Worker   // Note that use of a specified |FPDF_RENDERER_TYPE| value for which the
280*3ac0a46fSAndroid Build Coastguard Worker   // corresponding render library is not included in the build will similarly
281*3ac0a46fSAndroid Build Coastguard Worker   // fail with an immediate crash.
282*3ac0a46fSAndroid Build Coastguard Worker   FPDF_RENDERER_TYPE m_RendererType;
283*3ac0a46fSAndroid Build Coastguard Worker } FPDF_LIBRARY_CONFIG;
284*3ac0a46fSAndroid Build Coastguard Worker 
285*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_InitLibraryWithConfig
286*3ac0a46fSAndroid Build Coastguard Worker //          Initialize the PDFium library and allocate global resources for it.
287*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
288*3ac0a46fSAndroid Build Coastguard Worker //          config - configuration information as above.
289*3ac0a46fSAndroid Build Coastguard Worker // Return value:
290*3ac0a46fSAndroid Build Coastguard Worker //          None.
291*3ac0a46fSAndroid Build Coastguard Worker // Comments:
292*3ac0a46fSAndroid Build Coastguard Worker //          You have to call this function before you can call any PDF
293*3ac0a46fSAndroid Build Coastguard Worker //          processing functions.
294*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV
295*3ac0a46fSAndroid Build Coastguard Worker FPDF_InitLibraryWithConfig(const FPDF_LIBRARY_CONFIG* config);
296*3ac0a46fSAndroid Build Coastguard Worker 
297*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_InitLibrary
298*3ac0a46fSAndroid Build Coastguard Worker //          Initialize the PDFium library (alternative form).
299*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
300*3ac0a46fSAndroid Build Coastguard Worker //          None
301*3ac0a46fSAndroid Build Coastguard Worker // Return value:
302*3ac0a46fSAndroid Build Coastguard Worker //          None.
303*3ac0a46fSAndroid Build Coastguard Worker // Comments:
304*3ac0a46fSAndroid Build Coastguard Worker //          Convenience function to call FPDF_InitLibraryWithConfig() with a
305*3ac0a46fSAndroid Build Coastguard Worker //          default configuration for backwards compatibility purposes. New
306*3ac0a46fSAndroid Build Coastguard Worker //          code should call FPDF_InitLibraryWithConfig() instead. This will
307*3ac0a46fSAndroid Build Coastguard Worker //          be deprecated in the future.
308*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_InitLibrary();
309*3ac0a46fSAndroid Build Coastguard Worker 
310*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_DestroyLibrary
311*3ac0a46fSAndroid Build Coastguard Worker //          Release global resources allocated to the PDFium library by
312*3ac0a46fSAndroid Build Coastguard Worker //          FPDF_InitLibrary() or FPDF_InitLibraryWithConfig().
313*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
314*3ac0a46fSAndroid Build Coastguard Worker //          None.
315*3ac0a46fSAndroid Build Coastguard Worker // Return value:
316*3ac0a46fSAndroid Build Coastguard Worker //          None.
317*3ac0a46fSAndroid Build Coastguard Worker // Comments:
318*3ac0a46fSAndroid Build Coastguard Worker //          After this function is called, you must not call any PDF
319*3ac0a46fSAndroid Build Coastguard Worker //          processing functions.
320*3ac0a46fSAndroid Build Coastguard Worker //
321*3ac0a46fSAndroid Build Coastguard Worker //          Calling this function does not automatically close other
322*3ac0a46fSAndroid Build Coastguard Worker //          objects. It is recommended to close other objects before
323*3ac0a46fSAndroid Build Coastguard Worker //          closing the library with this function.
324*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_DestroyLibrary();
325*3ac0a46fSAndroid Build Coastguard Worker 
326*3ac0a46fSAndroid Build Coastguard Worker // Policy for accessing the local machine time.
327*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_POLICY_MACHINETIME_ACCESS 0
328*3ac0a46fSAndroid Build Coastguard Worker 
329*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_SetSandBoxPolicy
330*3ac0a46fSAndroid Build Coastguard Worker //          Set the policy for the sandbox environment.
331*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
332*3ac0a46fSAndroid Build Coastguard Worker //          policy -   The specified policy for setting, for example:
333*3ac0a46fSAndroid Build Coastguard Worker //                     FPDF_POLICY_MACHINETIME_ACCESS.
334*3ac0a46fSAndroid Build Coastguard Worker //          enable -   True to enable, false to disable the policy.
335*3ac0a46fSAndroid Build Coastguard Worker // Return value:
336*3ac0a46fSAndroid Build Coastguard Worker //          None.
337*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_SetSandBoxPolicy(FPDF_DWORD policy,
338*3ac0a46fSAndroid Build Coastguard Worker                                                      FPDF_BOOL enable);
339*3ac0a46fSAndroid Build Coastguard Worker 
340*3ac0a46fSAndroid Build Coastguard Worker #if defined(_WIN32)
341*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
342*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_SetPrintMode
343*3ac0a46fSAndroid Build Coastguard Worker //          Set printing mode when printing on Windows.
344*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
345*3ac0a46fSAndroid Build Coastguard Worker //          mode - FPDF_PRINTMODE_EMF to output EMF (default)
346*3ac0a46fSAndroid Build Coastguard Worker //                 FPDF_PRINTMODE_TEXTONLY to output text only (for charstream
347*3ac0a46fSAndroid Build Coastguard Worker //                 devices)
348*3ac0a46fSAndroid Build Coastguard Worker //                 FPDF_PRINTMODE_POSTSCRIPT2 to output level 2 PostScript into
349*3ac0a46fSAndroid Build Coastguard Worker //                 EMF as a series of GDI comments.
350*3ac0a46fSAndroid Build Coastguard Worker //                 FPDF_PRINTMODE_POSTSCRIPT3 to output level 3 PostScript into
351*3ac0a46fSAndroid Build Coastguard Worker //                 EMF as a series of GDI comments.
352*3ac0a46fSAndroid Build Coastguard Worker //                 FPDF_PRINTMODE_POSTSCRIPT2_PASSTHROUGH to output level 2
353*3ac0a46fSAndroid Build Coastguard Worker //                 PostScript via ExtEscape() in PASSTHROUGH mode.
354*3ac0a46fSAndroid Build Coastguard Worker //                 FPDF_PRINTMODE_POSTSCRIPT3_PASSTHROUGH to output level 3
355*3ac0a46fSAndroid Build Coastguard Worker //                 PostScript via ExtEscape() in PASSTHROUGH mode.
356*3ac0a46fSAndroid Build Coastguard Worker //                 FPDF_PRINTMODE_EMF_IMAGE_MASKS to output EMF, with more
357*3ac0a46fSAndroid Build Coastguard Worker //                 efficient processing of documents containing image masks.
358*3ac0a46fSAndroid Build Coastguard Worker //                 FPDF_PRINTMODE_POSTSCRIPT3_TYPE42 to output level 3
359*3ac0a46fSAndroid Build Coastguard Worker //                 PostScript with embedded Type 42 fonts, when applicable, into
360*3ac0a46fSAndroid Build Coastguard Worker //                 EMF as a series of GDI comments.
361*3ac0a46fSAndroid Build Coastguard Worker //                 FPDF_PRINTMODE_POSTSCRIPT3_TYPE42_PASSTHROUGH to output level
362*3ac0a46fSAndroid Build Coastguard Worker //                 3 PostScript with embedded Type 42 fonts, when applicable,
363*3ac0a46fSAndroid Build Coastguard Worker //                 via ExtEscape() in PASSTHROUGH mode.
364*3ac0a46fSAndroid Build Coastguard Worker // Return value:
365*3ac0a46fSAndroid Build Coastguard Worker //          True if successful, false if unsuccessful (typically invalid input).
366*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_SetPrintMode(int mode);
367*3ac0a46fSAndroid Build Coastguard Worker #endif  // defined(_WIN32)
368*3ac0a46fSAndroid Build Coastguard Worker 
369*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadDocument
370*3ac0a46fSAndroid Build Coastguard Worker //          Open and load a PDF document.
371*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
372*3ac0a46fSAndroid Build Coastguard Worker //          file_path -  Path to the PDF file (including extension).
373*3ac0a46fSAndroid Build Coastguard Worker //          password  -  A string used as the password for the PDF file.
374*3ac0a46fSAndroid Build Coastguard Worker //                       If no password is needed, empty or NULL can be used.
375*3ac0a46fSAndroid Build Coastguard Worker //                       See comments below regarding the encoding.
376*3ac0a46fSAndroid Build Coastguard Worker // Return value:
377*3ac0a46fSAndroid Build Coastguard Worker //          A handle to the loaded document, or NULL on failure.
378*3ac0a46fSAndroid Build Coastguard Worker // Comments:
379*3ac0a46fSAndroid Build Coastguard Worker //          Loaded document can be closed by FPDF_CloseDocument().
380*3ac0a46fSAndroid Build Coastguard Worker //          If this function fails, you can use FPDF_GetLastError() to retrieve
381*3ac0a46fSAndroid Build Coastguard Worker //          the reason why it failed.
382*3ac0a46fSAndroid Build Coastguard Worker //
383*3ac0a46fSAndroid Build Coastguard Worker //          The encoding for |file_path| is UTF-8.
384*3ac0a46fSAndroid Build Coastguard Worker //
385*3ac0a46fSAndroid Build Coastguard Worker //          The encoding for |password| can be either UTF-8 or Latin-1. PDFs,
386*3ac0a46fSAndroid Build Coastguard Worker //          depending on the security handler revision, will only accept one or
387*3ac0a46fSAndroid Build Coastguard Worker //          the other encoding. If |password|'s encoding and the PDF's expected
388*3ac0a46fSAndroid Build Coastguard Worker //          encoding do not match, FPDF_LoadDocument() will automatically
389*3ac0a46fSAndroid Build Coastguard Worker //          convert |password| to the other encoding.
390*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV
391*3ac0a46fSAndroid Build Coastguard Worker FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BYTESTRING password);
392*3ac0a46fSAndroid Build Coastguard Worker 
393*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadMemDocument
394*3ac0a46fSAndroid Build Coastguard Worker //          Open and load a PDF document from memory.
395*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
396*3ac0a46fSAndroid Build Coastguard Worker //          data_buf    -   Pointer to a buffer containing the PDF document.
397*3ac0a46fSAndroid Build Coastguard Worker //          size        -   Number of bytes in the PDF document.
398*3ac0a46fSAndroid Build Coastguard Worker //          password    -   A string used as the password for the PDF file.
399*3ac0a46fSAndroid Build Coastguard Worker //                          If no password is needed, empty or NULL can be used.
400*3ac0a46fSAndroid Build Coastguard Worker // Return value:
401*3ac0a46fSAndroid Build Coastguard Worker //          A handle to the loaded document, or NULL on failure.
402*3ac0a46fSAndroid Build Coastguard Worker // Comments:
403*3ac0a46fSAndroid Build Coastguard Worker //          The memory buffer must remain valid when the document is open.
404*3ac0a46fSAndroid Build Coastguard Worker //          The loaded document can be closed by FPDF_CloseDocument.
405*3ac0a46fSAndroid Build Coastguard Worker //          If this function fails, you can use FPDF_GetLastError() to retrieve
406*3ac0a46fSAndroid Build Coastguard Worker //          the reason why it failed.
407*3ac0a46fSAndroid Build Coastguard Worker //
408*3ac0a46fSAndroid Build Coastguard Worker //          See the comments for FPDF_LoadDocument() regarding the encoding for
409*3ac0a46fSAndroid Build Coastguard Worker //          |password|.
410*3ac0a46fSAndroid Build Coastguard Worker // Notes:
411*3ac0a46fSAndroid Build Coastguard Worker //          If PDFium is built with the XFA module, the application should call
412*3ac0a46fSAndroid Build Coastguard Worker //          FPDF_LoadXFA() function after the PDF document loaded to support XFA
413*3ac0a46fSAndroid Build Coastguard Worker //          fields defined in the fpdfformfill.h file.
414*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV
415*3ac0a46fSAndroid Build Coastguard Worker FPDF_LoadMemDocument(const void* data_buf, int size, FPDF_BYTESTRING password);
416*3ac0a46fSAndroid Build Coastguard Worker 
417*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
418*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadMemDocument64
419*3ac0a46fSAndroid Build Coastguard Worker //          Open and load a PDF document from memory.
420*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
421*3ac0a46fSAndroid Build Coastguard Worker //          data_buf    -   Pointer to a buffer containing the PDF document.
422*3ac0a46fSAndroid Build Coastguard Worker //          size        -   Number of bytes in the PDF document.
423*3ac0a46fSAndroid Build Coastguard Worker //          password    -   A string used as the password for the PDF file.
424*3ac0a46fSAndroid Build Coastguard Worker //                          If no password is needed, empty or NULL can be used.
425*3ac0a46fSAndroid Build Coastguard Worker // Return value:
426*3ac0a46fSAndroid Build Coastguard Worker //          A handle to the loaded document, or NULL on failure.
427*3ac0a46fSAndroid Build Coastguard Worker // Comments:
428*3ac0a46fSAndroid Build Coastguard Worker //          The memory buffer must remain valid when the document is open.
429*3ac0a46fSAndroid Build Coastguard Worker //          The loaded document can be closed by FPDF_CloseDocument.
430*3ac0a46fSAndroid Build Coastguard Worker //          If this function fails, you can use FPDF_GetLastError() to retrieve
431*3ac0a46fSAndroid Build Coastguard Worker //          the reason why it failed.
432*3ac0a46fSAndroid Build Coastguard Worker //
433*3ac0a46fSAndroid Build Coastguard Worker //          See the comments for FPDF_LoadDocument() regarding the encoding for
434*3ac0a46fSAndroid Build Coastguard Worker //          |password|.
435*3ac0a46fSAndroid Build Coastguard Worker // Notes:
436*3ac0a46fSAndroid Build Coastguard Worker //          If PDFium is built with the XFA module, the application should call
437*3ac0a46fSAndroid Build Coastguard Worker //          FPDF_LoadXFA() function after the PDF document loaded to support XFA
438*3ac0a46fSAndroid Build Coastguard Worker //          fields defined in the fpdfformfill.h file.
439*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV
440*3ac0a46fSAndroid Build Coastguard Worker FPDF_LoadMemDocument64(const void* data_buf,
441*3ac0a46fSAndroid Build Coastguard Worker                        size_t size,
442*3ac0a46fSAndroid Build Coastguard Worker                        FPDF_BYTESTRING password);
443*3ac0a46fSAndroid Build Coastguard Worker 
444*3ac0a46fSAndroid Build Coastguard Worker // Structure for custom file access.
445*3ac0a46fSAndroid Build Coastguard Worker typedef struct {
446*3ac0a46fSAndroid Build Coastguard Worker   // File length, in bytes.
447*3ac0a46fSAndroid Build Coastguard Worker   unsigned long m_FileLen;
448*3ac0a46fSAndroid Build Coastguard Worker 
449*3ac0a46fSAndroid Build Coastguard Worker   // A function pointer for getting a block of data from a specific position.
450*3ac0a46fSAndroid Build Coastguard Worker   // Position is specified by byte offset from the beginning of the file.
451*3ac0a46fSAndroid Build Coastguard Worker   // The pointer to the buffer is never NULL and the size is never 0.
452*3ac0a46fSAndroid Build Coastguard Worker   // The position and size will never go out of range of the file length.
453*3ac0a46fSAndroid Build Coastguard Worker   // It may be possible for PDFium to call this function multiple times for
454*3ac0a46fSAndroid Build Coastguard Worker   // the same position.
455*3ac0a46fSAndroid Build Coastguard Worker   // Return value: should be non-zero if successful, zero for error.
456*3ac0a46fSAndroid Build Coastguard Worker   int (*m_GetBlock)(void* param,
457*3ac0a46fSAndroid Build Coastguard Worker                     unsigned long position,
458*3ac0a46fSAndroid Build Coastguard Worker                     unsigned char* pBuf,
459*3ac0a46fSAndroid Build Coastguard Worker                     unsigned long size);
460*3ac0a46fSAndroid Build Coastguard Worker 
461*3ac0a46fSAndroid Build Coastguard Worker   // A custom pointer for all implementation specific data.  This pointer will
462*3ac0a46fSAndroid Build Coastguard Worker   // be used as the first parameter to the m_GetBlock callback.
463*3ac0a46fSAndroid Build Coastguard Worker   void* m_Param;
464*3ac0a46fSAndroid Build Coastguard Worker } FPDF_FILEACCESS;
465*3ac0a46fSAndroid Build Coastguard Worker 
466*3ac0a46fSAndroid Build Coastguard Worker /*
467*3ac0a46fSAndroid Build Coastguard Worker  * Structure for file reading or writing (I/O).
468*3ac0a46fSAndroid Build Coastguard Worker  *
469*3ac0a46fSAndroid Build Coastguard Worker  * Note: This is a handler and should be implemented by callers,
470*3ac0a46fSAndroid Build Coastguard Worker  * and is only used from XFA.
471*3ac0a46fSAndroid Build Coastguard Worker  */
472*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_FILEHANDLER_ {
473*3ac0a46fSAndroid Build Coastguard Worker   /*
474*3ac0a46fSAndroid Build Coastguard Worker    * User-defined data.
475*3ac0a46fSAndroid Build Coastguard Worker    * Note: Callers can use this field to track controls.
476*3ac0a46fSAndroid Build Coastguard Worker    */
477*3ac0a46fSAndroid Build Coastguard Worker   void* clientData;
478*3ac0a46fSAndroid Build Coastguard Worker 
479*3ac0a46fSAndroid Build Coastguard Worker   /*
480*3ac0a46fSAndroid Build Coastguard Worker    * Callback function to release the current file stream object.
481*3ac0a46fSAndroid Build Coastguard Worker    *
482*3ac0a46fSAndroid Build Coastguard Worker    * Parameters:
483*3ac0a46fSAndroid Build Coastguard Worker    *       clientData   -  Pointer to user-defined data.
484*3ac0a46fSAndroid Build Coastguard Worker    * Returns:
485*3ac0a46fSAndroid Build Coastguard Worker    *       None.
486*3ac0a46fSAndroid Build Coastguard Worker    */
487*3ac0a46fSAndroid Build Coastguard Worker   void (*Release)(void* clientData);
488*3ac0a46fSAndroid Build Coastguard Worker 
489*3ac0a46fSAndroid Build Coastguard Worker   /*
490*3ac0a46fSAndroid Build Coastguard Worker    * Callback function to retrieve the current file stream size.
491*3ac0a46fSAndroid Build Coastguard Worker    *
492*3ac0a46fSAndroid Build Coastguard Worker    * Parameters:
493*3ac0a46fSAndroid Build Coastguard Worker    *       clientData   -  Pointer to user-defined data.
494*3ac0a46fSAndroid Build Coastguard Worker    * Returns:
495*3ac0a46fSAndroid Build Coastguard Worker    *       Size of file stream.
496*3ac0a46fSAndroid Build Coastguard Worker    */
497*3ac0a46fSAndroid Build Coastguard Worker   FPDF_DWORD (*GetSize)(void* clientData);
498*3ac0a46fSAndroid Build Coastguard Worker 
499*3ac0a46fSAndroid Build Coastguard Worker   /*
500*3ac0a46fSAndroid Build Coastguard Worker    * Callback function to read data from the current file stream.
501*3ac0a46fSAndroid Build Coastguard Worker    *
502*3ac0a46fSAndroid Build Coastguard Worker    * Parameters:
503*3ac0a46fSAndroid Build Coastguard Worker    *       clientData   -  Pointer to user-defined data.
504*3ac0a46fSAndroid Build Coastguard Worker    *       offset       -  Offset position starts from the beginning of file
505*3ac0a46fSAndroid Build Coastguard Worker    *                       stream. This parameter indicates reading position.
506*3ac0a46fSAndroid Build Coastguard Worker    *       buffer       -  Memory buffer to store data which are read from
507*3ac0a46fSAndroid Build Coastguard Worker    *                       file stream. This parameter should not be NULL.
508*3ac0a46fSAndroid Build Coastguard Worker    *       size         -  Size of data which should be read from file stream,
509*3ac0a46fSAndroid Build Coastguard Worker    *                       in bytes. The buffer indicated by |buffer| must be
510*3ac0a46fSAndroid Build Coastguard Worker    *                       large enough to store specified data.
511*3ac0a46fSAndroid Build Coastguard Worker    * Returns:
512*3ac0a46fSAndroid Build Coastguard Worker    *       0 for success, other value for failure.
513*3ac0a46fSAndroid Build Coastguard Worker    */
514*3ac0a46fSAndroid Build Coastguard Worker   FPDF_RESULT (*ReadBlock)(void* clientData,
515*3ac0a46fSAndroid Build Coastguard Worker                            FPDF_DWORD offset,
516*3ac0a46fSAndroid Build Coastguard Worker                            void* buffer,
517*3ac0a46fSAndroid Build Coastguard Worker                            FPDF_DWORD size);
518*3ac0a46fSAndroid Build Coastguard Worker 
519*3ac0a46fSAndroid Build Coastguard Worker   /*
520*3ac0a46fSAndroid Build Coastguard Worker    * Callback function to write data into the current file stream.
521*3ac0a46fSAndroid Build Coastguard Worker    *
522*3ac0a46fSAndroid Build Coastguard Worker    * Parameters:
523*3ac0a46fSAndroid Build Coastguard Worker    *       clientData   -  Pointer to user-defined data.
524*3ac0a46fSAndroid Build Coastguard Worker    *       offset       -  Offset position starts from the beginning of file
525*3ac0a46fSAndroid Build Coastguard Worker    *                       stream. This parameter indicates writing position.
526*3ac0a46fSAndroid Build Coastguard Worker    *       buffer       -  Memory buffer contains data which is written into
527*3ac0a46fSAndroid Build Coastguard Worker    *                       file stream. This parameter should not be NULL.
528*3ac0a46fSAndroid Build Coastguard Worker    *       size         -  Size of data which should be written into file
529*3ac0a46fSAndroid Build Coastguard Worker    *                       stream, in bytes.
530*3ac0a46fSAndroid Build Coastguard Worker    * Returns:
531*3ac0a46fSAndroid Build Coastguard Worker    *       0 for success, other value for failure.
532*3ac0a46fSAndroid Build Coastguard Worker    */
533*3ac0a46fSAndroid Build Coastguard Worker   FPDF_RESULT (*WriteBlock)(void* clientData,
534*3ac0a46fSAndroid Build Coastguard Worker                             FPDF_DWORD offset,
535*3ac0a46fSAndroid Build Coastguard Worker                             const void* buffer,
536*3ac0a46fSAndroid Build Coastguard Worker                             FPDF_DWORD size);
537*3ac0a46fSAndroid Build Coastguard Worker   /*
538*3ac0a46fSAndroid Build Coastguard Worker    * Callback function to flush all internal accessing buffers.
539*3ac0a46fSAndroid Build Coastguard Worker    *
540*3ac0a46fSAndroid Build Coastguard Worker    * Parameters:
541*3ac0a46fSAndroid Build Coastguard Worker    *       clientData   -  Pointer to user-defined data.
542*3ac0a46fSAndroid Build Coastguard Worker    * Returns:
543*3ac0a46fSAndroid Build Coastguard Worker    *       0 for success, other value for failure.
544*3ac0a46fSAndroid Build Coastguard Worker    */
545*3ac0a46fSAndroid Build Coastguard Worker   FPDF_RESULT (*Flush)(void* clientData);
546*3ac0a46fSAndroid Build Coastguard Worker 
547*3ac0a46fSAndroid Build Coastguard Worker   /*
548*3ac0a46fSAndroid Build Coastguard Worker    * Callback function to change file size.
549*3ac0a46fSAndroid Build Coastguard Worker    *
550*3ac0a46fSAndroid Build Coastguard Worker    * Description:
551*3ac0a46fSAndroid Build Coastguard Worker    *       This function is called under writing mode usually. Implementer
552*3ac0a46fSAndroid Build Coastguard Worker    *       can determine whether to realize it based on application requests.
553*3ac0a46fSAndroid Build Coastguard Worker    * Parameters:
554*3ac0a46fSAndroid Build Coastguard Worker    *       clientData   -  Pointer to user-defined data.
555*3ac0a46fSAndroid Build Coastguard Worker    *       size         -  New size of file stream, in bytes.
556*3ac0a46fSAndroid Build Coastguard Worker    * Returns:
557*3ac0a46fSAndroid Build Coastguard Worker    *       0 for success, other value for failure.
558*3ac0a46fSAndroid Build Coastguard Worker    */
559*3ac0a46fSAndroid Build Coastguard Worker   FPDF_RESULT (*Truncate)(void* clientData, FPDF_DWORD size);
560*3ac0a46fSAndroid Build Coastguard Worker } FPDF_FILEHANDLER;
561*3ac0a46fSAndroid Build Coastguard Worker 
562*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadCustomDocument
563*3ac0a46fSAndroid Build Coastguard Worker //          Load PDF document from a custom access descriptor.
564*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
565*3ac0a46fSAndroid Build Coastguard Worker //          pFileAccess -   A structure for accessing the file.
566*3ac0a46fSAndroid Build Coastguard Worker //          password    -   Optional password for decrypting the PDF file.
567*3ac0a46fSAndroid Build Coastguard Worker // Return value:
568*3ac0a46fSAndroid Build Coastguard Worker //          A handle to the loaded document, or NULL on failure.
569*3ac0a46fSAndroid Build Coastguard Worker // Comments:
570*3ac0a46fSAndroid Build Coastguard Worker //          The application must keep the file resources |pFileAccess| points to
571*3ac0a46fSAndroid Build Coastguard Worker //          valid until the returned FPDF_DOCUMENT is closed. |pFileAccess|
572*3ac0a46fSAndroid Build Coastguard Worker //          itself does not need to outlive the FPDF_DOCUMENT.
573*3ac0a46fSAndroid Build Coastguard Worker //
574*3ac0a46fSAndroid Build Coastguard Worker //          The loaded document can be closed with FPDF_CloseDocument().
575*3ac0a46fSAndroid Build Coastguard Worker //
576*3ac0a46fSAndroid Build Coastguard Worker //          See the comments for FPDF_LoadDocument() regarding the encoding for
577*3ac0a46fSAndroid Build Coastguard Worker //          |password|.
578*3ac0a46fSAndroid Build Coastguard Worker // Notes:
579*3ac0a46fSAndroid Build Coastguard Worker //          If PDFium is built with the XFA module, the application should call
580*3ac0a46fSAndroid Build Coastguard Worker //          FPDF_LoadXFA() function after the PDF document loaded to support XFA
581*3ac0a46fSAndroid Build Coastguard Worker //          fields defined in the fpdfformfill.h file.
582*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV
583*3ac0a46fSAndroid Build Coastguard Worker FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess, FPDF_BYTESTRING password);
584*3ac0a46fSAndroid Build Coastguard Worker 
585*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetFileVersion
586*3ac0a46fSAndroid Build Coastguard Worker //          Get the file version of the given PDF document.
587*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
588*3ac0a46fSAndroid Build Coastguard Worker //          doc         -   Handle to a document.
589*3ac0a46fSAndroid Build Coastguard Worker //          fileVersion -   The PDF file version. File version: 14 for 1.4, 15
590*3ac0a46fSAndroid Build Coastguard Worker //                          for 1.5, ...
591*3ac0a46fSAndroid Build Coastguard Worker // Return value:
592*3ac0a46fSAndroid Build Coastguard Worker //          True if succeeds, false otherwise.
593*3ac0a46fSAndroid Build Coastguard Worker // Comments:
594*3ac0a46fSAndroid Build Coastguard Worker //          If the document was created by FPDF_CreateNewDocument,
595*3ac0a46fSAndroid Build Coastguard Worker //          then this function will always fail.
596*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetFileVersion(FPDF_DOCUMENT doc,
597*3ac0a46fSAndroid Build Coastguard Worker                                                         int* fileVersion);
598*3ac0a46fSAndroid Build Coastguard Worker 
599*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_SUCCESS 0    // No error.
600*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_UNKNOWN 1    // Unknown error.
601*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_FILE 2       // File not found or could not be opened.
602*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_FORMAT 3     // File not in PDF format or corrupted.
603*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_PASSWORD 4   // Password required or incorrect password.
604*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_SECURITY 5   // Unsupported security scheme.
605*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_PAGE 6       // Page not found or content error.
606*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA
607*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_XFALOAD 7    // Load XFA error.
608*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ERR_XFALAYOUT 8  // Layout XFA error.
609*3ac0a46fSAndroid Build Coastguard Worker #endif  // PDF_ENABLE_XFA
610*3ac0a46fSAndroid Build Coastguard Worker 
611*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetLastError
612*3ac0a46fSAndroid Build Coastguard Worker //          Get last error code when a function fails.
613*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
614*3ac0a46fSAndroid Build Coastguard Worker //          None.
615*3ac0a46fSAndroid Build Coastguard Worker // Return value:
616*3ac0a46fSAndroid Build Coastguard Worker //          A 32-bit integer indicating error code as defined above.
617*3ac0a46fSAndroid Build Coastguard Worker // Comments:
618*3ac0a46fSAndroid Build Coastguard Worker //          If the previous SDK call succeeded, the return value of this
619*3ac0a46fSAndroid Build Coastguard Worker //          function is not defined. This function only works in conjunction
620*3ac0a46fSAndroid Build Coastguard Worker //          with APIs that mention FPDF_GetLastError() in their documentation.
621*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV FPDF_GetLastError();
622*3ac0a46fSAndroid Build Coastguard Worker 
623*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
624*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_DocumentHasValidCrossReferenceTable
625*3ac0a46fSAndroid Build Coastguard Worker //          Whether the document's cross reference table is valid or not.
626*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
627*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to a document. Returned by FPDF_LoadDocument.
628*3ac0a46fSAndroid Build Coastguard Worker // Return value:
629*3ac0a46fSAndroid Build Coastguard Worker //          True if the PDF parser did not encounter problems parsing the cross
630*3ac0a46fSAndroid Build Coastguard Worker //          reference table. False if the parser could not parse the cross
631*3ac0a46fSAndroid Build Coastguard Worker //          reference table and the table had to be rebuild from other data
632*3ac0a46fSAndroid Build Coastguard Worker //          within the document.
633*3ac0a46fSAndroid Build Coastguard Worker // Comments:
634*3ac0a46fSAndroid Build Coastguard Worker //          The return value can change over time as the PDF parser evolves.
635*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
636*3ac0a46fSAndroid Build Coastguard Worker FPDF_DocumentHasValidCrossReferenceTable(FPDF_DOCUMENT document);
637*3ac0a46fSAndroid Build Coastguard Worker 
638*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
639*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetTrailerEnds
640*3ac0a46fSAndroid Build Coastguard Worker //          Get the byte offsets of trailer ends.
641*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
642*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to document. Returned by FPDF_LoadDocument().
643*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   The address of a buffer that receives the
644*3ac0a46fSAndroid Build Coastguard Worker //                          byte offsets.
645*3ac0a46fSAndroid Build Coastguard Worker //          length      -   The size, in ints, of |buffer|.
646*3ac0a46fSAndroid Build Coastguard Worker // Return value:
647*3ac0a46fSAndroid Build Coastguard Worker //          Returns the number of ints in the buffer on success, 0 on error.
648*3ac0a46fSAndroid Build Coastguard Worker //
649*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is an array of integers that describes the exact byte offsets of the
650*3ac0a46fSAndroid Build Coastguard Worker // trailer ends in the document. If |length| is less than the returned length,
651*3ac0a46fSAndroid Build Coastguard Worker // or |document| or |buffer| is NULL, |buffer| will not be modified.
652*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
653*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetTrailerEnds(FPDF_DOCUMENT document,
654*3ac0a46fSAndroid Build Coastguard Worker                     unsigned int* buffer,
655*3ac0a46fSAndroid Build Coastguard Worker                     unsigned long length);
656*3ac0a46fSAndroid Build Coastguard Worker 
657*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetDocPermission
658*3ac0a46fSAndroid Build Coastguard Worker //          Get file permission flags of the document.
659*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
660*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to a document. Returned by FPDF_LoadDocument.
661*3ac0a46fSAndroid Build Coastguard Worker // Return value:
662*3ac0a46fSAndroid Build Coastguard Worker //          A 32-bit integer indicating permission flags. Please refer to the
663*3ac0a46fSAndroid Build Coastguard Worker //          PDF Reference for detailed descriptions. If the document is not
664*3ac0a46fSAndroid Build Coastguard Worker //          protected, 0xffffffff will be returned.
665*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
666*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetDocPermissions(FPDF_DOCUMENT document);
667*3ac0a46fSAndroid Build Coastguard Worker 
668*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetSecurityHandlerRevision
669*3ac0a46fSAndroid Build Coastguard Worker //          Get the revision for the security handler.
670*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
671*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to a document. Returned by FPDF_LoadDocument.
672*3ac0a46fSAndroid Build Coastguard Worker // Return value:
673*3ac0a46fSAndroid Build Coastguard Worker //          The security handler revision number. Please refer to the PDF
674*3ac0a46fSAndroid Build Coastguard Worker //          Reference for a detailed description. If the document is not
675*3ac0a46fSAndroid Build Coastguard Worker //          protected, -1 will be returned.
676*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
677*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document);
678*3ac0a46fSAndroid Build Coastguard Worker 
679*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageCount
680*3ac0a46fSAndroid Build Coastguard Worker //          Get total number of pages in the document.
681*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
682*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to document. Returned by FPDF_LoadDocument.
683*3ac0a46fSAndroid Build Coastguard Worker // Return value:
684*3ac0a46fSAndroid Build Coastguard Worker //          Total number of pages in the document.
685*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDF_GetPageCount(FPDF_DOCUMENT document);
686*3ac0a46fSAndroid Build Coastguard Worker 
687*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_LoadPage
688*3ac0a46fSAndroid Build Coastguard Worker //          Load a page inside the document.
689*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
690*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to document. Returned by FPDF_LoadDocument
691*3ac0a46fSAndroid Build Coastguard Worker //          page_index  -   Index number of the page. 0 for the first page.
692*3ac0a46fSAndroid Build Coastguard Worker // Return value:
693*3ac0a46fSAndroid Build Coastguard Worker //          A handle to the loaded page, or NULL if page load fails.
694*3ac0a46fSAndroid Build Coastguard Worker // Comments:
695*3ac0a46fSAndroid Build Coastguard Worker //          The loaded page can be rendered to devices using FPDF_RenderPage.
696*3ac0a46fSAndroid Build Coastguard Worker //          The loaded page can be closed using FPDF_ClosePage.
697*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDF_LoadPage(FPDF_DOCUMENT document,
698*3ac0a46fSAndroid Build Coastguard Worker                                                   int page_index);
699*3ac0a46fSAndroid Build Coastguard Worker 
700*3ac0a46fSAndroid Build Coastguard Worker // Experimental API
701*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageWidthF
702*3ac0a46fSAndroid Build Coastguard Worker //          Get page width.
703*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
704*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage().
705*3ac0a46fSAndroid Build Coastguard Worker // Return value:
706*3ac0a46fSAndroid Build Coastguard Worker //          Page width (excluding non-displayable area) measured in points.
707*3ac0a46fSAndroid Build Coastguard Worker //          One point is 1/72 inch (around 0.3528 mm).
708*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT float FPDF_CALLCONV FPDF_GetPageWidthF(FPDF_PAGE page);
709*3ac0a46fSAndroid Build Coastguard Worker 
710*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageWidth
711*3ac0a46fSAndroid Build Coastguard Worker //          Get page width.
712*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
713*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage.
714*3ac0a46fSAndroid Build Coastguard Worker // Return value:
715*3ac0a46fSAndroid Build Coastguard Worker //          Page width (excluding non-displayable area) measured in points.
716*3ac0a46fSAndroid Build Coastguard Worker //          One point is 1/72 inch (around 0.3528 mm).
717*3ac0a46fSAndroid Build Coastguard Worker // Note:
718*3ac0a46fSAndroid Build Coastguard Worker //          Prefer FPDF_GetPageWidthF() above. This will be deprecated in the
719*3ac0a46fSAndroid Build Coastguard Worker //          future.
720*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT double FPDF_CALLCONV FPDF_GetPageWidth(FPDF_PAGE page);
721*3ac0a46fSAndroid Build Coastguard Worker 
722*3ac0a46fSAndroid Build Coastguard Worker // Experimental API
723*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageHeightF
724*3ac0a46fSAndroid Build Coastguard Worker //          Get page height.
725*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
726*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage().
727*3ac0a46fSAndroid Build Coastguard Worker // Return value:
728*3ac0a46fSAndroid Build Coastguard Worker //          Page height (excluding non-displayable area) measured in points.
729*3ac0a46fSAndroid Build Coastguard Worker //          One point is 1/72 inch (around 0.3528 mm)
730*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT float FPDF_CALLCONV FPDF_GetPageHeightF(FPDF_PAGE page);
731*3ac0a46fSAndroid Build Coastguard Worker 
732*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageHeight
733*3ac0a46fSAndroid Build Coastguard Worker //          Get page height.
734*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
735*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage.
736*3ac0a46fSAndroid Build Coastguard Worker // Return value:
737*3ac0a46fSAndroid Build Coastguard Worker //          Page height (excluding non-displayable area) measured in points.
738*3ac0a46fSAndroid Build Coastguard Worker //          One point is 1/72 inch (around 0.3528 mm)
739*3ac0a46fSAndroid Build Coastguard Worker // Note:
740*3ac0a46fSAndroid Build Coastguard Worker //          Prefer FPDF_GetPageHeightF() above. This will be deprecated in the
741*3ac0a46fSAndroid Build Coastguard Worker //          future.
742*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT double FPDF_CALLCONV FPDF_GetPageHeight(FPDF_PAGE page);
743*3ac0a46fSAndroid Build Coastguard Worker 
744*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
745*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageBoundingBox
746*3ac0a46fSAndroid Build Coastguard Worker //          Get the bounding box of the page. This is the intersection between
747*3ac0a46fSAndroid Build Coastguard Worker //          its media box and its crop box.
748*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
749*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage.
750*3ac0a46fSAndroid Build Coastguard Worker //          rect        -   Pointer to a rect to receive the page bounding box.
751*3ac0a46fSAndroid Build Coastguard Worker //                          On an error, |rect| won't be filled.
752*3ac0a46fSAndroid Build Coastguard Worker // Return value:
753*3ac0a46fSAndroid Build Coastguard Worker //          True for success.
754*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetPageBoundingBox(FPDF_PAGE page,
755*3ac0a46fSAndroid Build Coastguard Worker                                                             FS_RECTF* rect);
756*3ac0a46fSAndroid Build Coastguard Worker 
757*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
758*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageSizeByIndexF
759*3ac0a46fSAndroid Build Coastguard Worker //          Get the size of the page at the given index.
760*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
761*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to document. Returned by FPDF_LoadDocument().
762*3ac0a46fSAndroid Build Coastguard Worker //          page_index  -   Page index, zero for the first page.
763*3ac0a46fSAndroid Build Coastguard Worker //          size        -   Pointer to a FS_SIZEF to receive the page size.
764*3ac0a46fSAndroid Build Coastguard Worker //                          (in points).
765*3ac0a46fSAndroid Build Coastguard Worker // Return value:
766*3ac0a46fSAndroid Build Coastguard Worker //          Non-zero for success. 0 for error (document or page not found).
767*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
768*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetPageSizeByIndexF(FPDF_DOCUMENT document,
769*3ac0a46fSAndroid Build Coastguard Worker                          int page_index,
770*3ac0a46fSAndroid Build Coastguard Worker                          FS_SIZEF* size);
771*3ac0a46fSAndroid Build Coastguard Worker 
772*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetPageSizeByIndex
773*3ac0a46fSAndroid Build Coastguard Worker //          Get the size of the page at the given index.
774*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
775*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to document. Returned by FPDF_LoadDocument.
776*3ac0a46fSAndroid Build Coastguard Worker //          page_index  -   Page index, zero for the first page.
777*3ac0a46fSAndroid Build Coastguard Worker //          width       -   Pointer to a double to receive the page width
778*3ac0a46fSAndroid Build Coastguard Worker //                          (in points).
779*3ac0a46fSAndroid Build Coastguard Worker //          height      -   Pointer to a double to receive the page height
780*3ac0a46fSAndroid Build Coastguard Worker //                          (in points).
781*3ac0a46fSAndroid Build Coastguard Worker // Return value:
782*3ac0a46fSAndroid Build Coastguard Worker //          Non-zero for success. 0 for error (document or page not found).
783*3ac0a46fSAndroid Build Coastguard Worker // Note:
784*3ac0a46fSAndroid Build Coastguard Worker //          Prefer FPDF_GetPageSizeByIndexF() above. This will be deprecated in
785*3ac0a46fSAndroid Build Coastguard Worker //          the future.
786*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document,
787*3ac0a46fSAndroid Build Coastguard Worker                                                       int page_index,
788*3ac0a46fSAndroid Build Coastguard Worker                                                       double* width,
789*3ac0a46fSAndroid Build Coastguard Worker                                                       double* height);
790*3ac0a46fSAndroid Build Coastguard Worker 
791*3ac0a46fSAndroid Build Coastguard Worker // Page rendering flags. They can be combined with bit-wise OR.
792*3ac0a46fSAndroid Build Coastguard Worker //
793*3ac0a46fSAndroid Build Coastguard Worker // Set if annotations are to be rendered.
794*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_ANNOT 0x01
795*3ac0a46fSAndroid Build Coastguard Worker // Set if using text rendering optimized for LCD display. This flag will only
796*3ac0a46fSAndroid Build Coastguard Worker // take effect if anti-aliasing is enabled for text.
797*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_LCD_TEXT 0x02
798*3ac0a46fSAndroid Build Coastguard Worker // Don't use the native text output available on some platforms
799*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_NO_NATIVETEXT 0x04
800*3ac0a46fSAndroid Build Coastguard Worker // Grayscale output.
801*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_GRAYSCALE 0x08
802*3ac0a46fSAndroid Build Coastguard Worker // Obsolete, has no effect, retained for compatibility.
803*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_DEBUG_INFO 0x80
804*3ac0a46fSAndroid Build Coastguard Worker // Obsolete, has no effect, retained for compatibility.
805*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_NO_CATCH 0x100
806*3ac0a46fSAndroid Build Coastguard Worker // Limit image cache size.
807*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_LIMITEDIMAGECACHE 0x200
808*3ac0a46fSAndroid Build Coastguard Worker // Always use halftone for image stretching.
809*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_FORCEHALFTONE 0x400
810*3ac0a46fSAndroid Build Coastguard Worker // Render for printing.
811*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_PRINTING 0x800
812*3ac0a46fSAndroid Build Coastguard Worker // Set to disable anti-aliasing on text. This flag will also disable LCD
813*3ac0a46fSAndroid Build Coastguard Worker // optimization for text rendering.
814*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_NO_SMOOTHTEXT 0x1000
815*3ac0a46fSAndroid Build Coastguard Worker // Set to disable anti-aliasing on images.
816*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_NO_SMOOTHIMAGE 0x2000
817*3ac0a46fSAndroid Build Coastguard Worker // Set to disable anti-aliasing on paths.
818*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_RENDER_NO_SMOOTHPATH 0x4000
819*3ac0a46fSAndroid Build Coastguard Worker // Set whether to render in a reverse Byte order, this flag is only used when
820*3ac0a46fSAndroid Build Coastguard Worker // rendering to a bitmap.
821*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_REVERSE_BYTE_ORDER 0x10
822*3ac0a46fSAndroid Build Coastguard Worker // Set whether fill paths need to be stroked. This flag is only used when
823*3ac0a46fSAndroid Build Coastguard Worker // FPDF_COLORSCHEME is passed in, since with a single fill color for paths the
824*3ac0a46fSAndroid Build Coastguard Worker // boundaries of adjacent fill paths are less visible.
825*3ac0a46fSAndroid Build Coastguard Worker #define FPDF_CONVERT_FILL_TO_STROKE 0x20
826*3ac0a46fSAndroid Build Coastguard Worker 
827*3ac0a46fSAndroid Build Coastguard Worker // Struct for color scheme.
828*3ac0a46fSAndroid Build Coastguard Worker // Each should be a 32-bit value specifying the color, in 8888 ARGB format.
829*3ac0a46fSAndroid Build Coastguard Worker typedef struct FPDF_COLORSCHEME_ {
830*3ac0a46fSAndroid Build Coastguard Worker   FPDF_DWORD path_fill_color;
831*3ac0a46fSAndroid Build Coastguard Worker   FPDF_DWORD path_stroke_color;
832*3ac0a46fSAndroid Build Coastguard Worker   FPDF_DWORD text_fill_color;
833*3ac0a46fSAndroid Build Coastguard Worker   FPDF_DWORD text_stroke_color;
834*3ac0a46fSAndroid Build Coastguard Worker } FPDF_COLORSCHEME;
835*3ac0a46fSAndroid Build Coastguard Worker 
836*3ac0a46fSAndroid Build Coastguard Worker #ifdef _WIN32
837*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_RenderPage
838*3ac0a46fSAndroid Build Coastguard Worker //          Render contents of a page to a device (screen, bitmap, or printer).
839*3ac0a46fSAndroid Build Coastguard Worker //          This function is only supported on Windows.
840*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
841*3ac0a46fSAndroid Build Coastguard Worker //          dc          -   Handle to the device context.
842*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage.
843*3ac0a46fSAndroid Build Coastguard Worker //          start_x     -   Left pixel position of the display area in
844*3ac0a46fSAndroid Build Coastguard Worker //                          device coordinates.
845*3ac0a46fSAndroid Build Coastguard Worker //          start_y     -   Top pixel position of the display area in device
846*3ac0a46fSAndroid Build Coastguard Worker //                          coordinates.
847*3ac0a46fSAndroid Build Coastguard Worker //          size_x      -   Horizontal size (in pixels) for displaying the page.
848*3ac0a46fSAndroid Build Coastguard Worker //          size_y      -   Vertical size (in pixels) for displaying the page.
849*3ac0a46fSAndroid Build Coastguard Worker //          rotate      -   Page orientation:
850*3ac0a46fSAndroid Build Coastguard Worker //                            0 (normal)
851*3ac0a46fSAndroid Build Coastguard Worker //                            1 (rotated 90 degrees clockwise)
852*3ac0a46fSAndroid Build Coastguard Worker //                            2 (rotated 180 degrees)
853*3ac0a46fSAndroid Build Coastguard Worker //                            3 (rotated 90 degrees counter-clockwise)
854*3ac0a46fSAndroid Build Coastguard Worker //          flags       -   0 for normal display, or combination of flags
855*3ac0a46fSAndroid Build Coastguard Worker //                          defined above.
856*3ac0a46fSAndroid Build Coastguard Worker // Return value:
857*3ac0a46fSAndroid Build Coastguard Worker //          None.
858*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_RenderPage(HDC dc,
859*3ac0a46fSAndroid Build Coastguard Worker                                                FPDF_PAGE page,
860*3ac0a46fSAndroid Build Coastguard Worker                                                int start_x,
861*3ac0a46fSAndroid Build Coastguard Worker                                                int start_y,
862*3ac0a46fSAndroid Build Coastguard Worker                                                int size_x,
863*3ac0a46fSAndroid Build Coastguard Worker                                                int size_y,
864*3ac0a46fSAndroid Build Coastguard Worker                                                int rotate,
865*3ac0a46fSAndroid Build Coastguard Worker                                                int flags);
866*3ac0a46fSAndroid Build Coastguard Worker #endif
867*3ac0a46fSAndroid Build Coastguard Worker 
868*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_RenderPageBitmap
869*3ac0a46fSAndroid Build Coastguard Worker //          Render contents of a page to a device independent bitmap.
870*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
871*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   Handle to the device independent bitmap (as the
872*3ac0a46fSAndroid Build Coastguard Worker //                          output buffer). The bitmap handle can be created
873*3ac0a46fSAndroid Build Coastguard Worker //                          by FPDFBitmap_Create or retrieved from an image
874*3ac0a46fSAndroid Build Coastguard Worker //                          object by FPDFImageObj_GetBitmap.
875*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage
876*3ac0a46fSAndroid Build Coastguard Worker //          start_x     -   Left pixel position of the display area in
877*3ac0a46fSAndroid Build Coastguard Worker //                          bitmap coordinates.
878*3ac0a46fSAndroid Build Coastguard Worker //          start_y     -   Top pixel position of the display area in bitmap
879*3ac0a46fSAndroid Build Coastguard Worker //                          coordinates.
880*3ac0a46fSAndroid Build Coastguard Worker //          size_x      -   Horizontal size (in pixels) for displaying the page.
881*3ac0a46fSAndroid Build Coastguard Worker //          size_y      -   Vertical size (in pixels) for displaying the page.
882*3ac0a46fSAndroid Build Coastguard Worker //          rotate      -   Page orientation:
883*3ac0a46fSAndroid Build Coastguard Worker //                            0 (normal)
884*3ac0a46fSAndroid Build Coastguard Worker //                            1 (rotated 90 degrees clockwise)
885*3ac0a46fSAndroid Build Coastguard Worker //                            2 (rotated 180 degrees)
886*3ac0a46fSAndroid Build Coastguard Worker //                            3 (rotated 90 degrees counter-clockwise)
887*3ac0a46fSAndroid Build Coastguard Worker //          flags       -   0 for normal display, or combination of the Page
888*3ac0a46fSAndroid Build Coastguard Worker //                          Rendering flags defined above. With the FPDF_ANNOT
889*3ac0a46fSAndroid Build Coastguard Worker //                          flag, it renders all annotations that do not require
890*3ac0a46fSAndroid Build Coastguard Worker //                          user-interaction, which are all annotations except
891*3ac0a46fSAndroid Build Coastguard Worker //                          widget and popup annotations.
892*3ac0a46fSAndroid Build Coastguard Worker // Return value:
893*3ac0a46fSAndroid Build Coastguard Worker //          None.
894*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_RenderPageBitmap(FPDF_BITMAP bitmap,
895*3ac0a46fSAndroid Build Coastguard Worker                                                      FPDF_PAGE page,
896*3ac0a46fSAndroid Build Coastguard Worker                                                      int start_x,
897*3ac0a46fSAndroid Build Coastguard Worker                                                      int start_y,
898*3ac0a46fSAndroid Build Coastguard Worker                                                      int size_x,
899*3ac0a46fSAndroid Build Coastguard Worker                                                      int size_y,
900*3ac0a46fSAndroid Build Coastguard Worker                                                      int rotate,
901*3ac0a46fSAndroid Build Coastguard Worker                                                      int flags);
902*3ac0a46fSAndroid Build Coastguard Worker 
903*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_RenderPageBitmapWithMatrix
904*3ac0a46fSAndroid Build Coastguard Worker //          Render contents of a page to a device independent bitmap.
905*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
906*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   Handle to the device independent bitmap (as the
907*3ac0a46fSAndroid Build Coastguard Worker //                          output buffer). The bitmap handle can be created
908*3ac0a46fSAndroid Build Coastguard Worker //                          by FPDFBitmap_Create or retrieved by
909*3ac0a46fSAndroid Build Coastguard Worker //                          FPDFImageObj_GetBitmap.
910*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage.
911*3ac0a46fSAndroid Build Coastguard Worker //          matrix      -   The transform matrix, which must be invertible.
912*3ac0a46fSAndroid Build Coastguard Worker //                          See PDF Reference 1.7, 4.2.2 Common Transformations.
913*3ac0a46fSAndroid Build Coastguard Worker //          clipping    -   The rect to clip to in device coords.
914*3ac0a46fSAndroid Build Coastguard Worker //          flags       -   0 for normal display, or combination of the Page
915*3ac0a46fSAndroid Build Coastguard Worker //                          Rendering flags defined above. With the FPDF_ANNOT
916*3ac0a46fSAndroid Build Coastguard Worker //                          flag, it renders all annotations that do not require
917*3ac0a46fSAndroid Build Coastguard Worker //                          user-interaction, which are all annotations except
918*3ac0a46fSAndroid Build Coastguard Worker //                          widget and popup annotations.
919*3ac0a46fSAndroid Build Coastguard Worker // Return value:
920*3ac0a46fSAndroid Build Coastguard Worker //          None. Note that behavior is undefined if det of |matrix| is 0.
921*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV
922*3ac0a46fSAndroid Build Coastguard Worker FPDF_RenderPageBitmapWithMatrix(FPDF_BITMAP bitmap,
923*3ac0a46fSAndroid Build Coastguard Worker                                 FPDF_PAGE page,
924*3ac0a46fSAndroid Build Coastguard Worker                                 const FS_MATRIX* matrix,
925*3ac0a46fSAndroid Build Coastguard Worker                                 const FS_RECTF* clipping,
926*3ac0a46fSAndroid Build Coastguard Worker                                 int flags);
927*3ac0a46fSAndroid Build Coastguard Worker 
928*3ac0a46fSAndroid Build Coastguard Worker #if defined(_SKIA_SUPPORT_)
929*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
930*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_RenderPageSkia
931*3ac0a46fSAndroid Build Coastguard Worker //          Render contents of a page to a Skia SkCanvas.
932*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
933*3ac0a46fSAndroid Build Coastguard Worker //          canvas      -   SkCanvas to render to.
934*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page.
935*3ac0a46fSAndroid Build Coastguard Worker //          size_x      -   Horizontal size (in pixels) for displaying the page.
936*3ac0a46fSAndroid Build Coastguard Worker //          size_y      -   Vertical size (in pixels) for displaying the page.
937*3ac0a46fSAndroid Build Coastguard Worker // Return value:
938*3ac0a46fSAndroid Build Coastguard Worker //          None.
939*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_RenderPageSkia(FPDF_SKIA_CANVAS canvas,
940*3ac0a46fSAndroid Build Coastguard Worker                                                    FPDF_PAGE page,
941*3ac0a46fSAndroid Build Coastguard Worker                                                    int size_x,
942*3ac0a46fSAndroid Build Coastguard Worker                                                    int size_y);
943*3ac0a46fSAndroid Build Coastguard Worker #endif
944*3ac0a46fSAndroid Build Coastguard Worker 
945*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_ClosePage
946*3ac0a46fSAndroid Build Coastguard Worker //          Close a loaded PDF page.
947*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
948*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the loaded page.
949*3ac0a46fSAndroid Build Coastguard Worker // Return value:
950*3ac0a46fSAndroid Build Coastguard Worker //          None.
951*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_ClosePage(FPDF_PAGE page);
952*3ac0a46fSAndroid Build Coastguard Worker 
953*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_CloseDocument
954*3ac0a46fSAndroid Build Coastguard Worker //          Close a loaded PDF document.
955*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
956*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to the loaded document.
957*3ac0a46fSAndroid Build Coastguard Worker // Return value:
958*3ac0a46fSAndroid Build Coastguard Worker //          None.
959*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDF_CloseDocument(FPDF_DOCUMENT document);
960*3ac0a46fSAndroid Build Coastguard Worker 
961*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_DeviceToPage
962*3ac0a46fSAndroid Build Coastguard Worker //          Convert the screen coordinates of a point to page coordinates.
963*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
964*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage.
965*3ac0a46fSAndroid Build Coastguard Worker //          start_x     -   Left pixel position of the display area in
966*3ac0a46fSAndroid Build Coastguard Worker //                          device coordinates.
967*3ac0a46fSAndroid Build Coastguard Worker //          start_y     -   Top pixel position of the display area in device
968*3ac0a46fSAndroid Build Coastguard Worker //                          coordinates.
969*3ac0a46fSAndroid Build Coastguard Worker //          size_x      -   Horizontal size (in pixels) for displaying the page.
970*3ac0a46fSAndroid Build Coastguard Worker //          size_y      -   Vertical size (in pixels) for displaying the page.
971*3ac0a46fSAndroid Build Coastguard Worker //          rotate      -   Page orientation:
972*3ac0a46fSAndroid Build Coastguard Worker //                            0 (normal)
973*3ac0a46fSAndroid Build Coastguard Worker //                            1 (rotated 90 degrees clockwise)
974*3ac0a46fSAndroid Build Coastguard Worker //                            2 (rotated 180 degrees)
975*3ac0a46fSAndroid Build Coastguard Worker //                            3 (rotated 90 degrees counter-clockwise)
976*3ac0a46fSAndroid Build Coastguard Worker //          device_x    -   X value in device coordinates to be converted.
977*3ac0a46fSAndroid Build Coastguard Worker //          device_y    -   Y value in device coordinates to be converted.
978*3ac0a46fSAndroid Build Coastguard Worker //          page_x      -   A pointer to a double receiving the converted X
979*3ac0a46fSAndroid Build Coastguard Worker //                          value in page coordinates.
980*3ac0a46fSAndroid Build Coastguard Worker //          page_y      -   A pointer to a double receiving the converted Y
981*3ac0a46fSAndroid Build Coastguard Worker //                          value in page coordinates.
982*3ac0a46fSAndroid Build Coastguard Worker // Return value:
983*3ac0a46fSAndroid Build Coastguard Worker //          Returns true if the conversion succeeds, and |page_x| and |page_y|
984*3ac0a46fSAndroid Build Coastguard Worker //          successfully receives the converted coordinates.
985*3ac0a46fSAndroid Build Coastguard Worker // Comments:
986*3ac0a46fSAndroid Build Coastguard Worker //          The page coordinate system has its origin at the left-bottom corner
987*3ac0a46fSAndroid Build Coastguard Worker //          of the page, with the X-axis on the bottom going to the right, and
988*3ac0a46fSAndroid Build Coastguard Worker //          the Y-axis on the left side going up.
989*3ac0a46fSAndroid Build Coastguard Worker //
990*3ac0a46fSAndroid Build Coastguard Worker //          NOTE: this coordinate system can be altered when you zoom, scroll,
991*3ac0a46fSAndroid Build Coastguard Worker //          or rotate a page, however, a point on the page should always have
992*3ac0a46fSAndroid Build Coastguard Worker //          the same coordinate values in the page coordinate system.
993*3ac0a46fSAndroid Build Coastguard Worker //
994*3ac0a46fSAndroid Build Coastguard Worker //          The device coordinate system is device dependent. For screen device,
995*3ac0a46fSAndroid Build Coastguard Worker //          its origin is at the left-top corner of the window. However this
996*3ac0a46fSAndroid Build Coastguard Worker //          origin can be altered by the Windows coordinate transformation
997*3ac0a46fSAndroid Build Coastguard Worker //          utilities.
998*3ac0a46fSAndroid Build Coastguard Worker //
999*3ac0a46fSAndroid Build Coastguard Worker //          You must make sure the start_x, start_y, size_x, size_y
1000*3ac0a46fSAndroid Build Coastguard Worker //          and rotate parameters have exactly same values as you used in
1001*3ac0a46fSAndroid Build Coastguard Worker //          the FPDF_RenderPage() function call.
1002*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_DeviceToPage(FPDF_PAGE page,
1003*3ac0a46fSAndroid Build Coastguard Worker                                                       int start_x,
1004*3ac0a46fSAndroid Build Coastguard Worker                                                       int start_y,
1005*3ac0a46fSAndroid Build Coastguard Worker                                                       int size_x,
1006*3ac0a46fSAndroid Build Coastguard Worker                                                       int size_y,
1007*3ac0a46fSAndroid Build Coastguard Worker                                                       int rotate,
1008*3ac0a46fSAndroid Build Coastguard Worker                                                       int device_x,
1009*3ac0a46fSAndroid Build Coastguard Worker                                                       int device_y,
1010*3ac0a46fSAndroid Build Coastguard Worker                                                       double* page_x,
1011*3ac0a46fSAndroid Build Coastguard Worker                                                       double* page_y);
1012*3ac0a46fSAndroid Build Coastguard Worker 
1013*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_PageToDevice
1014*3ac0a46fSAndroid Build Coastguard Worker //          Convert the page coordinates of a point to screen coordinates.
1015*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1016*3ac0a46fSAndroid Build Coastguard Worker //          page        -   Handle to the page. Returned by FPDF_LoadPage.
1017*3ac0a46fSAndroid Build Coastguard Worker //          start_x     -   Left pixel position of the display area in
1018*3ac0a46fSAndroid Build Coastguard Worker //                          device coordinates.
1019*3ac0a46fSAndroid Build Coastguard Worker //          start_y     -   Top pixel position of the display area in device
1020*3ac0a46fSAndroid Build Coastguard Worker //                          coordinates.
1021*3ac0a46fSAndroid Build Coastguard Worker //          size_x      -   Horizontal size (in pixels) for displaying the page.
1022*3ac0a46fSAndroid Build Coastguard Worker //          size_y      -   Vertical size (in pixels) for displaying the page.
1023*3ac0a46fSAndroid Build Coastguard Worker //          rotate      -   Page orientation:
1024*3ac0a46fSAndroid Build Coastguard Worker //                            0 (normal)
1025*3ac0a46fSAndroid Build Coastguard Worker //                            1 (rotated 90 degrees clockwise)
1026*3ac0a46fSAndroid Build Coastguard Worker //                            2 (rotated 180 degrees)
1027*3ac0a46fSAndroid Build Coastguard Worker //                            3 (rotated 90 degrees counter-clockwise)
1028*3ac0a46fSAndroid Build Coastguard Worker //          page_x      -   X value in page coordinates.
1029*3ac0a46fSAndroid Build Coastguard Worker //          page_y      -   Y value in page coordinate.
1030*3ac0a46fSAndroid Build Coastguard Worker //          device_x    -   A pointer to an integer receiving the result X
1031*3ac0a46fSAndroid Build Coastguard Worker //                          value in device coordinates.
1032*3ac0a46fSAndroid Build Coastguard Worker //          device_y    -   A pointer to an integer receiving the result Y
1033*3ac0a46fSAndroid Build Coastguard Worker //                          value in device coordinates.
1034*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1035*3ac0a46fSAndroid Build Coastguard Worker //          Returns true if the conversion succeeds, and |device_x| and
1036*3ac0a46fSAndroid Build Coastguard Worker //          |device_y| successfully receives the converted coordinates.
1037*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1038*3ac0a46fSAndroid Build Coastguard Worker //          See comments for FPDF_DeviceToPage().
1039*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_PageToDevice(FPDF_PAGE page,
1040*3ac0a46fSAndroid Build Coastguard Worker                                                       int start_x,
1041*3ac0a46fSAndroid Build Coastguard Worker                                                       int start_y,
1042*3ac0a46fSAndroid Build Coastguard Worker                                                       int size_x,
1043*3ac0a46fSAndroid Build Coastguard Worker                                                       int size_y,
1044*3ac0a46fSAndroid Build Coastguard Worker                                                       int rotate,
1045*3ac0a46fSAndroid Build Coastguard Worker                                                       double page_x,
1046*3ac0a46fSAndroid Build Coastguard Worker                                                       double page_y,
1047*3ac0a46fSAndroid Build Coastguard Worker                                                       int* device_x,
1048*3ac0a46fSAndroid Build Coastguard Worker                                                       int* device_y);
1049*3ac0a46fSAndroid Build Coastguard Worker 
1050*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_Create
1051*3ac0a46fSAndroid Build Coastguard Worker //          Create a device independent bitmap (FXDIB).
1052*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1053*3ac0a46fSAndroid Build Coastguard Worker //          width       -   The number of pixels in width for the bitmap.
1054*3ac0a46fSAndroid Build Coastguard Worker //                          Must be greater than 0.
1055*3ac0a46fSAndroid Build Coastguard Worker //          height      -   The number of pixels in height for the bitmap.
1056*3ac0a46fSAndroid Build Coastguard Worker //                          Must be greater than 0.
1057*3ac0a46fSAndroid Build Coastguard Worker //          alpha       -   A flag indicating whether the alpha channel is used.
1058*3ac0a46fSAndroid Build Coastguard Worker //                          Non-zero for using alpha, zero for not using.
1059*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1060*3ac0a46fSAndroid Build Coastguard Worker //          The created bitmap handle, or NULL if a parameter error or out of
1061*3ac0a46fSAndroid Build Coastguard Worker //          memory.
1062*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1063*3ac0a46fSAndroid Build Coastguard Worker //          The bitmap always uses 4 bytes per pixel. The first byte is always
1064*3ac0a46fSAndroid Build Coastguard Worker //          double word aligned.
1065*3ac0a46fSAndroid Build Coastguard Worker //
1066*3ac0a46fSAndroid Build Coastguard Worker //          The byte order is BGRx (the last byte unused if no alpha channel) or
1067*3ac0a46fSAndroid Build Coastguard Worker //          BGRA.
1068*3ac0a46fSAndroid Build Coastguard Worker //
1069*3ac0a46fSAndroid Build Coastguard Worker //          The pixels in a horizontal line are stored side by side, with the
1070*3ac0a46fSAndroid Build Coastguard Worker //          left most pixel stored first (with lower memory address).
1071*3ac0a46fSAndroid Build Coastguard Worker //          Each line uses width * 4 bytes.
1072*3ac0a46fSAndroid Build Coastguard Worker //
1073*3ac0a46fSAndroid Build Coastguard Worker //          Lines are stored one after another, with the top most line stored
1074*3ac0a46fSAndroid Build Coastguard Worker //          first. There is no gap between adjacent lines.
1075*3ac0a46fSAndroid Build Coastguard Worker //
1076*3ac0a46fSAndroid Build Coastguard Worker //          This function allocates enough memory for holding all pixels in the
1077*3ac0a46fSAndroid Build Coastguard Worker //          bitmap, but it doesn't initialize the buffer. Applications can use
1078*3ac0a46fSAndroid Build Coastguard Worker //          FPDFBitmap_FillRect() to fill the bitmap using any color. If the OS
1079*3ac0a46fSAndroid Build Coastguard Worker //          allows it, this function can allocate up to 4 GB of memory.
1080*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV FPDFBitmap_Create(int width,
1081*3ac0a46fSAndroid Build Coastguard Worker                                                         int height,
1082*3ac0a46fSAndroid Build Coastguard Worker                                                         int alpha);
1083*3ac0a46fSAndroid Build Coastguard Worker 
1084*3ac0a46fSAndroid Build Coastguard Worker // More DIB formats
1085*3ac0a46fSAndroid Build Coastguard Worker // Unknown or unsupported format.
1086*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_Unknown 0
1087*3ac0a46fSAndroid Build Coastguard Worker // Gray scale bitmap, one byte per pixel.
1088*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_Gray 1
1089*3ac0a46fSAndroid Build Coastguard Worker // 3 bytes per pixel, byte order: blue, green, red.
1090*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_BGR 2
1091*3ac0a46fSAndroid Build Coastguard Worker // 4 bytes per pixel, byte order: blue, green, red, unused.
1092*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_BGRx 3
1093*3ac0a46fSAndroid Build Coastguard Worker // 4 bytes per pixel, byte order: blue, green, red, alpha.
1094*3ac0a46fSAndroid Build Coastguard Worker #define FPDFBitmap_BGRA 4
1095*3ac0a46fSAndroid Build Coastguard Worker 
1096*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_CreateEx
1097*3ac0a46fSAndroid Build Coastguard Worker //          Create a device independent bitmap (FXDIB)
1098*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1099*3ac0a46fSAndroid Build Coastguard Worker //          width       -   The number of pixels in width for the bitmap.
1100*3ac0a46fSAndroid Build Coastguard Worker //                          Must be greater than 0.
1101*3ac0a46fSAndroid Build Coastguard Worker //          height      -   The number of pixels in height for the bitmap.
1102*3ac0a46fSAndroid Build Coastguard Worker //                          Must be greater than 0.
1103*3ac0a46fSAndroid Build Coastguard Worker //          format      -   A number indicating for bitmap format, as defined
1104*3ac0a46fSAndroid Build Coastguard Worker //                          above.
1105*3ac0a46fSAndroid Build Coastguard Worker //          first_scan  -   A pointer to the first byte of the first line if
1106*3ac0a46fSAndroid Build Coastguard Worker //                          using an external buffer. If this parameter is NULL,
1107*3ac0a46fSAndroid Build Coastguard Worker //                          then a new buffer will be created.
1108*3ac0a46fSAndroid Build Coastguard Worker //          stride      -   Number of bytes for each scan line. The value must
1109*3ac0a46fSAndroid Build Coastguard Worker //                          be 0 or greater. When the value is 0,
1110*3ac0a46fSAndroid Build Coastguard Worker //                          FPDFBitmap_CreateEx() will automatically calculate
1111*3ac0a46fSAndroid Build Coastguard Worker //                          the appropriate value using |width| and |format|.
1112*3ac0a46fSAndroid Build Coastguard Worker //                          When using an external buffer, it is recommended for
1113*3ac0a46fSAndroid Build Coastguard Worker //                          the caller to pass in the value.
1114*3ac0a46fSAndroid Build Coastguard Worker //                          When not using an external buffer, it is recommended
1115*3ac0a46fSAndroid Build Coastguard Worker //                          for the caller to pass in 0.
1116*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1117*3ac0a46fSAndroid Build Coastguard Worker //          The bitmap handle, or NULL if parameter error or out of memory.
1118*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1119*3ac0a46fSAndroid Build Coastguard Worker //          Similar to FPDFBitmap_Create function, but allows for more formats
1120*3ac0a46fSAndroid Build Coastguard Worker //          and an external buffer is supported. The bitmap created by this
1121*3ac0a46fSAndroid Build Coastguard Worker //          function can be used in any place that a FPDF_BITMAP handle is
1122*3ac0a46fSAndroid Build Coastguard Worker //          required.
1123*3ac0a46fSAndroid Build Coastguard Worker //
1124*3ac0a46fSAndroid Build Coastguard Worker //          If an external buffer is used, then the caller should destroy the
1125*3ac0a46fSAndroid Build Coastguard Worker //          buffer. FPDFBitmap_Destroy() will not destroy the buffer.
1126*3ac0a46fSAndroid Build Coastguard Worker //
1127*3ac0a46fSAndroid Build Coastguard Worker //          It is recommended to use FPDFBitmap_GetStride() to get the stride
1128*3ac0a46fSAndroid Build Coastguard Worker //          value.
1129*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV FPDFBitmap_CreateEx(int width,
1130*3ac0a46fSAndroid Build Coastguard Worker                                                           int height,
1131*3ac0a46fSAndroid Build Coastguard Worker                                                           int format,
1132*3ac0a46fSAndroid Build Coastguard Worker                                                           void* first_scan,
1133*3ac0a46fSAndroid Build Coastguard Worker                                                           int stride);
1134*3ac0a46fSAndroid Build Coastguard Worker 
1135*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetFormat
1136*3ac0a46fSAndroid Build Coastguard Worker //          Get the format of the bitmap.
1137*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1138*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create
1139*3ac0a46fSAndroid Build Coastguard Worker //                          or FPDFImageObj_GetBitmap.
1140*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1141*3ac0a46fSAndroid Build Coastguard Worker //          The format of the bitmap.
1142*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1143*3ac0a46fSAndroid Build Coastguard Worker //          Only formats supported by FPDFBitmap_CreateEx are supported by this
1144*3ac0a46fSAndroid Build Coastguard Worker //          function; see the list of such formats above.
1145*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetFormat(FPDF_BITMAP bitmap);
1146*3ac0a46fSAndroid Build Coastguard Worker 
1147*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_FillRect
1148*3ac0a46fSAndroid Build Coastguard Worker //          Fill a rectangle in a bitmap.
1149*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1150*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   The handle to the bitmap. Returned by
1151*3ac0a46fSAndroid Build Coastguard Worker //                          FPDFBitmap_Create.
1152*3ac0a46fSAndroid Build Coastguard Worker //          left        -   The left position. Starting from 0 at the
1153*3ac0a46fSAndroid Build Coastguard Worker //                          left-most pixel.
1154*3ac0a46fSAndroid Build Coastguard Worker //          top         -   The top position. Starting from 0 at the
1155*3ac0a46fSAndroid Build Coastguard Worker //                          top-most line.
1156*3ac0a46fSAndroid Build Coastguard Worker //          width       -   Width in pixels to be filled.
1157*3ac0a46fSAndroid Build Coastguard Worker //          height      -   Height in pixels to be filled.
1158*3ac0a46fSAndroid Build Coastguard Worker //          color       -   A 32-bit value specifing the color, in 8888 ARGB
1159*3ac0a46fSAndroid Build Coastguard Worker //                          format.
1160*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1161*3ac0a46fSAndroid Build Coastguard Worker //          None.
1162*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1163*3ac0a46fSAndroid Build Coastguard Worker //          This function sets the color and (optionally) alpha value in the
1164*3ac0a46fSAndroid Build Coastguard Worker //          specified region of the bitmap.
1165*3ac0a46fSAndroid Build Coastguard Worker //
1166*3ac0a46fSAndroid Build Coastguard Worker //          NOTE: If the alpha channel is used, this function does NOT
1167*3ac0a46fSAndroid Build Coastguard Worker //          composite the background with the source color, instead the
1168*3ac0a46fSAndroid Build Coastguard Worker //          background will be replaced by the source color and the alpha.
1169*3ac0a46fSAndroid Build Coastguard Worker //
1170*3ac0a46fSAndroid Build Coastguard Worker //          If the alpha channel is not used, the alpha parameter is ignored.
1171*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFBitmap_FillRect(FPDF_BITMAP bitmap,
1172*3ac0a46fSAndroid Build Coastguard Worker                                                    int left,
1173*3ac0a46fSAndroid Build Coastguard Worker                                                    int top,
1174*3ac0a46fSAndroid Build Coastguard Worker                                                    int width,
1175*3ac0a46fSAndroid Build Coastguard Worker                                                    int height,
1176*3ac0a46fSAndroid Build Coastguard Worker                                                    FPDF_DWORD color);
1177*3ac0a46fSAndroid Build Coastguard Worker 
1178*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetBuffer
1179*3ac0a46fSAndroid Build Coastguard Worker //          Get data buffer of a bitmap.
1180*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1181*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create
1182*3ac0a46fSAndroid Build Coastguard Worker //                          or FPDFImageObj_GetBitmap.
1183*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1184*3ac0a46fSAndroid Build Coastguard Worker //          The pointer to the first byte of the bitmap buffer.
1185*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1186*3ac0a46fSAndroid Build Coastguard Worker //          The stride may be more than width * number of bytes per pixel
1187*3ac0a46fSAndroid Build Coastguard Worker //
1188*3ac0a46fSAndroid Build Coastguard Worker //          Applications can use this function to get the bitmap buffer pointer,
1189*3ac0a46fSAndroid Build Coastguard Worker //          then manipulate any color and/or alpha values for any pixels in the
1190*3ac0a46fSAndroid Build Coastguard Worker //          bitmap.
1191*3ac0a46fSAndroid Build Coastguard Worker //
1192*3ac0a46fSAndroid Build Coastguard Worker //          Use FPDFBitmap_GetFormat() to find out the format of the data.
1193*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void* FPDF_CALLCONV FPDFBitmap_GetBuffer(FPDF_BITMAP bitmap);
1194*3ac0a46fSAndroid Build Coastguard Worker 
1195*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetWidth
1196*3ac0a46fSAndroid Build Coastguard Worker //          Get width of a bitmap.
1197*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1198*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create
1199*3ac0a46fSAndroid Build Coastguard Worker //                          or FPDFImageObj_GetBitmap.
1200*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1201*3ac0a46fSAndroid Build Coastguard Worker //          The width of the bitmap in pixels.
1202*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetWidth(FPDF_BITMAP bitmap);
1203*3ac0a46fSAndroid Build Coastguard Worker 
1204*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetHeight
1205*3ac0a46fSAndroid Build Coastguard Worker //          Get height of a bitmap.
1206*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1207*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create
1208*3ac0a46fSAndroid Build Coastguard Worker //                          or FPDFImageObj_GetBitmap.
1209*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1210*3ac0a46fSAndroid Build Coastguard Worker //          The height of the bitmap in pixels.
1211*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetHeight(FPDF_BITMAP bitmap);
1212*3ac0a46fSAndroid Build Coastguard Worker 
1213*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_GetStride
1214*3ac0a46fSAndroid Build Coastguard Worker //          Get number of bytes for each line in the bitmap buffer.
1215*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1216*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create
1217*3ac0a46fSAndroid Build Coastguard Worker //                          or FPDFImageObj_GetBitmap.
1218*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1219*3ac0a46fSAndroid Build Coastguard Worker //          The number of bytes for each line in the bitmap buffer.
1220*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1221*3ac0a46fSAndroid Build Coastguard Worker //          The stride may be more than width * number of bytes per pixel.
1222*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDFBitmap_GetStride(FPDF_BITMAP bitmap);
1223*3ac0a46fSAndroid Build Coastguard Worker 
1224*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFBitmap_Destroy
1225*3ac0a46fSAndroid Build Coastguard Worker //          Destroy a bitmap and release all related buffers.
1226*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1227*3ac0a46fSAndroid Build Coastguard Worker //          bitmap      -   Handle to the bitmap. Returned by FPDFBitmap_Create
1228*3ac0a46fSAndroid Build Coastguard Worker //                          or FPDFImageObj_GetBitmap.
1229*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1230*3ac0a46fSAndroid Build Coastguard Worker //          None.
1231*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1232*3ac0a46fSAndroid Build Coastguard Worker //          This function will not destroy any external buffers provided when
1233*3ac0a46fSAndroid Build Coastguard Worker //          the bitmap was created.
1234*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void FPDF_CALLCONV FPDFBitmap_Destroy(FPDF_BITMAP bitmap);
1235*3ac0a46fSAndroid Build Coastguard Worker 
1236*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetPrintScaling
1237*3ac0a46fSAndroid Build Coastguard Worker //          Whether the PDF document prefers to be scaled or not.
1238*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1239*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to the loaded document.
1240*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1241*3ac0a46fSAndroid Build Coastguard Worker //          None.
1242*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
1243*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document);
1244*3ac0a46fSAndroid Build Coastguard Worker 
1245*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetNumCopies
1246*3ac0a46fSAndroid Build Coastguard Worker //          Returns the number of copies to be printed.
1247*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1248*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to the loaded document.
1249*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1250*3ac0a46fSAndroid Build Coastguard Worker //          The number of copies to be printed.
1251*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
1252*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetNumCopies(FPDF_DOCUMENT document);
1253*3ac0a46fSAndroid Build Coastguard Worker 
1254*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetPrintPageRange
1255*3ac0a46fSAndroid Build Coastguard Worker //          Page numbers to initialize print dialog box when file is printed.
1256*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1257*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to the loaded document.
1258*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1259*3ac0a46fSAndroid Build Coastguard Worker //          The print page range to be used for printing.
1260*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_PAGERANGE FPDF_CALLCONV
1261*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetPrintPageRange(FPDF_DOCUMENT document);
1262*3ac0a46fSAndroid Build Coastguard Worker 
1263*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1264*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetPrintPageRangeCount
1265*3ac0a46fSAndroid Build Coastguard Worker //          Returns the number of elements in a FPDF_PAGERANGE.
1266*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1267*3ac0a46fSAndroid Build Coastguard Worker //          pagerange   -   Handle to the page range.
1268*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1269*3ac0a46fSAndroid Build Coastguard Worker //          The number of elements in the page range. Returns 0 on error.
1270*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT size_t FPDF_CALLCONV
1271*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetPrintPageRangeCount(FPDF_PAGERANGE pagerange);
1272*3ac0a46fSAndroid Build Coastguard Worker 
1273*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1274*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetPrintPageRangeElement
1275*3ac0a46fSAndroid Build Coastguard Worker //          Returns an element from a FPDF_PAGERANGE.
1276*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1277*3ac0a46fSAndroid Build Coastguard Worker //          pagerange   -   Handle to the page range.
1278*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Index of the element.
1279*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1280*3ac0a46fSAndroid Build Coastguard Worker //          The value of the element in the page range at a given index.
1281*3ac0a46fSAndroid Build Coastguard Worker //          Returns -1 on error.
1282*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV
1283*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetPrintPageRangeElement(FPDF_PAGERANGE pagerange, size_t index);
1284*3ac0a46fSAndroid Build Coastguard Worker 
1285*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetDuplex
1286*3ac0a46fSAndroid Build Coastguard Worker //          Returns the paper handling option to be used when printing from
1287*3ac0a46fSAndroid Build Coastguard Worker //          the print dialog.
1288*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1289*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to the loaded document.
1290*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1291*3ac0a46fSAndroid Build Coastguard Worker //          The paper handling option to be used when printing.
1292*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DUPLEXTYPE FPDF_CALLCONV
1293*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT document);
1294*3ac0a46fSAndroid Build Coastguard Worker 
1295*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_VIEWERREF_GetName
1296*3ac0a46fSAndroid Build Coastguard Worker //          Gets the contents for a viewer ref, with a given key. The value must
1297*3ac0a46fSAndroid Build Coastguard Worker //          be of type "name".
1298*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1299*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to the loaded document.
1300*3ac0a46fSAndroid Build Coastguard Worker //          key         -   Name of the key in the viewer pref dictionary,
1301*3ac0a46fSAndroid Build Coastguard Worker //                          encoded in UTF-8.
1302*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   A string to write the contents of the key to.
1303*3ac0a46fSAndroid Build Coastguard Worker //          length      -   Length of the buffer.
1304*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1305*3ac0a46fSAndroid Build Coastguard Worker //          The number of bytes in the contents, including the NULL terminator.
1306*3ac0a46fSAndroid Build Coastguard Worker //          Thus if the return value is 0, then that indicates an error, such
1307*3ac0a46fSAndroid Build Coastguard Worker //          as when |document| is invalid or |buffer| is NULL. If |length| is
1308*3ac0a46fSAndroid Build Coastguard Worker //          less than the returned length, or |buffer| is NULL, |buffer| will
1309*3ac0a46fSAndroid Build Coastguard Worker //          not be modified.
1310*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
1311*3ac0a46fSAndroid Build Coastguard Worker FPDF_VIEWERREF_GetName(FPDF_DOCUMENT document,
1312*3ac0a46fSAndroid Build Coastguard Worker                        FPDF_BYTESTRING key,
1313*3ac0a46fSAndroid Build Coastguard Worker                        char* buffer,
1314*3ac0a46fSAndroid Build Coastguard Worker                        unsigned long length);
1315*3ac0a46fSAndroid Build Coastguard Worker 
1316*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_CountNamedDests
1317*3ac0a46fSAndroid Build Coastguard Worker //          Get the count of named destinations in the PDF document.
1318*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1319*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to a document
1320*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1321*3ac0a46fSAndroid Build Coastguard Worker //          The count of named destinations.
1322*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DWORD FPDF_CALLCONV
1323*3ac0a46fSAndroid Build Coastguard Worker FPDF_CountNamedDests(FPDF_DOCUMENT document);
1324*3ac0a46fSAndroid Build Coastguard Worker 
1325*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetNamedDestByName
1326*3ac0a46fSAndroid Build Coastguard Worker //          Get a the destination handle for the given name.
1327*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1328*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to the loaded document.
1329*3ac0a46fSAndroid Build Coastguard Worker //          name        -   The name of a destination.
1330*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1331*3ac0a46fSAndroid Build Coastguard Worker //          The handle to the destination.
1332*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DEST FPDF_CALLCONV
1333*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetNamedDestByName(FPDF_DOCUMENT document, FPDF_BYTESTRING name);
1334*3ac0a46fSAndroid Build Coastguard Worker 
1335*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetNamedDest
1336*3ac0a46fSAndroid Build Coastguard Worker //          Get the named destination by index.
1337*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1338*3ac0a46fSAndroid Build Coastguard Worker //          document        -   Handle to a document
1339*3ac0a46fSAndroid Build Coastguard Worker //          index           -   The index of a named destination.
1340*3ac0a46fSAndroid Build Coastguard Worker //          buffer          -   The buffer to store the destination name,
1341*3ac0a46fSAndroid Build Coastguard Worker //                              used as wchar_t*.
1342*3ac0a46fSAndroid Build Coastguard Worker //          buflen [in/out] -   Size of the buffer in bytes on input,
1343*3ac0a46fSAndroid Build Coastguard Worker //                              length of the result in bytes on output
1344*3ac0a46fSAndroid Build Coastguard Worker //                              or -1 if the buffer is too small.
1345*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1346*3ac0a46fSAndroid Build Coastguard Worker //          The destination handle for a given index, or NULL if there is no
1347*3ac0a46fSAndroid Build Coastguard Worker //          named destination corresponding to |index|.
1348*3ac0a46fSAndroid Build Coastguard Worker // Comments:
1349*3ac0a46fSAndroid Build Coastguard Worker //          Call this function twice to get the name of the named destination:
1350*3ac0a46fSAndroid Build Coastguard Worker //            1) First time pass in |buffer| as NULL and get buflen.
1351*3ac0a46fSAndroid Build Coastguard Worker //            2) Second time pass in allocated |buffer| and buflen to retrieve
1352*3ac0a46fSAndroid Build Coastguard Worker //               |buffer|, which should be used as wchar_t*.
1353*3ac0a46fSAndroid Build Coastguard Worker //
1354*3ac0a46fSAndroid Build Coastguard Worker //         If buflen is not sufficiently large, it will be set to -1 upon
1355*3ac0a46fSAndroid Build Coastguard Worker //         return.
1356*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_DEST FPDF_CALLCONV FPDF_GetNamedDest(FPDF_DOCUMENT document,
1357*3ac0a46fSAndroid Build Coastguard Worker                                                       int index,
1358*3ac0a46fSAndroid Build Coastguard Worker                                                       void* buffer,
1359*3ac0a46fSAndroid Build Coastguard Worker                                                       long* buflen);
1360*3ac0a46fSAndroid Build Coastguard Worker 
1361*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1362*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetXFAPacketCount
1363*3ac0a46fSAndroid Build Coastguard Worker //          Get the number of valid packets in the XFA entry.
1364*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1365*3ac0a46fSAndroid Build Coastguard Worker //          document - Handle to the document.
1366*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1367*3ac0a46fSAndroid Build Coastguard Worker //          The number of valid packets, or -1 on error.
1368*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDF_GetXFAPacketCount(FPDF_DOCUMENT document);
1369*3ac0a46fSAndroid Build Coastguard Worker 
1370*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1371*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetXFAPacketName
1372*3ac0a46fSAndroid Build Coastguard Worker //          Get the name of a packet in the XFA array.
1373*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1374*3ac0a46fSAndroid Build Coastguard Worker //          document - Handle to the document.
1375*3ac0a46fSAndroid Build Coastguard Worker //          index    - Index number of the packet. 0 for the first packet.
1376*3ac0a46fSAndroid Build Coastguard Worker //          buffer   - Buffer for holding the name of the XFA packet.
1377*3ac0a46fSAndroid Build Coastguard Worker //          buflen   - Length of |buffer| in bytes.
1378*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1379*3ac0a46fSAndroid Build Coastguard Worker //          The length of the packet name in bytes, or 0 on error.
1380*3ac0a46fSAndroid Build Coastguard Worker //
1381*3ac0a46fSAndroid Build Coastguard Worker // |document| must be valid and |index| must be in the range [0, N), where N is
1382*3ac0a46fSAndroid Build Coastguard Worker // the value returned by FPDF_GetXFAPacketCount().
1383*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is only modified if it is non-NULL and |buflen| is greater than or
1384*3ac0a46fSAndroid Build Coastguard Worker // equal to the length of the packet name. The packet name includes a
1385*3ac0a46fSAndroid Build Coastguard Worker // terminating NUL character. |buffer| is unmodified on error.
1386*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV FPDF_GetXFAPacketName(
1387*3ac0a46fSAndroid Build Coastguard Worker     FPDF_DOCUMENT document,
1388*3ac0a46fSAndroid Build Coastguard Worker     int index,
1389*3ac0a46fSAndroid Build Coastguard Worker     void* buffer,
1390*3ac0a46fSAndroid Build Coastguard Worker     unsigned long buflen);
1391*3ac0a46fSAndroid Build Coastguard Worker 
1392*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1393*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetXFAPacketContent
1394*3ac0a46fSAndroid Build Coastguard Worker //          Get the content of a packet in the XFA array.
1395*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1396*3ac0a46fSAndroid Build Coastguard Worker //          document   - Handle to the document.
1397*3ac0a46fSAndroid Build Coastguard Worker //          index      - Index number of the packet. 0 for the first packet.
1398*3ac0a46fSAndroid Build Coastguard Worker //          buffer     - Buffer for holding the content of the XFA packet.
1399*3ac0a46fSAndroid Build Coastguard Worker //          buflen     - Length of |buffer| in bytes.
1400*3ac0a46fSAndroid Build Coastguard Worker //          out_buflen - Pointer to the variable that will receive the minimum
1401*3ac0a46fSAndroid Build Coastguard Worker //                       buffer size needed to contain the content of the XFA
1402*3ac0a46fSAndroid Build Coastguard Worker //                       packet.
1403*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1404*3ac0a46fSAndroid Build Coastguard Worker //          Whether the operation succeeded or not.
1405*3ac0a46fSAndroid Build Coastguard Worker //
1406*3ac0a46fSAndroid Build Coastguard Worker // |document| must be valid and |index| must be in the range [0, N), where N is
1407*3ac0a46fSAndroid Build Coastguard Worker // the value returned by FPDF_GetXFAPacketCount(). |out_buflen| must not be
1408*3ac0a46fSAndroid Build Coastguard Worker // NULL. When the aforementioned arguments are valid, the operation succeeds,
1409*3ac0a46fSAndroid Build Coastguard Worker // and |out_buflen| receives the content size. |buffer| is only modified if
1410*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is non-null and long enough to contain the content. Callers must
1411*3ac0a46fSAndroid Build Coastguard Worker // check both the return value and the input |buflen| is no less than the
1412*3ac0a46fSAndroid Build Coastguard Worker // returned |out_buflen| before using the data in |buffer|.
1413*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetXFAPacketContent(
1414*3ac0a46fSAndroid Build Coastguard Worker     FPDF_DOCUMENT document,
1415*3ac0a46fSAndroid Build Coastguard Worker     int index,
1416*3ac0a46fSAndroid Build Coastguard Worker     void* buffer,
1417*3ac0a46fSAndroid Build Coastguard Worker     unsigned long buflen,
1418*3ac0a46fSAndroid Build Coastguard Worker     unsigned long* out_buflen);
1419*3ac0a46fSAndroid Build Coastguard Worker 
1420*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_V8
1421*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetRecommendedV8Flags
1422*3ac0a46fSAndroid Build Coastguard Worker //          Returns a space-separated string of command line flags that are
1423*3ac0a46fSAndroid Build Coastguard Worker //          recommended to be passed into V8 via V8::SetFlagsFromString()
1424*3ac0a46fSAndroid Build Coastguard Worker //          prior to initializing the PDFium library.
1425*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1426*3ac0a46fSAndroid Build Coastguard Worker //          None.
1427*3ac0a46fSAndroid Build Coastguard Worker // Return value:
1428*3ac0a46fSAndroid Build Coastguard Worker //          NUL-terminated string of the form "--flag1 --flag2".
1429*3ac0a46fSAndroid Build Coastguard Worker //          The caller must not attempt to modify or free the result.
1430*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT const char* FPDF_CALLCONV FPDF_GetRecommendedV8Flags();
1431*3ac0a46fSAndroid Build Coastguard Worker 
1432*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
1433*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetArrayBufferAllocatorSharedInstance()
1434*3ac0a46fSAndroid Build Coastguard Worker //          Helper function for initializing V8 isolates that will
1435*3ac0a46fSAndroid Build Coastguard Worker //          use PDFium's internal memory management.
1436*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
1437*3ac0a46fSAndroid Build Coastguard Worker //          None.
1438*3ac0a46fSAndroid Build Coastguard Worker // Return Value:
1439*3ac0a46fSAndroid Build Coastguard Worker //          Pointer to a suitable v8::ArrayBuffer::Allocator, returned
1440*3ac0a46fSAndroid Build Coastguard Worker //          as void for C compatibility.
1441*3ac0a46fSAndroid Build Coastguard Worker // Notes:
1442*3ac0a46fSAndroid Build Coastguard Worker //          Use is optional, but allows external creation of isolates
1443*3ac0a46fSAndroid Build Coastguard Worker //          matching the ones PDFium will make when none is provided
1444*3ac0a46fSAndroid Build Coastguard Worker //          via |FPDF_LIBRARY_CONFIG::m_pIsolate|.
1445*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT void* FPDF_CALLCONV FPDF_GetArrayBufferAllocatorSharedInstance();
1446*3ac0a46fSAndroid Build Coastguard Worker #endif  // PDF_ENABLE_V8
1447*3ac0a46fSAndroid Build Coastguard Worker 
1448*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA
1449*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_BStr_Init
1450*3ac0a46fSAndroid Build Coastguard Worker //          Helper function to initialize a FPDF_BSTR.
1451*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_RESULT FPDF_CALLCONV FPDF_BStr_Init(FPDF_BSTR* bstr);
1452*3ac0a46fSAndroid Build Coastguard Worker 
1453*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_BStr_Set
1454*3ac0a46fSAndroid Build Coastguard Worker //          Helper function to copy string data into the FPDF_BSTR.
1455*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_RESULT FPDF_CALLCONV FPDF_BStr_Set(FPDF_BSTR* bstr,
1456*3ac0a46fSAndroid Build Coastguard Worker                                                     const char* cstr,
1457*3ac0a46fSAndroid Build Coastguard Worker                                                     int length);
1458*3ac0a46fSAndroid Build Coastguard Worker 
1459*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_BStr_Clear
1460*3ac0a46fSAndroid Build Coastguard Worker //          Helper function to clear a FPDF_BSTR.
1461*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_RESULT FPDF_CALLCONV FPDF_BStr_Clear(FPDF_BSTR* bstr);
1462*3ac0a46fSAndroid Build Coastguard Worker #endif  // PDF_ENABLE_XFA
1463*3ac0a46fSAndroid Build Coastguard Worker 
1464*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus
1465*3ac0a46fSAndroid Build Coastguard Worker }
1466*3ac0a46fSAndroid Build Coastguard Worker #endif
1467*3ac0a46fSAndroid Build Coastguard Worker 
1468*3ac0a46fSAndroid Build Coastguard Worker #endif  // PUBLIC_FPDFVIEW_H_
1469