1 /* 2 * << Haru Free PDF Library >> -- hpdf_types.h 3 * 4 * URL: http://libharu.org 5 * 6 * Copyright (c) 1999-2006 Takeshi Kanno <takeshi_kanno@est.hi-ho.ne.jp> 7 * Copyright (c) 2007-2009 Antony Dovgal <tony@daylessday.org> 8 * 9 * Permission to use, copy, modify, distribute and sell this software 10 * and its documentation for any purpose is hereby granted without fee, 11 * provided that the above copyright notice appear in all copies and 12 * that both that copyright notice and this permission notice appear 13 * in supporting documentation. 14 * It is provided "as is" without express or implied warranty. 15 * 16 */ 17 18 #ifndef _HPDF_TYPES_H 19 #define _HPDF_TYPES_H 20 21 #ifndef HPDF_STDCALL 22 #ifdef HPDF_DLL_MAKE 23 #define HPDF_STDCALL __stdcall 24 #else 25 #ifdef HPDF_DLL 26 #define HPDF_STDCALL __stdcall 27 #else 28 #define HPDF_STDCALL 29 #endif 30 #endif 31 #endif 32 33 #include <stdlib.h> 34 35 #ifdef __cplusplus 36 extern "C" { 37 #endif 38 39 /*----------------------------------------------------------------------------*/ 40 /*----- type definition ------------------------------------------------------*/ 41 42 43 /* native OS integer types */ 44 typedef signed int HPDF_INT; 45 typedef unsigned int HPDF_UINT; 46 47 48 /* 64bit integer types 49 */ 50 typedef signed long long HPDF_INT64; 51 typedef unsigned long long HPDF_UINT64; 52 53 54 /* 32bit integer types 55 */ 56 typedef signed int HPDF_INT32; 57 typedef unsigned int HPDF_UINT32; 58 59 60 /* 16bit integer types 61 */ 62 typedef signed short HPDF_INT16; 63 typedef unsigned short HPDF_UINT16; 64 65 66 /* 8bit integer types 67 */ 68 typedef signed char HPDF_INT8; 69 typedef unsigned char HPDF_UINT8; 70 71 72 /* 8bit binary types 73 */ 74 typedef unsigned char HPDF_BYTE; 75 76 77 /* float type (32bit IEEE754) 78 */ 79 typedef float HPDF_REAL; 80 81 82 /* double type (64bit IEEE754) 83 */ 84 typedef double HPDF_DOUBLE; 85 86 87 /* boolean type (0: False, !0: True) 88 */ 89 typedef signed int HPDF_BOOL; 90 91 92 /* error-no type (32bit unsigned integer) 93 */ 94 typedef unsigned long HPDF_STATUS; 95 96 97 /* charactor-code type (16bit) 98 */ 99 typedef HPDF_UINT16 HPDF_CID; 100 typedef HPDF_UINT16 HPDF_UNICODE; 101 102 103 /* HPDF_Point struct 104 */ 105 typedef struct _HPDF_Point { 106 HPDF_REAL x; 107 HPDF_REAL y; 108 } HPDF_Point; 109 110 typedef struct _HPDF_Rect { 111 HPDF_REAL left; 112 HPDF_REAL bottom; 113 HPDF_REAL right; 114 HPDF_REAL top; 115 } HPDF_Rect; 116 117 /* HPDF_Point3D struct 118 */ 119 typedef struct _HPDF_Point3D { 120 HPDF_REAL x; 121 HPDF_REAL y; 122 HPDF_REAL z; 123 } HPDF_Point3D; 124 125 typedef struct _HPDF_Rect HPDF_Box; 126 127 /* HPDF_Date struct 128 */ 129 typedef struct _HPDF_Date { 130 HPDF_INT year; 131 HPDF_INT month; 132 HPDF_INT day; 133 HPDF_INT hour; 134 HPDF_INT minutes; 135 HPDF_INT seconds; 136 char ind; 137 HPDF_INT off_hour; 138 HPDF_INT off_minutes; 139 } HPDF_Date; 140 141 142 typedef enum _HPDF_InfoType { 143 /* date-time type parameters */ 144 HPDF_INFO_CREATION_DATE = 0, 145 HPDF_INFO_MOD_DATE, 146 147 /* string type parameters */ 148 HPDF_INFO_AUTHOR, 149 HPDF_INFO_CREATOR, 150 HPDF_INFO_PRODUCER, 151 HPDF_INFO_TITLE, 152 HPDF_INFO_SUBJECT, 153 HPDF_INFO_KEYWORDS, 154 HPDF_INFO_TRAPPED, 155 HPDF_INFO_GTS_PDFX, 156 HPDF_INFO_EOF 157 } HPDF_InfoType; 158 159 /* PDF-A Types */ 160 161 typedef enum _HPDF_PDFA_TYPE 162 { 163 HPDF_PDFA_1A = 0, 164 HPDF_PDFA_1B = 1 165 } HPDF_PDFAType; 166 167 168 typedef enum _HPDF_PdfVer { 169 HPDF_VER_12 = 0, 170 HPDF_VER_13, 171 HPDF_VER_14, 172 HPDF_VER_15, 173 HPDF_VER_16, 174 HPDF_VER_17, 175 HPDF_VER_EOF 176 } HPDF_PDFVer; 177 178 typedef enum _HPDF_EncryptMode { 179 HPDF_ENCRYPT_R2 = 2, 180 HPDF_ENCRYPT_R3 = 3 181 } HPDF_EncryptMode; 182 183 184 typedef void 185 (HPDF_STDCALL *HPDF_Error_Handler) (HPDF_STATUS error_no, 186 HPDF_STATUS detail_no, 187 void *user_data); 188 189 typedef void* 190 (HPDF_STDCALL *HPDF_Alloc_Func) (HPDF_UINT size); 191 192 193 typedef void 194 (HPDF_STDCALL *HPDF_Free_Func) (void *aptr); 195 196 197 /*---------------------------------------------------------------------------*/ 198 /*------ text width struct --------------------------------------------------*/ 199 200 typedef struct _HPDF_TextWidth { 201 HPDF_UINT numchars; 202 203 /* don't use this value (it may be change in the feature). 204 use numspace as alternated. */ 205 HPDF_UINT numwords; 206 207 HPDF_UINT width; 208 HPDF_UINT numspace; 209 } HPDF_TextWidth; 210 211 212 /*---------------------------------------------------------------------------*/ 213 /*------ dash mode ----------------------------------------------------------*/ 214 215 typedef struct _HPDF_DashMode { 216 HPDF_UINT16 ptn[8]; 217 HPDF_UINT num_ptn; 218 HPDF_UINT phase; 219 } HPDF_DashMode; 220 221 222 /*---------------------------------------------------------------------------*/ 223 /*----- HPDF_TransMatrix struct ---------------------------------------------*/ 224 225 typedef struct _HPDF_TransMatrix { 226 HPDF_REAL a; 227 HPDF_REAL b; 228 HPDF_REAL c; 229 HPDF_REAL d; 230 HPDF_REAL x; 231 HPDF_REAL y; 232 } HPDF_TransMatrix; 233 234 /*---------------------------------------------------------------------------*/ 235 /*----- HPDF_3DMatrix struct ------------------------------------------------*/ 236 237 typedef struct _HPDF_3DMatrix { 238 HPDF_REAL a; 239 HPDF_REAL b; 240 HPDF_REAL c; 241 HPDF_REAL d; 242 HPDF_REAL e; 243 HPDF_REAL f; 244 HPDF_REAL g; 245 HPDF_REAL h; 246 HPDF_REAL i; 247 HPDF_REAL tx; 248 HPDF_REAL ty; 249 HPDF_REAL tz; 250 } HPDF_3DMatrix; 251 252 /*---------------------------------------------------------------------------*/ 253 254 typedef enum _HPDF_ColorSpace { 255 HPDF_CS_DEVICE_GRAY = 0, 256 HPDF_CS_DEVICE_RGB, 257 HPDF_CS_DEVICE_CMYK, 258 HPDF_CS_CAL_GRAY, 259 HPDF_CS_CAL_RGB, 260 HPDF_CS_LAB, 261 HPDF_CS_ICC_BASED, 262 HPDF_CS_SEPARATION, 263 HPDF_CS_DEVICE_N, 264 HPDF_CS_INDEXED, 265 HPDF_CS_PATTERN, 266 HPDF_CS_EOF 267 } HPDF_ColorSpace; 268 269 /*---------------------------------------------------------------------------*/ 270 /*----- HPDF_RGBColor struct ------------------------------------------------*/ 271 272 typedef struct _HPDF_RGBColor { 273 HPDF_REAL r; 274 HPDF_REAL g; 275 HPDF_REAL b; 276 } HPDF_RGBColor; 277 278 /*---------------------------------------------------------------------------*/ 279 /*----- HPDF_CMYKColor struct -----------------------------------------------*/ 280 281 typedef struct _HPDF_CMYKColor { 282 HPDF_REAL c; 283 HPDF_REAL m; 284 HPDF_REAL y; 285 HPDF_REAL k; 286 } HPDF_CMYKColor; 287 288 /*---------------------------------------------------------------------------*/ 289 /*------ The line cap style -------------------------------------------------*/ 290 291 typedef enum _HPDF_LineCap { 292 HPDF_BUTT_END = 0, 293 HPDF_ROUND_END, 294 HPDF_PROJECTING_SCUARE_END, 295 HPDF_LINECAP_EOF 296 } HPDF_LineCap; 297 298 /*----------------------------------------------------------------------------*/ 299 /*------ The line join style -------------------------------------------------*/ 300 301 typedef enum _HPDF_LineJoin { 302 HPDF_MITER_JOIN = 0, 303 HPDF_ROUND_JOIN, 304 HPDF_BEVEL_JOIN, 305 HPDF_LINEJOIN_EOF 306 } HPDF_LineJoin; 307 308 /*----------------------------------------------------------------------------*/ 309 /*------ The text rendering mode ---------------------------------------------*/ 310 311 typedef enum _HPDF_TextRenderingMode { 312 HPDF_FILL = 0, 313 HPDF_STROKE, 314 HPDF_FILL_THEN_STROKE, 315 HPDF_INVISIBLE, 316 HPDF_FILL_CLIPPING, 317 HPDF_STROKE_CLIPPING, 318 HPDF_FILL_STROKE_CLIPPING, 319 HPDF_CLIPPING, 320 HPDF_RENDERING_MODE_EOF 321 } HPDF_TextRenderingMode; 322 323 324 typedef enum _HPDF_WritingMode { 325 HPDF_WMODE_HORIZONTAL = 0, 326 HPDF_WMODE_VERTICAL, 327 HPDF_WMODE_EOF 328 } HPDF_WritingMode; 329 330 331 typedef enum _HPDF_PageLayout { 332 HPDF_PAGE_LAYOUT_SINGLE = 0, 333 HPDF_PAGE_LAYOUT_ONE_COLUMN, 334 HPDF_PAGE_LAYOUT_TWO_COLUMN_LEFT, 335 HPDF_PAGE_LAYOUT_TWO_COLUMN_RIGHT, 336 HPDF_PAGE_LAYOUT_TWO_PAGE_LEFT, 337 HPDF_PAGE_LAYOUT_TWO_PAGE_RIGHT, 338 HPDF_PAGE_LAYOUT_EOF 339 } HPDF_PageLayout; 340 341 342 typedef enum _HPDF_PageMode { 343 HPDF_PAGE_MODE_USE_NONE = 0, 344 HPDF_PAGE_MODE_USE_OUTLINE, 345 HPDF_PAGE_MODE_USE_THUMBS, 346 HPDF_PAGE_MODE_FULL_SCREEN, 347 /* HPDF_PAGE_MODE_USE_OC, 348 HPDF_PAGE_MODE_USE_ATTACHMENTS, 349 */ 350 HPDF_PAGE_MODE_EOF 351 } HPDF_PageMode; 352 353 354 typedef enum _HPDF_PageNumStyle { 355 HPDF_PAGE_NUM_STYLE_DECIMAL = 0, 356 HPDF_PAGE_NUM_STYLE_UPPER_ROMAN, 357 HPDF_PAGE_NUM_STYLE_LOWER_ROMAN, 358 HPDF_PAGE_NUM_STYLE_UPPER_LETTERS, 359 HPDF_PAGE_NUM_STYLE_LOWER_LETTERS, 360 HPDF_PAGE_NUM_STYLE_EOF 361 } HPDF_PageNumStyle; 362 363 364 typedef enum _HPDF_DestinationType { 365 HPDF_XYZ = 0, 366 HPDF_FIT, 367 HPDF_FIT_H, 368 HPDF_FIT_V, 369 HPDF_FIT_R, 370 HPDF_FIT_B, 371 HPDF_FIT_BH, 372 HPDF_FIT_BV, 373 HPDF_DST_EOF 374 } HPDF_DestinationType; 375 376 377 typedef enum _HPDF_AnnotType { 378 HPDF_ANNOT_TEXT_NOTES, 379 HPDF_ANNOT_LINK, 380 HPDF_ANNOT_SOUND, 381 HPDF_ANNOT_FREE_TEXT, 382 HPDF_ANNOT_STAMP, 383 HPDF_ANNOT_SQUARE, 384 HPDF_ANNOT_CIRCLE, 385 HPDF_ANNOT_STRIKE_OUT, 386 HPDF_ANNOT_HIGHTLIGHT, 387 HPDF_ANNOT_UNDERLINE, 388 HPDF_ANNOT_INK, 389 HPDF_ANNOT_FILE_ATTACHMENT, 390 HPDF_ANNOT_POPUP, 391 HPDF_ANNOT_3D, 392 HPDF_ANNOT_SQUIGGLY, 393 HPDF_ANNOT_LINE, 394 HPDF_ANNOT_PROJECTION, 395 HPDF_ANNOT_WIDGET 396 } HPDF_AnnotType; 397 398 399 typedef enum _HPDF_AnnotFlgs { 400 HPDF_ANNOT_INVISIBLE, 401 HPDF_ANNOT_HIDDEN, 402 HPDF_ANNOT_PRINT, 403 HPDF_ANNOT_NOZOOM, 404 HPDF_ANNOT_NOROTATE, 405 HPDF_ANNOT_NOVIEW, 406 HPDF_ANNOT_READONLY 407 } HPDF_AnnotFlgs; 408 409 410 typedef enum _HPDF_AnnotHighlightMode { 411 HPDF_ANNOT_NO_HIGHTLIGHT = 0, 412 HPDF_ANNOT_INVERT_BOX, 413 HPDF_ANNOT_INVERT_BORDER, 414 HPDF_ANNOT_DOWN_APPEARANCE, 415 HPDF_ANNOT_HIGHTLIGHT_MODE_EOF 416 } HPDF_AnnotHighlightMode; 417 418 419 typedef enum _HPDF_AnnotIcon { 420 HPDF_ANNOT_ICON_COMMENT = 0, 421 HPDF_ANNOT_ICON_KEY, 422 HPDF_ANNOT_ICON_NOTE, 423 HPDF_ANNOT_ICON_HELP, 424 HPDF_ANNOT_ICON_NEW_PARAGRAPH, 425 HPDF_ANNOT_ICON_PARAGRAPH, 426 HPDF_ANNOT_ICON_INSERT, 427 HPDF_ANNOT_ICON_EOF 428 } HPDF_AnnotIcon; 429 430 typedef enum _HPDF_AnnotIntent { 431 HPDF_ANNOT_INTENT_FREETEXTCALLOUT = 0, 432 HPDF_ANNOT_INTENT_FREETEXTTYPEWRITER, 433 HPDF_ANNOT_INTENT_LINEARROW, 434 HPDF_ANNOT_INTENT_LINEDIMENSION, 435 HPDF_ANNOT_INTENT_POLYGONCLOUD, 436 HPDF_ANNOT_INTENT_POLYLINEDIMENSION, 437 HPDF_ANNOT_INTENT_POLYGONDIMENSION 438 } HPDF_AnnotIntent; 439 440 typedef enum _HPDF_LineAnnotEndingStyle { 441 HPDF_LINE_ANNOT_NONE = 0, 442 HPDF_LINE_ANNOT_SQUARE, 443 HPDF_LINE_ANNOT_CIRCLE, 444 HPDF_LINE_ANNOT_DIAMOND, 445 HPDF_LINE_ANNOT_OPENARROW, 446 HPDF_LINE_ANNOT_CLOSEDARROW, 447 HPDF_LINE_ANNOT_BUTT, 448 HPDF_LINE_ANNOT_ROPENARROW, 449 HPDF_LINE_ANNOT_RCLOSEDARROW, 450 HPDF_LINE_ANNOT_SLASH 451 } HPDF_LineAnnotEndingStyle; 452 453 typedef enum _HPDF_LineAnnotCapPosition{ 454 HPDF_LINE_ANNOT_CAP_INLINE = 0, 455 HPDF_LINE_ANNOT_CAP_TOP 456 } HPDF_LineAnnotCapPosition; 457 458 typedef enum _HPDF_StampAnnotName{ 459 HPDF_STAMP_ANNOT_APPROVED = 0, 460 HPDF_STAMP_ANNOT_EXPERIMENTAL, 461 HPDF_STAMP_ANNOT_NOTAPPROVED, 462 HPDF_STAMP_ANNOT_ASIS, 463 HPDF_STAMP_ANNOT_EXPIRED, 464 HPDF_STAMP_ANNOT_NOTFORPUBLICRELEASE, 465 HPDF_STAMP_ANNOT_CONFIDENTIAL, 466 HPDF_STAMP_ANNOT_FINAL, 467 HPDF_STAMP_ANNOT_SOLD, 468 HPDF_STAMP_ANNOT_DEPARTMENTAL, 469 HPDF_STAMP_ANNOT_FORCOMMENT, 470 HPDF_STAMP_ANNOT_TOPSECRET, 471 HPDF_STAMP_ANNOT_DRAFT, 472 HPDF_STAMP_ANNOT_FORPUBLICRELEASE 473 } HPDF_StampAnnotName; 474 475 /*----------------------------------------------------------------------------*/ 476 /*------ border stype --------------------------------------------------------*/ 477 478 typedef enum _HPDF_BSSubtype { 479 HPDF_BS_SOLID, 480 HPDF_BS_DASHED, 481 HPDF_BS_BEVELED, 482 HPDF_BS_INSET, 483 HPDF_BS_UNDERLINED 484 } HPDF_BSSubtype; 485 486 487 /*----- blend modes ----------------------------------------------------------*/ 488 489 typedef enum _HPDF_BlendMode { 490 HPDF_BM_NORMAL, 491 HPDF_BM_MULTIPLY, 492 HPDF_BM_SCREEN, 493 HPDF_BM_OVERLAY, 494 HPDF_BM_DARKEN, 495 HPDF_BM_LIGHTEN, 496 HPDF_BM_COLOR_DODGE, 497 HPDF_BM_COLOR_BUM, 498 HPDF_BM_HARD_LIGHT, 499 HPDF_BM_SOFT_LIGHT, 500 HPDF_BM_DIFFERENCE, 501 HPDF_BM_EXCLUSHON, 502 HPDF_BM_EOF 503 } HPDF_BlendMode; 504 505 /*----- slide show -----------------------------------------------------------*/ 506 507 typedef enum _HPDF_TransitionStyle { 508 HPDF_TS_WIPE_RIGHT = 0, 509 HPDF_TS_WIPE_UP, 510 HPDF_TS_WIPE_LEFT, 511 HPDF_TS_WIPE_DOWN, 512 HPDF_TS_BARN_DOORS_HORIZONTAL_OUT, 513 HPDF_TS_BARN_DOORS_HORIZONTAL_IN, 514 HPDF_TS_BARN_DOORS_VERTICAL_OUT, 515 HPDF_TS_BARN_DOORS_VERTICAL_IN, 516 HPDF_TS_BOX_OUT, 517 HPDF_TS_BOX_IN, 518 HPDF_TS_BLINDS_HORIZONTAL, 519 HPDF_TS_BLINDS_VERTICAL, 520 HPDF_TS_DISSOLVE, 521 HPDF_TS_GLITTER_RIGHT, 522 HPDF_TS_GLITTER_DOWN, 523 HPDF_TS_GLITTER_TOP_LEFT_TO_BOTTOM_RIGHT, 524 HPDF_TS_REPLACE, 525 HPDF_TS_EOF 526 } HPDF_TransitionStyle; 527 528 /*----------------------------------------------------------------------------*/ 529 530 typedef enum _HPDF_PageSizes { 531 HPDF_PAGE_SIZE_LETTER = 0, 532 HPDF_PAGE_SIZE_LEGAL, 533 HPDF_PAGE_SIZE_A3, 534 HPDF_PAGE_SIZE_A4, 535 HPDF_PAGE_SIZE_A5, 536 HPDF_PAGE_SIZE_B4, 537 HPDF_PAGE_SIZE_B5, 538 HPDF_PAGE_SIZE_EXECUTIVE, 539 HPDF_PAGE_SIZE_US4x6, 540 HPDF_PAGE_SIZE_US4x8, 541 HPDF_PAGE_SIZE_US5x7, 542 HPDF_PAGE_SIZE_COMM10, 543 HPDF_PAGE_SIZE_EOF 544 } HPDF_PageSizes; 545 546 547 typedef enum _HPDF_PageDirection { 548 HPDF_PAGE_PORTRAIT = 0, 549 HPDF_PAGE_LANDSCAPE 550 } HPDF_PageDirection; 551 552 553 typedef enum _HPDF_EncoderType { 554 HPDF_ENCODER_TYPE_SINGLE_BYTE, 555 HPDF_ENCODER_TYPE_DOUBLE_BYTE, 556 HPDF_ENCODER_TYPE_UNINITIALIZED, 557 HPDF_ENCODER_UNKNOWN 558 } HPDF_EncoderType; 559 560 561 typedef enum _HPDF_ByteType { 562 HPDF_BYTE_TYPE_SINGLE = 0, 563 HPDF_BYTE_TYPE_LEAD, 564 HPDF_BYTE_TYPE_TRIAL, 565 HPDF_BYTE_TYPE_UNKNOWN 566 } HPDF_ByteType; 567 568 569 typedef enum _HPDF_TextAlignment { 570 HPDF_TALIGN_LEFT = 0, 571 HPDF_TALIGN_RIGHT, 572 HPDF_TALIGN_CENTER, 573 HPDF_TALIGN_JUSTIFY 574 } HPDF_TextAlignment; 575 576 /*----------------------------------------------------------------------------*/ 577 578 /* Name Dictionary values -- see PDF reference section 7.7.4 */ 579 typedef enum _HPDF_NameDictKey { 580 HPDF_NAME_EMBEDDED_FILES = 0, /* TODO the rest */ 581 HPDF_NAME_EOF 582 } HPDF_NameDictKey; 583 584 /*----------------------------------------------------------------------------*/ 585 586 typedef enum _HPDF_ShadingType { 587 HPDF_SHADING_FREE_FORM_TRIANGLE_MESH = 4 /* TODO the rest */ 588 } HPDF_ShadingType; 589 590 typedef enum _HPDF_Shading_FreeFormTriangleMeshEdgeFlag { 591 HPDF_FREE_FORM_TRI_MESH_EDGEFLAG_NO_CONNECTION = 0, 592 HPDF_FREE_FORM_TRI_MESH_EDGEFLAG_BC, 593 HPDF_FREE_FORM_TRI_MESH_EDGEFLAG_AC 594 } HPDF_Shading_FreeFormTriangleMeshEdgeFlag; 595 596 /*----------------------------------------------------------------------------*/ 597 598 #ifdef __cplusplus 599 } 600 #endif /* __cplusplus */ 601 602 #endif /* _HPDF_TYPES_H */ 603 604