| // Copyright 2014 The PDFium Authors | |
| // 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 PUBLIC_FPDF_PROGRESSIVE_H_ | |
| #define PUBLIC_FPDF_PROGRESSIVE_H_ | |
| // clang-format off | |
| // NOLINTNEXTLINE(build/include) | |
| #include "fpdfview.h" | |
| // Flags for progressive process status. | |
| #define FPDF_RENDER_READY 0 | |
| #define FPDF_RENDER_TOBECONTINUED 1 | |
| #define FPDF_RENDER_DONE 2 | |
| #define FPDF_RENDER_FAILED 3 | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| // IFPDF_RENDERINFO interface. | |
| typedef struct _IFSDK_PAUSE { | |
| /* | |
| * Version number of the interface. Currently must be 1. | |
| */ | |
| int version; | |
| /* | |
| * Method: NeedToPauseNow | |
| * Check if we need to pause a progressive process now. | |
| * Interface Version: | |
| * 1 | |
| * Implementation Required: | |
| * yes | |
| * Parameters: | |
| * pThis - Pointer to the interface structure itself | |
| * Return Value: | |
| * Non-zero for pause now, 0 for continue. | |
| */ | |
| FPDF_BOOL (*NeedToPauseNow)(struct _IFSDK_PAUSE* pThis); | |
| // A user defined data pointer, used by user's application. Can be NULL. | |
| void* user; | |
| } IFSDK_PAUSE; | |
| // Experimental API. | |
| // Function: FPDF_RenderPageBitmapWithColorScheme_Start | |
| // Start to render page contents to a device independent bitmap | |
| // progressively with a specified color scheme for the content. | |
| // Parameters: | |
| // bitmap - Handle to the device independent bitmap (as the | |
| // output buffer). Bitmap handle can be created by | |
| // FPDFBitmap_Create function. | |
| // page - Handle to the page as returned by FPDF_LoadPage | |
| // function. | |
| // start_x - Left pixel position of the display area in the | |
| // bitmap coordinate. | |
| // start_y - Top pixel position of the display area in the | |
| // bitmap coordinate. | |
| // size_x - Horizontal size (in pixels) for displaying the | |
| // page. | |
| // size_y - Vertical size (in pixels) for displaying the page. | |
| // rotate - Page orientation: 0 (normal), 1 (rotated 90 | |
| // degrees clockwise), 2 (rotated 180 degrees), | |
| // 3 (rotated 90 degrees counter-clockwise). | |
| // flags - 0 for normal display, or combination of flags | |
| // defined in fpdfview.h. With FPDF_ANNOT flag, it | |
| // renders all annotations that does not require | |
| // user-interaction, which are all annotations except | |
| // widget and popup annotations. | |
| // color_scheme - Color scheme to be used in rendering the |page|. | |
| // If null, this function will work similar to | |
| // FPDF_RenderPageBitmap_Start(). | |
| // pause - The IFSDK_PAUSE interface. A callback mechanism | |
| // allowing the page rendering process. | |
| // Return value: | |
| // Rendering Status. See flags for progressive process status for the | |
| // details. | |
| FPDF_EXPORT int FPDF_CALLCONV | |
| FPDF_RenderPageBitmapWithColorScheme_Start(FPDF_BITMAP bitmap, | |
| FPDF_PAGE page, | |
| int start_x, | |
| int start_y, | |
| int size_x, | |
| int size_y, | |
| int rotate, | |
| int flags, | |
| const FPDF_COLORSCHEME* color_scheme, | |
| IFSDK_PAUSE* pause); | |
| // Function: FPDF_RenderPageBitmap_Start | |
| // Start to render page contents to a device independent bitmap | |
| // progressively. | |
| // Parameters: | |
| // bitmap - Handle to the device independent bitmap (as the | |
| // output buffer). Bitmap handle can be created by | |
| // FPDFBitmap_Create(). | |
| // page - Handle to the page, as returned by FPDF_LoadPage(). | |
| // start_x - Left pixel position of the display area in the | |
| // bitmap coordinates. | |
| // start_y - Top pixel position of the display area in the bitmap | |
| // coordinates. | |
| // size_x - Horizontal size (in pixels) for displaying the page. | |
| // size_y - Vertical size (in pixels) for displaying the page. | |
| // rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees | |
| // clockwise), 2 (rotated 180 degrees), 3 (rotated 90 | |
| // degrees counter-clockwise). | |
| // flags - 0 for normal display, or combination of flags | |
| // defined in fpdfview.h. With FPDF_ANNOT flag, it | |
| // renders all annotations that does not require | |
| // user-interaction, which are all annotations except | |
| // widget and popup annotations. | |
| // pause - The IFSDK_PAUSE interface.A callback mechanism | |
| // allowing the page rendering process | |
| // Return value: | |
| // Rendering Status. See flags for progressive process status for the | |
| // details. | |
| FPDF_EXPORT int FPDF_CALLCONV FPDF_RenderPageBitmap_Start(FPDF_BITMAP bitmap, | |
| FPDF_PAGE page, | |
| int start_x, | |
| int start_y, | |
| int size_x, | |
| int size_y, | |
| int rotate, | |
| int flags, | |
| IFSDK_PAUSE* pause); | |
| // Function: FPDF_RenderPage_Continue | |
| // Continue rendering a PDF page. | |
| // Parameters: | |
| // page - Handle to the page, as returned by FPDF_LoadPage(). | |
| // pause - The IFSDK_PAUSE interface (a callback mechanism | |
| // allowing the page rendering process to be paused | |
| // before it's finished). This can be NULL if you | |
| // don't want to pause. | |
| // Return value: | |
| // The rendering status. See flags for progressive process status for | |
| // the details. | |
| FPDF_EXPORT int FPDF_CALLCONV FPDF_RenderPage_Continue(FPDF_PAGE page, | |
| IFSDK_PAUSE* pause); | |
| // Function: FPDF_RenderPage_Close | |
| // Release the resource allocate during page rendering. Need to be | |
| // called after finishing rendering or | |
| // cancel the rendering. | |
| // Parameters: | |
| // page - Handle to the page, as returned by FPDF_LoadPage(). | |
| // Return value: | |
| // None. | |
| FPDF_EXPORT void FPDF_CALLCONV FPDF_RenderPage_Close(FPDF_PAGE page); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif // PUBLIC_FPDF_PROGRESSIVE_H_ |