xref: /aosp_15_r20/external/pdfium/public/fpdf_progressive.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
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