1// Copyright 2014 PDFium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7#ifndef PUBLIC_FPDF_EDIT_H_ 8#define PUBLIC_FPDF_EDIT_H_ 9 10#include <stdint.h> 11 12#include "fpdfview.h" 13 14// Define all types used in the SDK. Note they can be simply regarded as opaque 15// pointers 16// or long integer numbers. 17 18#define FPDF_ARGB(a, r, g, b) \ 19 ((((uint32_t)(((uint8_t)(b) | ((FX_WORD)((uint8_t)(g)) << 8)) | \ 20 (((FX_DWORD)(uint8_t)(r)) << 16)))) | \ 21 (((FX_DWORD)(uint8_t)(a)) << 24)) 22#define FPDF_GetBValue(argb) ((uint8_t)(argb)) 23#define FPDF_GetGValue(argb) ((uint8_t)(((uint16_t)(argb)) >> 8)) 24#define FPDF_GetRValue(argb) ((uint8_t)((argb) >> 16)) 25#define FPDF_GetAValue(argb) ((uint8_t)((argb) >> 24)) 26 27#ifdef __cplusplus 28extern "C" { 29#endif 30 31////////////////////////////////////////////////////////////////////// 32// 33// Document functions 34// 35////////////////////////////////////////////////////////////////////// 36 37// Function: FPDF_CreateNewDocument 38// Create a new PDF document. 39// Parameters: 40// None. 41// Return value: 42// A handle to a document. If failed, NULL is returned. 43DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument(); 44 45////////////////////////////////////////////////////////////////////// 46// 47// Page functions 48// 49////////////////////////////////////////////////////////////////////// 50 51// Function: FPDFPage_New 52// Construct an empty page. 53// Parameters: 54// document - Handle to document. Returned by FPDF_LoadDocument 55// and FPDF_CreateNewDocument. 56// page_index - The index of a page. 57// width - The page width. 58// height - The page height. 59// Return value: 60// The handle to the page. 61// Comments: 62// Loaded page can be deleted by FPDFPage_Delete. 63DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, 64 int page_index, 65 double width, 66 double height); 67 68// Function: FPDFPage_Delete 69// Delete a PDF page. 70// Parameters: 71// document - Handle to document. Returned by FPDF_LoadDocument 72// and FPDF_CreateNewDocument. 73// page_index - The index of a page. 74// Return value: 75// None. 76DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index); 77 78// Function: FPDFPage_GetRotation 79// Get the page rotation. One of following values will be returned: 80// 0(0), 1(90), 2(180), 3(270). 81// Parameters: 82// page - Handle to a page. Returned by FPDFPage_New or 83// FPDF_LoadPage. 84// Return value: 85// The PDF page rotation. 86// Comment: 87// The PDF page rotation is rotated clockwise. 88DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page); 89 90// Function: FPDFPage_SetRotation 91// Set page rotation. One of following values will be set: 0(0), 1(90), 92// 2(180), 3(270). 93// Parameters: 94// page - Handle to a page. Returned by FPDFPage_New or 95// FPDF_LoadPage. 96// rotate - The value of the PDF page rotation. 97// Return value: 98// None. 99// Comment: 100// The PDF page rotation is rotated clockwise. 101// 102DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate); 103 104// Function: FPDFPage_InsertObject 105// Insert an object to the page. The page object is automatically 106// freed. 107// Parameters: 108// page - Handle to a page. Returned by FPDFPage_New or 109// FPDF_LoadPage. 110// page_obj - Handle to a page object. Returned by 111// FPDFPageObj_NewTextObj,FPDFPageObj_NewTextObjEx and 112// FPDFPageObj_NewPathObj. 113// Return value: 114// None. 115DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, 116 FPDF_PAGEOBJECT page_obj); 117 118// Function: FPDFPage_CountObject 119// Get number of page objects inside the page. 120// Parameters: 121// page - Handle to a page. Returned by FPDFPage_New or 122// FPDF_LoadPage. 123// Return value: 124// The number of the page object. 125DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page); 126 127// Function: FPDFPage_GetObject 128// Get page object by index. 129// Parameters: 130// page - Handle to a page. Returned by FPDFPage_New or 131// FPDF_LoadPage. 132// index - The index of a page object. 133// Return value: 134// The handle of the page object. Null for failed. 135DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, int index); 136 137// Function: FPDFPage_HasTransparency 138// Check that whether the content of specified PDF page contains 139// transparency. 140// Parameters: 141// page - Handle to a page. Returned by FPDFPage_New or 142// FPDF_LoadPage. 143// Return value: 144// TRUE means that the PDF page does contains transparency. 145// Otherwise, returns FALSE. 146DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page); 147 148// Function: FPDFPage_GenerateContent 149// Generate PDF Page content. 150// Parameters: 151// page - Handle to a page. Returned by FPDFPage_New or 152// FPDF_LoadPage. 153// Return value: 154// True if successful, false otherwise. 155// Comment: 156// Before you save the page to a file, or reload the page, you must 157// call the FPDFPage_GenerateContent function. 158// Or the changed information will be lost. 159DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page); 160 161////////////////////////////////////////////////////////////////////// 162// 163// Page Object functions 164// 165////////////////////////////////////////////////////////////////////// 166 167// Function: FPDFPageObj_HasTransparency 168// Check that whether the specified PDF page object contains 169// transparency. 170// Parameters: 171// pageObject - Handle to a page object. 172// Return value: 173// TRUE means that the PDF page object does contains transparency. 174// Otherwise, returns FALSE. 175DLLEXPORT FPDF_BOOL STDCALL 176FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject); 177 178// Function: FPDFPageObj_Transform 179// Transform (scale, rotate, shear, move) page object. 180// Parameters: 181// page_object - Handle to a page object. Returned by 182// FPDFPageObj_NewImageObj. 183// a - The coefficient "a" of the matrix. 184// b - The coefficient "b" of the matrix. 185// c - The coefficient "c" of the matrix. 186// d - The coefficient "d" of the matrix. 187// e - The coefficient "e" of the matrix. 188// f - The coefficient "f" of the matrix. 189// Return value: 190// None. 191DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, 192 double a, 193 double b, 194 double c, 195 double d, 196 double e, 197 double f); 198 199// Function: FPDFPage_TransformAnnots 200// Transform (scale, rotate, shear, move) all annots in a page. 201// Parameters: 202// page - Handle to a page. 203// a - The coefficient "a" of the matrix. 204// b - The coefficient "b" of the matrix. 205// c - The coefficient "c" of the matrix. 206// d - The coefficient "d" of the matrix. 207// e - The coefficient "e" of the matrix. 208// f - The coefficient "f" of the matrix. 209// Return value: 210// None. 211DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page, 212 double a, 213 double b, 214 double c, 215 double d, 216 double e, 217 double f); 218 219// The page object constants. 220#define FPDF_PAGEOBJ_TEXT 1 221#define FPDF_PAGEOBJ_PATH 2 222#define FPDF_PAGEOBJ_IMAGE 3 223#define FPDF_PAGEOBJ_SHADING 4 224#define FPDF_PAGEOBJ_FORM 5 225 226////////////////////////////////////////////////////////////////////// 227// 228// Image functions 229// 230////////////////////////////////////////////////////////////////////// 231 232// Function: FPDFPageObj_NewImgeObj 233// Create a new Image Object. 234// Parameters: 235// document - Handle to document. Returned by 236// FPDF_LoadDocument or FPDF_CreateNewDocument function. 237// Return Value: 238// Handle of image object. 239DLLEXPORT FPDF_PAGEOBJECT STDCALL 240FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document); 241 242// Function: FPDFImageObj_LoadJpegFile 243// Load Image from a JPEG image file and then set it to an image 244// object. 245// Parameters: 246// pages - Pointers to the start of all loaded pages, could 247// be NULL. 248// nCount - Number of pages, could be 0. 249// image_object - Handle of image object returned by 250// FPDFPageObj_NewImgeObj. 251// fileAccess - The custom file access handler, which specifies 252// the JPEG image file. 253// Return Value: 254// TRUE if successful, FALSE otherwise. 255// Note: 256// The image object might already has an associated image, which is 257// shared and cached by the loaded pages, In this case, we need to 258// clear the cache of image for all the loaded pages. 259// Pass pages and count to this API to clear the image cache. 260DLLEXPORT FPDF_BOOL STDCALL 261FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, 262 int nCount, 263 FPDF_PAGEOBJECT image_object, 264 FPDF_FILEACCESS* fileAccess); 265 266// Function: FPDFImageObj_SetMatrix 267// Set the matrix of an image object. 268// Parameters: 269// image_object - Handle of image object returned by 270// FPDFPageObj_NewImgeObj. 271// a - The coefficient "a" of the matrix. 272// b - The coefficient "b" of the matrix. 273// c - The coefficient "c" of the matrix. 274// d - The coefficient "d" of the matrix. 275// e - The coefficient "e" of the matrix. 276// f - The coefficient "f" of the matrix. 277// Return value: 278// TRUE if successful, FALSE otherwise. 279DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object, 280 double a, 281 double b, 282 double c, 283 double d, 284 double e, 285 double f); 286 287// Function: FPDFImageObj_SetBitmap 288// Set the bitmap to an image object. 289// Parameters: 290// pages - Pointer's to the start of all loaded pages. 291// nCount - Number of pages. 292// image_object - Handle of image object returned by 293// FPDFPageObj_NewImgeObj. 294// bitmap - The handle of the bitmap which you want to set 295// it to the image object. 296// Return value: 297// TRUE if successful, FALSE otherwise. 298DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages, 299 int nCount, 300 FPDF_PAGEOBJECT image_object, 301 FPDF_BITMAP bitmap); 302 303#ifdef __cplusplus 304} 305#endif 306 307#endif // PUBLIC_FPDF_EDIT_H_ 308