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