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 28 extern "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. 43 DLLEXPORT 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. 63 DLLEXPORT 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. 76 DLLEXPORT 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. 88 DLLEXPORT 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 // 102 DLLEXPORT 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. 115 DLLEXPORT 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. 125 DLLEXPORT 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. 135 DLLEXPORT 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. 146 DLLEXPORT 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. 159 DLLEXPORT 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. 175 DLLEXPORT FPDF_BOOL STDCALL 176 FPDFPageObj_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. 191 DLLEXPORT 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. 211 DLLEXPORT 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. 239 DLLEXPORT FPDF_PAGEOBJECT STDCALL 240 FPDFPageObj_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. 260 DLLEXPORT FPDF_BOOL STDCALL 261 FPDFImageObj_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. 279 DLLEXPORT 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. 298 DLLEXPORT 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