blob: 64eef263a551dc8443d78beb377fd8e9a4c34012 [file] [log] [blame]
// 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 PUBLIC_FPDF_EDIT_H_
#define PUBLIC_FPDF_EDIT_H_
#include <stdint.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) \
((((uint32_t)(((uint8_t)(b) | ((FX_WORD)((uint8_t)(g)) << 8)) | \
(((FX_DWORD)(uint8_t)(r)) << 16)))) | \
(((FX_DWORD)(uint8_t)(a)) << 24))
#define FPDF_GetBValue(argb) ((uint8_t)(argb))
#define FPDF_GetGValue(argb) ((uint8_t)(((uint16_t)(argb)) >> 8))
#define FPDF_GetRValue(argb) ((uint8_t)((argb) >> 16))
#define FPDF_GetAValue(argb) ((uint8_t)((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 or
// FPDF_LoadPage.
// Return value:
// The PDF page rotation.
// Comment:
// The PDF page rotation is rotated clockwise.
DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page);
// Function: FPDFPage_SetRotation
// Set page rotation. One of following values will be set: 0(0), 1(90),
// 2(180), 3(270).
// Parameters:
// page - Handle to a page. Returned by FPDFPage_New or
// FPDF_LoadPage.
// rotate - The value of the PDF page rotation.
// Return value:
// None.
// Comment:
// The PDF page rotation is rotated clockwise.
//
DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate);
// 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 or
// FPDF_LoadPage.
// 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 or
// FPDF_LoadPage.
// 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 or
// FPDF_LoadPage.
// 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 or
// FPDF_LoadPage.
// 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 // PUBLIC_FPDF_EDIT_H_