OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef _FPDF_DATAAVAIL_H_ | 7 #ifndef _FPDF_DATAAVAIL_H_ |
8 #define _FPDF_DATAAVAIL_H_ | 8 #define _FPDF_DATAAVAIL_H_ |
9 | 9 |
10 #ifndef _FPDFVIEW_H_ | 10 #ifndef _FPDFVIEW_H_ |
11 #include "fpdfview.h" | 11 #include "fpdfview.h" |
12 #endif | 12 #endif |
13 | 13 |
14 | |
15 /** The result of the process which check linearized PDF. */ | 14 /** The result of the process which check linearized PDF. */ |
16 #define FSDK_IS_LINEARIZED» » » 1 | 15 #define FSDK_IS_LINEARIZED 1 |
17 #define FSDK_NOT_LINEARIZED» » » 0 | 16 #define FSDK_NOT_LINEARIZED 0 |
18 #define FSDK_UNKNOW_LINEARIZED» » -1 | 17 #define FSDK_UNKNOW_LINEARIZED -1 |
19 | |
20 | 18 |
21 #ifdef __cplusplus | 19 #ifdef __cplusplus |
22 extern "C" { | 20 extern "C" { |
23 #endif | 21 #endif |
24 | 22 |
25 /** | 23 /** |
26 * Interface: FX_FILEAVAIL | 24 * Interface: FX_FILEAVAIL |
27 *» » » Interface for checking whether the section of the file i
s available. | 25 *» » » Interface for checking whether the section of the file i
s |
| 26 *available. |
28 */ | 27 */ |
29 typedef struct _FX_FILEAVAIL { | 28 typedef struct _FX_FILEAVAIL { |
30 » /** | 29 /** |
31 » * Version number of the interface. Currently must be 1. | 30 * Version number of the interface. Currently must be 1. |
32 » */ | 31 */ |
33 » int version; | 32 int version; |
34 | 33 |
35 » /** | 34 /** |
36 » * Method: IsDataAvail | 35 * Method: IsDataAvail |
37 » *» » Report whether the specified data section is available.
A section is available only if all bytes in the section is available. | 36 *» » Report whether the specified data section is available. A sectio
n is |
38 » * Interface Version: | 37 *available only if all bytes in the section is available. |
39 » *» » 1 | 38 * Interface Version: |
40 » * Implementation Required: | 39 *» » 1 |
41 » *» » Yes | 40 * Implementation Required: |
42 » * Parameters: | 41 *» » Yes |
43 » *» » pThis» » -» Pointer to the interface structu
re itself. | 42 * Parameters: |
44 » *» » offset» » -» The offset of the data section i
n the file. | 43 *» » pThis» » -» Pointer to the interface structure |
45 » *» » size» » -» The size of the data section | 44 *itself. |
46 » * Return Value: | 45 *» » offset» » -» The offset of the data section in the |
47 » *» » true means the specified data section is available. | 46 *file. |
48 » * Comments: | 47 *» » size» » -» The size of the data section |
49 » *» » Called by Foxit SDK to check whether the data section is
ready. | 48 * Return Value: |
50 » */ | 49 *» » true means the specified data section is available. |
51 » bool (*IsDataAvail)(struct _FX_FILEAVAIL* pThis, size_t offset, size_t s
ize); | 50 * Comments: |
| 51 *» » Called by Foxit SDK to check whether the data section is ready. |
| 52 */ |
| 53 bool (*IsDataAvail)(struct _FX_FILEAVAIL* pThis, size_t offset, size_t size); |
52 } FX_FILEAVAIL; | 54 } FX_FILEAVAIL; |
53 | 55 |
54 typedef void* FPDF_AVAIL; | 56 typedef void* FPDF_AVAIL; |
55 | 57 |
56 /** | 58 /** |
57 * Function: FPDFAvail_Create | 59 * Function: FPDFAvail_Create |
58 * Create a document availability provider. | 60 * Create a document availability provider. |
59 * | 61 * |
60 * Parameters: | 62 * Parameters: |
61 *» » » file_avail» -» Pointer to file availability int
erface to check availability of file data. | 63 *» » » file_avail» -» Pointer to file availability |
62 *» » » file» » -» Pointer to a file access interfa
ce for reading data from file. | 64 *interface to check availability of file data. |
| 65 *» » » file» » -» Pointer to a file access |
| 66 *interface for reading data from file. |
63 * Return value: | 67 * Return value: |
64 *» » » A handle to the document availability provider. NULL for
error. | 68 *» » » A handle to the document availability provider. NULL for |
| 69 *error. |
65 * Comments: | 70 * Comments: |
66 *» » » Application must call FPDFAvail_Destroy when done with t
he availability provider. | 71 *» » » Application must call FPDFAvail_Destroy when done with t
he |
| 72 *availability provider. |
67 */ | 73 */ |
68 DLLEXPORT FPDF_AVAIL STDCALL FPDFAvail_Create(FX_FILEAVAIL* file_avail, FPDF_FIL
EACCESS* file); | 74 DLLEXPORT FPDF_AVAIL STDCALL |
| 75 FPDFAvail_Create(FX_FILEAVAIL* file_avail, FPDF_FILEACCESS* file); |
69 | 76 |
70 /** | 77 /** |
71 * Function: FPDFAvail_Destroy | 78 * Function: FPDFAvail_Destroy |
72 * Destroy a document availibity provider. | 79 * Destroy a document availibity provider. |
73 * | 80 * |
74 * Parameters: | 81 * Parameters: |
75 *» » » avail» » -» Handle to document availability
provider returned by FPDFAvail_Create | 82 *» » » avail» » -» Handle to document availability |
| 83 *provider returned by FPDFAvail_Create |
76 * Return Value: | 84 * Return Value: |
77 * None. | 85 * None. |
78 */ | 86 */ |
79 DLLEXPORT void STDCALL FPDFAvail_Destroy(FPDF_AVAIL avail); | 87 DLLEXPORT void STDCALL FPDFAvail_Destroy(FPDF_AVAIL avail); |
80 | 88 |
81 /** | 89 /** |
82 * Interface: FX_DOWNLOADHINTS | 90 * Interface: FX_DOWNLOADHINTS |
83 *» » » Download hints interface. Used to receive hints for furt
her downloading. | 91 *» » » Download hints interface. Used to receive hints for furt
her |
| 92 *downloading. |
84 */ | 93 */ |
85 typedef struct _FX_DOWNLOADHINTS { | 94 typedef struct _FX_DOWNLOADHINTS { |
86 » /** | 95 /** |
87 » * Version number of the interface. Currently must be 1. | 96 * Version number of the interface. Currently must be 1. |
88 » */ | 97 */ |
89 » int version; | 98 int version; |
90 | 99 |
91 » /** | 100 /** |
92 » * Method: AddSegment | 101 * Method: AddSegment |
93 » *» » Add a section to be downloaded. | 102 *» » Add a section to be downloaded. |
94 » * Interface Version: | 103 * Interface Version: |
95 » *» » 1 | 104 *» » 1 |
96 » * Implementation Required: | 105 * Implementation Required: |
97 » *» » Yes | 106 *» » Yes |
98 » * Parameters: | 107 * Parameters: |
99 » *» » pThis» » -» Pointer to the interface structu
re itself. | 108 *» » pThis» » -» Pointer to the interface structure |
100 » *» » offset» » -» The offset of the hint reported
to be downloaded. | 109 *itself. |
101 » *» » size» » -» The size of the hint reported to
be downloaded. | 110 *» » offset» » -» The offset of the hint reported to be |
102 » * Return Value: | 111 *downloaded. |
103 » *» » None. | 112 *» » size» » -» The size of the hint reported to be |
104 » * Comments: | 113 *downloaded. |
105 » *» » Called by Foxit SDK to report some downloading hints for
download manager. | 114 * Return Value: |
106 » *» » The position and size of section may be not accurate, pa
rt of the section might be already available. | 115 *» » None. |
107 » *» » The download manager must deal with that to maximize dow
nload efficiency. | 116 * Comments: |
108 » */ | 117 *» » Called by Foxit SDK to report some downloading hints for downloa
d |
109 » void (*AddSegment)(struct _FX_DOWNLOADHINTS* pThis, size_t offset, size_
t size); | 118 *manager. |
| 119 *» » The position and size of section may be not accurate, part of th
e |
| 120 *section might be already available. |
| 121 *» » The download manager must deal with that to maximize download |
| 122 *efficiency. |
| 123 */ |
| 124 void (*AddSegment)(struct _FX_DOWNLOADHINTS* pThis, |
| 125 size_t offset, |
| 126 size_t size); |
110 } FX_DOWNLOADHINTS; | 127 } FX_DOWNLOADHINTS; |
111 | 128 |
112 /** | 129 /** |
113 * Function: FPDFAvail_IsDocAvail | 130 * Function: FPDFAvail_IsDocAvail |
114 *» » » Check whether the document is ready for loading, if not,
get download hints. | 131 *» » » Check whether the document is ready for loading, if not, |
| 132 *get download hints. |
115 * | 133 * |
116 * Parameters: | 134 * Parameters: |
117 *» » » avail» » -» Handle to document availability
provider returned by FPDFAvail_Create | 135 *» » » avail» » -» Handle to document availability |
118 *» » » hints» » -» Pointer to a download hints inte
rface, receiving generated hints | 136 *provider returned by FPDFAvail_Create |
| 137 *» » » hints» » -» Pointer to a download hints |
| 138 *interface, receiving generated hints |
119 * Return value: | 139 * Return value: |
120 *» » » Non-zero for page is fully available, 0 for page not yet
available. | 140 *» » » Non-zero for page is fully available, 0 for page not yet |
| 141 *available. |
121 * Comments: | 142 * Comments: |
122 *» » » The application should call this function whenever new d
ata arrived, and process all the | 143 *» » » The application should call this function whenever new |
123 *» » » generated download hints if any, until the function retu
rns non-zero value. Then the | 144 *data arrived, and process all the |
124 *» » » application can call FPDFAvail_GetDocument() to get a do
cument handle. | 145 *» » » generated download hints if any, until the function |
| 146 *returns non-zero value. Then the |
| 147 *» » » application can call FPDFAvail_GetDocument() to get a |
| 148 *document handle. |
125 */ | 149 */ |
126 DLLEXPORT int STDCALL FPDFAvail_IsDocAvail(FPDF_AVAIL avail, FX_DOWNLOADHINTS* h
ints); | 150 DLLEXPORT int STDCALL |
| 151 FPDFAvail_IsDocAvail(FPDF_AVAIL avail, FX_DOWNLOADHINTS* hints); |
127 | 152 |
128 /** | 153 /** |
129 * Function: FPDFAvail_GetDocument | 154 * Function: FPDFAvail_GetDocument |
130 * Get document from the availability provider. | 155 * Get document from the availability provider. |
131 * | 156 * |
132 * Parameters: | 157 * Parameters: |
133 *» » » avail» » -» Handle to document availability
provider returned by FPDFAvail_Create | 158 *» » » avail» » -» Handle to document availability |
| 159 *provider returned by FPDFAvail_Create |
134 * password - Optional password for decrypting the PDF file. | 160 * password - Optional password for decrypting the PDF file. |
135 * Return value: | 161 * Return value: |
136 * Handle to the document. | 162 * Handle to the document. |
137 * Comments: | 163 * Comments: |
138 *» » » After FPDFAvail_IsDocAvail() returns TRUE, the applicati
on should call this function to | 164 *» » » After FPDFAvail_IsDocAvail() returns TRUE, the applicati
on |
139 *» » » get the document handle. To close the document, use FPDF
_CloseDocument function. | 165 *should call this function to |
| 166 *» » » get the document handle. To close the document, use |
| 167 *FPDF_CloseDocument function. |
140 */ | 168 */ |
141 DLLEXPORT FPDF_DOCUMENT STDCALL FPDFAvail_GetDocument(FPDF_AVAIL avail, | 169 DLLEXPORT FPDF_DOCUMENT STDCALL |
142 FPDF_BYTESTRING password); | 170 FPDFAvail_GetDocument(FPDF_AVAIL avail, FPDF_BYTESTRING password); |
143 | 171 |
144 /** | 172 /** |
145 * Function: FPDFAvail_GetFirstPageNum | 173 * Function: FPDFAvail_GetFirstPageNum |
146 *» » » Get page number for the first available page in a linear
ized PDF | 174 *» » » Get page number for the first available page in a |
| 175 *linearized PDF |
147 * | 176 * |
148 * Parameters: | 177 * Parameters: |
149 *» » » doc» » » -» A document handle return
ed by FPDFAvail_GetDocument | 178 *» » » doc» » » -» A document handle return
ed |
| 179 *by FPDFAvail_GetDocument |
150 * Return Value: | 180 * Return Value: |
151 * Zero-based index for the first available page. | 181 * Zero-based index for the first available page. |
152 * Comments: | 182 * Comments: |
153 *» » » For most linearized PDFs, the first available page would
be just the first page, however, | 183 *» » » For most linearized PDFs, the first available page would |
154 *» » » some PDFs might make other page to be the first availabl
e page. | 184 *be just the first page, however, |
155 *» » » For non-linearized PDF, this function will always return
zero. | 185 *» » » some PDFs might make other page to be the first availabl
e |
| 186 *page. |
| 187 *» » » For non-linearized PDF, this function will always return |
| 188 *zero. |
156 */ | 189 */ |
157 DLLEXPORT int STDCALL FPDFAvail_GetFirstPageNum(FPDF_DOCUMENT doc); | 190 DLLEXPORT int STDCALL FPDFAvail_GetFirstPageNum(FPDF_DOCUMENT doc); |
158 | 191 |
159 /** | 192 /** |
160 * Function: FPDFAvail_IsPageAvail | 193 * Function: FPDFAvail_IsPageAvail |
161 *» » » Check whether a page is ready for loading, if not, get d
ownload hints. | 194 *» » » Check whether a page is ready for loading, if not, get |
| 195 *download hints. |
162 * | 196 * |
163 * Parameters: | 197 * Parameters: |
164 *» » » avail» » -» Handle to document availability
provider returned by FPDFAvail_Create | 198 *» » » avail» » -» Handle to document availability |
165 *» » » page_index» -» Index number of the page. 0 for
the first page. | 199 *provider returned by FPDFAvail_Create |
166 *» » » hints» » -» Pointer to a download hints inte
rface, receiving generated hints | 200 *» » » page_index» -» Index number of the page. 0 for |
| 201 *the first page. |
| 202 *» » » hints» » -» Pointer to a download hints |
| 203 *interface, receiving generated hints |
167 * Return value: | 204 * Return value: |
168 *» » » Non-zero for page is fully available, 0 for page not yet
available. | 205 *» » » Non-zero for page is fully available, 0 for page not yet |
| 206 *available. |
169 * Comments: | 207 * Comments: |
170 *» » » This function call be called only after FPDFAvail_GetDoc
ument if called. | 208 *» » » This function call be called only after |
171 *» » » The application should call this function whenever new d
ata arrived, and process all the | 209 *FPDFAvail_GetDocument if called. |
172 *» » » generated download hints if any, until the function retu
rns non-zero value. Then the | 210 *» » » The application should call this function whenever new |
| 211 *data arrived, and process all the |
| 212 *» » » generated download hints if any, until the function |
| 213 *returns non-zero value. Then the |
173 * application can perform page loading. | 214 * application can perform page loading. |
174 */ | 215 */ |
175 DLLEXPORT int STDCALL FPDFAvail_IsPageAvail(FPDF_AVAIL avail, int page_index, FX
_DOWNLOADHINTS* hints); | 216 DLLEXPORT int STDCALL FPDFAvail_IsPageAvail(FPDF_AVAIL avail, |
| 217 int page_index, |
| 218 FX_DOWNLOADHINTS* hints); |
176 | 219 |
177 /** | 220 /** |
178 * Function: FPDFAvail_ISFormAvail | 221 * Function: FPDFAvail_ISFormAvail |
179 *» » » Check whether Form data is ready for init, if not, get d
ownload hints. | 222 *» » » Check whether Form data is ready for init, if not, get |
| 223 *download hints. |
180 * | 224 * |
181 * Parameters: | 225 * Parameters: |
182 *» » » avail» » -» Handle to document availability
provider returned by FPDFAvail_Create | 226 *» » » avail» » -» Handle to document availability |
183 *» » » hints» » -» Pointer to a download hints inte
rface, receiving generated hints | 227 *provider returned by FPDFAvail_Create |
| 228 *» » » hints» » -» Pointer to a download hints |
| 229 *interface, receiving generated hints |
184 * Return value: | 230 * Return value: |
185 *» » » Non-zero for Form data is fully available, 0 for Form da
ta not yet available. | 231 *» » » Non-zero for Form data is fully available, 0 for Form da
ta |
186 *» » » Details: -1 - error, the input parameter not correct, su
ch as hints is null. | 232 *not yet available. |
| 233 *» » » Details: -1 - error, the input parameter not correct, su
ch |
| 234 *as hints is null. |
187 * 0 - data not available | 235 * 0 - data not available |
188 * 1 - data available | 236 * 1 - data available |
189 *» » » » » 2 - no form data.» » »
» | 237 *» » » » » 2 - no form data. |
190 * Comments: | 238 * Comments: |
191 *» » » This function call be called only after FPDFAvail_GetDoc
ument if called. | 239 *» » » This function call be called only after |
192 *» » » The application should call this function whenever new d
ata arrived, and process all the | 240 *FPDFAvail_GetDocument if called. |
193 *» » » generated download hints if any, until the function retu
rns non-zero value. Then the | 241 *» » » The application should call this function whenever new |
194 *» » » application can perform page loading. Recommend to call
FPDFDOC_InitFormFillEnviroument | 242 *data arrived, and process all the |
| 243 *» » » generated download hints if any, until the function |
| 244 *returns non-zero value. Then the |
| 245 *» » » application can perform page loading. Recommend to call |
| 246 *FPDFDOC_InitFormFillEnviroument |
195 * after the function returns non-zero value. | 247 * after the function returns non-zero value. |
196 */ | 248 */ |
197 DLLEXPORT int STDCALL FPDFAvail_IsFormAvail(FPDF_AVAIL avail, FX_DOWNLOADHINTS*
hints); | 249 DLLEXPORT int STDCALL |
| 250 FPDFAvail_IsFormAvail(FPDF_AVAIL avail, FX_DOWNLOADHINTS* hints); |
198 | 251 |
199 /** | 252 /** |
200 * Function: FPDFAvail_IsLinearized | 253 * Function: FPDFAvail_IsLinearized |
201 * To check whether a document is Linearized PDF file. | 254 * To check whether a document is Linearized PDF file. |
202 * | 255 * |
203 * Parameters: | 256 * Parameters: |
204 *» » » avail» » -» Handle to document availability
provider returned by FPDFAvail_Create | 257 *» » » avail» » -» Handle to document availability |
| 258 *provider returned by FPDFAvail_Create |
205 * Return value: | 259 * Return value: |
206 *» » » return TRUE means the document is linearized PDF else no
t. | 260 *» » » return TRUE means the document is linearized PDF else |
| 261 *not. |
207 * FSDK_IS_LINEARIZED is a linearize file. | 262 * FSDK_IS_LINEARIZED is a linearize file. |
208 * FSDK_NOT_LINEARIZED is not a linearize file. | 263 * FSDK_NOT_LINEARIZED is not a linearize file. |
209 *» » » FSDK_UNKNOW_LINEARIZED don't know whether the file is a
linearize file. | 264 *» » » FSDK_UNKNOW_LINEARIZED don't know whether the file is a |
| 265 *linearize file. |
210 * Comments: | 266 * Comments: |
211 *» » » It return TRUE/FALSE as soon as we have first 1K data. »
If the file's size less than | 267 *» » » It return TRUE/FALSE as soon as we have first 1K data. |
| 268 *If the file's size less than |
212 * 1K,we don't known whether the PDF is a linearized file. | 269 * 1K,we don't known whether the PDF is a linearized file. |
213 * | 270 * |
214 */ | 271 */ |
215 DLLEXPORT FPDF_BOOL STDCALL FPDFAvail_IsLinearized(FPDF_AVAIL avail); | 272 DLLEXPORT FPDF_BOOL STDCALL FPDFAvail_IsLinearized(FPDF_AVAIL avail); |
216 | 273 |
217 #ifdef __cplusplus | 274 #ifdef __cplusplus |
218 }; | 275 }; |
219 #endif | 276 #endif |
220 | 277 |
221 #endif | 278 #endif |
222 | |
OLD | NEW |