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