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