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

#include "fpdfview.h"

// Define all types used in the SDK. Note they can be simply regarded as opaque pointers
// or long integer numbers.

#define FPDF_ARGB(a,r,g,b)		((((FX_DWORD)(((FX_BYTE)(b)|((FX_WORD)((FX_BYTE)(g))<<8))|(((FX_DWORD)(FX_BYTE)(r))<<16)))) | (((FX_DWORD)(FX_BYTE)(a))<<24))
#define FPDF_GetBValue(argb)    ((FX_BYTE)(argb))
#define FPDF_GetGValue(argb)    ((FX_BYTE)(((FX_WORD)(argb)) >> 8))
#define FPDF_GetRValue(argb)    ((FX_BYTE)((argb)>>16))
#define FPDF_GetAValue(argb)    ((FX_BYTE)((argb)>>24))

#ifdef __cplusplus
extern "C" {
#endif

//////////////////////////////////////////////////////////////////////
//
// Document functions
//
//////////////////////////////////////////////////////////////////////

// Function: FPDF_CreateNewDocument
//			Create a new PDF document.
// Parameters:	
//			None.
// Return value:
//			A handle to a document. If failed, NULL is returned.
DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument();

//////////////////////////////////////////////////////////////////////
//
// Page functions
//
//////////////////////////////////////////////////////////////////////

// Function: FPDFPage_New
//			Construct an empty page.
// Parameters:	
//			document	-	Handle to document. Returned by FPDF_LoadDocument and FPDF_CreateNewDocument.
//			page_index	-	The index of a page.
//			width		-	The page width.
//			height		-	The page height.
// Return value:
//			The handle to the page.
// Comments:
//			Loaded page can be deleted by FPDFPage_Delete.
DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, int page_index, double width, double height);

// Function: FPDFPage_Delete
//			Delete a PDF page.
// Parameters:	
//			document	-	Handle to document. Returned by FPDF_LoadDocument and FPDF_CreateNewDocument.
//			page_index	-	The index of a page.
// Return value:
//			None.
DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index);

// Function: FPDFPage_GetRotation
//			Get the page rotation. One of following values will be returned: 0(0), 1(90), 2(180), 3(270).
// Parameters:	
//			page		-	Handle to a page. Returned by FPDFPage_New.
// Return value:
//			The PDF page rotation.
// Comment:
//			The PDF page rotation is rotated clockwise.
DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page);

// Function: FPDFPage_InsertObject
//			Insert an object to the page. The page object is automatically freed.
// Parameters:	
//			page		-	Handle to a page. Returned by FPDFPage_New.
//			page_obj	-	Handle to a page object. Returned by FPDFPageObj_NewTextObj,FPDFPageObj_NewTextObjEx and
//							FPDFPageObj_NewPathObj.
// Return value:
//			None.
DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_obj);

// Function: FPDFPage_CountObject
//			Get number of page objects inside the page.
// Parameters:	
//			page		-	Handle to a page. Returned by FPDFPage_New.
// Return value:
//			The number of the page object.
DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page);

// Function: FPDFPage_GetObject
//			Get page object by index.
// Parameters:	
//			page		-	Handle to a page. Returned by FPDFPage_New.
//			index		-	The index of a page object.
// Return value:
//			The handle of the page object. Null for failed.
DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, int index);

// Function: FPDFPage_HasTransparency
//			Check that whether the content of specified PDF page contains transparency.
// Parameters:	
//			page		-	Handle to a page. Returned by FPDFPage_New or FPDF_LoadPage.
// Return value:
//			TRUE means that the PDF page does contains transparency.
//			Otherwise, returns FALSE.
DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page);

// Function: FPDFPage_GenerateContent
//			Generate PDF Page content.
// Parameters:	
//			page		-	Handle to a page. Returned by FPDFPage_New.
// Return value:
//			True if successful, false otherwise.
// Comment:
//			Before you save the page to a file, or reload the page, you must call the FPDFPage_GenerateContent function.
//			Or the changed information will be lost.
DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page);

//////////////////////////////////////////////////////////////////////
//
// Page Object functions
//
//////////////////////////////////////////////////////////////////////

// Function: FPDFPageObj_HasTransparency
//			Check that whether the specified PDF page object contains transparency.
// Parameters:	
//			pageObject	-	Handle to a page object.
// Return value:
//			TRUE means that the PDF page object does contains transparency.
//			Otherwise, returns FALSE.
DLLEXPORT FPDF_BOOL STDCALL FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject);

// Function: FPDFPageObj_Transform
//			Transform (scale, rotate, shear, move) page object.
// Parameters:	
//			page_object	-	Handle to a page object. Returned by FPDFPageObj_NewImageObj.
//			a			-	The coefficient "a" of the matrix.
//			b			-	The	coefficient "b" of the matrix.
//			c			-	The coefficient "c" of the matrix.
//			d			-	The coefficient "d" of the matrix.
//			e			-	The coefficient "e" of the matrix.
//			f			-	The coefficient "f" of the matrix.
// Return value:
//			None.
DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object,
							double a, double b, double c, double d, double e, double f);

// Function: FPDFPage_TransformAnnots
//			Transform (scale, rotate, shear, move) all annots in a page.
// Parameters:	
//			page		-	Handle to a page.
//			a			-	The coefficient "a" of the matrix.
//			b			-	The	coefficient "b" of the matrix.
//			c			-	The coefficient "c" of the matrix.
//			d			-	The coefficient "d" of the matrix.
//			e			-	The coefficient "e" of the matrix.
//			f			-	The coefficient "f" of the matrix.
// Return value:
//			None.
DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page,
											 double a, double b, double c, double d, double e, double f);

// The page object constants.
#define FPDF_PAGEOBJ_TEXT		1
#define FPDF_PAGEOBJ_PATH		2
#define FPDF_PAGEOBJ_IMAGE		3
#define FPDF_PAGEOBJ_SHADING	4
#define FPDF_PAGEOBJ_FORM		5

//////////////////////////////////////////////////////////////////////
//
// Image functions
//
//////////////////////////////////////////////////////////////////////

// Function: FPDFPageObj_NewImgeObj
//			Create a new Image Object.
// Parameters:
//			document		-	Handle to document. Returned by FPDF_LoadDocument or FPDF_CreateNewDocument function.
// Return Value:
//			Handle of image object.
DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document);


// Function: FPDFImageObj_LoadJpegFile
//			Load Image from a JPEG image file and then set it to an image object.
// Parameters:
//			pages			-	Pointers to the start of all loaded pages, could be NULL.
//			nCount			-	Number of pages, could be 0.
//			image_object	-	Handle of image object returned by FPDFPageObj_NewImgeObj.
//			fileAccess		-	The custom file access handler, which specifies the JPEG image file.
//	Return Value:
//			TRUE if successful, FALSE otherwise.
//  Note: 
//			The image object might already has an associated image, which is shared and cached by the loaded pages, In this case, we need to clear the cache of image for all the loaded pages.
//			Pass pages and count to this API to clear the image cache. 
DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, int nCount,FPDF_PAGEOBJECT image_object, FPDF_FILEACCESS* fileAccess);


// Function: FPDFImageObj_SetMatrix
//			Set the matrix of an image object.
// Parameters:
//			image_object	-	Handle of image object returned by FPDFPageObj_NewImgeObj.
//			a				-	The coefficient "a" of the matrix.
//			b				-	The coefficient "b" of the matrix.
//			c				-	The coefficient "c" of the matrix.
//			d				-	The coefficient "d" of the matrix.
//			e				-	The coefficient "e" of the matrix.
//			f				-	The coefficient "f" of the matrix.
// Return value:
//			TRUE if successful, FALSE otherwise. 
DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object,
											 double a, double b, double c, double d, double e, double f);

// Function: FPDFImageObj_SetBitmap
//			Set the bitmap to an image object.
// Parameters:
//			pages			-	Pointer's to the start of all loaded pages.
//			nCount			-	Number of pages.
//			image_object	-	Handle of image object returned by FPDFPageObj_NewImgeObj.
//			bitmap			-	The handle of the bitmap which you want to set it to the image object.
// Return value:
//			TRUE if successful, FALSE otherwise. 
DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages,int nCount,FPDF_PAGEOBJECT image_object, FPDF_BITMAP bitmap);

#ifdef __cplusplus
}
#endif
#endif // _FPDFEDIT_H_
