// 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 _FPDFSAVE_H_
#define _FPDFSAVE_H_

#include "fpdfview.h"

#ifdef __cplusplus
extern "C" {
#endif


// Structure for custom file write
struct FPDF_FILEWRITE{

	//
	//Version number of the interface. Currently must be 1.
	//
	int version;

	// 
	// Method: WriteBlock
	//			Output a block of data in your custom way.
	// Interface Version:
	//			1
	// Implementation Required:
	//			Yes
	// Comments:
	//			Called by function FPDF_SaveDocument
	// Parameters:
	//			pThis		-	Pointer to the structure itself
	//			pData		-	Pointer to a buffer to output
	//			size		-	The size of the buffer.
	// Return value:
	//			Should be non-zero if successful, zero for error.
	//
	int		(*WriteBlock)( FPDF_FILEWRITE* pThis, const void* pData, unsigned long size);

};


/** @brief Incremental. */
#define FPDF_INCREMENTAL		1
/** @brief No Incremental. */
#define FPDF_NO_INCREMENTAL		2


// Function: FPDF_SaveAsCopy
//			Saves the copy of specified document in custom way.
// Parameters:	
//			document		-	Handle to document. Returned by FPDF_LoadDocument and FPDF_CreateNewDocument.
//			pFileWrite		-	A pointer to a custom file write structure.
//			flags			-	The creating flags.
// Return value:
//			TRUE for succeed, FALSE for failed.
//
DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(	FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,
												FPDF_DWORD flags );

// Function: FPDF_SaveWithVersion
//			Same as function ::FPDF_SaveAsCopy, except the file version of the saved document could be specified by user.
// Parameters:	
//			document		-	Handle to document.
//			pFileWrite		-	A pointer to a custom file write structure.
//			flags			-	The creating flags.
//			fileVersion		-	The PDF file version. File version: 14 for 1.4, 15 for 1.5, ...
// Return value:
//			TRUE if succeed, FALSE if failed.
//
DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,
	FPDF_DWORD flags, int fileVersion);

#ifdef __cplusplus
};
#endif

#endif //_FPDFSAVE_H_
