// 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_