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