diff options
Diffstat (limited to 'public/fpdf_dataavail.h')
-rw-r--r-- | public/fpdf_dataavail.h | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/public/fpdf_dataavail.h b/public/fpdf_dataavail.h new file mode 100644 index 0000000000..de6cb23bd5 --- /dev/null +++ b/public/fpdf_dataavail.h @@ -0,0 +1,223 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef _FPDF_DATAAVAIL_H_ +#define _FPDF_DATAAVAIL_H_ + +#include <stddef.h> // For size_t. + +#include "fpdfview.h" + +/** The result of the process which check linearized PDF. */ +#define FSDK_IS_LINEARIZED 1 +#define FSDK_NOT_LINEARIZED 0 +#define FSDK_UNKNOW_LINEARIZED -1 + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Interface: FX_FILEAVAIL + * Interface for checking whether the section of the file is available. + */ +typedef struct _FX_FILEAVAIL { + /** + * Version number of the interface. Currently must be 1. + */ + int version; + + /** + * Method: IsDataAvail + * Report whether the specified data section is available. A section is available only if all bytes in the section is available. + * Interface Version: + * 1 + * Implementation Required: + * Yes + * Parameters: + * pThis - Pointer to the interface structure itself. + * offset - The offset of the data section in the file. + * size - The size of the data section + * Return Value: + * true means the specified data section is available. + * Comments: + * Called by Foxit SDK to check whether the data section is ready. + */ + bool (*IsDataAvail)(struct _FX_FILEAVAIL* pThis, size_t offset, size_t size); +} FX_FILEAVAIL; + +typedef void* FPDF_AVAIL; + +/** +* Function: FPDFAvail_Create +* Create a document availability provider. +* +* Parameters: +* file_avail - Pointer to file availability interface to check availability of file data. +* file - Pointer to a file access interface for reading data from file. +* Return value: +* A handle to the document availability provider. NULL for error. +* Comments: +* Application must call FPDFAvail_Destroy when done with the availability provider. +* Notes: +* The method can not support to load a document which consists of dynamic XFA fields now. +*/ +DLLEXPORT FPDF_AVAIL STDCALL FPDFAvail_Create(FX_FILEAVAIL* file_avail, FPDF_FILEACCESS* file); + +/** +* Function: FPDFAvail_Destroy +* Destroy a document availibity provider. +* +* Parameters: +* avail - Handle to document availability provider returned by FPDFAvail_Create +* Return Value: +* None. +*/ +DLLEXPORT void STDCALL FPDFAvail_Destroy(FPDF_AVAIL avail); + +/** + * Interface: FX_DOWNLOADHINTS + * Download hints interface. Used to receive hints for further downloading. + */ +typedef struct _FX_DOWNLOADHINTS { + /** + * Version number of the interface. Currently must be 1. + */ + int version; + + /** + * Method: AddSegment + * Add a section to be downloaded. + * Interface Version: + * 1 + * Implementation Required: + * Yes + * Parameters: + * pThis - Pointer to the interface structure itself. + * offset - The offset of the hint reported to be downloaded. + * size - The size of the hint reported to be downloaded. + * Return Value: + * None. + * Comments: + * Called by Foxit SDK to report some downloading hints for download manager. + * The position and size of section may be not accurate, part of the section might be already available. + * The download manager must deal with that to maximize download efficiency. + */ + void (*AddSegment)(struct _FX_DOWNLOADHINTS* pThis, size_t offset, size_t size); +} FX_DOWNLOADHINTS; + +/** +* Function: FPDFAvail_IsDocAvail +* Check whether the document is ready for loading, if not, get download hints. +* +* Parameters: +* avail - Handle to document availability provider returned by FPDFAvail_Create +* hints - Pointer to a download hints interface, receiving generated hints +* Return value: +* Non-zero for page is fully available, 0 for page not yet available. +* Comments: +* The application should call this function whenever new data arrived, and process all the +* generated download hints if any, until the function returns non-zero value. Then the +* application can call FPDFAvail_GetDocument() to get a document handle. +*/ +DLLEXPORT int STDCALL FPDFAvail_IsDocAvail(FPDF_AVAIL avail, FX_DOWNLOADHINTS* hints); + +/** +* Function: FPDFAvail_GetDocument +* Get document from the availability provider. +* +* Parameters: +* avail - Handle to document availability provider returned by FPDFAvail_Create +* password - Optional password for decrypting the PDF file. +* Return value: +* Handle to the document. +* Comments: +* After FPDFAvail_IsDocAvail() returns TRUE, the application should call this function to +* get the document handle. To close the document, use FPDF_CloseDocument function. +*/ +DLLEXPORT FPDF_DOCUMENT STDCALL FPDFAvail_GetDocument(FPDF_AVAIL avail, + FPDF_BYTESTRING password); + +/** +* Function: FPDFAvail_GetFirstPageNum +* Get page number for the first available page in a linearized PDF +* +* Parameters: +* doc - A document handle returned by FPDFAvail_GetDocument +* Return Value: +* Zero-based index for the first available page. +* Comments: +* For most linearized PDFs, the first available page would be just the first page, however, +* some PDFs might make other page to be the first available page. +* For non-linearized PDF, this function will always return zero. +*/ +DLLEXPORT int STDCALL FPDFAvail_GetFirstPageNum(FPDF_DOCUMENT doc); + +/** +* Function: FPDFAvail_IsPageAvail +* Check whether a page is ready for loading, if not, get download hints. +* +* Parameters: +* avail - Handle to document availability provider returned by FPDFAvail_Create +* page_index - Index number of the page. 0 for the first page. +* hints - Pointer to a download hints interface, receiving generated hints +* Return value: +* Non-zero for page is fully available, 0 for page not yet available. +* Comments: +* This function call be called only after FPDFAvail_GetDocument if called. +* The application should call this function whenever new data arrived, and process all the +* generated download hints if any, until the function returns non-zero value. Then the +* application can perform page loading. +*/ +DLLEXPORT int STDCALL FPDFAvail_IsPageAvail(FPDF_AVAIL avail, int page_index, FX_DOWNLOADHINTS* hints); + +/** +* Function: FPDFAvail_ISFormAvail +* Check whether Form data is ready for init, if not, get download hints. +* +* Parameters: +* avail - Handle to document availability provider returned by FPDFAvail_Create +* hints - Pointer to a download hints interface, receiving generated hints +* Return value: +* Non-zero for Form data is fully available, 0 for Form data not yet available. +* Details: -1 - error, the input parameter not correct, such as hints is null. +* 0 - data not available +* 1 - data available +* 2 - no form data. +* Comments: +* This function call be called only after FPDFAvail_GetDocument if called. +* The application should call this function whenever new data arrived, and process all the +* generated download hints if any, until the function returns non-zero value. Then the +* application can perform page loading. Recommend to call FPDFDOC_InitFormFillEnvironment +* after the function returns non-zero value. +*/ +DLLEXPORT int STDCALL FPDFAvail_IsFormAvail(FPDF_AVAIL avail, FX_DOWNLOADHINTS* hints); + +/** +* Function: FPDFAvail_IsLinearized +* To check whether a document is Linearized PDF file. +* +* Parameters: +* avail - Handle to document availability provider returned by FPDFAvail_Create +* Return value: +* return TRUE means the document is linearized PDF else not. +* FSDK_IS_LINEARIZED is a linearize file. +* FSDK_NOT_LINEARIZED is not a linearize file. +* FSDK_UNKNOW_LINEARIZED don't know whether the file is a linearize file. +* Comments: +* It return TRUE/FALSE as soon as we have first 1K data. If the file's size less than +* 1K,we don't known whether the PDF is a linearized file. +* +*/ +DLLEXPORT FPDF_BOOL STDCALL FPDFAvail_IsLinearized(FPDF_AVAIL avail); + +#ifdef __cplusplus +}; +#endif + +#endif + |