summaryrefslogtreecommitdiff
path: root/public/fpdf_dataavail.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/fpdf_dataavail.h')
-rw-r--r--public/fpdf_dataavail.h221
1 files changed, 221 insertions, 0 deletions
diff --git a/public/fpdf_dataavail.h b/public/fpdf_dataavail.h
new file mode 100644
index 0000000000..3c37397185
--- /dev/null
+++ b/public/fpdf_dataavail.h
@@ -0,0 +1,221 @@
+// 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.
+*/
+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
+