1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module pango.c.types; 26 27 public import cairo.c.types; 28 public import glib.c.types; 29 public import gobject.c.types; 30 31 alias void* FTLibrary; 32 33 /** 34 * A #PangoGlyph represents a single glyph in the output form of a string. 35 */ 36 public alias uint PangoGlyph; 37 38 /** 39 * The #PangoGlyphUnit type is used to store dimensions within 40 * Pango. Dimensions are stored in 1/%PANGO_SCALE of a device unit. 41 * (A device unit might be a pixel for screen display, or 42 * a point on a printer.) %PANGO_SCALE is currently 1024, and 43 * may change in the future (unlikely though), but you should not 44 * depend on its exact value. The PANGO_PIXELS() macro can be used 45 * to convert from glyph units into device units with correct rounding. 46 */ 47 public alias int PangoGlyphUnit; 48 49 /** 50 * The #PangoLayoutRun structure represents a single run within 51 * a #PangoLayoutLine; it is simply an alternate name for 52 * #PangoGlyphItem. 53 * See the #PangoGlyphItem docs for details on the fields. 54 */ 55 public alias PangoGlyphItem PangoLayoutRun; 56 57 /** 58 * A #PangoAlignment describes how to align the lines of a #PangoLayout within the 59 * available space. If the #PangoLayout is set to justify 60 * using pango_layout_set_justify(), this only has effect for partial lines. 61 */ 62 public enum PangoAlignment 63 { 64 /** 65 * Put all available space on the right 66 */ 67 LEFT = 0, 68 /** 69 * Center the line within the available space 70 */ 71 CENTER = 1, 72 /** 73 * Put all available space on the left 74 */ 75 RIGHT = 2, 76 } 77 78 /** 79 * The #PangoAttrType 80 * distinguishes between different types of attributes. Along with the 81 * predefined values, it is possible to allocate additional values 82 * for custom attributes using pango_attr_type_register(). The predefined 83 * values are given below. The type of structure used to store the 84 * attribute is listed in parentheses after the description. 85 */ 86 public enum PangoAttrType 87 { 88 /** 89 * does not happen 90 */ 91 INVALID = 0, 92 /** 93 * language (#PangoAttrLanguage) 94 */ 95 LANGUAGE = 1, 96 /** 97 * font family name list (#PangoAttrString) 98 */ 99 FAMILY = 2, 100 /** 101 * font slant style (#PangoAttrInt) 102 */ 103 STYLE = 3, 104 /** 105 * font weight (#PangoAttrInt) 106 */ 107 WEIGHT = 4, 108 /** 109 * font variant (normal or small caps) (#PangoAttrInt) 110 */ 111 VARIANT = 5, 112 /** 113 * font stretch (#PangoAttrInt) 114 */ 115 STRETCH = 6, 116 /** 117 * font size in points scaled by %PANGO_SCALE (#PangoAttrInt) 118 */ 119 SIZE = 7, 120 /** 121 * font description (#PangoAttrFontDesc) 122 */ 123 FONT_DESC = 8, 124 /** 125 * foreground color (#PangoAttrColor) 126 */ 127 FOREGROUND = 9, 128 /** 129 * background color (#PangoAttrColor) 130 */ 131 BACKGROUND = 10, 132 /** 133 * whether the text has an underline (#PangoAttrInt) 134 */ 135 UNDERLINE = 11, 136 /** 137 * whether the text is struck-through (#PangoAttrInt) 138 */ 139 STRIKETHROUGH = 12, 140 /** 141 * baseline displacement (#PangoAttrInt) 142 */ 143 RISE = 13, 144 /** 145 * shape (#PangoAttrShape) 146 */ 147 SHAPE = 14, 148 /** 149 * font size scale factor (#PangoAttrFloat) 150 */ 151 SCALE = 15, 152 /** 153 * whether fallback is enabled (#PangoAttrInt) 154 */ 155 FALLBACK = 16, 156 /** 157 * letter spacing (#PangoAttrInt) 158 */ 159 LETTER_SPACING = 17, 160 /** 161 * underline color (#PangoAttrColor) 162 */ 163 UNDERLINE_COLOR = 18, 164 /** 165 * strikethrough color (#PangoAttrColor) 166 */ 167 STRIKETHROUGH_COLOR = 19, 168 /** 169 * font size in pixels scaled by %PANGO_SCALE (#PangoAttrInt) 170 */ 171 ABSOLUTE_SIZE = 20, 172 /** 173 * base text gravity (#PangoAttrInt) 174 */ 175 GRAVITY = 21, 176 /** 177 * gravity hint (#PangoAttrInt) 178 */ 179 GRAVITY_HINT = 22, 180 /** 181 * OpenType font features (#PangoAttrString). Since 1.38 182 */ 183 FONT_FEATURES = 23, 184 /** 185 * foreground alpha (#PangoAttrInt). Since 1.38 186 */ 187 FOREGROUND_ALPHA = 24, 188 /** 189 * background alpha (#PangoAttrInt). Since 1.38 190 */ 191 BACKGROUND_ALPHA = 25, 192 } 193 194 /** 195 * The #PangoBidiType type represents the bidirectional character 196 * type of a Unicode character as specified by the 197 * <ulink url="http://www.unicode.org/reports/tr9/">Unicode bidirectional algorithm</ulink>. 198 * 199 * Since: 1.22 200 */ 201 public enum PangoBidiType 202 { 203 /** 204 * Left-to-Right 205 */ 206 L = 0, 207 /** 208 * Left-to-Right Embedding 209 */ 210 LRE = 1, 211 /** 212 * Left-to-Right Override 213 */ 214 LRO = 2, 215 /** 216 * Right-to-Left 217 */ 218 R = 3, 219 /** 220 * Right-to-Left Arabic 221 */ 222 AL = 4, 223 /** 224 * Right-to-Left Embedding 225 */ 226 RLE = 5, 227 /** 228 * Right-to-Left Override 229 */ 230 RLO = 6, 231 /** 232 * Pop Directional Format 233 */ 234 PDF = 7, 235 /** 236 * European Number 237 */ 238 EN = 8, 239 /** 240 * European Number Separator 241 */ 242 ES = 9, 243 /** 244 * European Number Terminator 245 */ 246 ET = 10, 247 /** 248 * Arabic Number 249 */ 250 AN = 11, 251 /** 252 * Common Number Separator 253 */ 254 CS = 12, 255 /** 256 * Nonspacing Mark 257 */ 258 NSM = 13, 259 /** 260 * Boundary Neutral 261 */ 262 BN = 14, 263 /** 264 * Paragraph Separator 265 */ 266 B = 15, 267 /** 268 * Segment Separator 269 */ 270 S = 16, 271 /** 272 * Whitespace 273 */ 274 WS = 17, 275 /** 276 * Other Neutrals 277 */ 278 ON = 18, 279 } 280 281 /** 282 * Used to indicate how well a font can represent a particular Unicode 283 * character point for a particular script. 284 */ 285 public enum PangoCoverageLevel 286 { 287 /** 288 * The character is not representable with the font. 289 */ 290 NONE = 0, 291 /** 292 * The character is represented in a way that may be 293 * comprehensible but is not the correct graphical form. 294 * For instance, a Hangul character represented as a 295 * a sequence of Jamos, or a Latin transliteration of a Cyrillic word. 296 */ 297 FALLBACK = 1, 298 /** 299 * The character is represented as basically the correct 300 * graphical form, but with a stylistic variant inappropriate for 301 * the current script. 302 */ 303 APPROXIMATE = 2, 304 /** 305 * The character is represented as the correct graphical form. 306 */ 307 EXACT = 3, 308 } 309 310 /** 311 * The #PangoDirection type represents a direction in the 312 * Unicode bidirectional algorithm; not every value in this 313 * enumeration makes sense for every usage of #PangoDirection; 314 * for example, the return value of pango_unichar_direction() 315 * and pango_find_base_dir() cannot be %PANGO_DIRECTION_WEAK_LTR 316 * or %PANGO_DIRECTION_WEAK_RTL, since every character is either 317 * neutral or has a strong direction; on the other hand 318 * %PANGO_DIRECTION_NEUTRAL doesn't make sense to pass 319 * to pango_itemize_with_base_dir(). 320 * 321 * The %PANGO_DIRECTION_TTB_LTR, %PANGO_DIRECTION_TTB_RTL 322 * values come from an earlier interpretation of this 323 * enumeration as the writing direction of a block of 324 * text and are no longer used; See #PangoGravity for how 325 * vertical text is handled in Pango. 326 */ 327 public enum PangoDirection 328 { 329 /** 330 * A strong left-to-right direction 331 */ 332 LTR = 0, 333 /** 334 * A strong right-to-left direction 335 */ 336 RTL = 1, 337 /** 338 * Deprecated value; treated the 339 * same as %PANGO_DIRECTION_RTL. 340 */ 341 TTB_LTR = 2, 342 /** 343 * Deprecated value; treated the 344 * same as %PANGO_DIRECTION_LTR 345 */ 346 TTB_RTL = 3, 347 /** 348 * A weak left-to-right direction 349 */ 350 WEAK_LTR = 4, 351 /** 352 * A weak right-to-left direction 353 */ 354 WEAK_RTL = 5, 355 /** 356 * No direction specified 357 */ 358 NEUTRAL = 6, 359 } 360 361 /** 362 * The #PangoEllipsizeMode type describes what sort of (if any) 363 * ellipsization should be applied to a line of text. In 364 * the ellipsization process characters are removed from the 365 * text in order to make it fit to a given width and replaced 366 * with an ellipsis. 367 */ 368 public enum PangoEllipsizeMode 369 { 370 /** 371 * No ellipsization 372 */ 373 NONE = 0, 374 /** 375 * Omit characters at the start of the text 376 */ 377 START = 1, 378 /** 379 * Omit characters in the middle of the text 380 */ 381 MIDDLE = 2, 382 /** 383 * Omit characters at the end of the text 384 */ 385 END = 3, 386 } 387 388 /** 389 * The bits in a #PangoFontMask correspond to fields in a 390 * #PangoFontDescription that have been set. 391 */ 392 public enum PangoFontMask 393 { 394 /** 395 * the font family is specified. 396 */ 397 FAMILY = 1, 398 /** 399 * the font style is specified. 400 */ 401 STYLE = 2, 402 /** 403 * the font variant is specified. 404 */ 405 VARIANT = 4, 406 /** 407 * the font weight is specified. 408 */ 409 WEIGHT = 8, 410 /** 411 * the font stretch is specified. 412 */ 413 STRETCH = 16, 414 /** 415 * the font size is specified. 416 */ 417 SIZE = 32, 418 /** 419 * the font gravity is specified (Since: 1.16.) 420 */ 421 GRAVITY = 64, 422 /** 423 * OpenType font variations are specified (Since: 1.42) 424 */ 425 VARIATIONS = 128, 426 } 427 428 /** 429 * The #PangoGravity type represents the orientation of glyphs in a segment 430 * of text. This is useful when rendering vertical text layouts. In 431 * those situations, the layout is rotated using a non-identity PangoMatrix, 432 * and then glyph orientation is controlled using #PangoGravity. 433 * Not every value in this enumeration makes sense for every usage of 434 * #PangoGravity; for example, %PANGO_GRAVITY_AUTO only can be passed to 435 * pango_context_set_base_gravity() and can only be returned by 436 * pango_context_get_base_gravity(). 437 * 438 * See also: #PangoGravityHint 439 * 440 * Since: 1.16 441 */ 442 public enum PangoGravity 443 { 444 /** 445 * Glyphs stand upright (default) 446 */ 447 SOUTH = 0, 448 /** 449 * Glyphs are rotated 90 degrees clockwise 450 */ 451 EAST = 1, 452 /** 453 * Glyphs are upside-down 454 */ 455 NORTH = 2, 456 /** 457 * Glyphs are rotated 90 degrees counter-clockwise 458 */ 459 WEST = 3, 460 /** 461 * Gravity is resolved from the context matrix 462 */ 463 AUTO = 4, 464 } 465 466 /** 467 * The #PangoGravityHint defines how horizontal scripts should behave in a 468 * vertical context. That is, English excerpt in a vertical paragraph for 469 * example. 470 * 471 * See #PangoGravity. 472 * 473 * Since: 1.16 474 */ 475 public enum PangoGravityHint 476 { 477 /** 478 * scripts will take their natural gravity based 479 * on the base gravity and the script. This is the default. 480 */ 481 NATURAL = 0, 482 /** 483 * always use the base gravity set, regardless of 484 * the script. 485 */ 486 STRONG = 1, 487 /** 488 * for scripts not in their natural direction (eg. 489 * Latin in East gravity), choose per-script gravity such that every script 490 * respects the line progression. This means, Latin and Arabic will take 491 * opposite gravities and both flow top-to-bottom for example. 492 */ 493 LINE = 2, 494 } 495 496 /** 497 * #PangoRenderPart defines different items to render for such 498 * purposes as setting colors. 499 * 500 * Since: 1.8 501 */ 502 public enum PangoRenderPart 503 { 504 /** 505 * the text itself 506 */ 507 FOREGROUND = 0, 508 /** 509 * the area behind the text 510 */ 511 BACKGROUND = 1, 512 /** 513 * underlines 514 */ 515 UNDERLINE = 2, 516 /** 517 * strikethrough lines 518 */ 519 STRIKETHROUGH = 3, 520 } 521 522 /** 523 * The #PangoScript enumeration identifies different writing 524 * systems. The values correspond to the names as defined in the 525 * Unicode standard. 526 * Note that new types may be added in the future. Applications should be ready 527 * to handle unknown values. This enumeration is interchangeable with 528 * #GUnicodeScript. See <ulink 529 * url="http://www.unicode.org/reports/tr24/">Unicode Standard Annex 530 * #24: Script names</ulink>. 531 */ 532 public enum PangoScript 533 { 534 /** 535 * a value never returned from pango_script_for_unichar() 536 */ 537 INVALID_CODE = -1, 538 /** 539 * a character used by multiple different scripts 540 */ 541 COMMON = 0, 542 /** 543 * a mark glyph that takes its script from the 544 * base glyph to which it is attached 545 */ 546 INHERITED = 1, 547 /** 548 * Arabic 549 */ 550 ARABIC = 2, 551 /** 552 * Armenian 553 */ 554 ARMENIAN = 3, 555 /** 556 * Bengali 557 */ 558 BENGALI = 4, 559 /** 560 * Bopomofo 561 */ 562 BOPOMOFO = 5, 563 /** 564 * Cherokee 565 */ 566 CHEROKEE = 6, 567 /** 568 * Coptic 569 */ 570 COPTIC = 7, 571 /** 572 * Cyrillic 573 */ 574 CYRILLIC = 8, 575 /** 576 * Deseret 577 */ 578 DESERET = 9, 579 /** 580 * Devanagari 581 */ 582 DEVANAGARI = 10, 583 /** 584 * Ethiopic 585 */ 586 ETHIOPIC = 11, 587 /** 588 * Georgian 589 */ 590 GEORGIAN = 12, 591 /** 592 * Gothic 593 */ 594 GOTHIC = 13, 595 /** 596 * Greek 597 */ 598 GREEK = 14, 599 /** 600 * Gujarati 601 */ 602 GUJARATI = 15, 603 /** 604 * Gurmukhi 605 */ 606 GURMUKHI = 16, 607 /** 608 * Han 609 */ 610 HAN = 17, 611 /** 612 * Hangul 613 */ 614 HANGUL = 18, 615 /** 616 * Hebrew 617 */ 618 HEBREW = 19, 619 /** 620 * Hiragana 621 */ 622 HIRAGANA = 20, 623 /** 624 * Kannada 625 */ 626 KANNADA = 21, 627 /** 628 * Katakana 629 */ 630 KATAKANA = 22, 631 /** 632 * Khmer 633 */ 634 KHMER = 23, 635 /** 636 * Lao 637 */ 638 LAO = 24, 639 /** 640 * Latin 641 */ 642 LATIN = 25, 643 /** 644 * Malayalam 645 */ 646 MALAYALAM = 26, 647 /** 648 * Mongolian 649 */ 650 MONGOLIAN = 27, 651 /** 652 * Myanmar 653 */ 654 MYANMAR = 28, 655 /** 656 * Ogham 657 */ 658 OGHAM = 29, 659 /** 660 * Old Italic 661 */ 662 OLD_ITALIC = 30, 663 /** 664 * Oriya 665 */ 666 ORIYA = 31, 667 /** 668 * Runic 669 */ 670 RUNIC = 32, 671 /** 672 * Sinhala 673 */ 674 SINHALA = 33, 675 /** 676 * Syriac 677 */ 678 SYRIAC = 34, 679 /** 680 * Tamil 681 */ 682 TAMIL = 35, 683 /** 684 * Telugu 685 */ 686 TELUGU = 36, 687 /** 688 * Thaana 689 */ 690 THAANA = 37, 691 /** 692 * Thai 693 */ 694 THAI = 38, 695 /** 696 * Tibetan 697 */ 698 TIBETAN = 39, 699 /** 700 * Canadian Aboriginal 701 */ 702 CANADIAN_ABORIGINAL = 40, 703 /** 704 * Yi 705 */ 706 YI = 41, 707 /** 708 * Tagalog 709 */ 710 TAGALOG = 42, 711 /** 712 * Hanunoo 713 */ 714 HANUNOO = 43, 715 /** 716 * Buhid 717 */ 718 BUHID = 44, 719 /** 720 * Tagbanwa 721 */ 722 TAGBANWA = 45, 723 /** 724 * Braille 725 */ 726 BRAILLE = 46, 727 /** 728 * Cypriot 729 */ 730 CYPRIOT = 47, 731 /** 732 * Limbu 733 */ 734 LIMBU = 48, 735 /** 736 * Osmanya 737 */ 738 OSMANYA = 49, 739 /** 740 * Shavian 741 */ 742 SHAVIAN = 50, 743 /** 744 * Linear B 745 */ 746 LINEAR_B = 51, 747 /** 748 * Tai Le 749 */ 750 TAI_LE = 52, 751 /** 752 * Ugaritic 753 */ 754 UGARITIC = 53, 755 /** 756 * New Tai Lue. Since 1.10 757 */ 758 NEW_TAI_LUE = 54, 759 /** 760 * Buginese. Since 1.10 761 */ 762 BUGINESE = 55, 763 /** 764 * Glagolitic. Since 1.10 765 */ 766 GLAGOLITIC = 56, 767 /** 768 * Tifinagh. Since 1.10 769 */ 770 TIFINAGH = 57, 771 /** 772 * Syloti Nagri. Since 1.10 773 */ 774 SYLOTI_NAGRI = 58, 775 /** 776 * Old Persian. Since 1.10 777 */ 778 OLD_PERSIAN = 59, 779 /** 780 * Kharoshthi. Since 1.10 781 */ 782 KHAROSHTHI = 60, 783 /** 784 * an unassigned code point. Since 1.14 785 */ 786 UNKNOWN = 61, 787 /** 788 * Balinese. Since 1.14 789 */ 790 BALINESE = 62, 791 /** 792 * Cuneiform. Since 1.14 793 */ 794 CUNEIFORM = 63, 795 /** 796 * Phoenician. Since 1.14 797 */ 798 PHOENICIAN = 64, 799 /** 800 * Phags-pa. Since 1.14 801 */ 802 PHAGS_PA = 65, 803 /** 804 * N'Ko. Since 1.14 805 */ 806 NKO = 66, 807 /** 808 * Kayah Li. Since 1.20.1 809 */ 810 KAYAH_LI = 67, 811 /** 812 * Lepcha. Since 1.20.1 813 */ 814 LEPCHA = 68, 815 /** 816 * Rejang. Since 1.20.1 817 */ 818 REJANG = 69, 819 /** 820 * Sundanese. Since 1.20.1 821 */ 822 SUNDANESE = 70, 823 /** 824 * Saurashtra. Since 1.20.1 825 */ 826 SAURASHTRA = 71, 827 /** 828 * Cham. Since 1.20.1 829 */ 830 CHAM = 72, 831 /** 832 * Ol Chiki. Since 1.20.1 833 */ 834 OL_CHIKI = 73, 835 /** 836 * Vai. Since 1.20.1 837 */ 838 VAI = 74, 839 /** 840 * Carian. Since 1.20.1 841 */ 842 CARIAN = 75, 843 /** 844 * Lycian. Since 1.20.1 845 */ 846 LYCIAN = 76, 847 /** 848 * Lydian. Since 1.20.1 849 */ 850 LYDIAN = 77, 851 /** 852 * Batak. Since 1.32 853 */ 854 BATAK = 78, 855 /** 856 * Brahmi. Since 1.32 857 */ 858 BRAHMI = 79, 859 /** 860 * Mandaic. Since 1.32 861 */ 862 MANDAIC = 80, 863 /** 864 * Chakma. Since: 1.32 865 */ 866 CHAKMA = 81, 867 /** 868 * Meroitic Cursive. Since: 1.32 869 */ 870 MEROITIC_CURSIVE = 82, 871 /** 872 * Meroitic Hieroglyphs. Since: 1.32 873 */ 874 MEROITIC_HIEROGLYPHS = 83, 875 /** 876 * Miao. Since: 1.32 877 */ 878 MIAO = 84, 879 /** 880 * Sharada. Since: 1.32 881 */ 882 SHARADA = 85, 883 /** 884 * Sora Sompeng. Since: 1.32 885 */ 886 SORA_SOMPENG = 86, 887 /** 888 * Takri. Since: 1.32 889 */ 890 TAKRI = 87, 891 /** 892 * Bassa. Since: 1.40 893 */ 894 BASSA_VAH = 88, 895 /** 896 * Caucasian Albanian. Since: 1.40 897 */ 898 CAUCASIAN_ALBANIAN = 89, 899 /** 900 * Duployan. Since: 1.40 901 */ 902 DUPLOYAN = 90, 903 /** 904 * Elbasan. Since: 1.40 905 */ 906 ELBASAN = 91, 907 /** 908 * Grantha. Since: 1.40 909 */ 910 GRANTHA = 92, 911 /** 912 * Kjohki. Since: 1.40 913 */ 914 KHOJKI = 93, 915 /** 916 * Khudawadi, Sindhi. Since: 1.40 917 */ 918 KHUDAWADI = 94, 919 /** 920 * Linear A. Since: 1.40 921 */ 922 LINEAR_A = 95, 923 /** 924 * Mahajani. Since: 1.40 925 */ 926 MAHAJANI = 96, 927 /** 928 * Manichaean. Since: 1.40 929 */ 930 MANICHAEAN = 97, 931 /** 932 * Mende Kikakui. Since: 1.40 933 */ 934 MENDE_KIKAKUI = 98, 935 /** 936 * Modi. Since: 1.40 937 */ 938 MODI = 99, 939 /** 940 * Mro. Since: 1.40 941 */ 942 MRO = 100, 943 /** 944 * Nabataean. Since: 1.40 945 */ 946 NABATAEAN = 101, 947 /** 948 * Old North Arabian. Since: 1.40 949 */ 950 OLD_NORTH_ARABIAN = 102, 951 /** 952 * Old Permic. Since: 1.40 953 */ 954 OLD_PERMIC = 103, 955 /** 956 * Pahawh Hmong. Since: 1.40 957 */ 958 PAHAWH_HMONG = 104, 959 /** 960 * Palmyrene. Since: 1.40 961 */ 962 PALMYRENE = 105, 963 /** 964 * Pau Cin Hau. Since: 1.40 965 */ 966 PAU_CIN_HAU = 106, 967 /** 968 * Psalter Pahlavi. Since: 1.40 969 */ 970 PSALTER_PAHLAVI = 107, 971 /** 972 * Siddham. Since: 1.40 973 */ 974 SIDDHAM = 108, 975 /** 976 * Tirhuta. Since: 1.40 977 */ 978 TIRHUTA = 109, 979 /** 980 * Warang Citi. Since: 1.40 981 */ 982 WARANG_CITI = 110, 983 /** 984 * Ahom. Since: 1.40 985 */ 986 AHOM = 111, 987 /** 988 * Anatolian Hieroglyphs. Since: 1.40 989 */ 990 ANATOLIAN_HIEROGLYPHS = 112, 991 /** 992 * Hatran. Since: 1.40 993 */ 994 HATRAN = 113, 995 /** 996 * Multani. Since: 1.40 997 */ 998 MULTANI = 114, 999 /** 1000 * Old Hungarian. Since: 1.40 1001 */ 1002 OLD_HUNGARIAN = 115, 1003 /** 1004 * Signwriting. Since: 1.40 1005 */ 1006 SIGNWRITING = 116, 1007 } 1008 1009 /** 1010 * An enumeration specifying the width of the font relative to other designs 1011 * within a family. 1012 */ 1013 public enum PangoStretch 1014 { 1015 /** 1016 * ultra condensed width 1017 */ 1018 ULTRA_CONDENSED = 0, 1019 /** 1020 * extra condensed width 1021 */ 1022 EXTRA_CONDENSED = 1, 1023 /** 1024 * condensed width 1025 */ 1026 CONDENSED = 2, 1027 /** 1028 * semi condensed width 1029 */ 1030 SEMI_CONDENSED = 3, 1031 /** 1032 * the normal width 1033 */ 1034 NORMAL = 4, 1035 /** 1036 * semi expanded width 1037 */ 1038 SEMI_EXPANDED = 5, 1039 /** 1040 * expanded width 1041 */ 1042 EXPANDED = 6, 1043 /** 1044 * extra expanded width 1045 */ 1046 EXTRA_EXPANDED = 7, 1047 /** 1048 * ultra expanded width 1049 */ 1050 ULTRA_EXPANDED = 8, 1051 } 1052 1053 /** 1054 * An enumeration specifying the various slant styles possible for a font. 1055 */ 1056 public enum PangoStyle 1057 { 1058 /** 1059 * the font is upright. 1060 */ 1061 NORMAL = 0, 1062 /** 1063 * the font is slanted, but in a roman style. 1064 */ 1065 OBLIQUE = 1, 1066 /** 1067 * the font is slanted in an italic style. 1068 */ 1069 ITALIC = 2, 1070 } 1071 1072 /** 1073 * A #PangoTabAlign specifies where a tab stop appears relative to the text. 1074 */ 1075 public enum PangoTabAlign 1076 { 1077 /** 1078 * the tab stop appears to the left of the text. 1079 */ 1080 LEFT = 0, 1081 } 1082 1083 /** 1084 * The #PangoUnderline enumeration is used to specify 1085 * whether text should be underlined, and if so, the type 1086 * of underlining. 1087 */ 1088 public enum PangoUnderline 1089 { 1090 /** 1091 * no underline should be drawn 1092 */ 1093 NONE = 0, 1094 /** 1095 * a single underline should be drawn 1096 */ 1097 SINGLE = 1, 1098 /** 1099 * a double underline should be drawn 1100 */ 1101 DOUBLE = 2, 1102 /** 1103 * a single underline should be drawn at a position 1104 * beneath the ink extents of the text being 1105 * underlined. This should be used only for underlining 1106 * single characters, such as for keyboard 1107 * accelerators. %PANGO_UNDERLINE_SINGLE should 1108 * be used for extended portions of text. 1109 */ 1110 LOW = 3, 1111 /** 1112 * a wavy underline should be drawn below. 1113 * This underline is typically used to indicate 1114 * an error such as a possilble mispelling; in some 1115 * cases a contrasting color may automatically 1116 * be used. This type of underlining is available since Pango 1.4. 1117 */ 1118 ERROR = 4, 1119 } 1120 1121 /** 1122 * An enumeration specifying capitalization variant of the font. 1123 */ 1124 public enum PangoVariant 1125 { 1126 /** 1127 * A normal font. 1128 */ 1129 NORMAL = 0, 1130 /** 1131 * A font with the lower case characters 1132 * replaced by smaller variants of the capital characters. 1133 */ 1134 SMALL_CAPS = 1, 1135 } 1136 1137 /** 1138 * An enumeration specifying the weight (boldness) of a font. This is a numerical 1139 * value ranging from 100 to 1000, but there are some predefined values: 1140 */ 1141 public enum PangoWeight 1142 { 1143 /** 1144 * the thin weight (= 100; Since: 1.24) 1145 */ 1146 THIN = 100, 1147 /** 1148 * the ultralight weight (= 200) 1149 */ 1150 ULTRALIGHT = 200, 1151 /** 1152 * the light weight (= 300) 1153 */ 1154 LIGHT = 300, 1155 /** 1156 * the semilight weight (= 350; Since: 1.36.7) 1157 */ 1158 SEMILIGHT = 350, 1159 /** 1160 * the book weight (= 380; Since: 1.24) 1161 */ 1162 BOOK = 380, 1163 /** 1164 * the default weight (= 400) 1165 */ 1166 NORMAL = 400, 1167 /** 1168 * the normal weight (= 500; Since: 1.24) 1169 */ 1170 MEDIUM = 500, 1171 /** 1172 * the semibold weight (= 600) 1173 */ 1174 SEMIBOLD = 600, 1175 /** 1176 * the bold weight (= 700) 1177 */ 1178 BOLD = 700, 1179 /** 1180 * the ultrabold weight (= 800) 1181 */ 1182 ULTRABOLD = 800, 1183 /** 1184 * the heavy weight (= 900) 1185 */ 1186 HEAVY = 900, 1187 /** 1188 * the ultraheavy weight (= 1000; Since: 1.24) 1189 */ 1190 ULTRAHEAVY = 1000, 1191 } 1192 1193 /** 1194 * A #PangoWrapMode describes how to wrap the lines of a #PangoLayout to the desired width. 1195 */ 1196 public enum PangoWrapMode 1197 { 1198 /** 1199 * wrap lines at word boundaries. 1200 */ 1201 WORD = 0, 1202 /** 1203 * wrap lines at character boundaries. 1204 */ 1205 CHAR = 1, 1206 /** 1207 * wrap lines at word boundaries, but fall back to character boundaries if there is not 1208 * enough space for a full word. 1209 */ 1210 WORD_CHAR = 2, 1211 } 1212 1213 struct PangoFcFontMap 1214 { 1215 PangoFontMap parentInstance; 1216 void* priv; 1217 } 1218 1219 struct PangoCairoFont; 1220 1221 1222 /** 1223 * The #PangoAnalysis structure stores information about 1224 * the properties of a segment of text. 1225 */ 1226 struct PangoAnalysis 1227 { 1228 /** 1229 * the engine for doing rendering-system-dependent processing. 1230 */ 1231 PangoEngineShape* shapeEngine; 1232 /** 1233 * the engine for doing rendering-system-independent processing. 1234 */ 1235 PangoEngineLang* langEngine; 1236 /** 1237 * the font for this segment. 1238 */ 1239 PangoFont* font; 1240 /** 1241 * the bidirectional level for this segment. 1242 */ 1243 ubyte level; 1244 /** 1245 * the glyph orientation for this segment (A #PangoGravity). 1246 */ 1247 ubyte gravity; 1248 /** 1249 * boolean flags for this segment (currently only one) (Since: 1.16). 1250 */ 1251 ubyte flags; 1252 /** 1253 * the detected script for this segment (A #PangoScript) (Since: 1.18). 1254 */ 1255 ubyte script; 1256 /** 1257 * the detected language for this segment. 1258 */ 1259 PangoLanguage* language; 1260 /** 1261 * extra attributes for this segment. 1262 */ 1263 GSList* extraAttrs; 1264 } 1265 1266 /** 1267 * The #PangoAttrClass structure stores the type and operations for 1268 * a particular type of attribute. The functions in this structure should 1269 * not be called directly. Instead, one should use the wrapper functions 1270 * provided for #PangoAttribute. 1271 */ 1272 struct PangoAttrClass 1273 { 1274 /** 1275 * the type ID for this attribute 1276 */ 1277 PangoAttrType type; 1278 /** */ 1279 extern(C) PangoAttribute* function(PangoAttribute* attr) copy; 1280 /** */ 1281 extern(C) void function(PangoAttribute* attr) destroy; 1282 /** */ 1283 extern(C) int function(PangoAttribute* attr1, PangoAttribute* attr2) equal; 1284 } 1285 1286 /** 1287 * The #PangoAttrColor structure is used to represent attributes that 1288 * are colors. 1289 */ 1290 struct PangoAttrColor 1291 { 1292 /** 1293 * the common portion of the attribute 1294 */ 1295 PangoAttribute attr; 1296 /** 1297 * the #PangoColor which is the value of the attribute 1298 */ 1299 PangoColor color; 1300 } 1301 1302 /** 1303 * The #PangoAttrFloat structure is used to represent attributes with 1304 * a float or double value. 1305 */ 1306 struct PangoAttrFloat 1307 { 1308 /** 1309 * the common portion of the attribute 1310 */ 1311 PangoAttribute attr; 1312 /** 1313 * the value of the attribute 1314 */ 1315 double value; 1316 } 1317 1318 /** 1319 * The #PangoAttrFontDesc structure is used to store an attribute that 1320 * sets all aspects of the font description at once. 1321 */ 1322 struct PangoAttrFontDesc 1323 { 1324 /** 1325 * the common portion of the attribute 1326 */ 1327 PangoAttribute attr; 1328 /** 1329 * the font description which is the value of this attribute 1330 */ 1331 PangoFontDescription* desc; 1332 } 1333 1334 /** 1335 * The #PangoAttrFontFeatures structure is used to represent OpenType 1336 * font features as an attribute. 1337 * 1338 * Since: 1.38 1339 */ 1340 struct PangoAttrFontFeatures 1341 { 1342 /** 1343 * the common portion of the attribute 1344 */ 1345 PangoAttribute attr; 1346 /** 1347 * the featues, as a string in CSS syntax 1348 */ 1349 char* features; 1350 } 1351 1352 /** 1353 * The #PangoAttrInt structure is used to represent attributes with 1354 * an integer or enumeration value. 1355 */ 1356 struct PangoAttrInt 1357 { 1358 /** 1359 * the common portion of the attribute 1360 */ 1361 PangoAttribute attr; 1362 /** 1363 * the value of the attribute 1364 */ 1365 int value; 1366 } 1367 1368 struct PangoAttrIterator; 1369 1370 /** 1371 * The #PangoAttrLanguage structure is used to represent attributes that 1372 * are languages. 1373 */ 1374 struct PangoAttrLanguage 1375 { 1376 /** 1377 * the common portion of the attribute 1378 */ 1379 PangoAttribute attr; 1380 /** 1381 * the #PangoLanguage which is the value of the attribute 1382 */ 1383 PangoLanguage* value; 1384 } 1385 1386 struct PangoAttrList; 1387 1388 /** 1389 * The #PangoAttrShape structure is used to represent attributes which 1390 * impose shape restrictions. 1391 */ 1392 struct PangoAttrShape 1393 { 1394 /** 1395 * the common portion of the attribute 1396 */ 1397 PangoAttribute attr; 1398 /** 1399 * the ink rectangle to restrict to 1400 */ 1401 PangoRectangle inkRect; 1402 /** 1403 * the logical rectangle to restrict to 1404 */ 1405 PangoRectangle logicalRect; 1406 /** 1407 * user data set (see pango_attr_shape_new_with_data()) 1408 */ 1409 void* data; 1410 /** 1411 * copy function for the user data 1412 */ 1413 PangoAttrDataCopyFunc copyFunc; 1414 /** 1415 * destroy function for the user data 1416 */ 1417 GDestroyNotify destroyFunc; 1418 } 1419 1420 /** 1421 * The #PangoAttrSize structure is used to represent attributes which 1422 * set font size. 1423 */ 1424 struct PangoAttrSize 1425 { 1426 /** 1427 * the common portion of the attribute 1428 */ 1429 PangoAttribute attr; 1430 /** 1431 * size of font, in units of 1/%PANGO_SCALE of a point (for 1432 * %PANGO_ATTR_SIZE) or of a device uni (for %PANGO_ATTR_ABSOLUTE_SIZE) 1433 */ 1434 int size; 1435 import std.bitmanip: bitfields; 1436 mixin(bitfields!( 1437 uint, "absolute", 1, 1438 uint, "", 31 1439 )); 1440 } 1441 1442 /** 1443 * The #PangoAttrString structure is used to represent attributes with 1444 * a string value. 1445 */ 1446 struct PangoAttrString 1447 { 1448 /** 1449 * the common portion of the attribute 1450 */ 1451 PangoAttribute attr; 1452 /** 1453 * the string which is the value of the attribute 1454 */ 1455 char* value; 1456 } 1457 1458 struct PangoAttribute 1459 { 1460 /** 1461 * the class structure holding information about the type of the attribute 1462 */ 1463 PangoAttrClass* klass; 1464 /** 1465 * the start index of the range (in bytes). 1466 */ 1467 uint startIndex; 1468 /** 1469 * end index of the range (in bytes). The character at this index 1470 * is not included in the range. 1471 */ 1472 uint endIndex; 1473 } 1474 1475 struct PangoColor 1476 { 1477 /** 1478 * value of red component 1479 */ 1480 ushort red; 1481 /** 1482 * value of green component 1483 */ 1484 ushort green; 1485 /** 1486 * value of blue component 1487 */ 1488 ushort blue; 1489 } 1490 1491 struct PangoContext; 1492 1493 struct PangoContextClass; 1494 1495 struct PangoCoverage; 1496 1497 struct PangoEngine 1498 { 1499 GObject parentInstance; 1500 } 1501 1502 /** 1503 * Class structure for #PangoEngine 1504 */ 1505 struct PangoEngineClass 1506 { 1507 GObjectClass parentClass; 1508 } 1509 1510 /** 1511 * The #PangoEngineInfo structure contains information about a particular 1512 * engine. It contains the following fields: 1513 */ 1514 struct PangoEngineInfo 1515 { 1516 /** 1517 * a unique string ID for the engine. 1518 */ 1519 const(char)* id; 1520 /** 1521 * a string identifying the engine type. 1522 */ 1523 const(char)* engineType; 1524 /** 1525 * a string identifying the render type. 1526 */ 1527 const(char)* renderType; 1528 /** 1529 * array of scripts this engine supports. 1530 */ 1531 PangoEngineScriptInfo* scripts; 1532 /** 1533 * number of items in @scripts. 1534 */ 1535 int nScripts; 1536 } 1537 1538 struct PangoEngineLang 1539 { 1540 PangoEngine parentInstance; 1541 } 1542 1543 /** 1544 * Class structure for #PangoEngineLang 1545 */ 1546 struct PangoEngineLangClass 1547 { 1548 PangoEngineClass parentClass; 1549 /** */ 1550 extern(C) void function(PangoEngineLang* engine, const(char)* text, int len, PangoAnalysis* analysis, PangoLogAttr* attrs, int attrsLen) scriptBreak; 1551 } 1552 1553 /** 1554 * The #PangoEngineScriptInfo structure contains 1555 * information about how the shaper covers a particular script. 1556 */ 1557 struct PangoEngineScriptInfo 1558 { 1559 /** 1560 * a #PangoScript. The value %PANGO_SCRIPT_COMMON has 1561 * the special meaning here of "all scripts" 1562 */ 1563 PangoScript script; 1564 /** 1565 * a semicolon separated list of languages that this 1566 * engine handles for this script. This may be empty, 1567 * in which case the engine is saying that it is a 1568 * fallback choice for all languages for this range, 1569 * but should not be used if another engine 1570 * indicates that it is specific for the language for 1571 * a given code point. An entry in this list of "*" 1572 * indicates that this engine is specific to all 1573 * languages for this range. 1574 */ 1575 const(char)* langs; 1576 } 1577 1578 struct PangoEngineShape 1579 { 1580 PangoEngine parentInstance; 1581 } 1582 1583 /** 1584 * Class structure for #PangoEngineShape 1585 */ 1586 struct PangoEngineShapeClass 1587 { 1588 PangoEngineClass parentClass; 1589 /** */ 1590 extern(C) void function(PangoEngineShape* engine, PangoFont* font, const(char)* itemText, uint itemLength, PangoAnalysis* analysis, PangoGlyphString* glyphs, const(char)* paragraphText, uint paragraphLength) scriptShape; 1591 /** */ 1592 extern(C) PangoCoverageLevel function(PangoEngineShape* engine, PangoFont* font, PangoLanguage* language, dchar wc) covers; 1593 } 1594 1595 struct PangoFont 1596 { 1597 GObject parentInstance; 1598 } 1599 1600 struct PangoFontClass 1601 { 1602 GObjectClass parentClass; 1603 /** 1604 * 1605 * Params: 1606 * font = a #PangoFont 1607 * Returns: a newly-allocated #PangoFontDescription object. 1608 */ 1609 extern(C) PangoFontDescription* function(PangoFont* font) describe; 1610 /** 1611 * 1612 * Params: 1613 * font = a #PangoFont 1614 * language = the language tag 1615 * Returns: a newly-allocated #PangoCoverage 1616 * object. 1617 */ 1618 extern(C) PangoCoverage* function(PangoFont* font, PangoLanguage* language) getCoverage; 1619 /** 1620 * 1621 * Params: 1622 * font = a #PangoFont 1623 * language = the language tag 1624 * ch = a Unicode character. 1625 * Returns: the best matching shaper. 1626 */ 1627 extern(C) PangoEngineShape* function(PangoFont* font, PangoLanguage* language, uint ch) findShaper; 1628 /** */ 1629 extern(C) void function(PangoFont* font, PangoGlyph glyph, PangoRectangle* inkRect, PangoRectangle* logicalRect) getGlyphExtents; 1630 /** 1631 * 1632 * Params: 1633 * font = a #PangoFont 1634 * language = language tag used to determine which script to get the metrics 1635 * for, or %NULL to indicate to get the metrics for the entire font. 1636 * Returns: a #PangoFontMetrics object. The caller must call pango_font_metrics_unref() 1637 * when finished using the object. 1638 */ 1639 extern(C) PangoFontMetrics* function(PangoFont* font, PangoLanguage* language) getMetrics; 1640 /** 1641 * 1642 * Params: 1643 * font = a #PangoFont, or %NULL 1644 * Returns: the #PangoFontMap for the 1645 * font, or %NULL if @font is %NULL. 1646 */ 1647 extern(C) PangoFontMap* function(PangoFont* font) getFontMap; 1648 /** */ 1649 extern(C) PangoFontDescription* function(PangoFont* font) describeAbsolute; 1650 /** */ 1651 extern(C) void function() PangoReserved1; 1652 /** */ 1653 extern(C) void function() PangoReserved2; 1654 } 1655 1656 struct PangoFontDescription; 1657 1658 struct PangoFontFace 1659 { 1660 GObject parentInstance; 1661 } 1662 1663 struct PangoFontFaceClass 1664 { 1665 GObjectClass parentClass; 1666 /** 1667 * 1668 * Params: 1669 * face = a #PangoFontFace. 1670 * Returns: the face name for the face. This string is 1671 * owned by the face object and must not be modified or freed. 1672 */ 1673 extern(C) const(char)* function(PangoFontFace* face) getFaceName; 1674 /** 1675 * 1676 * Params: 1677 * face = a #PangoFontFace 1678 * Returns: a newly-created #PangoFontDescription structure 1679 * holding the description of the face. Use pango_font_description_free() 1680 * to free the result. 1681 */ 1682 extern(C) PangoFontDescription* function(PangoFontFace* face) describe; 1683 /** */ 1684 extern(C) void function(PangoFontFace* face, int** sizes, int* nSizes) listSizes; 1685 /** 1686 * 1687 * Params: 1688 * face = a #PangoFontFace 1689 * Returns: whether @face is synthesized. 1690 */ 1691 extern(C) int function(PangoFontFace* face) isSynthesized; 1692 /** */ 1693 extern(C) void function() PangoReserved3; 1694 /** */ 1695 extern(C) void function() PangoReserved4; 1696 } 1697 1698 struct PangoFontFamily 1699 { 1700 GObject parentInstance; 1701 } 1702 1703 struct PangoFontFamilyClass 1704 { 1705 GObjectClass parentClass; 1706 /** */ 1707 extern(C) void function(PangoFontFamily* family, PangoFontFace*** faces, int* nFaces) listFaces; 1708 /** 1709 * 1710 * Params: 1711 * family = a #PangoFontFamily 1712 * Returns: the name of the family. This string is owned 1713 * by the family object and must not be modified or freed. 1714 */ 1715 extern(C) const(char)* function(PangoFontFamily* family) getName; 1716 /** 1717 * 1718 * Params: 1719 * family = a #PangoFontFamily 1720 * Returns: %TRUE if the family is monospace. 1721 */ 1722 extern(C) int function(PangoFontFamily* family) isMonospace; 1723 /** */ 1724 extern(C) void function() PangoReserved2; 1725 /** */ 1726 extern(C) void function() PangoReserved3; 1727 /** */ 1728 extern(C) void function() PangoReserved4; 1729 } 1730 1731 struct PangoFontMap 1732 { 1733 GObject parentInstance; 1734 } 1735 1736 /** 1737 * The #PangoFontMapClass structure holds the virtual functions for 1738 * a particular #PangoFontMap implementation. 1739 */ 1740 struct PangoFontMapClass 1741 { 1742 /** 1743 * parent #GObjectClass. 1744 */ 1745 GObjectClass parentClass; 1746 /** 1747 * 1748 * Params: 1749 * fontmap = a #PangoFontMap 1750 * context = the #PangoContext the font will be used with 1751 * desc = a #PangoFontDescription describing the font to load 1752 * Returns: the newly allocated #PangoFont 1753 * loaded, or %NULL if no font matched. 1754 */ 1755 extern(C) PangoFont* function(PangoFontMap* fontmap, PangoContext* context, PangoFontDescription* desc) loadFont; 1756 /** */ 1757 extern(C) void function(PangoFontMap* fontmap, PangoFontFamily*** families, int* nFamilies) listFamilies; 1758 /** 1759 * 1760 * Params: 1761 * fontmap = a #PangoFontMap 1762 * context = the #PangoContext the font will be used with 1763 * desc = a #PangoFontDescription describing the font to load 1764 * language = a #PangoLanguage the fonts will be used for 1765 * Returns: the newly allocated 1766 * #PangoFontset loaded, or %NULL if no font matched. 1767 */ 1768 extern(C) PangoFontset* function(PangoFontMap* fontmap, PangoContext* context, PangoFontDescription* desc, PangoLanguage* language) loadFontset; 1769 /** 1770 * the type of rendering-system-dependent engines that 1771 * can handle fonts of this fonts loaded with this fontmap. 1772 */ 1773 const(char)* shapeEngineType; 1774 /** 1775 * 1776 * Params: 1777 * fontmap = a #PangoFontMap 1778 * Returns: The current serial number of @fontmap. 1779 */ 1780 extern(C) uint function(PangoFontMap* fontmap) getSerial; 1781 /** */ 1782 extern(C) void function(PangoFontMap* fontmap) changed; 1783 /** */ 1784 extern(C) void function() PangoReserved1; 1785 /** */ 1786 extern(C) void function() PangoReserved2; 1787 } 1788 1789 struct PangoFontMetrics 1790 { 1791 uint refCount; 1792 int ascent; 1793 int descent; 1794 int approximateCharWidth; 1795 int approximateDigitWidth; 1796 int underlinePosition; 1797 int underlineThickness; 1798 int strikethroughPosition; 1799 int strikethroughThickness; 1800 } 1801 1802 struct PangoFontset 1803 { 1804 GObject parentInstance; 1805 } 1806 1807 /** 1808 * The #PangoFontsetClass structure holds the virtual functions for 1809 * a particular #PangoFontset implementation. 1810 */ 1811 struct PangoFontsetClass 1812 { 1813 /** 1814 * parent #GObjectClass. 1815 */ 1816 GObjectClass parentClass; 1817 /** 1818 * 1819 * Params: 1820 * fontset = a #PangoFontset 1821 * wc = a Unicode character 1822 * Returns: a #PangoFont. The caller must call 1823 * g_object_unref when finished with the font. 1824 */ 1825 extern(C) PangoFont* function(PangoFontset* fontset, uint wc) getFont; 1826 /** 1827 * 1828 * Params: 1829 * fontset = a #PangoFontset 1830 * Returns: a #PangoFontMetrics object. The caller must call pango_font_metrics_unref() 1831 * when finished using the object. 1832 */ 1833 extern(C) PangoFontMetrics* function(PangoFontset* fontset) getMetrics; 1834 /** */ 1835 extern(C) PangoLanguage* function(PangoFontset* fontset) getLanguage; 1836 /** */ 1837 extern(C) void function(PangoFontset* fontset, PangoFontsetForeachFunc func, void* data) foreac; 1838 /** */ 1839 extern(C) void function() PangoReserved1; 1840 /** */ 1841 extern(C) void function() PangoReserved2; 1842 /** */ 1843 extern(C) void function() PangoReserved3; 1844 /** */ 1845 extern(C) void function() PangoReserved4; 1846 } 1847 1848 struct PangoFontsetSimple; 1849 1850 struct PangoFontsetSimpleClass; 1851 1852 /** 1853 * The #PangoGlyphGeometry structure contains width and positioning 1854 * information for a single glyph. 1855 */ 1856 struct PangoGlyphGeometry 1857 { 1858 /** 1859 * the logical width to use for the the character. 1860 */ 1861 PangoGlyphUnit width; 1862 /** 1863 * horizontal offset from nominal character position. 1864 */ 1865 PangoGlyphUnit xOffset; 1866 /** 1867 * vertical offset from nominal character position. 1868 */ 1869 PangoGlyphUnit yOffset; 1870 } 1871 1872 /** 1873 * The #PangoGlyphInfo structure represents a single glyph together with 1874 * positioning information and visual attributes. 1875 * It contains the following fields. 1876 */ 1877 struct PangoGlyphInfo 1878 { 1879 /** 1880 * the glyph itself. 1881 */ 1882 PangoGlyph glyph; 1883 /** 1884 * the positional information about the glyph. 1885 */ 1886 PangoGlyphGeometry geometry; 1887 /** 1888 * the visual attributes of the glyph. 1889 */ 1890 PangoGlyphVisAttr attr; 1891 } 1892 1893 struct PangoGlyphItem 1894 { 1895 /** 1896 * corresponding #PangoItem. 1897 */ 1898 PangoItem* item; 1899 /** 1900 * corresponding #PangoGlyphString. 1901 */ 1902 PangoGlyphString* glyphs; 1903 } 1904 1905 struct PangoGlyphItemIter 1906 { 1907 PangoGlyphItem* glyphItem; 1908 const(char)* text; 1909 int startGlyph; 1910 int startIndex; 1911 int startChar; 1912 int endGlyph; 1913 int endIndex; 1914 int endChar; 1915 } 1916 1917 struct PangoGlyphString 1918 { 1919 /** 1920 * number of the glyphs in this glyph string. 1921 */ 1922 int numGlyphs; 1923 /** 1924 * array of glyph information 1925 * for the glyph string. 1926 */ 1927 PangoGlyphInfo* glyphs; 1928 /** 1929 * logical cluster info, indexed by the byte index 1930 * within the text corresponding to the glyph string. 1931 */ 1932 int* logClusters; 1933 int space; 1934 } 1935 1936 /** 1937 * The PangoGlyphVisAttr is used to communicate information between 1938 * the shaping phase and the rendering phase. More attributes may be 1939 * added in the future. 1940 */ 1941 struct PangoGlyphVisAttr 1942 { 1943 import std.bitmanip: bitfields; 1944 mixin(bitfields!( 1945 uint, "isClusterStart", 1, 1946 uint, "", 31 1947 )); 1948 } 1949 1950 /** 1951 * The #PangoIncludedModule structure for a statically linked module 1952 * contains the functions that would otherwise be loaded from a dynamically 1953 * loaded module. 1954 */ 1955 struct PangoIncludedModule 1956 { 1957 /** */ 1958 extern(C) void function(PangoEngineInfo** engines, int* nEngines) list; 1959 /** */ 1960 extern(C) void function(GTypeModule* modul) init; 1961 /** */ 1962 extern(C) void function() exit; 1963 /** */ 1964 extern(C) PangoEngine* function(const(char)* id) create; 1965 } 1966 1967 struct PangoItem 1968 { 1969 /** 1970 * byte offset of the start of this item in text. 1971 */ 1972 int offset; 1973 /** 1974 * length of this item in bytes. 1975 */ 1976 int length; 1977 /** 1978 * number of Unicode characters in the item. 1979 */ 1980 int numChars; 1981 /** 1982 * analysis results for the item. 1983 */ 1984 PangoAnalysis analysis; 1985 } 1986 1987 struct PangoLanguage; 1988 1989 struct PangoLayout; 1990 1991 struct PangoLayoutClass; 1992 1993 struct PangoLayoutIter; 1994 1995 struct PangoLayoutLine 1996 { 1997 /** 1998 * the layout this line belongs to, might be %NULL 1999 */ 2000 PangoLayout* layout; 2001 /** 2002 * start of line as byte index into layout->text 2003 */ 2004 int startIndex; 2005 /** 2006 * length of line in bytes 2007 */ 2008 int length; 2009 /** 2010 * list of runs in the 2011 * line, from left to right 2012 */ 2013 GSList* runs; 2014 import std.bitmanip: bitfields; 2015 mixin(bitfields!( 2016 uint, "isParagraphStart", 1, 2017 uint, "resolvedDir", 3, 2018 uint, "", 28 2019 )); 2020 } 2021 2022 /** 2023 * The #PangoLogAttr structure stores information 2024 * about the attributes of a single character. 2025 */ 2026 struct PangoLogAttr 2027 { 2028 import std.bitmanip: bitfields; 2029 mixin(bitfields!( 2030 uint, "isLineBreak", 1, 2031 uint, "isMandatoryBreak", 1, 2032 uint, "isCharBreak", 1, 2033 uint, "isWhite", 1, 2034 uint, "isCursorPosition", 1, 2035 uint, "isWordStart", 1, 2036 uint, "isWordEnd", 1, 2037 uint, "isSentenceBoundary", 1, 2038 uint, "isSentenceStart", 1, 2039 uint, "isSentenceEnd", 1, 2040 uint, "backspaceDeletesCharacter", 1, 2041 uint, "isExpandableSpace", 1, 2042 uint, "isWordBoundary", 1, 2043 uint, "", 19 2044 )); 2045 } 2046 2047 struct PangoMap; 2048 2049 struct PangoMapEntry; 2050 2051 struct PangoMatrix 2052 { 2053 /** 2054 * 1st component of the transformation matrix 2055 */ 2056 double xx; 2057 /** 2058 * 2nd component of the transformation matrix 2059 */ 2060 double xy; 2061 /** 2062 * 3rd component of the transformation matrix 2063 */ 2064 double yx; 2065 /** 2066 * 4th component of the transformation matrix 2067 */ 2068 double yy; 2069 /** 2070 * x translation 2071 */ 2072 double x0; 2073 /** 2074 * y translation 2075 */ 2076 double y0; 2077 } 2078 2079 /** 2080 * The #PangoRectangle structure represents a rectangle. It is frequently 2081 * used to represent the logical or ink extents of a single glyph or section 2082 * of text. (See, for instance, pango_font_get_glyph_extents()) 2083 */ 2084 struct PangoRectangle 2085 { 2086 /** 2087 * X coordinate of the left side of the rectangle. 2088 */ 2089 int x; 2090 /** 2091 * Y coordinate of the the top side of the rectangle. 2092 */ 2093 int y; 2094 /** 2095 * width of the rectangle. 2096 */ 2097 int width; 2098 /** 2099 * height of the rectangle. 2100 */ 2101 int height; 2102 } 2103 2104 struct PangoRenderer 2105 { 2106 GObject parentInstance; 2107 PangoUnderline underline; 2108 bool strikethrough; 2109 int activeCount; 2110 /** 2111 * the current transformation matrix for 2112 * the Renderer; may be %NULL, which should be treated the 2113 * same as the identity matrix. 2114 */ 2115 PangoMatrix* matrix; 2116 PangoRendererPrivate* priv; 2117 } 2118 2119 /** 2120 * Class structure for #PangoRenderer. 2121 * 2122 * Since: 1.8 2123 */ 2124 struct PangoRendererClass 2125 { 2126 GObjectClass parentClass; 2127 /** */ 2128 extern(C) void function(PangoRenderer* renderer, PangoFont* font, PangoGlyphString* glyphs, int x, int y) drawGlyphs; 2129 /** */ 2130 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part, int x, int y, int width, int height) drawRectangle; 2131 /** */ 2132 extern(C) void function(PangoRenderer* renderer, int x, int y, int width, int height) drawErrorUnderline; 2133 /** */ 2134 extern(C) void function(PangoRenderer* renderer, PangoAttrShape* attr, int x, int y) drawShape; 2135 /** */ 2136 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part, double y1, double x11, double x21, double y2, double x12, double x22) drawTrapezoid; 2137 /** */ 2138 extern(C) void function(PangoRenderer* renderer, PangoFont* font, PangoGlyph glyph, double x, double y) drawGlyph; 2139 /** */ 2140 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part) partChanged; 2141 /** */ 2142 extern(C) void function(PangoRenderer* renderer) begin; 2143 /** */ 2144 extern(C) void function(PangoRenderer* renderer) end; 2145 /** */ 2146 extern(C) void function(PangoRenderer* renderer, PangoLayoutRun* run) prepareRun; 2147 /** */ 2148 extern(C) void function(PangoRenderer* renderer, const(char)* text, PangoGlyphItem* glyphItem, int x, int y) drawGlyphItem; 2149 /** */ 2150 extern(C) void function() PangoReserved2; 2151 /** */ 2152 extern(C) void function() PangoReserved3; 2153 /** */ 2154 extern(C) void function() PangoReserved4; 2155 } 2156 2157 struct PangoRendererPrivate; 2158 2159 struct PangoScriptIter; 2160 2161 struct PangoTabArray; 2162 2163 struct PangoCairoFontMap; 2164 2165 /** 2166 * Type of a function that can duplicate user data for an attribute. 2167 * 2168 * Params: 2169 * userData = user data to copy 2170 * 2171 * Returns: new copy of @user_data. 2172 */ 2173 public alias extern(C) void* function(void* userData) PangoAttrDataCopyFunc; 2174 2175 /** 2176 * Type of a function filtering a list of attributes. 2177 * 2178 * Params: 2179 * attribute = a Pango attribute 2180 * userData = user data passed to the function 2181 * 2182 * Returns: %TRUE if the attribute should be selected for 2183 * filtering, %FALSE otherwise. 2184 */ 2185 public alias extern(C) int function(PangoAttribute* attribute, void* userData) PangoAttrFilterFunc; 2186 2187 /** 2188 * A callback function used by pango_fontset_foreach() when enumerating 2189 * the fonts in a fontset. 2190 * 2191 * Params: 2192 * fontset = a #PangoFontset 2193 * font = a font from @fontset 2194 * userData = callback data 2195 * 2196 * Returns: if %TRUE, stop iteration and return immediately. 2197 * 2198 * Since: 1.4 2199 */ 2200 public alias extern(C) int function(PangoFontset* fontset, PangoFont* font, void* userData) PangoFontsetForeachFunc; 2201 2202 /** 2203 * Function type for rendering attributes of type %PANGO_ATTR_SHAPE 2204 * with Pango's Cairo renderer. 2205 * 2206 * Params: 2207 * cr = a Cairo context with current point set to where the shape should 2208 * be rendered 2209 * attr = the %PANGO_ATTR_SHAPE to render 2210 * doPath = whether only the shape path should be appended to current 2211 * path of @cr and no filling/stroking done. This will be set 2212 * to %TRUE when called from pango_cairo_layout_path() and 2213 * pango_cairo_layout_line_path() rendering functions. 2214 * data = user data passed to pango_cairo_context_set_shape_renderer() 2215 */ 2216 public alias extern(C) void function(cairo_t* cr, PangoAttrShape* attr, int doPath, void* data) PangoCairoShapeRendererFunc; 2217 2218 enum PANGO_SCALE_XX_SMALL = 0.5787037037037; /// The scale factor for three shrinking steps (1 / (1.2 * 1.2 * 1.2)). 2219 enum PANGO_SCALE_X_SMALL = 0.6444444444444; /// The scale factor for two shrinking steps (1 / (1.2 * 1.2)). 2220 enum PANGO_SCALE_SMALL = 0.8333333333333; /// The scale factor for one shrinking step (1 / 1.2). 2221 enum PANGO_SCALE_MEDIUM = 1.0; /// The scale factor for normal size (1.0). 2222 enum PANGO_SCALE_LARGE = 1.2; /// The scale factor for one magnification step (1.2) 2223 enum PANGO_SCALE_X_LARGE = 1.4399999999999; /// The scale factor for two magnification steps (1.2 * 1.2). 2224 enum PANGO_SCALE_XX_LARGE = 1.728; /// The scale factor for three magnification steps (1.2 * 1.2 * 1.2). 2225 2226 2227 /** 2228 * Whether the segment should be shifted to center around the baseline. 2229 * Used in vertical writing directions mostly. 2230 */ 2231 enum ANALYSIS_FLAG_CENTERED_BASELINE = 1; 2232 alias PANGO_ANALYSIS_FLAG_CENTERED_BASELINE = ANALYSIS_FLAG_CENTERED_BASELINE; 2233 2234 /** 2235 * This flag is used to mark runs that hold ellipsized text, 2236 * in an ellipsized layout. 2237 */ 2238 enum ANALYSIS_FLAG_IS_ELLIPSIS = 2; 2239 alias PANGO_ANALYSIS_FLAG_IS_ELLIPSIS = ANALYSIS_FLAG_IS_ELLIPSIS; 2240 2241 /** 2242 * This value can be used to set the start_index member of a #PangoAttribute 2243 * such that the attribute covers from the beginning of the text. 2244 */ 2245 enum ATTR_INDEX_FROM_TEXT_BEGINNING = 0; 2246 alias PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING = ATTR_INDEX_FROM_TEXT_BEGINNING; 2247 2248 /** 2249 * A string constant defining the engine type for language engines. 2250 * These engines derive from #PangoEngineLang. 2251 */ 2252 enum ENGINE_TYPE_LANG = "PangoEngineLang"; 2253 alias PANGO_ENGINE_TYPE_LANG = ENGINE_TYPE_LANG; 2254 2255 /** 2256 * A string constant defining the engine type for shaping engines. 2257 * These engines derive from #PangoEngineShape. 2258 */ 2259 enum ENGINE_TYPE_SHAPE = "PangoEngineShape"; 2260 alias PANGO_ENGINE_TYPE_SHAPE = ENGINE_TYPE_SHAPE; 2261 2262 /** 2263 * The %PANGO_GLYPH_EMPTY macro represents a #PangoGlyph value that has a 2264 * special meaning, which is a zero-width empty glyph. This is useful for 2265 * example in shaper modules, to use as the glyph for various zero-width 2266 * Unicode characters (those passing pango_is_zero_width()). 2267 */ 2268 enum GLYPH_EMPTY = 268435455; 2269 alias PANGO_GLYPH_EMPTY = GLYPH_EMPTY; 2270 2271 /** 2272 * The %PANGO_GLYPH_INVALID_INPUT macro represents a #PangoGlyph value that has a 2273 * special meaning of invalid input. #PangoLayout produces one such glyph 2274 * per invalid input UTF-8 byte and such a glyph is rendered as a crossed 2275 * box. 2276 * 2277 * Note that this value is defined such that it has the %PANGO_GLYPH_UNKNOWN_FLAG 2278 * on. 2279 */ 2280 enum GLYPH_INVALID_INPUT = 4294967295; 2281 alias PANGO_GLYPH_INVALID_INPUT = GLYPH_INVALID_INPUT; 2282 2283 /** 2284 * The %PANGO_GLYPH_UNKNOWN_FLAG macro is a flag value that can be added to 2285 * a #gunichar value of a valid Unicode character, to produce a #PangoGlyph 2286 * value, representing an unknown-character glyph for the respective #gunichar. 2287 */ 2288 enum GLYPH_UNKNOWN_FLAG = 268435456; 2289 alias PANGO_GLYPH_UNKNOWN_FLAG = GLYPH_UNKNOWN_FLAG; 2290 2291 /** 2292 * A string constant defining the render type 2293 * for engines that are not rendering-system specific. 2294 */ 2295 enum RENDER_TYPE_NONE = "PangoRenderNone"; 2296 alias PANGO_RENDER_TYPE_NONE = RENDER_TYPE_NONE; 2297 2298 /** 2299 * The %PANGO_SCALE macro represents the scale between dimensions used 2300 * for Pango distances and device units. (The definition of device 2301 * units is dependent on the output device; it will typically be pixels 2302 * for a screen, and points for a printer.) %PANGO_SCALE is currently 2303 * 1024, but this may be changed in the future. 2304 * 2305 * When setting font sizes, device units are always considered to be 2306 * points (as in "12 point font"), rather than pixels. 2307 */ 2308 enum SCALE = 1024; 2309 alias PANGO_SCALE = SCALE; 2310 2311 enum UNKNOWN_GLYPH_HEIGHT = 14; 2312 alias PANGO_UNKNOWN_GLYPH_HEIGHT = UNKNOWN_GLYPH_HEIGHT; 2313 2314 enum UNKNOWN_GLYPH_WIDTH = 10; 2315 alias PANGO_UNKNOWN_GLYPH_WIDTH = UNKNOWN_GLYPH_WIDTH; 2316 2317 /** 2318 * A macro that should be defined by the user prior to including 2319 * the pango.h header. 2320 * The definition should be one of the predefined Pango version 2321 * macros: %PANGO_VERSION_1_2, %PANGO_VERSION_1_4,... 2322 * 2323 * This macro defines the earliest version of Pango that the package is 2324 * required to be able to compile against. 2325 * 2326 * If the compiler is configured to warn about the use of deprecated 2327 * functions, then using functions that were deprecated in version 2328 * %PANGO_VERSION_MIN_REQUIRED or earlier will cause warnings (but 2329 * using functions deprecated in later releases will not). 2330 */ 2331 enum VERSION_MIN_REQUIRED = 2; 2332 alias PANGO_VERSION_MIN_REQUIRED = VERSION_MIN_REQUIRED;