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 gtkc.pangotypes; 26 27 public import gtkc.cairotypes; 28 public import gtkc.glibtypes; 29 public import gtkc.gobjecttypes; 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 struct PangoCairoFontMap; 1218 1219 1220 /** 1221 * The #PangoAnalysis structure stores information about 1222 * the properties of a segment of text. 1223 */ 1224 struct PangoAnalysis 1225 { 1226 /** 1227 * the engine for doing rendering-system-dependent processing. 1228 */ 1229 PangoEngineShape* shapeEngine; 1230 /** 1231 * the engine for doing rendering-system-independent processing. 1232 */ 1233 PangoEngineLang* langEngine; 1234 /** 1235 * the font for this segment. 1236 */ 1237 PangoFont* font; 1238 /** 1239 * the bidirectional level for this segment. 1240 */ 1241 ubyte level; 1242 /** 1243 * the glyph orientation for this segment (A #PangoGravity). 1244 */ 1245 ubyte gravity; 1246 /** 1247 * boolean flags for this segment (currently only one) (Since: 1.16). 1248 */ 1249 ubyte flags; 1250 /** 1251 * the detected script for this segment (A #PangoScript) (Since: 1.18). 1252 */ 1253 ubyte script; 1254 /** 1255 * the detected language for this segment. 1256 */ 1257 PangoLanguage* language; 1258 /** 1259 * extra attributes for this segment. 1260 */ 1261 GSList* extraAttrs; 1262 } 1263 1264 /** 1265 * The #PangoAttrClass structure stores the type and operations for 1266 * a particular type of attribute. The functions in this structure should 1267 * not be called directly. Instead, one should use the wrapper functions 1268 * provided for #PangoAttribute. 1269 */ 1270 struct PangoAttrClass 1271 { 1272 /** 1273 * the type ID for this attribute 1274 */ 1275 PangoAttrType type; 1276 /** */ 1277 extern(C) PangoAttribute* function(PangoAttribute* attr) copy; 1278 /** */ 1279 extern(C) void function(PangoAttribute* attr) destroy; 1280 /** */ 1281 extern(C) int function(PangoAttribute* attr1, PangoAttribute* attr2) equal; 1282 } 1283 1284 /** 1285 * The #PangoAttrColor structure is used to represent attributes that 1286 * are colors. 1287 */ 1288 struct PangoAttrColor 1289 { 1290 /** 1291 * the common portion of the attribute 1292 */ 1293 PangoAttribute attr; 1294 /** 1295 * the #PangoColor which is the value of the attribute 1296 */ 1297 PangoColor color; 1298 } 1299 1300 /** 1301 * The #PangoAttrFloat structure is used to represent attributes with 1302 * a float or double value. 1303 */ 1304 struct PangoAttrFloat 1305 { 1306 /** 1307 * the common portion of the attribute 1308 */ 1309 PangoAttribute attr; 1310 /** 1311 * the value of the attribute 1312 */ 1313 double value; 1314 } 1315 1316 /** 1317 * The #PangoAttrFontDesc structure is used to store an attribute that 1318 * sets all aspects of the font description at once. 1319 */ 1320 struct PangoAttrFontDesc 1321 { 1322 /** 1323 * the common portion of the attribute 1324 */ 1325 PangoAttribute attr; 1326 /** 1327 * the font description which is the value of this attribute 1328 */ 1329 PangoFontDescription* desc; 1330 } 1331 1332 /** 1333 * The #PangoAttrFontFeatures structure is used to represent OpenType 1334 * font features as an attribute. 1335 * 1336 * Since: 1.38 1337 */ 1338 struct PangoAttrFontFeatures 1339 { 1340 /** 1341 * the common portion of the attribute 1342 */ 1343 PangoAttribute attr; 1344 /** 1345 * the featues, as a string in CSS syntax 1346 */ 1347 char* features; 1348 } 1349 1350 /** 1351 * The #PangoAttrInt structure is used to represent attributes with 1352 * an integer or enumeration value. 1353 */ 1354 struct PangoAttrInt 1355 { 1356 /** 1357 * the common portion of the attribute 1358 */ 1359 PangoAttribute attr; 1360 /** 1361 * the value of the attribute 1362 */ 1363 int value; 1364 } 1365 1366 struct PangoAttrIterator; 1367 1368 /** 1369 * The #PangoAttrLanguage structure is used to represent attributes that 1370 * are languages. 1371 */ 1372 struct PangoAttrLanguage 1373 { 1374 /** 1375 * the common portion of the attribute 1376 */ 1377 PangoAttribute attr; 1378 /** 1379 * the #PangoLanguage which is the value of the attribute 1380 */ 1381 PangoLanguage* value; 1382 } 1383 1384 struct PangoAttrList; 1385 1386 /** 1387 * The #PangoAttrShape structure is used to represent attributes which 1388 * impose shape restrictions. 1389 */ 1390 struct PangoAttrShape 1391 { 1392 /** 1393 * the common portion of the attribute 1394 */ 1395 PangoAttribute attr; 1396 /** 1397 * the ink rectangle to restrict to 1398 */ 1399 PangoRectangle inkRect; 1400 /** 1401 * the logical rectangle to restrict to 1402 */ 1403 PangoRectangle logicalRect; 1404 /** 1405 * user data set (see pango_attr_shape_new_with_data()) 1406 */ 1407 void* data; 1408 /** 1409 * copy function for the user data 1410 */ 1411 PangoAttrDataCopyFunc copyFunc; 1412 /** 1413 * destroy function for the user data 1414 */ 1415 GDestroyNotify destroyFunc; 1416 } 1417 1418 /** 1419 * The #PangoAttrSize structure is used to represent attributes which 1420 * set font size. 1421 */ 1422 struct PangoAttrSize 1423 { 1424 /** 1425 * the common portion of the attribute 1426 */ 1427 PangoAttribute attr; 1428 /** 1429 * size of font, in units of 1/%PANGO_SCALE of a point (for 1430 * %PANGO_ATTR_SIZE) or of a device uni (for %PANGO_ATTR_ABSOLUTE_SIZE) 1431 */ 1432 int size; 1433 import std.bitmanip: bitfields; 1434 mixin(bitfields!( 1435 uint, "absolute", 1, 1436 uint, "", 31 1437 )); 1438 } 1439 1440 /** 1441 * The #PangoAttrString structure is used to represent attributes with 1442 * a string value. 1443 */ 1444 struct PangoAttrString 1445 { 1446 /** 1447 * the common portion of the attribute 1448 */ 1449 PangoAttribute attr; 1450 /** 1451 * the string which is the value of the attribute 1452 */ 1453 char* value; 1454 } 1455 1456 struct PangoAttribute 1457 { 1458 /** 1459 * the class structure holding information about the type of the attribute 1460 */ 1461 PangoAttrClass* klass; 1462 /** 1463 * the start index of the range (in bytes). 1464 */ 1465 uint startIndex; 1466 /** 1467 * end index of the range (in bytes). The character at this index 1468 * is not included in the range. 1469 */ 1470 uint endIndex; 1471 } 1472 1473 struct PangoColor 1474 { 1475 /** 1476 * value of red component 1477 */ 1478 ushort red; 1479 /** 1480 * value of green component 1481 */ 1482 ushort green; 1483 /** 1484 * value of blue component 1485 */ 1486 ushort blue; 1487 } 1488 1489 struct PangoContext; 1490 1491 struct PangoContextClass; 1492 1493 struct PangoCoverage; 1494 1495 struct PangoEngine 1496 { 1497 GObject parentInstance; 1498 } 1499 1500 /** 1501 * Class structure for #PangoEngine 1502 */ 1503 struct PangoEngineClass 1504 { 1505 GObjectClass parentClass; 1506 } 1507 1508 /** 1509 * The #PangoEngineInfo structure contains information about a particular 1510 * engine. It contains the following fields: 1511 */ 1512 struct PangoEngineInfo 1513 { 1514 /** 1515 * a unique string ID for the engine. 1516 */ 1517 const(char)* id; 1518 /** 1519 * a string identifying the engine type. 1520 */ 1521 const(char)* engineType; 1522 /** 1523 * a string identifying the render type. 1524 */ 1525 const(char)* renderType; 1526 /** 1527 * array of scripts this engine supports. 1528 */ 1529 PangoEngineScriptInfo* scripts; 1530 /** 1531 * number of items in @scripts. 1532 */ 1533 int nScripts; 1534 } 1535 1536 struct PangoEngineLang 1537 { 1538 PangoEngine parentInstance; 1539 } 1540 1541 /** 1542 * Class structure for #PangoEngineLang 1543 */ 1544 struct PangoEngineLangClass 1545 { 1546 PangoEngineClass parentClass; 1547 /** */ 1548 extern(C) void function(PangoEngineLang* engine, const(char)* text, int len, PangoAnalysis* analysis, PangoLogAttr* attrs, int attrsLen) scriptBreak; 1549 } 1550 1551 /** 1552 * The #PangoEngineScriptInfo structure contains 1553 * information about how the shaper covers a particular script. 1554 */ 1555 struct PangoEngineScriptInfo 1556 { 1557 /** 1558 * a #PangoScript. The value %PANGO_SCRIPT_COMMON has 1559 * the special meaning here of "all scripts" 1560 */ 1561 PangoScript script; 1562 /** 1563 * a semicolon separated list of languages that this 1564 * engine handles for this script. This may be empty, 1565 * in which case the engine is saying that it is a 1566 * fallback choice for all languages for this range, 1567 * but should not be used if another engine 1568 * indicates that it is specific for the language for 1569 * a given code point. An entry in this list of "*" 1570 * indicates that this engine is specific to all 1571 * languages for this range. 1572 */ 1573 const(char)* langs; 1574 } 1575 1576 struct PangoEngineShape 1577 { 1578 PangoEngine parentInstance; 1579 } 1580 1581 /** 1582 * Class structure for #PangoEngineShape 1583 */ 1584 struct PangoEngineShapeClass 1585 { 1586 PangoEngineClass parentClass; 1587 /** */ 1588 extern(C) void function(PangoEngineShape* engine, PangoFont* font, const(char)* itemText, uint itemLength, PangoAnalysis* analysis, PangoGlyphString* glyphs, const(char)* paragraphText, uint paragraphLength) scriptShape; 1589 /** */ 1590 extern(C) PangoCoverageLevel function(PangoEngineShape* engine, PangoFont* font, PangoLanguage* language, dchar wc) covers; 1591 } 1592 1593 struct PangoFont 1594 { 1595 GObject parentInstance; 1596 } 1597 1598 struct PangoFontClass 1599 { 1600 GObjectClass parentClass; 1601 /** 1602 * 1603 * Params: 1604 * font = a #PangoFont 1605 * Return: a newly-allocated #PangoFontDescription object. 1606 */ 1607 extern(C) PangoFontDescription* function(PangoFont* font) describe; 1608 /** 1609 * 1610 * Params: 1611 * font = a #PangoFont 1612 * Return: a newly-allocated #PangoCoverage 1613 * object. 1614 */ 1615 extern(C) PangoCoverage* function(PangoFont* font, PangoLanguage* lang) getCoverage; 1616 /** 1617 * 1618 * Params: 1619 * font = a #PangoFont 1620 * ch = a Unicode character. 1621 * Return: the best matching shaper. 1622 */ 1623 extern(C) PangoEngineShape* function(PangoFont* font, PangoLanguage* lang, 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 * Return: 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 * Return: 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 * Return: 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 * Return: 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 * Return: 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 * Return: 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 * Return: %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 * Return: 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 * Return: 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 * Return: 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 * Return: 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 * Return: 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 PangoScriptForLang 2156 { 2157 char[7] lang; 2158 PangoScript[3] scripts; 2159 } 2160 2161 struct PangoScriptIter; 2162 2163 struct PangoTabArray; 2164 2165 struct PangoCairoFcFontMap 2166 { 2167 PangoFcFontMap parentInstance; 2168 uint serial; 2169 double dpi; 2170 FTLibrary library; 2171 } 2172 2173 /** 2174 * Type of a function that can duplicate user data for an attribute. 2175 * 2176 * Params: 2177 * userData = user data to copy 2178 * 2179 * Return: new copy of @user_data. 2180 */ 2181 public alias extern(C) void* function(void* userData) PangoAttrDataCopyFunc; 2182 2183 /** 2184 * Type of a function filtering a list of attributes. 2185 * 2186 * Params: 2187 * attribute = a Pango attribute 2188 * userData = user data passed to the function 2189 * 2190 * Return: %TRUE if the attribute should be selected for 2191 * filtering, %FALSE otherwise. 2192 */ 2193 public alias extern(C) int function(PangoAttribute* attribute, void* userData) PangoAttrFilterFunc; 2194 2195 /** 2196 * A callback function used by pango_fontset_foreach() when enumerating 2197 * the fonts in a fontset. 2198 * 2199 * Params: 2200 * fontset = a #PangoFontset 2201 * font = a font from @fontset 2202 * userData = callback data 2203 * 2204 * Return: if %TRUE, stop iteration and return immediately. 2205 * 2206 * Since: 1.4 2207 */ 2208 public alias extern(C) int function(PangoFontset* fontset, PangoFont* font, void* userData) PangoFontsetForeachFunc; 2209 2210 /** 2211 * Function type for rendering attributes of type %PANGO_ATTR_SHAPE 2212 * with Pango's Cairo renderer. 2213 * 2214 * Params: 2215 * cr = a Cairo context with current point set to where the shape should 2216 * be rendered 2217 * attr = the %PANGO_ATTR_SHAPE to render 2218 * doPath = whether only the shape path should be appended to current 2219 * path of @cr and no filling/stroking done. This will be set 2220 * to %TRUE when called from pango_cairo_layout_path() and 2221 * pango_cairo_layout_line_path() rendering functions. 2222 * data = user data passed to pango_cairo_context_set_shape_renderer() 2223 */ 2224 public alias extern(C) void function(cairo_t* cr, PangoAttrShape* attr, int doPath, void* data) PangoCairoShapeRendererFunc; 2225 2226 const int PANGO_SCALE = 1024; 2227 const double PANGO_SCALE_XX_SMALL = 0.5787037037037; /// The scale factor for three shrinking steps (1 / (1.2 * 1.2 * 1.2)). 2228 const double PANGO_SCALE_X_SMALL = 0.6444444444444; /// The scale factor for two shrinking steps (1 / (1.2 * 1.2)). 2229 const double PANGO_SCALE_SMALL = 0.8333333333333; /// The scale factor for one shrinking step (1 / 1.2). 2230 const double PANGO_SCALE_MEDIUM = 1.0; /// The scale factor for normal size (1.0). 2231 const double PANGO_SCALE_LARGE = 1.2; /// The scale factor for one magnification step (1.2) 2232 const double PANGO_SCALE_X_LARGE = 1.4399999999999; /// The scale factor for two magnification steps (1.2 * 1.2). 2233 const double PANGO_SCALE_XX_LARGE = 1.728; /// The scale factor for three magnification steps (1.2 * 1.2 * 1.2). 2234