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_ALTERNATE 1 52 #define FPDF_FILLMODE_WINDING 2 53 54 #define FPDF_FONT_TYPE1 1 55 #define FPDF_FONT_TRUETYPE 2 56 57 #define FPDF_LINECAP_BUTT 0 58 #define FPDF_LINECAP_ROUND 1 59 #define FPDF_LINECAP_PROJECTING_SQUARE 2 60 61 #define FPDF_LINEJOIN_MITER 0 62 #define FPDF_LINEJOIN_ROUND 1 63 #define FPDF_LINEJOIN_BEVEL 2 64 65 #define FPDF_PRINTMODE_EMF 0 66 #define FPDF_PRINTMODE_TEXTONLY 1 67 #define FPDF_PRINTMODE_POSTSCRIPT2 2 68 #define FPDF_PRINTMODE_POSTSCRIPT3 3 69 70 typedef struct FPDF_IMAGEOBJ_METADATA { 71 // The image width in pixels. 72 unsigned int width; 73 // The image height in pixels. 74 unsigned int height; 75 // The image's horizontal pixel-per-inch. 76 float horizontal_dpi; 77 // The image's vertical pixel-per-inch. 78 float vertical_dpi; 79 // The number of bits used to represent each pixel. 80 unsigned int bits_per_pixel; 81 // The image's colorspace. See above for the list of FPDF_COLORSPACE_*. 82 int colorspace; 83 // The image's marked content ID. Useful for pairing with associated alt-text. 84 // A value of -1 indicates no ID. 85 int marked_content_id; 86 } FPDF_IMAGEOBJ_METADATA; 87 88 #ifdef __cplusplus 89 extern "C" { 90 #endif // __cplusplus 91 92 // Create a new PDF document. 93 // 94 // Returns a handle to a new document, or NULL on failure. 95 FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV FPDF_CreateNewDocument(); 96 97 // Create a new PDF page. 98 // 99 // document - handle to document. 100 // page_index - suggested index of the page to create. If it is larger than 101 // document's current last index(L), the created page index is 102 // the next available index -- L+1. 103 // width - the page width. 104 // height - the page height. 105 // 106 // Returns the handle to the new page. 107 // 108 // The page should be closed with CPDF_ClosePage() when finished as 109 // with any other page in the document. 110 FPDF_EXPORT FPDF_PAGE FPDF_CALLCONV FPDFPage_New(FPDF_DOCUMENT document, 111 int page_index, 112 double width, 113 double height); 114 115 // Delete the page at |page_index|. 116 // 117 // document - handle to document. 118 // page_index - the index of the page to delete. 119 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_Delete(FPDF_DOCUMENT document, 120 int page_index); 121 122 // Get the rotation of |page|. 123 // 124 // page - handle to a page 125 // 126 // Returns one of the following indicating the page rotation: 127 // 0 - No rotation. 128 // 1 - Rotated 90 degrees clockwise. 129 // 2 - Rotated 180 degrees clockwise. 130 // 3 - Rotated 270 degrees clockwise. 131 FPDF_EXPORT int FPDF_CALLCONV FPDFPage_GetRotation(FPDF_PAGE page); 132 133 // Set rotation for |page|. 134 // 135 // page - handle to a page. 136 // rotate - the rotation value, one of: 137 // 0 - No rotation. 138 // 1 - Rotated 90 degrees clockwise. 139 // 2 - Rotated 180 degrees clockwise. 140 // 3 - Rotated 270 degrees clockwise. 141 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_SetRotation(FPDF_PAGE page, int rotate); 142 143 // Insert |page_obj| into |page|. 144 // 145 // page - handle to a page 146 // page_obj - handle to a page object. The |page_obj| will be automatically 147 // freed. 148 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_InsertObject(FPDF_PAGE page, 149 FPDF_PAGEOBJECT page_obj); 150 151 // Get number of page objects inside |page|. 152 // 153 // page - handle to a page. 154 // 155 // Returns the number of objects in |page|. 156 // 157 // DEPRECATED. Please use FPDFPage_CountObjects. 158 FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObject(FPDF_PAGE page); 159 160 // Get number of page objects inside |page|. 161 // 162 // page - handle to a page. 163 // 164 // Returns the number of objects in |page|. 165 FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObjects(FPDF_PAGE page); 166 167 // Get object in |page| at |index|. 168 // 169 // page - handle to a page. 170 // index - the index of a page object. 171 // 172 // Returns the handle to the page object, or NULL on failed. 173 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPage_GetObject(FPDF_PAGE page, 174 int index); 175 176 // Checks if |page| contains transparency. 177 // 178 // page - handle to a page. 179 // 180 // Returns TRUE if |page| contains transparency. 181 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_HasTransparency(FPDF_PAGE page); 182 183 // Generate the content of |page|. 184 // 185 // page - handle to a page. 186 // 187 // Returns TRUE on success. 188 // 189 // Before you save the page to a file, or reload the page, you must call 190 // |FPDFPage_GenerateContent| or any changes to |page| will be lost. 191 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_GenerateContent(FPDF_PAGE page); 192 193 // Destroy |page_obj| by releasing its resources. |page_obj| must have been 194 // created by FPDFPageObj_CreateNew{Path|Rect}() or 195 // FPDFPageObj_New{Text|Image}Obj(). This function must be called on 196 // newly-created objects if they are not added to a page through 197 // FPDFPage_InsertObject() or to an annotation through FPDFAnnot_AppendObject(). 198 // 199 // page_obj - handle to a page object. 200 FPDF_EXPORT void FPDF_CALLCONV FPDFPageObj_Destroy(FPDF_PAGEOBJECT page_obj); 201 202 // Checks if |page_object| contains transparency. 203 // 204 // page_object - handle to a page object. 205 // 206 // Returns TRUE if |pageObject| contains transparency. 207 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 208 FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT page_object); 209 210 // Get type of |page_object|. 211 // 212 // page_object - handle to a page object. 213 // 214 // Returns one of the FPDF_PAGEOBJ_* values on success, FPDF_PAGEOBJ_UNKNOWN on 215 // error. 216 FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetType(FPDF_PAGEOBJECT page_object); 217 218 // Transform |page_object| by the given matrix. 219 // 220 // page_object - handle to a page object. 221 // a - matrix value. 222 // b - matrix value. 223 // c - matrix value. 224 // d - matrix value. 225 // e - matrix value. 226 // f - matrix value. 227 // 228 // The matrix is composed as: 229 // |a c e| 230 // |b d f| 231 // and can be used to scale, rotate, shear and translate the |page_object|. 232 FPDF_EXPORT void FPDF_CALLCONV 233 FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, 234 double a, 235 double b, 236 double c, 237 double d, 238 double e, 239 double f); 240 241 // Transform all annotations in |page|. 242 // 243 // page - handle to a page. 244 // a - matrix value. 245 // b - matrix value. 246 // c - matrix value. 247 // d - matrix value. 248 // e - matrix value. 249 // f - matrix value. 250 // 251 // The matrix is composed as: 252 // |a c e| 253 // |b d f| 254 // and can be used to scale, rotate, shear and translate the |page| annotations. 255 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_TransformAnnots(FPDF_PAGE page, 256 double a, 257 double b, 258 double c, 259 double d, 260 double e, 261 double f); 262 263 // Create a new image object. 264 // 265 // document - handle to a document. 266 // 267 // Returns a handle to a new image object. 268 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV 269 FPDFPageObj_NewImageObj(FPDF_DOCUMENT document); 270 271 // Load an image from a JPEG image file and then set it into |image_object|. 272 // 273 // pages - pointer to the start of all loaded pages, may be NULL. 274 // nCount - number of |pages|, may be 0. 275 // image_object - handle to an image object. 276 // fileAccess - file access handler which specifies the JPEG image file. 277 // 278 // Returns TRUE on success. 279 // 280 // The image object might already have an associated image, which is shared and 281 // cached by the loaded pages. In that case, we need to clear the cached image 282 // for all the loaded pages. Pass |pages| and page count (|nCount|) to this API 283 // to clear the image cache. If the image is not previously shared, or NULL is a 284 // valid |pages| value. 285 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 286 FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, 287 int nCount, 288 FPDF_PAGEOBJECT image_object, 289 FPDF_FILEACCESS* fileAccess); 290 291 // Load an image from a JPEG image file and then set it into |image_object|. 292 // 293 // pages - pointer to the start of all loaded pages, may be NULL. 294 // nCount - number of |pages|, may be 0. 295 // image_object - handle to an image object. 296 // fileAccess - file access handler which specifies the JPEG image file. 297 // 298 // Returns TRUE on success. 299 // 300 // The image object might already have an associated image, which is shared and 301 // cached by the loaded pages. In that case, we need to clear the cached image 302 // for all the loaded pages. Pass |pages| and page count (|nCount|) to this API 303 // to clear the image cache. If the image is not previously shared, or NULL is a 304 // valid |pages| value. This function loads the JPEG image inline, so the image 305 // content is copied to the file. This allows |fileAccess| and its associated 306 // data to be deleted after this function returns. 307 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 308 FPDFImageObj_LoadJpegFileInline(FPDF_PAGE* pages, 309 int nCount, 310 FPDF_PAGEOBJECT image_object, 311 FPDF_FILEACCESS* fileAccess); 312 313 // Set the transform matrix of |image_object|. 314 // 315 // image_object - handle to an image object. 316 // a - matrix value. 317 // b - matrix value. 318 // c - matrix value. 319 // d - matrix value. 320 // e - matrix value. 321 // f - matrix value. 322 // 323 // The matrix is composed as: 324 // |a c e| 325 // |b d f| 326 // and can be used to scale, rotate, shear and translate the |page| annotations. 327 // 328 // Returns TRUE on success. 329 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 330 FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object, 331 double a, 332 double b, 333 double c, 334 double d, 335 double e, 336 double f); 337 338 // Set |bitmap| to |image_object|. 339 // 340 // pages - pointer to the start of all loaded pages, may be NULL. 341 // nCount - number of |pages|, may be 0. 342 // image_object - handle to an image object. 343 // bitmap - handle of the bitmap. 344 // 345 // Returns TRUE on success. 346 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 347 FPDFImageObj_SetBitmap(FPDF_PAGE* pages, 348 int nCount, 349 FPDF_PAGEOBJECT image_object, 350 FPDF_BITMAP bitmap); 351 352 // Get a bitmap rasterisation of |image_object|. The returned bitmap will be 353 // owned by the caller, and FPDFBitmap_Destroy() must be called on the returned 354 // bitmap when it is no longer needed. 355 // 356 // image_object - handle to an image object. 357 // 358 // Returns the bitmap. 359 FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV 360 FPDFImageObj_GetBitmap(FPDF_PAGEOBJECT image_object); 361 362 // Get the decoded image data of |image_object|. The decoded data is the 363 // uncompressed image data, i.e. the raw image data after having all filters 364 // applied. |buffer| is only modified if |buflen| is longer than the length of 365 // the decoded image data. 366 // 367 // image_object - handle to an image object. 368 // buffer - buffer for holding the decoded image data in raw bytes. 369 // buflen - length of the buffer. 370 // 371 // Returns the length of the decoded image data. 372 FPDF_EXPORT unsigned long FPDF_CALLCONV 373 FPDFImageObj_GetImageDataDecoded(FPDF_PAGEOBJECT image_object, 374 void* buffer, 375 unsigned long buflen); 376 377 // Get the raw image data of |image_object|. The raw data is the image data as 378 // stored in the PDF without applying any filters. |buffer| is only modified if 379 // |buflen| is longer than the length of the raw image data. 380 // 381 // image_object - handle to an image object. 382 // buffer - buffer for holding the raw image data in raw bytes. 383 // buflen - length of the buffer. 384 // 385 // Returns the length of the raw image data. 386 FPDF_EXPORT unsigned long FPDF_CALLCONV 387 FPDFImageObj_GetImageDataRaw(FPDF_PAGEOBJECT image_object, 388 void* buffer, 389 unsigned long buflen); 390 391 // Get the number of filters (i.e. decoders) of the image in |image_object|. 392 // 393 // image_object - handle to an image object. 394 // 395 // Returns the number of |image_object|'s filters. 396 FPDF_EXPORT int FPDF_CALLCONV 397 FPDFImageObj_GetImageFilterCount(FPDF_PAGEOBJECT image_object); 398 399 // Get the filter at |index| of |image_object|'s list of filters. Note that the 400 // filters need to be applied in order, i.e. the first filter should be applied 401 // first, then the second, etc. |buffer| is only modified if |buflen| is longer 402 // than the length of the filter string. 403 // 404 // image_object - handle to an image object. 405 // index - the index of the filter requested. 406 // buffer - buffer for holding filter string, encoded in UTF-8. 407 // buflen - length of the buffer. 408 // 409 // Returns the length of the filter string. 410 FPDF_EXPORT unsigned long FPDF_CALLCONV 411 FPDFImageObj_GetImageFilter(FPDF_PAGEOBJECT image_object, 412 int index, 413 void* buffer, 414 unsigned long buflen); 415 416 // Get the image metadata of |image_object|, including dimension, DPI, bits per 417 // pixel, and colorspace. If the |image_object| is not an image object or if it 418 // does not have an image, then the return value will be false. Otherwise, 419 // failure to retrieve any specific parameter would result in its value being 0. 420 // 421 // image_object - handle to an image object. 422 // page - handle to the page that |image_object| is on. Required for 423 // retrieving the image's bits per pixel and colorspace. 424 // metadata - receives the image metadata; must not be NULL. 425 // 426 // Returns true if successful. 427 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 428 FPDFImageObj_GetImageMetadata(FPDF_PAGEOBJECT image_object, 429 FPDF_PAGE page, 430 FPDF_IMAGEOBJ_METADATA* metadata); 431 432 // Create a new path object at an initial position. 433 // 434 // x - initial horizontal position. 435 // y - initial vertical position. 436 // 437 // Returns a handle to a new path object. 438 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPageObj_CreateNewPath(float x, 439 float y); 440 441 // Create a closed path consisting of a rectangle. 442 // 443 // x - horizontal position for the left boundary of the rectangle. 444 // y - vertical position for the bottom boundary of the rectangle. 445 // w - width of the rectangle. 446 // h - height of the rectangle. 447 // 448 // Returns a handle to the new path object. 449 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV FPDFPageObj_CreateNewRect(float x, 450 float y, 451 float w, 452 float h); 453 454 // Get the bounding box of |page_object|. 455 // 456 // page_object - handle to a page object. 457 // left - pointer where the left coordinate will be stored 458 // bottom - pointer where the bottom coordinate will be stored 459 // right - pointer where the right coordinate will be stored 460 // top - pointer where the top coordinate will be stored 461 // 462 // Returns TRUE on success. 463 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 464 FPDFPageObj_GetBounds(FPDF_PAGEOBJECT page_object, 465 float* left, 466 float* bottom, 467 float* right, 468 float* top); 469 470 // Set the blend mode of |page_object|. 471 // 472 // page_object - handle to a page object. 473 // blend_mode - string containing the blend mode. 474 // 475 // Blend mode can be one of following: Color, ColorBurn, ColorDodge, Darken, 476 // Difference, Exclusion, HardLight, Hue, Lighten, Luminosity, Multiply, Normal, 477 // Overlay, Saturation, Screen, SoftLight 478 FPDF_EXPORT void FPDF_CALLCONV 479 FPDFPageObj_SetBlendMode(FPDF_PAGEOBJECT page_object, 480 FPDF_BYTESTRING blend_mode); 481 482 // Set the stroke RGBA of a path. Range of values: 0 - 255. 483 // 484 // path - the handle to the path object. 485 // R - the red component for the path stroke color. 486 // G - the green component for the path stroke color. 487 // B - the blue component for the path stroke color. 488 // A - the stroke alpha for the path. 489 // 490 // Returns TRUE on success. 491 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 492 FPDFPath_SetStrokeColor(FPDF_PAGEOBJECT path, 493 unsigned int R, 494 unsigned int G, 495 unsigned int B, 496 unsigned int A); 497 498 // Get the stroke RGBA of a path. Range of values: 0 - 255. 499 // 500 // path - the handle to the path object. 501 // R - the red component of the path stroke color. 502 // G - the green component of the path stroke color. 503 // B - the blue component of the path stroke color. 504 // A - the stroke alpha of the path. 505 // 506 // Returns TRUE on success. 507 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 508 FPDFPath_GetStrokeColor(FPDF_PAGEOBJECT path, 509 unsigned int* R, 510 unsigned int* G, 511 unsigned int* B, 512 unsigned int* A); 513 514 // Set the stroke width of a path. 515 // 516 // path - the handle to the path object. 517 // width - the width of the stroke. 518 // 519 // Returns TRUE on success 520 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 521 FPDFPath_SetStrokeWidth(FPDF_PAGEOBJECT path, float width); 522 523 // Set the line join of |page_object|. 524 // 525 // page_object - handle to a page object. 526 // line_join - line join 527 // 528 // Line join can be one of following: FPDF_LINEJOIN_MITER, FPDF_LINEJOIN_ROUND, 529 // FPDF_LINEJOIN_BEVEL 530 FPDF_EXPORT void FPDF_CALLCONV FPDFPath_SetLineJoin(FPDF_PAGEOBJECT page_object, 531 int line_join); 532 533 // Set the line cap of |page_object|. 534 // 535 // page_object - handle to a page object. 536 // line_cap - line cap 537 // 538 // Line cap can be one of following: FPDF_LINECAP_BUTT, FPDF_LINECAP_ROUND, 539 // FPDF_LINECAP_PROJECTING_SQUARE 540 FPDF_EXPORT void FPDF_CALLCONV FPDFPath_SetLineCap(FPDF_PAGEOBJECT page_object, 541 int line_cap); 542 543 // Set the fill RGBA of a path. Range of values: 0 - 255. 544 // 545 // path - the handle to the path object. 546 // R - the red component for the path fill color. 547 // G - the green component for the path fill color. 548 // B - the blue component for the path fill color. 549 // A - the fill alpha for the path. 550 // 551 // Returns TRUE on success. 552 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_SetFillColor(FPDF_PAGEOBJECT path, 553 unsigned int R, 554 unsigned int G, 555 unsigned int B, 556 unsigned int A); 557 558 // Get the fill RGBA of a path. Range of values: 0 - 255. 559 // 560 // path - the handle to the path object. 561 // R - the red component of the path fill color. 562 // G - the green component of the path fill color. 563 // B - the blue component of the path fill color. 564 // A - the fill alpha of the path. 565 // 566 // Returns TRUE on success. 567 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_GetFillColor(FPDF_PAGEOBJECT path, 568 unsigned int* R, 569 unsigned int* G, 570 unsigned int* B, 571 unsigned int* A); 572 573 // Experimental API. 574 // Get number of segments inside |path|. 575 // 576 // path - handle to a path. 577 // 578 // A segment is a command, created by e.g. FPDFPath_MoveTo(), 579 // FPDFPath_LineTo() or FPDFPath_BezierTo(). 580 // 581 // Returns the number of objects in |path| or -1 on failure. 582 FPDF_EXPORT int FPDF_CALLCONV FPDFPath_CountSegments(FPDF_PAGEOBJECT path); 583 584 // Experimental API. 585 // Get segment in |path| at |index|. 586 // 587 // path - handle to a path. 588 // index - the index of a segment. 589 // 590 // Returns the handle to the segment, or NULL on faiure. 591 FPDF_EXPORT FPDF_PATHSEGMENT FPDF_CALLCONV 592 FPDFPath_GetPathSegment(FPDF_PAGEOBJECT path, int index); 593 594 // Experimental API. 595 // Get coordinates of |segment|. 596 // 597 // segment - handle to a segment. 598 // x - the horizontal position of the segment. 599 // y - the vertical position of the segment. 600 // 601 // Returns TRUE on success, otherwise |x| and |y| is not set. 602 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 603 FPDFPathSegment_GetPoint(FPDF_PATHSEGMENT segment, float* x, float* y); 604 605 // Experimental API. 606 // Get type of |segment|. 607 // 608 // segment - handle to a segment. 609 // 610 // Returns one of the FPDF_SEGMENT_* values on success, 611 // FPDF_SEGMENT_UNKNOWN on error. 612 FPDF_EXPORT int FPDF_CALLCONV FPDFPathSegment_GetType(FPDF_PATHSEGMENT segment); 613 614 // Experimental API. 615 // Gets if the |segment| closes the current subpath of a given path. 616 // 617 // segment - handle to a segment. 618 // 619 // Returns close flag for non-NULL segment, FALSE otherwise. 620 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 621 FPDFPathSegment_GetClose(FPDF_PATHSEGMENT segment); 622 623 // Move a path's current point. 624 // 625 // path - the handle to the path object. 626 // x - the horizontal position of the new current point. 627 // y - the vertical position of the new current point. 628 // 629 // Note that no line will be created between the previous current point and the 630 // new one. 631 // 632 // Returns TRUE on success 633 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_MoveTo(FPDF_PAGEOBJECT path, 634 float x, 635 float y); 636 637 // Add a line between the current point and a new point in the path. 638 // 639 // path - the handle to the path object. 640 // x - the horizontal position of the new point. 641 // y - the vertical position of the new point. 642 // 643 // The path's current point is changed to (x, y). 644 // 645 // Returns TRUE on success 646 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_LineTo(FPDF_PAGEOBJECT path, 647 float x, 648 float y); 649 650 // Add a cubic Bezier curve to the given path, starting at the current point. 651 // 652 // path - the handle to the path object. 653 // x1 - the horizontal position of the first Bezier control point. 654 // y1 - the vertical position of the first Bezier control point. 655 // x2 - the horizontal position of the second Bezier control point. 656 // y2 - the vertical position of the second Bezier control point. 657 // x3 - the horizontal position of the ending point of the Bezier curve. 658 // y3 - the vertical position of the ending point of the Bezier curve. 659 // 660 // Returns TRUE on success 661 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_BezierTo(FPDF_PAGEOBJECT path, 662 float x1, 663 float y1, 664 float x2, 665 float y2, 666 float x3, 667 float y3); 668 669 // Close the current subpath of a given path. 670 // 671 // path - the handle to the path object. 672 // 673 // This will add a line between the current point and the initial point of the 674 // subpath, thus terminating the current subpath. 675 // 676 // Returns TRUE on success 677 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_Close(FPDF_PAGEOBJECT path); 678 679 // Set the drawing mode of a path. 680 // 681 // path - the handle to the path object. 682 // fillmode - the filling mode to be set: 0 for no fill, 1 for alternate, 2 for 683 // winding. 684 // stroke - a boolean specifying if the path should be stroked or not. 685 // 686 // Returns TRUE on success 687 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPath_SetDrawMode(FPDF_PAGEOBJECT path, 688 int fillmode, 689 FPDF_BOOL stroke); 690 691 // Create a new text object using one of the standard PDF fonts. 692 // 693 // document - handle to the document. 694 // font - string containing the font name, without spaces. 695 // font_size - the font size for the new text object. 696 // 697 // Returns a handle to a new text object, or NULL on failure 698 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV 699 FPDFPageObj_NewTextObj(FPDF_DOCUMENT document, 700 FPDF_BYTESTRING font, 701 float font_size); 702 703 // Set the text for a textobject. If it had text, it will be replaced. 704 // 705 // text_object - handle to the text object. 706 // text - the UTF-16LE encoded string containing the text to be added. 707 // 708 // Returns TRUE on success 709 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 710 FPDFText_SetText(FPDF_PAGEOBJECT text_object, FPDF_WIDESTRING text); 711 712 // Returns a font object loaded from a stream of data. The font is loaded 713 // into the document. 714 // 715 // document - handle to the document. 716 // data - the stream of data, which will be copied by the font object. 717 // size - size of the stream, in bytes. 718 // font_type - FPDF_FONT_TYPE1 or FPDF_FONT_TRUETYPE depending on the font 719 // type. 720 // cid - a boolean specifying if the font is a CID font or not. 721 // 722 // The loaded font can be closed using FPDF_Font_Close. 723 // 724 // Returns NULL on failure 725 FPDF_EXPORT FPDF_FONT FPDF_CALLCONV FPDFText_LoadFont(FPDF_DOCUMENT document, 726 const uint8_t* data, 727 uint32_t size, 728 int font_type, 729 FPDF_BOOL cid); 730 731 // Set the fill RGBA of a text object. Range of values: 0 - 255. 732 // 733 // text_object - handle to the text object. 734 // R - the red component for the path fill color. 735 // G - the green component for the path fill color. 736 // B - the blue component for the path fill color. 737 // A - the fill alpha for the path. 738 // 739 // Returns TRUE on success. 740 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV 741 FPDFText_SetFillColor(FPDF_PAGEOBJECT text_object, 742 unsigned int R, 743 unsigned int G, 744 unsigned int B, 745 unsigned int A); 746 747 // Close a loaded PDF font. 748 // 749 // font - Handle to the loaded font. 750 FPDF_EXPORT void FPDF_CALLCONV FPDFFont_Close(FPDF_FONT font); 751 752 // Create a new text object using a loaded font. 753 // 754 // document - handle to the document. 755 // font - handle to the font object. 756 // font_size - the font size for the new text object. 757 // 758 // Returns a handle to a new text object, or NULL on failure 759 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV 760 FPDFPageObj_CreateTextObj(FPDF_DOCUMENT document, 761 FPDF_FONT font, 762 float font_size); 763 764 #ifdef __cplusplus 765 } // extern "C" 766 #endif // __cplusplus 767 768 #endif // PUBLIC_FPDF_EDIT_H_ 769