// Copyright 2014 PDFium Authors. All rights reserved.
// 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 _FPDF_EXT_H_
#define _FPDF_EXT_H_

#ifndef _FPDFVIEW_H_
#include "fpdfview.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

//flags for type of unsupport object.
#define FPDF_UNSP_DOC_XFAFORM				1
#define FPDF_UNSP_DOC_PORTABLECOLLECTION	2
#define FPDF_UNSP_DOC_ATTACHMENT			3
#define FPDF_UNSP_DOC_SECURITY				4
#define FPDF_UNSP_DOC_SHAREDREVIEW			5
#define FPDF_UNSP_DOC_SHAREDFORM_ACROBAT	6
#define FPDF_UNSP_DOC_SHAREDFORM_FILESYSTEM	7
#define FPDF_UNSP_DOC_SHAREDFORM_EMAIL		8
#define FPDF_UNSP_ANNOT_3DANNOT				11
#define FPDF_UNSP_ANNOT_MOVIE				12
#define FPDF_UNSP_ANNOT_SOUND				13
#define FPDF_UNSP_ANNOT_SCREEN_MEDIA		14
#define FPDF_UNSP_ANNOT_SCREEN_RICHMEDIA	15
#define FPDF_UNSP_ANNOT_ATTACHMENT			16
#define FPDF_UNSP_ANNOT_SIG					17

typedef	struct _UNSUPPORT_INFO
{
	/**
	* Version number of the interface. Currently must be 1.
	**/
	int version;
	
	/** 
	* Method: FSDK_UnSupport_Handler
	*			 UnSupport Object process handling function.
	* Interface Version:
	*			1
	* Implementation Required:
	*			Yes
	* Parameters:
	*		pThis		-	Pointer to the interface structure itself.
	*		nType		-	The type of unsupportObject
	* 	Return value:
	* 		None.
	* */

	void(*FSDK_UnSupport_Handler)(_UNSUPPORT_INFO* pThis,int nType);
}UNSUPPORT_INFO;


/**
 * Function: FSDK_SetUnSpObjProcessHandler
 *			 Setup A UnSupport Object process handler for foxit sdk. 
 * Parameters:
 *			unsp_info		-	Pointer to a UNSUPPORT_INFO structure.
 * Return Value:
 *			TRUE means successful. FALSE means fails. 
 **/

DLLEXPORT FPDF_BOOL STDCALL FSDK_SetUnSpObjProcessHandler(UNSUPPORT_INFO* unsp_info);

//flags for page mode. 

//Unknown value
#define PAGEMODE_UNKONOWN		-1

//Neither document outline nor thumbnail images visible
#define PAGEMODE_USENONE		0

//Document outline visible
#define PAGEMODE_USEOUTLINES	1

//Thumbnial images visible
#define PAGEMODE_USETHUMBS		2

//Full-screen mode, with no menu bar, window controls, or any other window visible
#define PAGEMODE_FULLSCREEN		3

//Optional content group panel visible
#define PAGEMODE_USEOC			4

//Attachments panel visible
#define PAGEMODE_USEATTACHMENTS	5


/**
 * Function: FPDFDoc_GetPageMode
 *			 Get the document's PageMode(How the document should be displayed when opened) 
 * Parameters:
 *			doc		-	Handle to document. Returned by FPDF_LoadDocument function.
 * Return Value:
 *			The flags for page mode.
 **/
DLLEXPORT int FPDFDoc_GetPageMode(FPDF_DOCUMENT document);

#ifdef __cplusplus
};
#endif
#endif