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 // NOLINTNEXTLINE(build/include) 13 #include "fpdfview.h" 14 15 #define FPDF_ARGB(a, r, g, b) \ 16 ((uint32_t)(((uint32_t)(b)&0xff) | (((uint32_t)(g)&0xff) << 8) | \ 17 (((uint32_t)(r)&0xff) << 16) | (((uint32_t)(a)&0xff) << 24))) 18 #define FPDF_GetBValue(argb) ((uint8_t)(argb)) 19 #define FPDF_GetGValue(argb) ((uint8_t)(((uint16_t)(argb)) >> 8)) 20 #define FPDF_GetRValue(argb) ((uint8_t)((argb) >> 16)) 21 #define FPDF_GetAValue(argb) ((uint8_t)((argb) >> 24)) 22 23 // Refer to PDF Reference version 1.7 table 4.12 for all color space families. 24 #define FPDF_COLORSPACE_UNKNOWN 0 25 #define FPDF_COLORSPACE_DEVICEGRAY 1 26 #define FPDF_COLORSPACE_DEVICERGB 2 27 #define FPDF_COLORSPACE_DEVICECMYK 3 28 #define FPDF_COLORSPACE_CALGRAY 4 29 #define FPDF_COLORSPACE_CALRGB 5 30 #define FPDF_COLORSPACE_LAB 6 31 #define FPDF_COLORSPACE_ICCBASED 7 32 #define FPDF_COLORSPACE_SEPARATION 8 33 #define FPDF_COLORSPACE_DEVICEN 9 34 #define FPDF_COLORSPACE_INDEXED 10 35 #define FPDF_COLORSPACE_PATTERN 11 36 37 // The page object constants. 38 #define FPDF_PAGEOBJ_UNKNOWN 0 39 #define FPDF_PAGEOBJ_TEXT 1 40 #define FPDF_PAGEOBJ_PATH 2 41 #define FPDF_PAGEOBJ_IMAGE 3 42 #define FPDF_PAGEOBJ_SHADING 4 43 #define FPDF_PAGEOBJ_FORM 5 44 45 // The path segment constants. 46 #define FPDF_SEGMENT_UNKNOWN -1 47 #define FPDF_SEGMENT_LINETO 0 48 #define FPDF_SEGMENT_BEZIERTO 1 49 #define FPDF_SEGMENT_MOVETO 2 50 51 #define FPDF_FILLMODE_NONE 0 52 #define FPDF_FILLMODE_ALTERNATE 1 53 #define FPDF_FILLMODE_WINDING 2 54 55 #define FPDF_FONT_TYPE1 1 56 #define FPDF_FONT_TRUETYPE 2 57 58 #define FPDF_LINECAP_BUTT 0 59 #define FPDF_LINECAP_ROUND 1 60 #define FPDF_LINECAP_PROJECTING_SQUARE 2 61 62 #define FPDF_LINEJOIN_MITER 0 63 #define FPDF_LINEJOIN_ROUND 1 64 #define FPDF_LINEJOIN_BEVEL 2 65 66 #define FPDF_PRINTMODE_EMF 0 67 #define FPDF_PRINTMODE_TEXTONLY 1 68 #define FPDF_PRINTMODE_POSTSCRIPT2 2 69 #define FPDF_PRINTMODE_POSTSCRIPT3 3 70 #define FPDF_PRINTMODE_POSTSCRIPT2_PASSTHROUGH 4 71 #define FPDF_PRINTMODE_POSTSCRIPT3_PASSTHROUGH 5 72 73 typedef struct FPDF_IMAGEOBJ_METADATA { 74 // The image width in pixels. 75 unsigned int width; 76 // The image height in pixels. 77 unsigned int height; 78 // The image's horizontal pixel-per-inch. 79 float horizontal_dpi; 80 // The image's vertical pixel-per-inch. 81 float vertical_dpi; 82 // The number of bits used to represent each pixel. 83 unsigned int bits_per_pixel; 84 // The image's colorspace. See above for the list of FPDF_COLORSPACE_*. 85 int colorspace; 86 // The image's marked content ID. Useful for pairing with associated alt-text. 87 // A value of -1 indicates no ID. 88 int marked_content_id; 89 } FPDF_IMAGEOBJ_METADATA; 90 91 #ifdef __cplusplus 92 extern "C" { 93 #endif // __cplusplus 94 95 // Create a new PDF document. 96 // 97 // Returns a handle to a new document, or NULL on failure. 98 FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV FPDF_CreateNewDocument(); 99 100 // Create a new PDF page. 101 // 102 // document - handle to document. 103 // page_index - suggested 0-based index of the page to create. If it is larger 104 // than document's current last index(L), the created page index 105 // is the next available index -- L+1. 106 // width - the page width in points. 107 // height - the page height in points. 108 // 109 // Returns the handle to the new page or NULL on failure. 110 // 111 // The page should be closed with FPDF_ClosePage() when finished as 112 // with any other page in the document. 113 FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDFPage_New(FPDF_DOCUMENT document, 114 int page_index, 115 double width, 116 double height); 117 118 // Delete the page at |page_index|. 119 // 120 // document - handle to document. 121 // page_index - the index of the page to delete. 122 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_Delete(FPDF_DOCUMENT document, 123 int page_index); 124 125 // Get the rotation of |page|. 126 // 127 // page - handle to a page 128 // 129 // Returns one of the following indicating the page rotation: 130 // 0 - No rotation. 131 // 1 - Rotated 90 degrees clockwise. 132 // 2 - Rotated 180 degrees clockwise. 133 // 3 - Rotated 270 degrees clockwise. 134 FPDF_EXPORT int FPDF_CALLCONV FPDFPage_GetRotation(FPDF_PAGE page); 135 136 // Set rotation for |page|. 137 // 138 // page - handle to a page. 139 // rotate - the rotation value, one of: 140 // 0 - No rotation. 141 // 1 - Rotated 90 degrees clockwise. 142 // 2 - Rotated 180 degrees clockwise. 143 // 3 - Rotated 270 degrees clockwise. 144 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_SetRotation(FPDF_PAGE page, int rotate); 145 146 // Insert |page_obj| into |page|. 147 // 148 // page - handle to a page 149 // page_obj - handle to a page object. The |page_obj| will be automatically 150 // freed. 151 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_InsertObject(FPDF_PAGE page, 152 FPDF_PAGEOBJECT page_obj); 153 154 // Experimental API. 155 // Remove |page_obj| from |page|. 156 // 157 // page - handle to a page 158 // page_obj - handle to a page object to be removed. 159 // 160 // Returns TRUE on success. 161 // 162 // Ownership is transferred to the caller. Call FPDFPageObj_Destroy() to free 163 // it. 164 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 165 FPDFPage_RemoveObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_obj); 166 167 // Get number of page objects inside |page|. 168 // 169 // page - handle to a page. 170 // 171 // Returns the number of objects in |page|. 172 FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObjects(FPDF_PAGE page); 173 174 // Get object in |page| at |index|. 175 // 176 // page - handle to a page. 177 // index - the index of a page object. 178 // 179 // Returns the handle to the page object, or NULL on failed. 180 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPage_GetObject(FPDF_PAGE page, 181 int index); 182 183 // Checks if |page| contains transparency. 184 // 185 // page - handle to a page. 186 // 187 // Returns TRUE if |page| contains transparency. 188 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_HasTransparency(FPDF_PAGE page); 189 190 // Generate the content of |page|. 191 // 192 // page - handle to a page. 193 // 194 // Returns TRUE on success. 195 // 196 // Before you save the page to a file, or reload the page, you must call 197 // |FPDFPage_GenerateContent| or any changes to |page| will be lost. 198 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_GenerateContent(FPDF_PAGE page); 199 200 // Destroy |page_obj| by releasing its resources. |page_obj| must have been 201 // created by FPDFPageObj_CreateNew{Path|Rect}() or 202 // FPDFPageObj_New{Text|Image}Obj(). This function must be called on 203 // newly-created objects if they are not added to a page through 204 // FPDFPage_InsertObject() or to an annotation through FPDFAnnot_AppendObject(). 205 // 206 // page_obj - handle to a page object. 207 FPDF_EXPORT void FPDF_CALLCONV FPDFPageObj_Destroy(FPDF_PAGEOBJECT page_obj); 208 209 // Checks if |page_object| contains transparency. 210 // 211 // page_object - handle to a page object. 212 // 213 // Returns TRUE if |page_object| contains transparency. 214 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 215 FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT page_object); 216 217 // Get type of |page_object|. 218 // 219 // page_object - handle to a page object. 220 // 221 // Returns one of the FPDF_PAGEOBJ_* values on success, FPDF_PAGEOBJ_UNKNOWN on 222 // error. 223 FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetType(FPDF_PAGEOBJECT page_object); 224 225 // Transform |page_object| by the given matrix. 226 // 227 // page_object - handle to a page object. 228 // a - matrix value. 229 // b - matrix value. 230 // c - matrix value. 231 // d - matrix value. 232 // e - matrix value. 233 // f - matrix value. 234 // 235 // The matrix is composed as: 236 // |a c e| 237 // |b d f| 238 // and can be used to scale, rotate, shear and translate the |page_object|. 239 FPDF_EXPORT void FPDF_CALLCONV 240 FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, 241 double a, 242 double b, 243 double c, 244 double d, 245 double e, 246 double f); 247 248 // Transform all annotations in |page|. 249 // 250 // page - handle to a page. 251 // a - matrix value. 252 // b - matrix value. 253 // c - matrix value. 254 // d - matrix value. 255 // e - matrix value. 256 // f - matrix value. 257 // 258 // The matrix is composed as: 259 // |a c e| 260 // |b d f| 261 // and can be used to scale, rotate, shear and translate the |page| annotations. 262 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_TransformAnnots(FPDF_PAGE page, 263 double a, 264 double b, 265 double c, 266 double d, 267 double e, 268 double f); 269 270 // Create a new image object. 271 // 272 // document - handle to a document. 273 // 274 // Returns a handle to a new image object. 275 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV 276 FPDFPageObj_NewImageObj(FPDF_DOCUMENT document); 277 278 // Experimental API. 279 // Get number of content marks in |page_object|. 280 // 281 // page_object - handle to a page object. 282 // 283 // Returns the number of content marks in |page_object|, or -1 in case of 284 // failure. 285 FPDF_EXPORT int FPDF_CALLCONV 286 FPDFPageObj_CountMarks(FPDF_PAGEOBJECT page_object); 287 288 // Experimental API. 289 // Get content mark in |page_object| at |index|. 290 // 291 // page_object - handle to a page object. 292 // index - the index of a page object. 293 // 294 // Returns the handle to the content mark, or NULL on failure. The handle is 295 // still owned by the library, and it should not be freed directly. It becomes 296 // invalid if the page object is destroyed, either directly or indirectly by 297 // unloading the page. 298 FPDF_EXPORT FPDF_PAGEOBJECTMARK FPDF_CALLCONV 299 FPDFPageObj_GetMark(FPDF_PAGEOBJECT page_object, unsigned long index); 300 301 // Experimental API. 302 // Add a new content mark to a |page_object|. 303 // 304 // page_object - handle to a page object. 305 // name - the name (tag) of the mark. 306 // 307 // Returns the handle to the content mark, or NULL on failure. The handle is 308 // still owned by the library, and it should not be freed directly. It becomes 309 // invalid if the page object is destroyed, either directly or indirectly by 310 // unloading the page. 311 FPDF_EXPORT FPDF_PAGEOBJECTMARK FPDF_CALLCONV 312 FPDFPageObj_AddMark(FPDF_PAGEOBJECT page_object, FPDF_BYTESTRING name); 313 314 // Experimental API. 315 // Removes a content |mark| from a |page_object|. 316 // The mark handle will be invalid after the removal. 317 // 318 // page_object - handle to a page object. 319 // mark - handle to a content mark in that object to remove. 320 // 321 // Returns TRUE if the operation succeeded, FALSE if it failed. 322 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 323 FPDFPageObj_RemoveMark(FPDF_PAGEOBJECT page_object, FPDF_PAGEOBJECTMARK mark); 324 325 // Experimental API. 326 // Get the name of a content mark. 327 // 328 // mark - handle to a content mark. 329 // buffer - buffer for holding the returned name in UTF-16LE. This is only 330 // modified if |buflen| is longer than the length of the name. 331 // Optional, pass null to just retrieve the size of the buffer 332 // needed. 333 // buflen - length of the buffer. 334 // out_buflen - pointer to variable that will receive the minimum buffer size 335 // to contain the name. Not filled if FALSE is returned. 336 // 337 // Returns TRUE if the operation succeeded, FALSE if it failed. 338 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 339 FPDFPageObjMark_GetName(FPDF_PAGEOBJECTMARK mark, 340 void* buffer, 341 unsigned long buflen, 342 unsigned long* out_buflen); 343 344 // Experimental API. 345 // Get the number of key/value pair parameters in |mark|. 346 // 347 // mark - handle to a content mark. 348 // 349 // Returns the number of key/value pair parameters |mark|, or -1 in case of 350 // failure. 351 FPDF_EXPORT int FPDF_CALLCONV 352 FPDFPageObjMark_CountParams(FPDF_PAGEOBJECTMARK mark); 353 354 // Experimental API. 355 // Get the key of a property in a content mark. 356 // 357 // mark - handle to a content mark. 358 // index - index of the property. 359 // buffer - buffer for holding the returned key in UTF-16LE. This is only 360 // modified if |buflen| is longer than the length of the key. 361 // Optional, pass null to just retrieve the size of the buffer 362 // needed. 363 // buflen - length of the buffer. 364 // out_buflen - pointer to variable that will receive the minimum buffer size 365 // to contain the key. Not filled if FALSE is returned. 366 // 367 // Returns TRUE if the operation was successful, FALSE otherwise. 368 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 369 FPDFPageObjMark_GetParamKey(FPDF_PAGEOBJECTMARK mark, 370 unsigned long index, 371 void* buffer, 372 unsigned long buflen, 373 unsigned long* out_buflen); 374 375 // Experimental API. 376 // Get the type of the value of a property in a content mark by key. 377 // 378 // mark - handle to a content mark. 379 // key - string key of the property. 380 // 381 // Returns the type of the value, or FPDF_OBJECT_UNKNOWN in case of failure. 382 FPDF_EXPORT FPDF_OBJECT_TYPE FPDF_CALLCONV 383 FPDFPageObjMark_GetParamValueType(FPDF_PAGEOBJECTMARK mark, 384 FPDF_BYTESTRING key); 385 386 // Experimental API. 387 // Get the value of a number property in a content mark by key as int. 388 // FPDFPageObjMark_GetParamValueType() should have returned FPDF_OBJECT_NUMBER 389 // for this property. 390 // 391 // mark - handle to a content mark. 392 // key - string key of the property. 393 // out_value - pointer to variable that will receive the value. Not filled if 394 // false is returned. 395 // 396 // Returns TRUE if the key maps to a number value, FALSE otherwise. 397 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 398 FPDFPageObjMark_GetParamIntValue(FPDF_PAGEOBJECTMARK mark, 399 FPDF_BYTESTRING key, 400 int* out_value); 401 402 // Experimental API. 403 // Get the value of a string property in a content mark by key. 404 // 405 // mark - handle to a content mark. 406 // key - string key of the property. 407 // buffer - buffer for holding the returned value in UTF-16LE. This is 408 // only modified if |buflen| is longer than the length of the 409 // value. 410 // Optional, pass null to just retrieve the size of the buffer 411 // needed. 412 // buflen - length of the buffer. 413 // out_buflen - pointer to variable that will receive the minimum buffer size 414 // to contain the value. Not filled if FALSE is returned. 415 // 416 // Returns TRUE if the key maps to a string/blob value, FALSE otherwise. 417 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 418 FPDFPageObjMark_GetParamStringValue(FPDF_PAGEOBJECTMARK mark, 419 FPDF_BYTESTRING key, 420 void* buffer, 421 unsigned long buflen, 422 unsigned long* out_buflen); 423 424 // Experimental API. 425 // Get the value of a blob property in a content mark by key. 426 // 427 // mark - handle to a content mark. 428 // key - string key of the property. 429 // buffer - buffer for holding the returned value. This is only modified 430 // if |buflen| is at least as long as the length of the value. 431 // Optional, pass null to just retrieve the size of the buffer 432 // needed. 433 // buflen - length of the buffer. 434 // out_buflen - pointer to variable that will receive the minimum buffer size 435 // to contain the value. Not filled if FALSE is returned. 436 // 437 // Returns TRUE if the key maps to a string/blob value, FALSE otherwise. 438 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 439 FPDFPageObjMark_GetParamBlobValue(FPDF_PAGEOBJECTMARK mark, 440 FPDF_BYTESTRING key, 441 void* buffer, 442 unsigned long buflen, 443 unsigned long* out_buflen); 444 445 // Experimental API. 446 // Set the value of an int property in a content mark by key. If a parameter 447 // with key |key| exists, its value is set to |value|. Otherwise, it is added as 448 // a new parameter. 449 // 450 // document - handle to the document. 451 // page_object - handle to the page object with the mark. 452 // mark - handle to a content mark. 453 // key - string key of the property. 454 // value - int value to set. 455 // 456 // Returns TRUE if the operation succeeded, FALSE otherwise. 457 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 458 FPDFPageObjMark_SetIntParam(FPDF_DOCUMENT document, 459 FPDF_PAGEOBJECT page_object, 460 FPDF_PAGEOBJECTMARK mark, 461 FPDF_BYTESTRING key, 462 int value); 463 464 // Experimental API. 465 // Set the value of a string property in a content mark by key. If a parameter 466 // with key |key| exists, its value is set to |value|. Otherwise, it is added as 467 // a new parameter. 468 // 469 // document - handle to the document. 470 // page_object - handle to the page object with the mark. 471 // mark - handle to a content mark. 472 // key - string key of the property. 473 // value - string value to set. 474 // 475 // Returns TRUE if the operation succeeded, FALSE otherwise. 476 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 477 FPDFPageObjMark_SetStringParam(FPDF_DOCUMENT document, 478 FPDF_PAGEOBJECT page_object, 479 FPDF_PAGEOBJECTMARK mark, 480 FPDF_BYTESTRING key, 481 FPDF_BYTESTRING value); 482 483 // Experimental API. 484 // Set the value of a blob property in a content mark by key. If a parameter 485 // with key |key| exists, its value is set to |value|. Otherwise, it is added as 486 // a new parameter. 487 // 488 // document - handle to the document. 489 // page_object - handle to the page object with the mark. 490 // mark - handle to a content mark. 491 // key - string key of the property. 492 // value - pointer to blob value to set. 493 // value_len - size in bytes of |value|. 494 // 495 // Returns TRUE if the operation succeeded, FALSE otherwise. 496 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 497 FPDFPageObjMark_SetBlobParam(FPDF_DOCUMENT document, 498 FPDF_PAGEOBJECT page_object, 499 FPDF_PAGEOBJECTMARK mark, 500 FPDF_BYTESTRING key, 501 void* value, 502 unsigned long value_len); 503 504 // Experimental API. 505 // Removes a property from a content mark by key. 506 // 507 // page_object - handle to the page object with the mark. 508 // mark - handle to a content mark. 509 // key - string key of the property. 510 // 511 // Returns TRUE if the operation succeeded, FALSE otherwise. 512 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 513 FPDFPageObjMark_RemoveParam(FPDF_PAGEOBJECT page_object, 514 FPDF_PAGEOBJECTMARK mark, 515 FPDF_BYTESTRING key); 516 517 // Load an image from a JPEG image file and then set it into |image_object|. 518 // 519 // pages - pointer to the start of all loaded pages, may be NULL. 520 // count - number of |pages|, may be 0. 521 // image_object - handle to an image object. 522 // file_access - file access handler which specifies the JPEG image file. 523 // 524 // Returns TRUE on success. 525 // 526 // The image object might already have an associated image, which is shared and 527 // cached by the loaded pages. In that case, we need to clear the cached image 528 // for all the loaded pages. Pass |pages| and page count (|count|) to this API 529 // to clear the image cache. If the image is not previously shared, or NULL is a 530 // valid |pages| value. 531 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 532 FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, 533 int count, 534 FPDF_PAGEOBJECT image_object, 535 FPDF_FILEACCESS* file_access); 536 537 // Load an image from a JPEG image file and then set it into |image_object|. 538 // 539 // pages - pointer to the start of all loaded pages, may be NULL. 540 // count - number of |pages|, may be 0. 541 // image_object - handle to an image object. 542 // file_access - file access handler which specifies the JPEG image file. 543 // 544 // Returns TRUE on success. 545 // 546 // The image object might already have an associated image, which is shared and 547 // cached by the loaded pages. In that case, we need to clear the cached image 548 // for all the loaded pages. Pass |pages| and page count (|count|) to this API 549 // to clear the image cache. If the image is not previously shared, or NULL is a 550 // valid |pages| value. This function loads the JPEG image inline, so the image 551 // content is copied to the file. This allows |file_access| and its associated 552 // data to be deleted after this function returns. 553 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 554 FPDFImageObj_LoadJpegFileInline(FPDF_PAGE* pages, 555 int count, 556 FPDF_PAGEOBJECT image_object, 557 FPDF_FILEACCESS* file_access); 558 559 // Experimental API. 560 // Get the transform matrix of an image object. 561 // 562 // image_object - handle to an image object. 563 // a - matrix value. 564 // b - matrix value. 565 // c - matrix value. 566 // d - matrix value. 567 // e - matrix value. 568 // f - matrix value. 569 // 570 // The matrix is composed as: 571 // |a c e| 572 // |b d f| 573 // and used to scale, rotate, shear and translate the image. 574 // 575 // Returns TRUE on success. 576 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 577 FPDFImageObj_GetMatrix(FPDF_PAGEOBJECT image_object, 578 double* a, 579 double* b, 580 double* c, 581 double* d, 582 double* e, 583 double* f); 584 585 // Set the transform matrix of |image_object|. 586 // 587 // image_object - handle to an image object. 588 // a - matrix value. 589 // b - matrix value. 590 // c - matrix value. 591 // d - matrix value. 592 // e - matrix value. 593 // f - matrix value. 594 // 595 // The matrix is composed as: 596 // |a c e| 597 // |b d f| 598 // and can be used to scale, rotate, shear and translate the |image_object|. 599 // 600 // Returns TRUE on success. 601 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 602 FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object, 603 double a, 604 double b, 605 double c, 606 double d, 607 double e, 608 double f); 609 610 // Set |bitmap| to |image_object|. 611 // 612 // pages - pointer to the start of all loaded pages, may be NULL. 613 // count - number of |pages|, may be 0. 614 // image_object - handle to an image object. 615 // bitmap - handle of the bitmap. 616 // 617 // Returns TRUE on success. 618 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 619 FPDFImageObj_SetBitmap(FPDF_PAGE* pages, 620 int count, 621 FPDF_PAGEOBJECT image_object, 622 FPDF_BITMAP bitmap); 623 624 // Get a bitmap rasterisation of |image_object|. The returned bitmap will be 625 // owned by the caller, and FPDFBitmap_Destroy() must be called on the returned 626 // bitmap when it is no longer needed. 627 // 628 // image_object - handle to an image object. 629 // 630 // Returns the bitmap. 631 FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV 632 FPDFImageObj_GetBitmap(FPDF_PAGEOBJECT image_object); 633 634 // Get the decoded image data of |image_object|. The decoded data is the 635 // uncompressed image data, i.e. the raw image data after having all filters 636 // applied. |buffer| is only modified if |buflen| is longer than the length of 637 // the decoded image data. 638 // 639 // image_object - handle to an image object. 640 // buffer - buffer for holding the decoded image data. 641 // buflen - length of the buffer in bytes. 642 // 643 // Returns the length of the decoded image data. 644 FPDF_EXPORT unsigned long FPDF_CALLCONV 645 FPDFImageObj_GetImageDataDecoded(FPDF_PAGEOBJECT image_object, 646 void* buffer, 647 unsigned long buflen); 648 649 // Get the raw image data of |image_object|. The raw data is the image data as 650 // stored in the PDF without applying any filters. |buffer| is only modified if 651 // |buflen| is longer than the length of the raw image data. 652 // 653 // image_object - handle to an image object. 654 // buffer - buffer for holding the raw image data. 655 // buflen - length of the buffer in bytes. 656 // 657 // Returns the length of the raw image data. 658 FPDF_EXPORT unsigned long FPDF_CALLCONV 659 FPDFImageObj_GetImageDataRaw(FPDF_PAGEOBJECT image_object, 660 void* buffer, 661 unsigned long buflen); 662 663 // Get the number of filters (i.e. decoders) of the image in |image_object|. 664 // 665 // image_object - handle to an image object. 666 // 667 // Returns the number of |image_object|'s filters. 668 FPDF_EXPORT int FPDF_CALLCONV 669 FPDFImageObj_GetImageFilterCount(FPDF_PAGEOBJECT image_object); 670 671 // Get the filter at |index| of |image_object|'s list of filters. Note that the 672 // filters need to be applied in order, i.e. the first filter should be applied 673 // first, then the second, etc. |buffer| is only modified if |buflen| is longer 674 // than the length of the filter string. 675 // 676 // image_object - handle to an image object. 677 // index - the index of the filter requested. 678 // buffer - buffer for holding filter string, encoded in UTF-8. 679 // buflen - length of the buffer. 680 // 681 // Returns the length of the filter string. 682 FPDF_EXPORT unsigned long FPDF_CALLCONV 683 FPDFImageObj_GetImageFilter(FPDF_PAGEOBJECT image_object, 684 int index, 685 void* buffer, 686 unsigned long buflen); 687 688 // Get the image metadata of |image_object|, including dimension, DPI, bits per 689 // pixel, and colorspace. If the |image_object| is not an image object or if it 690 // does not have an image, then the return value will be false. Otherwise, 691 // failure to retrieve any specific parameter would result in its value being 0. 692 // 693 // image_object - handle to an image object. 694 // page - handle to the page that |image_object| is on. Required for 695 // retrieving the image's bits per pixel and colorspace. 696 // metadata - receives the image metadata; must not be NULL. 697 // 698 // Returns true if successful. 699 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 700 FPDFImageObj_GetImageMetadata(FPDF_PAGEOBJECT image_object, 701 FPDF_PAGE page, 702 FPDF_IMAGEOBJ_METADATA* metadata); 703 704 // Create a new path object at an initial position. 705 // 706 // x - initial horizontal position. 707 // y - initial vertical position. 708 // 709 // Returns a handle to a new path object. 710 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPageObj_CreateNewPath(float x, 711 float y); 712 713 // Create a closed path consisting of a rectangle. 714 // 715 // x - horizontal position for the left boundary of the rectangle. 716 // y - vertical position for the bottom boundary of the rectangle. 717 // w - width of the rectangle. 718 // h - height of the rectangle. 719 // 720 // Returns a handle to the new path object. 721 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPageObj_CreateNewRect(float x, 722 float y, 723 float w, 724 float h); 725 726 // Get the bounding box of |page_object|. 727 // 728 // page_object - handle to a page object. 729 // left - pointer where the left coordinate will be stored 730 // bottom - pointer where the bottom coordinate will be stored 731 // right - pointer where the right coordinate will be stored 732 // top - pointer where the top coordinate will be stored 733 // 734 // Returns TRUE on success. 735 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 736 FPDFPageObj_GetBounds(FPDF_PAGEOBJECT page_object, 737 float* left, 738 float* bottom, 739 float* right, 740 float* top); 741 742 // Set the blend mode of |page_object|. 743 // 744 // page_object - handle to a page object. 745 // blend_mode - string containing the blend mode. 746 // 747 // Blend mode can be one of following: Color, ColorBurn, ColorDodge, Darken, 748 // Difference, Exclusion, HardLight, Hue, Lighten, Luminosity, Multiply, Normal, 749 // Overlay, Saturation, Screen, SoftLight 750 FPDF_EXPORT void FPDF_CALLCONV 751 FPDFPageObj_SetBlendMode(FPDF_PAGEOBJECT page_object, 752 FPDF_BYTESTRING blend_mode); 753 754 // Set the stroke RGBA of a page object. Range of values: 0 - 255. 755 // 756 // page_object - the handle to the page object. 757 // R - the red component for the object's stroke color. 758 // G - the green component for the object's stroke color. 759 // B - the blue component for the object's stroke color. 760 // A - the stroke alpha for the object. 761 // 762 // Returns TRUE on success. 763 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 764 FPDFPageObj_SetStrokeColor(FPDF_PAGEOBJECT page_object, 765 unsigned int R, 766 unsigned int G, 767 unsigned int B, 768 unsigned int A); 769 770 // Get the stroke RGBA of a page object. Range of values: 0 - 255. 771 // 772 // page_object - the handle to the page object. 773 // R - the red component of the path stroke color. 774 // G - the green component of the object's stroke color. 775 // B - the blue component of the object's stroke color. 776 // A - the stroke alpha of the object. 777 // 778 // Returns TRUE on success. 779 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 780 FPDFPageObj_GetStrokeColor(FPDF_PAGEOBJECT page_object, 781 unsigned int* R, 782 unsigned int* G, 783 unsigned int* B, 784 unsigned int* A); 785 786 // Set the stroke width of a page object. 787 // 788 // path - the handle to the page object. 789 // width - the width of the stroke. 790 // 791 // Returns TRUE on success 792 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 793 FPDFPageObj_SetStrokeWidth(FPDF_PAGEOBJECT page_object, float width); 794 795 // Experimental API. 796 // Get the stroke width of a page object. 797 // 798 // path - the handle to the page object. 799 // width - the width of the stroke. 800 // 801 // Returns TRUE on success 802 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 803 FPDFPageObj_GetStrokeWidth(FPDF_PAGEOBJECT page_object, float* width); 804 805 // Get the line join of |page_object|. 806 // 807 // page_object - handle to a page object. 808 // 809 // Returns the line join, or -1 on failure. 810 // Line join can be one of following: FPDF_LINEJOIN_MITER, FPDF_LINEJOIN_ROUND, 811 // FPDF_LINEJOIN_BEVEL 812 FPDF_EXPORT int FPDF_CALLCONV 813 FPDFPageObj_GetLineJoin(FPDF_PAGEOBJECT page_object); 814 815 // Set the line join of |page_object|. 816 // 817 // page_object - handle to a page object. 818 // line_join - line join 819 // 820 // Line join can be one of following: FPDF_LINEJOIN_MITER, FPDF_LINEJOIN_ROUND, 821 // FPDF_LINEJOIN_BEVEL 822 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 823 FPDFPageObj_SetLineJoin(FPDF_PAGEOBJECT page_object, int line_join); 824 825 // Get the line cap of |page_object|. 826 // 827 // page_object - handle to a page object. 828 // 829 // Returns the line cap, or -1 on failure. 830 // Line cap can be one of following: FPDF_LINECAP_BUTT, FPDF_LINECAP_ROUND, 831 // FPDF_LINECAP_PROJECTING_SQUARE 832 FPDF_EXPORT int FPDF_CALLCONV 833 FPDFPageObj_GetLineCap(FPDF_PAGEOBJECT page_object); 834 835 // Set the line cap of |page_object|. 836 // 837 // page_object - handle to a page object. 838 // line_cap - line cap 839 // 840 // Line cap can be one of following: FPDF_LINECAP_BUTT, FPDF_LINECAP_ROUND, 841 // FPDF_LINECAP_PROJECTING_SQUARE 842 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 843 FPDFPageObj_SetLineCap(FPDF_PAGEOBJECT page_object, int line_cap); 844 845 // Set the fill RGBA of a page object. Range of values: 0 - 255. 846 // 847 // page_object - the handle to the page object. 848 // R - the red component for the object's fill color. 849 // G - the green component for the object's fill color. 850 // B - the blue component for the object's fill color. 851 // A - the fill alpha for the object. 852 // 853 // Returns TRUE on success. 854 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 855 FPDFPageObj_SetFillColor(FPDF_PAGEOBJECT page_object, 856 unsigned int R, 857 unsigned int G, 858 unsigned int B, 859 unsigned int A); 860 861 // Get the fill RGBA of a page object. Range of values: 0 - 255. 862 // 863 // page_object - the handle to the page object. 864 // R - the red component of the object's fill color. 865 // G - the green component of the object's fill color. 866 // B - the blue component of the object's fill color. 867 // A - the fill alpha of the object. 868 // 869 // Returns TRUE on success. 870 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 871 FPDFPageObj_GetFillColor(FPDF_PAGEOBJECT page_object, 872 unsigned int* R, 873 unsigned int* G, 874 unsigned int* B, 875 unsigned int* A); 876 877 // Experimental API. 878 // Get number of segments inside |path|. 879 // 880 // path - handle to a path. 881 // 882 // A segment is a command, created by e.g. FPDFPath_MoveTo(), 883 // FPDFPath_LineTo() or FPDFPath_BezierTo(). 884 // 885 // Returns the number of objects in |path| or -1 on failure. 886 FPDF_EXPORT int FPDF_CALLCONV FPDFPath_CountSegments(FPDF_PAGEOBJECT path); 887 888 // Experimental API. 889 // Get segment in |path| at |index|. 890 // 891 // path - handle to a path. 892 // index - the index of a segment. 893 // 894 // Returns the handle to the segment, or NULL on faiure. 895 FPDF_EXPORT FPDF_PATHSEGMENT FPDF_CALLCONV 896 FPDFPath_GetPathSegment(FPDF_PAGEOBJECT path, int index); 897 898 // Experimental API. 899 // Get coordinates of |segment|. 900 // 901 // segment - handle to a segment. 902 // x - the horizontal position of the segment. 903 // y - the vertical position of the segment. 904 // 905 // Returns TRUE on success, otherwise |x| and |y| is not set. 906 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 907 FPDFPathSegment_GetPoint(FPDF_PATHSEGMENT segment, float* x, float* y); 908 909 // Experimental API. 910 // Get type of |segment|. 911 // 912 // segment - handle to a segment. 913 // 914 // Returns one of the FPDF_SEGMENT_* values on success, 915 // FPDF_SEGMENT_UNKNOWN on error. 916 FPDF_EXPORT int FPDF_CALLCONV FPDFPathSegment_GetType(FPDF_PATHSEGMENT segment); 917 918 // Experimental API. 919 // Gets if the |segment| closes the current subpath of a given path. 920 // 921 // segment - handle to a segment. 922 // 923 // Returns close flag for non-NULL segment, FALSE otherwise. 924 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 925 FPDFPathSegment_GetClose(FPDF_PATHSEGMENT segment); 926 927 // Move a path's current point. 928 // 929 // path - the handle to the path object. 930 // x - the horizontal position of the new current point. 931 // y - the vertical position of the new current point. 932 // 933 // Note that no line will be created between the previous current point and the 934 // new one. 935 // 936 // Returns TRUE on success 937 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_MoveTo(FPDF_PAGEOBJECT path, 938 float x, 939 float y); 940 941 // Add a line between the current point and a new point in the path. 942 // 943 // path - the handle to the path object. 944 // x - the horizontal position of the new point. 945 // y - the vertical position of the new point. 946 // 947 // The path's current point is changed to (x, y). 948 // 949 // Returns TRUE on success 950 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_LineTo(FPDF_PAGEOBJECT path, 951 float x, 952 float y); 953 954 // Add a cubic Bezier curve to the given path, starting at the current point. 955 // 956 // path - the handle to the path object. 957 // x1 - the horizontal position of the first Bezier control point. 958 // y1 - the vertical position of the first Bezier control point. 959 // x2 - the horizontal position of the second Bezier control point. 960 // y2 - the vertical position of the second Bezier control point. 961 // x3 - the horizontal position of the ending point of the Bezier curve. 962 // y3 - the vertical position of the ending point of the Bezier curve. 963 // 964 // Returns TRUE on success 965 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_BezierTo(FPDF_PAGEOBJECT path, 966 float x1, 967 float y1, 968 float x2, 969 float y2, 970 float x3, 971 float y3); 972 973 // Close the current subpath of a given path. 974 // 975 // path - the handle to the path object. 976 // 977 // This will add a line between the current point and the initial point of the 978 // subpath, thus terminating the current subpath. 979 // 980 // Returns TRUE on success 981 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_Close(FPDF_PAGEOBJECT path); 982 983 // Set the drawing mode of a path. 984 // 985 // path - the handle to the path object. 986 // fillmode - the filling mode to be set: one of the FPDF_FILLMODE_* flags. 987 // stroke - a boolean specifying if the path should be stroked or not. 988 // 989 // Returns TRUE on success 990 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_SetDrawMode(FPDF_PAGEOBJECT path, 991 int fillmode, 992 FPDF_BOOL stroke); 993 994 // Experimental API. 995 // Get the drawing mode of a path. 996 // 997 // path - the handle to the path object. 998 // fillmode - the filling mode of the path: one of the FPDF_FILLMODE_* flags. 999 // stroke - a boolean specifying if the path is stroked or not. 1000 // 1001 // Returns TRUE on success 1002 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_GetDrawMode(FPDF_PAGEOBJECT path, 1003 int* fillmode, 1004 FPDF_BOOL* stroke); 1005 1006 // Experimental API. 1007 // Get the transform matrix of a path. 1008 // 1009 // path - handle to a path. 1010 // matrix - pointer to struct to receive the matrix value. 1011 // 1012 // The matrix is composed as: 1013 // |a c e| 1014 // |b d f| 1015 // and used to scale, rotate, shear and translate the path. 1016 // 1017 // Returns TRUE on success. 1018 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_GetMatrix(FPDF_PAGEOBJECT path, 1019 FS_MATRIX* matrix); 1020 1021 // Experimental API. 1022 // Set the transform matrix of a path. 1023 // 1024 // path - handle to a path. 1025 // matrix - pointer to struct with the matrix value. 1026 // 1027 // The matrix is composed as: 1028 // |a c e| 1029 // |b d f| 1030 // and can be used to scale, rotate, shear and translate the path. 1031 // 1032 // Returns TRUE on success. 1033 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_SetMatrix(FPDF_PAGEOBJECT path, 1034 const FS_MATRIX* matrix); 1035 1036 // Create a new text object using one of the standard PDF fonts. 1037 // 1038 // document - handle to the document. 1039 // font - string containing the font name, without spaces. 1040 // font_size - the font size for the new text object. 1041 // 1042 // Returns a handle to a new text object, or NULL on failure 1043 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV 1044 FPDFPageObj_NewTextObj(FPDF_DOCUMENT document, 1045 FPDF_BYTESTRING font, 1046 float font_size); 1047 1048 // Set the text for a textobject. If it had text, it will be replaced. 1049 // 1050 // text_object - handle to the text object. 1051 // text - the UTF-16LE encoded string containing the text to be added. 1052 // 1053 // Returns TRUE on success 1054 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 1055 FPDFText_SetText(FPDF_PAGEOBJECT text_object, FPDF_WIDESTRING text); 1056 1057 // Returns a font object loaded from a stream of data. The font is loaded 1058 // into the document. 1059 // 1060 // document - handle to the document. 1061 // data - the stream of data, which will be copied by the font object. 1062 // size - size of the stream, in bytes. 1063 // font_type - FPDF_FONT_TYPE1 or FPDF_FONT_TRUETYPE depending on the font 1064 // type. 1065 // cid - a boolean specifying if the font is a CID font or not. 1066 // 1067 // The loaded font can be closed using FPDFFont_Close. 1068 // 1069 // Returns NULL on failure 1070 FPDF_EXPORT FPDF_FONT FPDF_CALLCONV FPDFText_LoadFont(FPDF_DOCUMENT document, 1071 const uint8_t* data, 1072 uint32_t size, 1073 int font_type, 1074 FPDF_BOOL cid); 1075 1076 // Experimental API. 1077 // Loads one of the standard 14 fonts per PDF spec 1.7 page 416. The preferred 1078 // way of using font style is using a dash to separate the name from the style, 1079 // for example 'Helvetica-BoldItalic'. 1080 // 1081 // document - handle to the document. 1082 // font - string containing the font name, without spaces. 1083 // 1084 // The loaded font can be closed using FPDFFont_Close. 1085 // 1086 // Returns NULL on failure. 1087 FPDF_EXPORT FPDF_FONT FPDF_CALLCONV 1088 FPDFText_LoadStandardFont(FPDF_DOCUMENT document, FPDF_BYTESTRING font); 1089 1090 // Experimental API. 1091 // Get the transform matrix of a text object. 1092 // 1093 // text - handle to a text. 1094 // matrix - pointer to struct with the matrix value. 1095 // 1096 // The matrix is composed as: 1097 // |a c e| 1098 // |b d f| 1099 // and used to scale, rotate, shear and translate the text. 1100 // 1101 // Returns TRUE on success. 1102 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFTextObj_GetMatrix(FPDF_PAGEOBJECT text, 1103 FS_MATRIX* matrix); 1104 1105 // Experimental API. 1106 // Get the font size of a text object. 1107 // 1108 // text - handle to a text. 1109 // 1110 // Returns the font size of the text object, measured in points (about 1/72 1111 // inch) on success; 0 on failure. 1112 FPDF_EXPORT float FPDF_CALLCONV FPDFTextObj_GetFontSize(FPDF_PAGEOBJECT text); 1113 1114 // Close a loaded PDF font. 1115 // 1116 // font - Handle to the loaded font. 1117 FPDF_EXPORT void FPDF_CALLCONV FPDFFont_Close(FPDF_FONT font); 1118 1119 // Create a new text object using a loaded font. 1120 // 1121 // document - handle to the document. 1122 // font - handle to the font object. 1123 // font_size - the font size for the new text object. 1124 // 1125 // Returns a handle to a new text object, or NULL on failure 1126 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV 1127 FPDFPageObj_CreateTextObj(FPDF_DOCUMENT document, 1128 FPDF_FONT font, 1129 float font_size); 1130 1131 // Experimental API. 1132 // Get the text rendering mode of a text object. 1133 // 1134 // text - the handle to the text object. 1135 // 1136 // Returns one of the known FPDF_TEXT_RENDERMODE enum values on success, 1137 // FPDF_TEXTRENDERMODE_UNKNOWN on error. 1138 FPDF_EXPORT FPDF_TEXT_RENDERMODE FPDF_CALLCONV 1139 FPDFTextObj_GetTextRenderMode(FPDF_PAGEOBJECT text); 1140 1141 // Experimental API. 1142 // Set the text rendering mode of a text object. 1143 // 1144 // text - the handle to the text object. 1145 // render_mode - the FPDF_TEXT_RENDERMODE enum value to be set (cannot set to 1146 // FPDF_TEXTRENDERMODE_UNKNOWN). 1147 // 1148 // Returns TRUE on success. 1149 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 1150 FPDFTextObj_SetTextRenderMode(FPDF_PAGEOBJECT text, 1151 FPDF_TEXT_RENDERMODE render_mode); 1152 1153 // Experimental API. 1154 // Get the font name of a text object. 1155 // 1156 // text - the handle to the text object. 1157 // buffer - the address of a buffer that receives the font name. 1158 // length - the size, in bytes, of |buffer|. 1159 // 1160 // Returns the number of bytes in the font name (including the trailing NUL 1161 // character) on success, 0 on error. 1162 // 1163 // Regardless of the platform, the |buffer| is always in UTF-8 encoding. 1164 // If |length| is less than the returned length, or |buffer| is NULL, |buffer| 1165 // will not be modified. 1166 FPDF_EXPORT unsigned long FPDF_CALLCONV 1167 FPDFTextObj_GetFontName(FPDF_PAGEOBJECT text, 1168 void* buffer, 1169 unsigned long length); 1170 1171 // Experimental API. 1172 // Get the text of a text object. 1173 // 1174 // text_object - the handle to the text object. 1175 // text_page - the handle to the text page. 1176 // buffer - the address of a buffer that receives the text. 1177 // length - the size, in bytes, of |buffer|. 1178 // 1179 // Returns the number of bytes in the text (including the trailing NUL 1180 // character) on success, 0 on error. 1181 // 1182 // Regardless of the platform, the |buffer| is always in UTF-16LE encoding. 1183 // If |length| is less than the returned length, or |buffer| is NULL, |buffer| 1184 // will not be modified. 1185 FPDF_EXPORT unsigned long FPDF_CALLCONV 1186 FPDFTextObj_GetText(FPDF_PAGEOBJECT text_object, 1187 FPDF_TEXTPAGE text_page, 1188 void* buffer, 1189 unsigned long length); 1190 1191 // Experimental API. 1192 // Get number of page objects inside |form_object|. 1193 // 1194 // form_object - handle to a form object. 1195 // 1196 // Returns the number of objects in |form_object| on success, -1 on error. 1197 FPDF_EXPORT int FPDF_CALLCONV 1198 FPDFFormObj_CountObjects(FPDF_PAGEOBJECT form_object); 1199 1200 // Experimental API. 1201 // Get page object in |form_object| at |index|. 1202 // 1203 // form_object - handle to a form object. 1204 // index - the 0-based index of a page object. 1205 // 1206 // Returns the handle to the page object, or NULL on error. 1207 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV 1208 FPDFFormObj_GetObject(FPDF_PAGEOBJECT form_object, unsigned long index); 1209 1210 // Experimental API. 1211 // Get the transform matrix of a form object. 1212 // 1213 // form_object - handle to a form. 1214 // matrix - pointer to struct to receive the matrix value. 1215 // 1216 // The matrix is composed as: 1217 // |a c e| 1218 // |b d f| 1219 // and used to scale, rotate, shear and translate the form object. 1220 // 1221 // Returns TRUE on success. 1222 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 1223 FPDFFormObj_GetMatrix(FPDF_PAGEOBJECT form_object, FS_MATRIX* matrix); 1224 1225 #ifdef __cplusplus 1226 } // extern "C" 1227 #endif // __cplusplus 1228 1229 #endif // PUBLIC_FPDF_EDIT_H_ 1230