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