1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef PUBLIC_FPDF_PROGRESSIVE_H_ 8 #define PUBLIC_FPDF_PROGRESSIVE_H_ 9 10 // NOLINTNEXTLINE(build/include) 11 #include "fpdfview.h" 12 13 // Flags for progressive process status. 14 #define FPDF_RENDER_READY 0 15 #define FPDF_RENDER_READER 0 // Deprecated 16 #define FPDF_RENDER_TOBECONTINUED 1 17 #define FPDF_RENDER_TOBECOUNTINUED 1 // Deprecated. 18 #define FPDF_RENDER_DONE 2 19 #define FPDF_RENDER_FAILED 3 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 // IFPDF_RENDERINFO interface. 26 typedef struct _IFSDK_PAUSE { 27 /** 28 * Version number of the interface. Currently must be 1. 29 **/ 30 int version; 31 32 /* 33 * Method: NeedToPauseNow 34 * Check if we need to pause a progressive process now. 35 * Interface Version: 36 * 1 37 * Implementation Required: 38 * yes 39 * Parameters: 40 * pThis - Pointer to the interface structure itself 41 * Return Value: 42 * Non-zero for pause now, 0 for continue. 43 * 44 */ 45 FPDF_BOOL (*NeedToPauseNow)(struct _IFSDK_PAUSE* pThis); 46 47 // A user defined data pointer, used by user's application. Can be NULL. 48 void* user; 49 } IFSDK_PAUSE; 50 51 // Function: FPDF_RenderPageBitmap_Start 52 // Start to render page contents to a device independent bitmap 53 // progressively. 54 // Parameters: 55 // bitmap - Handle to the device independent bitmap (as the 56 // output buffer). 57 // Bitmap handle can be created by FPDFBitmap_Create 58 // function. 59 // page - Handle to the page. Returned by FPDF_LoadPage 60 // function. 61 // start_x - Left pixel position of the display area in the 62 // bitmap coordinate. 63 // start_y - Top pixel position of the display area in the bitmap 64 // coordinate. 65 // size_x - Horizontal size (in pixels) for displaying the page. 66 // size_y - Vertical size (in pixels) for displaying the page. 67 // rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees 68 // clockwise), 69 // 2 (rotated 180 degrees), 3 (rotated 90 degrees 70 // counter-clockwise). 71 // flags - 0 for normal display, or combination of flags 72 // defined in fpdfview.h. With FPDF_ANNOT flag, it 73 // renders all annotations that does not require 74 // user-interaction, which are all annotations except 75 // widget and popup annotations. 76 // pause - The IFSDK_PAUSE interface.A callback mechanism 77 // allowing the page rendering process 78 // Return value: 79 // Rendering Status. See flags for progressive process status for the 80 // details. 81 // 82 FPDF_EXPORT int FPDF_CALLCONV FPDF_RenderPageBitmap_Start(FPDF_BITMAP bitmap, 83 FPDF_PAGE page, 84 int start_x, 85 int start_y, 86 int size_x, 87 int size_y, 88 int rotate, 89 int flags, 90 IFSDK_PAUSE* pause); 91 92 // Function: FPDF_RenderPage_Continue 93 // Continue rendering a PDF page. 94 // Parameters: 95 // page - Handle to the page. Returned by FPDF_LoadPage 96 // function. 97 // pause - The IFSDK_PAUSE interface.A callback mechanism 98 // allowing the page rendering process 99 // to be paused before it's finished. This can be NULL 100 // if you don't want to pause. 101 // Return value: 102 // The rendering status. See flags for progressive process status for 103 // the details. 104 FPDF_EXPORT int FPDF_CALLCONV FPDF_RenderPage_Continue(FPDF_PAGE page, 105 IFSDK_PAUSE* pause); 106 107 // Function: FPDF_RenderPage_Close 108 // Release the resource allocate during page rendering. Need to be 109 // called after finishing rendering or 110 // cancel the rendering. 111 // Parameters: 112 // page - Handle to the page. Returned by FPDF_LoadPage 113 // function. 114 // Return value: 115 // NULL 116 FPDF_EXPORT void FPDF_CALLCONV FPDF_RenderPage_Close(FPDF_PAGE page); 117 118 #ifdef __cplusplus 119 } 120 #endif 121 122 #endif // PUBLIC_FPDF_PROGRESSIVE_H_ 123