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 module gtkc.pangotypes; 25 26 27 public import gtkc.cairotypes; 28 public import gtkc.glibtypes; 29 public import gtkc.gobjecttypes; 30 31 ///* The pango Basic Types */ 32 public alias void FcPattern; 33 public alias void FcCharSet; 34 public alias void FT_Face; 35 36 37 const int PANGO_SCALE = 1024; 38 const double PANGO_SCALE_XX_SMALL = 0.5787037037037; /// The scale factor for three shrinking steps (1 / (1.2 * 1.2 * 1.2)). 39 const double PANGO_SCALE_X_SMALL = 0.6444444444444; /// The scale factor for two shrinking steps (1 / (1.2 * 1.2)). 40 const double PANGO_SCALE_SMALL = 0.8333333333333; /// The scale factor for one shrinking step (1 / 1.2). 41 const double PANGO_SCALE_MEDIUM = 1.0; /// The scale factor for normal size (1.0). 42 const double PANGO_SCALE_LARGE = 1.2; /// The scale factor for one magnification step (1.2) 43 const double PANGO_SCALE_X_LARGE = 1.4399999999999; /// The scale factor for two magnification steps (1.2 * 1.2). 44 const double PANGO_SCALE_XX_LARGE = 1.728; /// The scale factor for three magnification steps (1.2 * 1.2 * 1.2). 45 46 47 /** 48 * typedef guint32 PangoGlyph; 49 * A PangoGlyph represents a single glyph in the output form of a string. 50 */ 51 public alias uint PangoGlyph; 52 53 /** 54 * typedef gint32 PangoGlyphUnit; 55 * The PangoGlyphUnit type is used to store dimensions within 56 * Pango. Dimensions are stored in 1/PANGO_SCALE of a device unit. 57 * (A device unit might be a pixel for screen display, or 58 * a point on a printer.) PANGO_SCALE is currently 1024, and 59 * may change in the future (unlikely though), but you should not 60 * depend on its exact value. The PANGO_PIXELS() macro can be used 61 * to convert from glyph units into device units with correct rounding. 62 */ 63 public alias int PangoGlyphUnit; 64 65 /** 66 * typedef PangoGlyphItem PangoLayoutRun; 67 * The PangoLayoutRun structure represents a single run within 68 * a PangoLayoutLine; it is simply an alternate name for 69 * PangoGlyphItem. 70 * See the PangoGlyphItem docs for details on the fields. 71 */ 72 public alias PangoGlyphItem PangoLayoutRun; 73 /** 74 * The PangoDirection type represents a direction in the 75 * Unicode bidirectional algorithm; not every value in this 76 * enumeration makes sense for every usage of PangoDirection; 77 * for example, the return value of pango_unichar_direction() 78 * and pango_find_base_dir() cannot be PANGO_DIRECTION_WEAK_LTR 79 * or PANGO_DIRECTION_WEAK_RTL, since every character is either 80 * neutral or has a strong direction; on the other hand 81 * PANGO_DIRECTION_NEUTRAL doesn't make sense to pass 82 * to pango_itemize_with_base_dir(). 83 * The PANGO_DIRECTION_TTB_LTR, PANGO_DIRECTION_TTB_RTL 84 * values come from an earlier interpretation of this 85 * enumeration as the writing direction of a block of 86 * text and are no longer used; See PangoGravity for how 87 * vertical text is handled in Pango. 88 * PANGO_DIRECTION_LTR 89 * A strong left-to-right direction 90 * PANGO_DIRECTION_RTL 91 * A strong right-to-left direction 92 * PANGO_DIRECTION_TTB_LTR 93 * Deprecated value; treated the 94 * same as PANGO_DIRECTION_RTL. 95 * PANGO_DIRECTION_TTB_RTL 96 * Deprecated value; treated the 97 * same as PANGO_DIRECTION_LTR 98 * PANGO_DIRECTION_WEAK_LTR 99 * A weak left-to-right direction 100 * PANGO_DIRECTION_WEAK_RTL 101 * A weak right-to-left direction 102 * PANGO_DIRECTION_NEUTRAL 103 * No direction specified 104 */ 105 public enum PangoDirection 106 { 107 LTR, 108 RTL, 109 TTB_LTR, 110 TTB_RTL, 111 WEAK_LTR, 112 WEAK_RTL, 113 NEUTRAL 114 } 115 /** 116 * The PangoBidiType type represents the bidirectional character 117 * type of a Unicode character as specified by the 118 * Unicode bidirectional algorithm. 119 * PANGO_BIDI_TYPE_L 120 * Left-to-Right 121 * PANGO_BIDI_TYPE_LRE 122 * Left-to-Right Embedding 123 * PANGO_BIDI_TYPE_LRO 124 * Left-to-Right Override 125 * PANGO_BIDI_TYPE_R 126 * Right-to-Left 127 * PANGO_BIDI_TYPE_AL 128 * Right-to-Left Arabic 129 * PANGO_BIDI_TYPE_RLE 130 * Right-to-Left Embedding 131 * PANGO_BIDI_TYPE_RLO 132 * Right-to-Left Override 133 * PANGO_BIDI_TYPE_PDF 134 * Pop Directional Format 135 * PANGO_BIDI_TYPE_EN 136 * European Number 137 * PANGO_BIDI_TYPE_ES 138 * European Number Separator 139 * PANGO_BIDI_TYPE_ET 140 * European Number Terminator 141 * PANGO_BIDI_TYPE_AN 142 * Arabic Number 143 * PANGO_BIDI_TYPE_CS 144 * Common Number Separator 145 * PANGO_BIDI_TYPE_NSM 146 * Nonspacing Mark 147 * PANGO_BIDI_TYPE_BN 148 * Boundary Neutral 149 * PANGO_BIDI_TYPE_B 150 * Paragraph Separator 151 * PANGO_BIDI_TYPE_S 152 * Segment Separator 153 * PANGO_BIDI_TYPE_WS 154 * Whitespace 155 * PANGO_BIDI_TYPE_ON 156 * Other Neutrals 157 * Since 1.22 158 */ 159 public enum PangoBidiType 160 { 161 TYPE_L, 162 TYPE_LRE, 163 TYPE_LRO, 164 TYPE_R, 165 TYPE_AL, 166 TYPE_RLE, 167 TYPE_RLO, 168 /+* Weak types +/ 169 TYPE_PDF, 170 TYPE_EN, 171 TYPE_ES, 172 TYPE_ET, 173 TYPE_AN, 174 TYPE_CS, 175 TYPE_NSM, 176 TYPE_BN, 177 /+* Neutral types +/ 178 TYPE_B, 179 TYPE_S, 180 TYPE_WS, 181 TYPE_ON 182 } 183 /** 184 * An enumeration specifying the various slant styles possible for a font. 185 * PANGO_STYLE_NORMAL 186 * the font is upright. 187 * PANGO_STYLE_OBLIQUE 188 * the font is slanted, but in a roman style. 189 * PANGO_STYLE_ITALIC 190 * the font is slanted in an italic style. 191 */ 192 public enum PangoStyle 193 { 194 NORMAL, 195 OBLIQUE, 196 ITALIC 197 } 198 /** 199 * An enumeration specifying the weight (boldness) of a font. This is a numerical 200 * value ranging from 100 to 900, but there are some predefined values: 201 * PANGO_WEIGHT_THIN 202 * the thin weight (= 100; Since: 1.24) 203 * PANGO_WEIGHT_ULTRALIGHT 204 * the ultralight weight (= 200) 205 * PANGO_WEIGHT_LIGHT 206 * the light weight (= 300) 207 * PANGO_WEIGHT_BOOK 208 * the book weight (= 380; Since: 1.24) 209 * PANGO_WEIGHT_NORMAL 210 * the default weight (= 400) 211 * PANGO_WEIGHT_MEDIUM 212 * the normal weight (= 500; Since: 1.24) 213 * PANGO_WEIGHT_SEMIBOLD 214 * the semibold weight (= 600) 215 * PANGO_WEIGHT_BOLD 216 * the bold weight (= 700) 217 * PANGO_WEIGHT_ULTRABOLD 218 * the ultrabold weight (= 800) 219 * PANGO_WEIGHT_HEAVY 220 * the heavy weight (= 900) 221 * PANGO_WEIGHT_ULTRAHEAVY 222 * the ultraheavy weight (= 1000; Since: 1.24) 223 */ 224 public enum PangoWeight 225 { 226 THIN = 100, 227 ULTRALIGHT = 200, 228 LIGHT = 300, 229 BOOK = 380, 230 NORMAL = 400, 231 MEDIUM = 500, 232 SEMIBOLD = 600, 233 BOLD = 700, 234 ULTRABOLD = 800, 235 HEAVY = 900, 236 ULTRAHEAVY = 1000 237 } 238 /** 239 * An enumeration specifying capitalization variant of the font. 240 * PANGO_VARIANT_NORMAL 241 * A normal font. 242 * PANGO_VARIANT_SMALL_CAPS 243 * A font with the lower case characters 244 * replaced by smaller variants of the capital characters. 245 */ 246 public enum PangoVariant 247 { 248 NORMAL, 249 SMALL_CAPS 250 } 251 /** 252 * An enumeration specifying the width of the font relative to other designs 253 * within a family. 254 * PANGO_STRETCH_ULTRA_CONDENSED 255 * ultra condensed width 256 * PANGO_STRETCH_EXTRA_CONDENSED 257 * extra condensed width 258 * PANGO_STRETCH_CONDENSED 259 * condensed width 260 * PANGO_STRETCH_SEMI_CONDENSED 261 * semi condensed width 262 * PANGO_STRETCH_NORMAL 263 * the normal width 264 * PANGO_STRETCH_SEMI_EXPANDED 265 * semi expanded width 266 * PANGO_STRETCH_EXPANDED 267 * expanded width 268 * PANGO_STRETCH_EXTRA_EXPANDED 269 * extra expanded width 270 * PANGO_STRETCH_ULTRA_EXPANDED 271 * ultra expanded width 272 */ 273 public enum PangoStretch 274 { 275 ULTRA_CONDENSED, 276 EXTRA_CONDENSED, 277 CONDENSED, 278 SEMI_CONDENSED, 279 NORMAL, 280 SEMI_EXPANDED, 281 EXPANDED, 282 EXTRA_EXPANDED, 283 ULTRA_EXPANDED 284 } 285 /** 286 * The bits in a PangoFontMask correspond to fields in a 287 * PangoFontDescription that have been set. 288 * PANGO_FONT_MASK_FAMILY 289 * the font family is specified. 290 * PANGO_FONT_MASK_STYLE 291 * the font style is specified. 292 * PANGO_FONT_MASK_VARIANT 293 * the font variant is specified. 294 * PANGO_FONT_MASK_WEIGHT 295 * the font weight is specified. 296 * PANGO_FONT_MASK_STRETCH 297 * the font stretch is specified. 298 * PANGO_FONT_MASK_SIZE 299 * the font size is specified. 300 * PANGO_FONT_MASK_GRAVITY 301 * the font gravity is specified (Since: 1.16.) 302 */ 303 public enum PangoFontMask 304 { 305 FAMILY = 1 << 0, 306 STYLE = 1 << 1, 307 VARIANT = 1 << 2, 308 WEIGHT = 1 << 3, 309 STRETCH = 1 << 4, 310 SIZE = 1 << 5, 311 GRAVITY = 1 << 6 312 } 313 /** 314 * The PangoAttrType 315 * distinguishes between different types of attributes. Along with the 316 * predefined values, it is possible to allocate additional values 317 * for custom attributes using pango_attr_type_register(). The predefined 318 * values are given below. The type of structure used to store the 319 * attribute is listed in parentheses after the description. 320 * PANGO_ATTR_INVALID 321 * does not happen 322 * PANGO_ATTR_LANGUAGE 323 * language (PangoAttrLanguage) 324 * PANGO_ATTR_FAMILY 325 * font family name list (PangoAttrString) 326 * PANGO_ATTR_STYLE 327 * font slant style (PangoAttrInt) 328 * PANGO_ATTR_WEIGHT 329 * font weight (PangoAttrInt) 330 * PANGO_ATTR_VARIANT 331 * font variant (normal or small caps) (PangoAttrInt) 332 * PANGO_ATTR_STRETCH 333 * font stretch (PangoAttrInt) 334 * PANGO_ATTR_SIZE 335 * font size in points scaled by PANGO_SCALE (PangoAttrInt) 336 * PANGO_ATTR_FONT_DESC 337 * font description (PangoAttrFontDesc) 338 * PANGO_ATTR_FOREGROUND 339 * foreground color (PangoAttrColor) 340 * PANGO_ATTR_BACKGROUND 341 * background color (PangoAttrColor) 342 * PANGO_ATTR_UNDERLINE 343 * whether the text has an underline (PangoAttrInt) 344 * PANGO_ATTR_STRIKETHROUGH 345 * whether the text is struck-through (PangoAttrInt) 346 * PANGO_ATTR_RISE 347 * baseline displacement (PangoAttrInt) 348 * PANGO_ATTR_SHAPE 349 * shape (PangoAttrShape) 350 * PANGO_ATTR_SCALE 351 * font size scale factor (PangoAttrFloat) 352 * PANGO_ATTR_FALLBACK 353 * whether fallback is enabled (PangoAttrInt) 354 * PANGO_ATTR_LETTER_SPACING 355 * letter spacing (PangoAttrInt) 356 * PANGO_ATTR_UNDERLINE_COLOR 357 * underline color (PangoAttrColor) 358 * PANGO_ATTR_STRIKETHROUGH_COLOR 359 * strikethrough color (PangoAttrColor) 360 * PANGO_ATTR_ABSOLUTE_SIZE 361 * font size in pixels scaled by PANGO_SCALE (PangoAttrInt) 362 * PANGO_ATTR_GRAVITY 363 * base text gravity (PangoAttrInt) 364 * PANGO_ATTR_GRAVITY_HINT 365 * gravity hint (PangoAttrInt) 366 */ 367 public enum PangoAttrType 368 { 369 INVALID, /+* 0 is an invalid attribute type +/ 370 LANGUAGE, /+* PangoAttrLanguage +/ 371 FAMILY, /+* PangoAttrString +/ 372 STYLE, /+* PangoAttrInt +/ 373 WEIGHT, /+* PangoAttrInt +/ 374 VARIANT, /+* PangoAttrInt +/ 375 STRETCH, /+* PangoAttrInt +/ 376 SIZE, /+* PangoAttrSize +/ 377 FONT_DESC, /+* PangoAttrFontDesc +/ 378 FOREGROUND, /+* PangoAttrColor +/ 379 BACKGROUND, /+* PangoAttrColor +/ 380 UNDERLINE, /+* PangoAttrInt +/ 381 STRIKETHROUGH, /+* PangoAttrInt +/ 382 RISE, /+* PangoAttrInt +/ 383 SHAPE, /+* PangoAttrShape +/ 384 SCALE, /+* PangoAttrFloat +/ 385 FALLBACK, /+* PangoAttrInt +/ 386 LETTER_SPACING, /+* PangoAttrInt +/ 387 UNDERLINE_COLOR, /+* PangoAttrColor +/ 388 STRIKETHROUGH_COLOR,/+* PangoAttrColor +/ 389 ABSOLUTE_SIZE, /+* PangoAttrSize +/ 390 GRAVITY, /+* PangoAttrInt +/ 391 GRAVITY_HINT /+* PangoAttrInt +/ 392 } 393 /** 394 * the PangoUnderline enumeration is used to specify 395 * whether text should be underlined, and if so, the type 396 * of underlining. 397 * PANGO_UNDERLINE_NONE 398 * no underline should be drawn 399 * PANGO_UNDERLINE_SINGLE 400 * a single underline should be drawn 401 * PANGO_UNDERLINE_DOUBLE 402 * a double underline should be drawn 403 * PANGO_UNDERLINE_LOW 404 * a single underline should be drawn at a position 405 * beneath the ink extents of the text being 406 * underlined. This should be used only for underlining 407 * single characters, such as for keyboard 408 * accelerators. PANGO_UNDERLINE_SINGLE should 409 * be used for extended portions of text. 410 * PANGO_UNDERLINE_ERROR 411 * a wavy underline should be drawn below. 412 * This underline is typically used to indicate 413 * an error such as a possilble mispelling; in some 414 * cases a contrasting color may automatically 415 * be used. This type of underlining is available 416 * since Pango 1.4. 417 */ 418 public enum PangoUnderline 419 { 420 NONE, 421 SINGLE, 422 DOUBLE, 423 LOW, 424 ERROR 425 } 426 /** 427 * A PangoTabAlign specifies where a tab stop appears relative to the text. 428 * PANGO_TAB_LEFT 429 * the tab stop appears to the left of the text. 430 */ 431 public enum PangoTabAlign 432 { 433 LEFT 434 /+* These are not supported now, but may be inn the 435 * future. 436 * 437 * RIGHT, 438 * CENTER, 439 * NUMERIC 440 +/ 441 } 442 /** 443 * A PangoWrapMode describes how to wrap the lines of a PangoLayout to the desired width. 444 * PANGO_WRAP_WORD 445 * wrap lines at word boundaries. 446 * PANGO_WRAP_CHAR 447 * wrap lines at character boundaries. 448 * PANGO_WRAP_WORD_CHAR 449 * wrap lines at word boundaries, but fall back to character boundaries if there is not 450 * enough space for a full word. 451 */ 452 public enum PangoWrapMode 453 { 454 WORD, 455 CHAR, 456 WORD_CHAR 457 } 458 /** 459 * The PangoEllipsizeMode type describes what sort of (if any) 460 * ellipsization should be applied to a line of text. In 461 * the ellipsization process characters are removed from the 462 * text in order to make it fit to a given width and replaced 463 * with an ellipsis. 464 * PANGO_ELLIPSIZE_NONE 465 * No ellipsization 466 * PANGO_ELLIPSIZE_START 467 * Omit characters at the start of the text 468 * PANGO_ELLIPSIZE_MIDDLE 469 * Omit characters in the middle of the text 470 * PANGO_ELLIPSIZE_END 471 * Omit characters at the end of the text 472 */ 473 public enum PangoEllipsizeMode 474 { 475 NONE, 476 START, 477 MIDDLE, 478 END 479 } 480 /** 481 * A PangoAlignment describes how to align the lines of a PangoLayout within the 482 * available space. If the PangoLayout is set to justify 483 * using pango_layout_set_justify(), this only has effect for partial lines. 484 * PANGO_ALIGN_LEFT 485 * Put all available space on the right 486 * PANGO_ALIGN_CENTER 487 * Center the line within the available space 488 * PANGO_ALIGN_RIGHT 489 * Put all available space on the left 490 */ 491 public enum PangoAlignment 492 { 493 LEFT, 494 CENTER, 495 RIGHT 496 } 497 /** 498 * The PangoScript enumeration identifies different writing 499 * systems. The values correspond to the names as defined in the 500 * Unicode standard. 501 * Note that new types may be added in the future. Applications should be ready 502 * to handle unknown values. This enumeration is interchangeable with 503 * GUnicodeScript. See Unicode Standard Annex 504 * #24: Script names. 505 * PANGO_SCRIPT_INVALID_CODE 506 * a value never returned from pango_script_for_unichar() 507 * PANGO_SCRIPT_COMMON 508 * a character used by multiple different scripts 509 * PANGO_SCRIPT_INHERITED 510 * a mark glyph that takes its script from the 511 * base glyph to which it is attached 512 * PANGO_SCRIPT_ARABIC 513 * Arabic 514 * PANGO_SCRIPT_ARMENIAN 515 * Armenian 516 * PANGO_SCRIPT_BENGALI 517 * Bengali 518 * PANGO_SCRIPT_BOPOMOFO 519 * Bopomofo 520 * PANGO_SCRIPT_CHEROKEE 521 * Cherokee 522 * PANGO_SCRIPT_COPTIC 523 * Coptic 524 * PANGO_SCRIPT_CYRILLIC 525 * Cyrillic 526 * PANGO_SCRIPT_DESERET 527 * Deseret 528 * PANGO_SCRIPT_DEVANAGARI 529 * Devanagari 530 * PANGO_SCRIPT_ETHIOPIC 531 * Ethiopic 532 * PANGO_SCRIPT_GEORGIAN 533 * Georgian 534 * PANGO_SCRIPT_GOTHIC 535 * Gothic 536 * PANGO_SCRIPT_GREEK 537 * Greek 538 * PANGO_SCRIPT_GUJARATI 539 * Gujarati 540 * PANGO_SCRIPT_GURMUKHI 541 * Gurmukhi 542 * PANGO_SCRIPT_HAN 543 * Han 544 * PANGO_SCRIPT_HANGUL 545 * Hangul 546 * PANGO_SCRIPT_HEBREW 547 * Hebrew 548 * PANGO_SCRIPT_HIRAGANA 549 * Hiragana 550 * PANGO_SCRIPT_KANNADA 551 * Kannada 552 * PANGO_SCRIPT_KATAKANA 553 * Katakana 554 * PANGO_SCRIPT_KHMER 555 * Khmer 556 * PANGO_SCRIPT_LAO 557 * Lao 558 * PANGO_SCRIPT_LATIN 559 * Latin 560 * PANGO_SCRIPT_MALAYALAM 561 * Malayalam 562 * PANGO_SCRIPT_MONGOLIAN 563 * Mongolian 564 * PANGO_SCRIPT_MYANMAR 565 * Myanmar 566 * PANGO_SCRIPT_OGHAM 567 * Ogham 568 * PANGO_SCRIPT_OLD_ITALIC 569 * Old Italic 570 * PANGO_SCRIPT_ORIYA 571 * Oriya 572 * PANGO_SCRIPT_RUNIC 573 * Runic 574 * PANGO_SCRIPT_SINHALA 575 * Sinhala 576 * PANGO_SCRIPT_SYRIAC 577 * Syriac 578 * PANGO_SCRIPT_TAMIL 579 * Tamil 580 * PANGO_SCRIPT_TELUGU 581 * Telugu 582 * PANGO_SCRIPT_THAANA 583 * Thaana 584 * PANGO_SCRIPT_THAI 585 * Thai 586 * PANGO_SCRIPT_TIBETAN 587 * Tibetan 588 * PANGO_SCRIPT_CANADIAN_ABORIGINAL 589 * Canadian Aboriginal 590 * PANGO_SCRIPT_YI 591 * Yi 592 * PANGO_SCRIPT_TAGALOG 593 * Tagalog 594 * PANGO_SCRIPT_HANUNOO 595 * Hanunoo 596 * PANGO_SCRIPT_BUHID 597 * Buhid 598 * PANGO_SCRIPT_TAGBANWA 599 * Tagbanwa 600 * PANGO_SCRIPT_BRAILLE 601 * Braille 602 * PANGO_SCRIPT_CYPRIOT 603 * Cypriot 604 * PANGO_SCRIPT_LIMBU 605 * Limbu 606 * PANGO_SCRIPT_OSMANYA 607 * Osmanya 608 * PANGO_SCRIPT_SHAVIAN 609 * Shavian 610 * PANGO_SCRIPT_LINEAR_B 611 * Linear B 612 * PANGO_SCRIPT_TAI_LE 613 * Tai Le 614 * PANGO_SCRIPT_UGARITIC 615 * Ugaritic 616 * PANGO_SCRIPT_NEW_TAI_LUE 617 * New Tai Lue. Since 1.10 618 * PANGO_SCRIPT_BUGINESE 619 * Buginese. Since 1.10 620 * PANGO_SCRIPT_GLAGOLITIC 621 * Glagolitic. Since 1.10 622 * PANGO_SCRIPT_TIFINAGH 623 * Tifinagh. Since 1.10 624 * PANGO_SCRIPT_SYLOTI_NAGRI 625 * Syloti Nagri. Since 1.10 626 * PANGO_SCRIPT_OLD_PERSIAN 627 * Old Persian. Since 1.10 628 * PANGO_SCRIPT_KHAROSHTHI 629 * Kharoshthi. Since 1.10 630 * PANGO_SCRIPT_UNKNOWN 631 * an unassigned code point. Since 1.14 632 * PANGO_SCRIPT_BALINESE 633 * Balinese. Since 1.14 634 * PANGO_SCRIPT_CUNEIFORM 635 * Cuneiform. Since 1.14 636 * PANGO_SCRIPT_PHOENICIAN 637 * Phoenician. Since 1.14 638 * PANGO_SCRIPT_PHAGS_PA 639 * Phags-pa. Since 1.14 640 * PANGO_SCRIPT_NKO 641 * N'Ko. Since 1.14 642 * PANGO_SCRIPT_KAYAH_LI 643 * Kayah Li. Since 1.20.1 644 * PANGO_SCRIPT_LEPCHA 645 * Lepcha. Since 1.20.1 646 * PANGO_SCRIPT_REJANG 647 * Rejang. Since 1.20.1 648 * PANGO_SCRIPT_SUNDANESE 649 * Sundanese. Since 1.20.1 650 * PANGO_SCRIPT_SAURASHTRA 651 * Saurashtra. Since 1.20.1 652 * PANGO_SCRIPT_CHAM 653 * Cham. Since 1.20.1 654 * PANGO_SCRIPT_OL_CHIKI 655 * Ol Chiki. Since 1.20.1 656 * PANGO_SCRIPT_VAI 657 * Vai. Since 1.20.1 658 * PANGO_SCRIPT_CARIAN 659 * Carian. Since 1.20.1 660 * PANGO_SCRIPT_LYCIAN 661 * Lycian. Since 1.20.1 662 * PANGO_SCRIPT_LYDIAN 663 * Lydian. Since 1.20.1 664 * PANGO_SCRIPT_BATAK 665 * Batak. Since 1.32 666 * PANGO_SCRIPT_BRAHMI 667 * Brahmi. Since 1.32 668 * PANGO_SCRIPT_MANDAIC 669 * Mandaic. Since 1.32 670 * PANGO_SCRIPT_CHAKMA 671 * Chakma. Since: 1.32 672 * PANGO_SCRIPT_MEROITIC_CURSIVE 673 * Meroitic Cursive. Since: 1.32 674 * PANGO_SCRIPT_MEROITIC_HIEROGLYPHS 675 * Meroitic Hieroglyphs. Since: 1.32 676 * PANGO_SCRIPT_MIAO 677 * Miao. Since: 1.32 678 * PANGO_SCRIPT_SHARADA 679 * Sharada. Since: 1.32 680 * PANGO_SCRIPT_SORA_SOMPENG 681 * Sora Sompeng. Since: 1.32 682 * PANGO_SCRIPT_TAKRI 683 * Takri. Since: 1.32 684 */ 685 public enum PangoScript 686 { 687 INVALID_CODE = -1, 688 COMMON = 0, /+* Zyyy +/ 689 INHERITED, /+* Qaai +/ 690 ARABIC, /+* Arab +/ 691 ARMENIAN, /+* Armn +/ 692 BENGALI, /+* Beng +/ 693 BOPOMOFO, /+* Bopo +/ 694 CHEROKEE, /+* Cher +/ 695 COPTIC, /+* Qaac +/ 696 CYRILLIC, /+* Cyrl (Cyrs) +/ 697 DESERET, /+* Dsrt +/ 698 DEVANAGARI, /+* Deva +/ 699 ETHIOPIC, /+* Ethi +/ 700 GEORGIAN, /+* Geor (Geon, Geoa) +/ 701 GOTHIC, /+* Goth +/ 702 GREEK, /+* Grek +/ 703 GUJARATI, /+* Gujr +/ 704 GURMUKHI, /+* Guru +/ 705 HAN, /+* Hani +/ 706 HANGUL, /+* Hang +/ 707 HEBREW, /+* Hebr +/ 708 HIRAGANA, /+* Hira +/ 709 KANNADA, /+* Knda +/ 710 KATAKANA, /+* Kana +/ 711 KHMER, /+* Khmr +/ 712 LAO, /+* Laoo +/ 713 LATIN, /+* Latn (Latf, Latg) +/ 714 MALAYALAM, /+* Mlym +/ 715 MONGOLIAN, /+* Mong +/ 716 MYANMAR, /+* Mymr +/ 717 OGHAM, /+* Ogam +/ 718 OLD_ITALIC, /+* Ital +/ 719 ORIYA, /+* Orya +/ 720 RUNIC, /+* Runr +/ 721 SINHALA, /+* Sinh +/ 722 SYRIAC, /+* Syrc (Syrj, Syrn, Syre) +/ 723 TAMIL, /+* Taml +/ 724 TELUGU, /+* Telu +/ 725 THAANA, /+* Thaa +/ 726 THAI, /+* Thai +/ 727 TIBETAN, /+* Tibt +/ 728 CANADIAN_ABORIGINAL, /+* Cans +/ 729 YI, /+* Yiii +/ 730 TAGALOG, /+* Tglg +/ 731 HANUNOO, /+* Hano +/ 732 BUHID, /+* Buhd +/ 733 TAGBANWA, /+* Tagb +/ 734 /+* Unicode-4.0 additions +/ 735 BRAILLE, /+* Brai +/ 736 CYPRIOT, /+* Cprt +/ 737 LIMBU, /+* Limb +/ 738 OSMANYA, /+* Osma +/ 739 SHAVIAN, /+* Shaw +/ 740 LINEAR_B, /+* Linb +/ 741 TAI_LE, /+* Tale +/ 742 UGARITIC, /+* Ugar +/ 743 /+* Unicode-4.1 additions +/ 744 NEW_TAI_LUE, /+* Talu +/ 745 BUGINESE, /+* Bugi +/ 746 GLAGOLITIC, /+* Glag +/ 747 TIFINAGH, /+* Tfng +/ 748 SYLOTI_NAGRI, /+* Sylo +/ 749 OLD_PERSIAN, /+* Xpeo +/ 750 KHAROSHTHI, /+* Khar +/ 751 /+* Unicode-5.0 additions +/ 752 UNKNOWN, /+* Zzzz +/ 753 BALINESE, /+* Bali +/ 754 CUNEIFORM, /+* Xsux +/ 755 PHOENICIAN, /+* Phnx +/ 756 PHAGS_PA, /+* Phag +/ 757 NKO, /+* Nkoo +/ 758 /+* Unicode-5.1 additions +/ 759 KAYAH_LI, /+* Kali +/ 760 LEPCHA, /+* Lepc +/ 761 REJANG, /+* Rjng +/ 762 SUNDANESE, /+* Sund +/ 763 SAURASHTRA, /+* Saur +/ 764 CHAM, /+* Cham +/ 765 OL_CHIKI, /+* Olck +/ 766 VAI, /+* Vaii +/ 767 CARIAN, /+* Cari +/ 768 LYCIAN, /+* Lyci +/ 769 LYDIAN, /+* Lydi +/ 770 /+* Unicode-6.0 additions +/ 771 BATAK, /+* Batk +/ 772 BRAHMI, /+* Brah +/ 773 MANDAIC, /+* Mand +/ 774 /+* Unicode-6.1 additions +/ 775 CHAKMA, /+* Cakm +/ 776 MEROITIC_CURSIVE, /+* Merc +/ 777 MEROITIC_HIEROGLYPHS,/+* Mero +/ 778 MIAO, /+* Plrd +/ 779 SHARADA, /+* Shrd +/ 780 SORA_SOMPENG, /+* Sora +/ 781 TAKRI /+* Takr +/ 782 } 783 /** 784 * The PangoGravity type represents the orientation of glyphs in a segment 785 * of text. This is useful when rendering vertical text layouts. In 786 * those situations, the layout is rotated using a non-identity PangoMatrix, 787 * and then glyph orientation is controlled using PangoGravity. 788 * Not every value in this enumeration makes sense for every usage of 789 * PangoGravity; for example, PANGO_GRAVITY_AUTO only can be passed to 790 * pango_context_set_base_gravity() and can only be returned by 791 * pango_context_get_base_gravity(). 792 * See also: PangoGravityHint 793 * PANGO_GRAVITY_SOUTH 794 * Glyphs stand upright (default) 795 * PANGO_GRAVITY_EAST 796 * Glyphs are rotated 90 degrees clockwise 797 * PANGO_GRAVITY_NORTH 798 * Glyphs are upside-down 799 * PANGO_GRAVITY_WEST 800 * Glyphs are rotated 90 degrees counter-clockwise 801 * PANGO_GRAVITY_AUTO 802 * Gravity is resolved from the context matrix 803 * Since 1.16 804 */ 805 public enum PangoGravity 806 { 807 SOUTH, 808 EAST, 809 NORTH, 810 WEST, 811 AUTO 812 } 813 /** 814 * The PangoGravityHint defines how horizontal scripts should behave in a 815 * vertical context. That is, English excerpt in a vertical paragraph for 816 * example. 817 * See PangoGravity. 818 * PANGO_GRAVITY_HINT_NATURAL 819 * scripts will take their natural gravity based 820 * on the base gravity and the script. This is the default. 821 * PANGO_GRAVITY_HINT_STRONG 822 * always use the base gravity set, regardless of 823 * the script. 824 * PANGO_GRAVITY_HINT_LINE 825 * for scripts not in their natural direction (eg. 826 * Latin in East gravity), choose per-script gravity such that every script 827 * respects the line progression. This means, Latin and Arabic will take 828 * opposite gravities and both flow top-to-bottom for example. 829 * Since 1.16 830 */ 831 public enum PangoGravityHint 832 { 833 NATURAL, 834 STRONG, 835 LINE 836 } 837 /** 838 * PangoRenderPart defines different items to render for such 839 * purposes as setting colors. 840 * PANGO_RENDER_PART_FOREGROUND 841 * the text itself 842 * PANGO_RENDER_PART_BACKGROUND 843 * the area behind the text 844 * PANGO_RENDER_PART_UNDERLINE 845 * underlines 846 * PANGO_RENDER_PART_STRIKETHROUGH 847 * strikethrough lines 848 * Since 1.8 849 */ 850 public enum PangoRenderPart 851 { 852 FOREGROUND, 853 BACKGROUND, 854 UNDERLINE, 855 STRIKETHROUGH 856 } 857 /** 858 * Used to indicate how well a font can represent a particular Unicode 859 * character point for a particular script. 860 * PANGO_COVERAGE_NONE 861 * The character is not representable with the font. 862 * PANGO_COVERAGE_FALLBACK 863 * The character is represented in a way that may be 864 * comprehensible but is not the correct graphical form. 865 * For instance, a Hangul character represented as a 866 * a sequence of Jamos, or a Latin transliteration of 867 * a Cyrillic word. 868 * PANGO_COVERAGE_APPROXIMATE 869 * The character is represented as basically the correct 870 * graphical form, but with a stylistic variant inappropriate for 871 * the current script. 872 * PANGO_COVERAGE_EXACT 873 * The character is represented as the correct graphical form. 874 */ 875 public enum PangoCoverageLevel 876 { 877 NONE, 878 FALLBACK, 879 APPROXIMATE, 880 EXACT 881 } 882 883 /** 884 * Main Gtk struct. 885 * The PangoContext structure stores global information 886 * used to control the itemization process. 887 */ 888 public struct PangoContext{} 889 890 891 /** 892 * The PangoItem structure stores information about 893 * a segment of text. It contains the following fields: 894 */ 895 public struct PangoItem 896 { 897 int offset; 898 int length; 899 int numChars; 900 PangoAnalysis analysis; 901 } 902 903 904 /** 905 * The PangoAnalysis structure stores information about 906 * the properties of a segment of text. It has the following 907 * fields: 908 * PangoEngineShape *shape_engine; 909 * the engine for doing rendering-system-dependent processing. 910 * PangoEngineLang *lang_engine; 911 * the engine for doing rendering-system-independent processing. 912 * PangoFont *font; 913 * the font for this segment. 914 * guint8 level; 915 * the bidirectional level for this segment. 916 * guint8 gravity; 917 * the glyph orientation for this segment (A PangoGravity). 918 * guint8 flags; 919 * boolean flags for this segment (currently only one) (Since: 1.16). 920 * guint8 script; 921 * the detected script for this segment (A PangoScript) (Since: 1.18). 922 * PangoLanguage *language; 923 * the detected language for this segment. 924 * GSList *extra_attrs; 925 * extra attributes for this segment. 926 */ 927 public struct PangoAnalysis 928 { 929 PangoEngineShape *shapeEngine; 930 PangoEngineLang *langEngine; 931 PangoFont *font; 932 ubyte level; 933 ubyte gravity; /+* PangoGravity +/ 934 ubyte flags; 935 ubyte script; /+* PangoScript +/ 936 PangoLanguage *language; 937 GSList *extraAttrs; 938 } 939 940 941 /** 942 * The PangoLogAttr structure stores information 943 * about the attributes of a single character. 944 * guint is_line_break : 1; 945 * if set, can break line in front of character 946 * guint is_mandatory_break : 1; 947 * if set, must break line in front of character 948 * guint is_char_break : 1; 949 * if set, can break here when doing character wrapping 950 * guint is_white : 1; 951 * is whitespace character 952 * guint is_cursor_position : 1; 953 * if set, cursor can appear in front of character. 954 * i.e. this is a grapheme boundary, or the first character 955 * in the text. 956 * This flag implements Unicode's 957 * Grapheme 958 * Cluster Boundaries semantics. 959 * guint is_word_start : 1; 960 * is first character in a word 961 * guint is_word_end : 1; 962 * is first non-word char after a word 963 * Note that in degenerate cases, you could have both is_word_start 964 * and is_word_end set for some character. 965 * guint is_sentence_boundary : 1; 966 * is a sentence boundary. 967 * There are two ways to divide sentences. The first assigns all 968 * inter-sentence whitespace/control/format chars to some sentence, 969 * so all chars are in some sentence; is_sentence_boundary denotes 970 * the boundaries there. The second way doesn't assign 971 * between-sentence spaces, etc. to any sentence, so 972 * is_sentence_start/is_sentence_end mark the boundaries 973 * of those sentences. 974 * guint is_sentence_start : 1; 975 * is first character in a sentence 976 * guint is_sentence_end : 1; 977 * is first char after a sentence. 978 * Note that in degenerate cases, you could have both is_sentence_start 979 * and is_sentence_end set for some character. (e.g. no space after a 980 * period, so the next sentence starts right away) 981 * guint backspace_deletes_character : 1; 982 * if set, backspace deletes one character 983 * rather than the entire grapheme cluster. This 984 * field is only meaningful on grapheme 985 * boundaries (where is_cursor_position is 986 * set). In some languages, the full grapheme 987 * (e.g. letter + diacritics) is considered a 988 * unit, while in others, each decomposed 989 * character in the grapheme is a unit. In the 990 * default implementation of pango_break(), this 991 * bit is set on all grapheme boundaries except 992 * those following Latin, Cyrillic or Greek base 993 * characters. 994 * guint is_expandable_space : 1; 995 * is a whitespace character that can possibly be 996 * expanded for justification purposes. (Since: 1.18) 997 * guint is_word_boundary : 1; 998 * is a word boundary. 999 * More specifically, means that this is not a position in the middle 1000 * of a word. For example, both sides of a punctuation mark are 1001 * considered word boundaries. This flag is particularly useful when 1002 * selecting text word-by-word. 1003 * This flag implements Unicode's 1004 * Word 1005 * Boundaries semantics. 1006 * (Since: 1.22) 1007 */ 1008 public struct PangoLogAttr 1009 { 1010 uint bitfield0; 1011 //uint isLineBreak : 1; /+* Can break line inn front of character +/ 1012 //uint isMandatoryBreak : 1; /+* Must break line inn front of character +/ 1013 //uint isCharBreak : 1; /+* Can break here when doing char wrap +/ 1014 //uint isWhite : 1; /+* Whitespace character +/ 1015 /+* Cursor can appear inn front of character (i.e. this is a grapheme 1016 * boundary, or the first character inn the text). 1017 +/ 1018 //uint isCursorPosition : 1; 1019 /+* Note that inn degenerate cases, you could have both start/end set on 1020 * some text, most likely for sentences (e.g. no space after a period, so 1021 * the next sentence starts right away). 1022 +/ 1023 //uint isWordStart : 1; /+* first character inn a word +/ 1024 //uint isWordEnd : 1; /+* is first non-word char after a word +/ 1025 /+* There are two ways to divide sentences. The first assigns all 1026 * intersentence whitespace/control/format chars to some sentence, 1027 * so all chars are inn some sentence; isSentenceBoundary denotes 1028 * the boundaries there. The second way doesn't assign 1029 * between-sentence spaces, etc. to any sentence, so 1030 * isSentenceStart/isSentenceEnd mark the boundaries of those 1031 * sentences. 1032 +/ 1033 //uint isSentenceBoundary : 1; 1034 //uint isSentenceStart : 1; /+* first character inn a sentence +/ 1035 //uint isSentenceEnd : 1; /+* first non-sentence char after a sentence +/ 1036 /+* If set, backspace deletes one character rather than 1037 * the entire grapheme cluster. 1038 +/ 1039 //uint backspaceDeletesCharacter : 1; 1040 /+* Only few space variants (U+0020 and U+00A0) have variable 1041 * width during justification. 1042 +/ 1043 //uint isExpandableSpace : 1; 1044 /+* Word boundary as defined by UAX#29 +/ 1045 //uint isWordBoundary : 1; /+* is NOT inn the middle of a word +/ 1046 } 1047 1048 1049 /** 1050 * The PangoRectangle structure represents a rectangle. It is frequently 1051 * used to represent the logical or ink extents of a single glyph or section 1052 * of text. (See, for instance, pango_font_get_glyph_extents()) 1053 * int x; 1054 * X coordinate of the left side of the rectangle. 1055 * int y; 1056 * Y coordinate of the the top side of the rectangle. 1057 * int width; 1058 * width of the rectangle. 1059 * int height; 1060 * height of the rectangle. 1061 */ 1062 public struct PangoRectangle 1063 { 1064 int x; 1065 int y; 1066 int width; 1067 int height; 1068 } 1069 1070 1071 /** 1072 * Main Gtk struct. 1073 * A structure specifying a transformation between user-space 1074 * coordinates and device coordinates. The transformation 1075 * is given by 1076 * x_device = x_user * matrix->xx + y_user * matrix->xy + matrix->x0; 1077 * y_device = x_user * matrix->yx + y_user * matrix->yy + matrix->y0; 1078 * double xx; 1079 * 1st component of the transformation matrix 1080 * double xy; 1081 * 2nd component of the transformation matrix 1082 * double yx; 1083 * 3rd component of the transformation matrix 1084 * double yy; 1085 * 4th component of the transformation matrix 1086 * double x0; 1087 * x translation 1088 * double y0; 1089 * y translation 1090 * Since 1.6 1091 */ 1092 public struct PangoMatrix 1093 { 1094 double xx; 1095 double xy; 1096 double yx; 1097 double yy; 1098 double x0; 1099 double y0; 1100 } 1101 1102 1103 /** 1104 * The PangoGlyphInfo structure represents a single glyph together with 1105 * positioning information and visual attributes. 1106 * It contains the following fields. 1107 * PangoGlyph glyph; 1108 * the glyph itself. 1109 * PangoGlyphGeometry geometry; 1110 * the positional information about the glyph. 1111 * PangoGlyphVisAttr attr; 1112 * the visual attributes of the glyph. 1113 */ 1114 public struct PangoGlyphInfo 1115 { 1116 PangoGlyph glyph; 1117 PangoGlyphGeometry geometry; 1118 PangoGlyphVisAttr attr; 1119 } 1120 1121 1122 /** 1123 * The PangoGlyphGeometry structure contains width and positioning 1124 * information for a single glyph. 1125 * PangoGlyphUnit width; 1126 * the logical width to use for the the character. 1127 * PangoGlyphUnit x_offset; 1128 * horizontal offset from nominal character position. 1129 * PangoGlyphUnit y_offset; 1130 * vertical offset from nominal character position. 1131 */ 1132 public struct PangoGlyphGeometry 1133 { 1134 PangoGlyphUnit width; 1135 PangoGlyphUnit xOffset; 1136 PangoGlyphUnit yOffset; 1137 } 1138 1139 1140 /** 1141 * The PangoGlyphVisAttr is used to communicate information between 1142 * the shaping phase and the rendering phase. More attributes may be 1143 * added in the future. 1144 * guint is_cluster_start : 1; 1145 * set for the first logical glyph in each cluster. (Clusters 1146 * are stored in visual order, within the cluster, glyphs 1147 * are always ordered in logical order, since visual 1148 * order is meaningless; that is, in Arabic text, accent glyphs 1149 * follow the glyphs for the base character.) 1150 */ 1151 public struct PangoGlyphVisAttr 1152 { 1153 uint bitfield0; 1154 //uint isClusterStart : 1; 1155 } 1156 1157 1158 /** 1159 * The PangoGlyphString structure is used to store strings 1160 * of glyphs with geometry and visual attribute information. 1161 * The storage for the glyph information is owned 1162 * by the structure which simplifies memory management. 1163 */ 1164 public struct PangoGlyphString 1165 { 1166 int numGlyphs; 1167 PangoGlyphInfo *glyphs; 1168 /+* This is a memory inefficient way of representing the information 1169 * here - each value gives the byte index within the text 1170 * corresponding to the glyph string of the start of the cluster to 1171 * which the glyph belongs. 1172 +/ 1173 int *logClusters; 1174 } 1175 1176 1177 /** 1178 * A PangoGlyphItem is a pair of a PangoItem and the glyphs 1179 * resulting from shaping the text corresponding to an item. 1180 * As an example of the usage of PangoGlyphItem, the results 1181 * of shaping text with PangoLayout is a list of PangoLayoutLine, 1182 * each of which contains a list of PangoGlyphItem. 1183 */ 1184 public struct PangoGlyphItem 1185 { 1186 PangoItem *item; 1187 PangoGlyphString *glyphs; 1188 } 1189 1190 1191 /** 1192 * A PangoGlyphItemIter is an iterator over the clusters in a 1193 * PangoGlyphItem. The forward direction of the 1194 * iterator is the logical direction of text. That is, with increasing 1195 * start_index and start_char values. If glyph_item is right-to-left 1196 * (that is, if glyph_item->item->analysis.level is odd), 1197 * then start_glyph decreases as the iterator moves forward. Moreover, 1198 * in right-to-left cases, start_glyph is greater than end_glyph. 1199 * An iterator should be initialized using either of 1200 * pango_glyph_item_iter_init_start() and 1201 * pango_glyph_item_iter_init_end(), for forward and backward iteration 1202 * respectively, and walked over using any desired mixture of 1203 * pango_glyph_item_iter_next_cluster() and 1204 * pango_glyph_item_iter_prev_cluster(). A common idiom for doing a 1205 * forward iteration over the clusters is: 1206 * PangoGlyphItemIter cluster_iter; 1207 * gboolean have_cluster; 1208 * for (have_cluster = pango_glyph_item_iter_init_start (cluster_iter, 1209 */ 1210 public struct PangoGlyphItemIter 1211 { 1212 PangoGlyphItem *glyphItem; 1213 char *text; 1214 int startGlyph; 1215 int startIndex; 1216 int startChar; 1217 int endGlyph; 1218 int endIndex; 1219 int endChar; 1220 } 1221 1222 1223 /** 1224 * The PangoFontDescription structure represents the description 1225 * of an ideal font. These structures are used both to list 1226 * what fonts are available on the system and also for specifying 1227 * the characteristics of a font to load. 1228 */ 1229 public struct PangoFontDescription{} 1230 1231 1232 /** 1233 * A PangoFontMetrics structure holds the overall metric information 1234 * for a font (possibly restricted to a script). The fields of this 1235 * structure are private to implementations of a font backend. See 1236 * the documentation of the corresponding getters for documentation 1237 * of their meaning. 1238 */ 1239 public struct PangoFontMetrics 1240 { 1241 uint refCount; 1242 int ascent; 1243 int descent; 1244 int approximateCharWidth; 1245 int approximateDigitWidth; 1246 int underlinePosition; 1247 int underlineThickness; 1248 int strikethroughPosition; 1249 int strikethroughThickness; 1250 } 1251 1252 1253 /** 1254 * Main Gtk struct. 1255 * The PangoFont structure is used to represent 1256 * a font in a rendering-system-independent matter. 1257 * To create an implementation of a PangoFont, 1258 * the rendering-system specific code should allocate 1259 * a larger structure that contains a nested 1260 * PangoFont, fill in the klass member of 1261 * the nested PangoFont with a pointer to 1262 * a appropriate PangoFontClass, then call 1263 * pango_font_init() on the structure. 1264 * The PangoFont structure contains one member 1265 * which the implementation fills in. 1266 */ 1267 public struct PangoFont{} 1268 1269 1270 /** 1271 * The PangoFontFamily structure is used to represent a family of related 1272 * font faces. The faces in a family share a common design, but differ in 1273 * slant, weight, width and other aspects. 1274 */ 1275 public struct PangoFontFamily{} 1276 1277 1278 /** 1279 * The PangoFontFace structure is used to represent a group of fonts with 1280 * the same family, slant, weight, width, but varying sizes. 1281 */ 1282 public struct PangoFontFace{} 1283 1284 1285 /** 1286 * The PangoFontMap represents the set of fonts available for a 1287 * particular rendering system. This is a virtual object with 1288 * implementations being specific to particular rendering systems. To 1289 * create an implementation of a PangoFontMap, the rendering-system 1290 * specific code should allocate a larger structure that contains a nested 1291 * PangoFontMap, fill in the klass member of the nested PangoFontMap with a 1292 * pointer to a appropriate PangoFontMapClass, then call 1293 * pango_font_map_init() on the structure. 1294 * The PangoFontMap structure contains one member which the implementation 1295 * fills in. 1296 */ 1297 public struct PangoFontMap{} 1298 1299 1300 /** 1301 * The PangoFontMapClass structure holds the virtual functions for 1302 * a particular PangoFontMap implementation. 1303 * GObjectClass parent_class; 1304 * parent GObjectClass. 1305 * load_font () 1306 * a function to load a font with a given description. See 1307 * pango_font_map_load_font(). 1308 * list_families () 1309 * A function to list available font families. See 1310 * pango_font_map_list_families(). 1311 * load_fontset () 1312 * a function to load a fontset with a given description 1313 * suitable for a particular language. See 1314 * pango_font_map_load_fontset(). 1315 * const char *shape_engine_type; 1316 * the type of rendering-system-dependent engines that 1317 * can handle fonts of this fonts loaded with this fontmap. 1318 * get_serial () 1319 * a function to get the serial number of the fontmap. 1320 * See pango_font_map_get_serial(). 1321 * changed () 1322 */ 1323 public struct PangoFontMapClass 1324 { 1325 GObjectClass parentClass; 1326 extern(C) PangoFont * function(PangoFontMap* fontmap, PangoContext* context, PangoFontDescription* desc) loadFont; 1327 extern(C) void function(PangoFontMap* fontmap, PangoFontFamily*** families, int* nFamilies) listFamilies; 1328 extern(C) PangoFontset * function(PangoFontMap* fontmap, PangoContext* context, PangoFontDescription* desc, PangoLanguage* language) loadFontset; 1329 char *shapeEngineType; 1330 extern(C) uint function(PangoFontMap* fontmap) getSerial; 1331 extern(C) void function(PangoFontMap* fontmap) changed; 1332 } 1333 1334 1335 /** 1336 * A PangoFontset represents a set of PangoFont to use 1337 * when rendering text. It is the result of resolving a 1338 * PangoFontDescription against a particular PangoContext. 1339 * It has operations for finding the component font for 1340 * a particular Unicode character, and for finding a composite 1341 * set of metrics for the entire fontset. 1342 */ 1343 public struct PangoFontset{} 1344 1345 1346 /** 1347 * The PangoFontsetClass structure holds the virtual functions for 1348 * a particular PangoFontset implementation. 1349 * GObjectClass parent_class; 1350 * parent GObjectClass. 1351 * get_font () 1352 * a function to get the font in the fontset that contains the 1353 * best glyph for the given Unicode character; see pango_fontset_get_font(). 1354 * get_metrics () 1355 * a function to get overall metric information for the fonts 1356 * in the fontset; see pango_fontset_get_metrics(). 1357 * get_language () 1358 * a function to get the language of the fontset. 1359 * foreach () 1360 * a function to loop over the fonts in the fontset. See 1361 * pango_fontset_foreach(). 1362 */ 1363 public struct PangoFontsetClass 1364 { 1365 GObjectClass parentClass; 1366 extern(C) PangoFont * function(PangoFontset* fontset, uint wc) getFont; 1367 extern(C) PangoFontMetrics * function(PangoFontset* fontset) getMetrics; 1368 extern(C) PangoLanguage * function(PangoFontset* fontset) getLanguage; 1369 extern(C) void function(PangoFontset* fontset, PangoFontsetForeachFunc func, void* data) foreac; 1370 } 1371 1372 1373 /** 1374 * PangoFontsetSimple is a implementation of the abstract 1375 * PangoFontset base class in terms of an array of fonts, 1376 * which the creator provides when constructing the 1377 * PangoFontsetSimple. 1378 */ 1379 public struct PangoFontsetSimple{} 1380 1381 1382 /** 1383 * The PangoAttrClass structure stores the type and operations for 1384 * a particular type of attribute. The functions in this structure should 1385 * not be called directly. Instead, one should use the wrapper functions 1386 * provided for PangoAttribute. 1387 * PangoAttrType type; 1388 * the type ID for this attribute 1389 * copy () 1390 * function to duplicate an attribute of this type (see pango_attribute_copy()) 1391 * destroy () 1392 * function to free an attribute of this type (see pango_attribute_destroy()) 1393 * equal () 1394 * function to check two attributes of this type for equality (see pango_attribute_equal()) 1395 */ 1396 public struct PangoAttrClass 1397 { 1398 PangoAttrType type; 1399 extern(C) PangoAttribute * function(PangoAttribute* attr) copy; 1400 extern(C) void function(PangoAttribute* attr) destroy; 1401 extern(C) int function(PangoAttribute* attr1, PangoAttribute* attr2) equal; 1402 } 1403 1404 1405 /** 1406 * Main Gtk struct. 1407 * The PangoAttribute structure represents the common portions of all 1408 * attributes. Particular types of attributes include this structure 1409 * as their initial portion. The common portion of the attribute holds 1410 * the range to which the value in the type-specific part of the attribute 1411 * applies and should be initialized using pango_attribute_init(). 1412 * By default an attribute will have an all-inclusive range of [0,G_MAXUINT]. 1413 * const PangoAttrClass *klass; 1414 * the class structure holding information about the type of the attribute 1415 * guint start_index; 1416 * the start index of the range (in bytes). 1417 * guint end_index; 1418 * end index of the range (in bytes). The character at this index 1419 * is not included in the range. 1420 */ 1421 public struct PangoAttribute 1422 { 1423 PangoAttrClass *klass; 1424 uint startIndex; /+* inn bytes +/ 1425 uint endIndex; /+* inn bytes. The character at this index is not included +/ 1426 } 1427 1428 1429 /** 1430 * The PangoAttrString structure is used to represent attributes with 1431 * a string value. 1432 * PangoAttribute attr; 1433 * the common portion of the attribute 1434 * char *value; 1435 * the string which is the value of the attribute 1436 */ 1437 public struct PangoAttrString 1438 { 1439 PangoAttribute attr; 1440 char *value; 1441 } 1442 1443 1444 /** 1445 * The PangoAttrLanguage structure is used to represent attributes that 1446 * are languages. 1447 * PangoAttribute attr; 1448 * the common portion of the attribute 1449 * PangoLanguage *value; 1450 * the PangoLanguage which is the value of the attribute 1451 */ 1452 public struct PangoAttrLanguage 1453 { 1454 PangoAttribute attr; 1455 PangoLanguage *value; 1456 } 1457 1458 1459 /** 1460 * The PangoAttrColor structure is used to represent attributes that 1461 * are colors. 1462 * PangoAttribute attr; 1463 * the common portion of the attribute 1464 * PangoColor color; 1465 * the PangoColor which is the value of the attribute 1466 */ 1467 public struct PangoAttrColor 1468 { 1469 PangoAttribute attr; 1470 PangoColor color; 1471 } 1472 1473 1474 /** 1475 * The PangoAttrInt structure is used to represent attributes with 1476 * an integer or enumeration value. 1477 * PangoAttribute attr; 1478 * the common portion of the attribute 1479 * int value; 1480 * the value of the attribute 1481 */ 1482 public struct PangoAttrInt 1483 { 1484 PangoAttribute attr; 1485 int value; 1486 } 1487 1488 1489 /** 1490 * The PangoAttrFloat structure is used to represent attributes with 1491 * a float or double value. 1492 * PangoAttribute attr; 1493 * the common portion of the attribute 1494 * double value; 1495 * the value of the attribute 1496 */ 1497 public struct PangoAttrFloat 1498 { 1499 PangoAttribute attr; 1500 double value; 1501 } 1502 1503 1504 /** 1505 * The PangoAttrFontDesc structure is used to store an attribute that 1506 * sets all aspects of the font description at once. 1507 * PangoAttribute attr; 1508 * the common portion of the attribute 1509 * PangoFontDescription *desc; 1510 * the font description which is the value of this attribute 1511 */ 1512 public struct PangoAttrFontDesc 1513 { 1514 PangoAttribute attr; 1515 PangoFontDescription *desc; 1516 } 1517 1518 1519 /** 1520 * The PangoAttrShape structure is used to represent attributes which 1521 * impose shape restrictions. 1522 * PangoAttribute attr; 1523 * the common portion of the attribute 1524 * PangoRectangle ink_rect; 1525 * the ink rectangle to restrict to 1526 * PangoRectangle logical_rect; 1527 * the logical rectangle to restrict to 1528 * gpointer data; 1529 * user data set (see pango_attr_shape_new_with_data()) 1530 * PangoAttrDataCopyFunc copy_func; 1531 * copy function for the user data 1532 * GDestroyNotify destroy_func; 1533 * destroy function for the user data 1534 */ 1535 public struct PangoAttrShape 1536 { 1537 PangoAttribute attr; 1538 PangoRectangle inkRect; 1539 PangoRectangle logicalRect; 1540 void* data; 1541 PangoAttrDataCopyFunc copyFunc; 1542 GDestroyNotify destroyFunc; 1543 } 1544 1545 1546 /** 1547 * The PangoAttrShape structure is used to represent attributes which 1548 * set font size. 1549 * PangoAttribute attr; 1550 * the common portion of the attribute 1551 * int size; 1552 * size of font, in units of 1/PANGO_SCALE of a point (for 1553 * PANGO_ATTR_SIZE) or of a device uni (for PANGO_ATTR_ABSOLUTE_SIZE) 1554 * guint absolute : 1; 1555 * whether the font size is in device units or points. 1556 * This field is only present for compatibility with Pango-1.8.0 1557 * (PANGO_ATTR_ABSOLUTE_SIZE was added in 1.8.1); and always will 1558 * be FALSE for PANGO_ATTR_SIZE and TRUE for PANGO_ATTR_ABSOLUTE_SIZE. 1559 */ 1560 public struct PangoAttrSize 1561 { 1562 PangoAttribute attr; 1563 int size; 1564 uint bitfield0; 1565 //uint absolute : 1; 1566 } 1567 1568 1569 /** 1570 * The PangoColor structure is used to 1571 * represent a color in an uncalibrated RGB color-space. 1572 */ 1573 public struct PangoColor 1574 { 1575 ushort red; 1576 ushort green; 1577 ushort blue; 1578 } 1579 1580 1581 /** 1582 * The PangoAttrList structure represents a list of attributes 1583 * that apply to a section of text. The attributes are, in general, 1584 * allowed to overlap in an arbitrary fashion, however, if the 1585 * attributes are manipulated only through pango_attr_list_change(), 1586 * the overlap between properties will meet stricter criteria. 1587 * Since the PangoAttrList structure is stored as a linear list, 1588 * it is not suitable for storing attributes for large amounts 1589 * of text. In general, you should not use a single PangoAttrList 1590 * for more than one paragraph of text. 1591 */ 1592 public struct PangoAttrList{} 1593 1594 1595 /** 1596 * The PangoAttrIterator structure is used to represent an 1597 * iterator through a PangoAttrList. A new iterator is created 1598 * with pango_attr_list_get_iterator(). Once the iterator 1599 * is created, it can be advanced through the style changes 1600 * in the text using pango_attr_iterator_next(). At each 1601 * style change, the range of the current style segment and the 1602 * attributes currently in effect can be queried. 1603 */ 1604 public struct PangoAttrIterator{} 1605 1606 1607 /** 1608 * Main Gtk struct. 1609 * A PangoTabArray struct contains an array 1610 * of tab stops. Each tab stop has an alignment and a position. 1611 */ 1612 public struct PangoTabArray{} 1613 1614 1615 /** 1616 * Main Gtk struct. 1617 * The PangoLayout structure represents an entire paragraph 1618 * of text. It is initialized with a PangoContext, UTF-8 string 1619 * and set of attributes for that string. Once that is done, the 1620 * set of formatted lines can be extracted from the object, 1621 * the layout can be rendered, and conversion between logical 1622 * character positions within the layout's text, and the physical 1623 * position of the resulting glyphs can be made. 1624 * There are also a number of parameters to adjust the formatting 1625 * of a PangoLayout, which are illustrated in Figure 1, “Adjustable parameters for a PangoLayout”. 1626 * It is possible, as well, to ignore the 2-D setup, and simply 1627 * treat the results of a PangoLayout as a list of lines. 1628 * Figure 1. Adjustable parameters for a PangoLayout 1629 * The PangoLayout structure is opaque, and has no user-visible 1630 * fields. 1631 */ 1632 public struct PangoLayout{} 1633 1634 1635 /** 1636 * A PangoLayoutIter structure can be used to 1637 * iterate over the visual extents of a PangoLayout. 1638 * The PangoLayoutIter structure is opaque, and 1639 * has no user-visible fields. 1640 */ 1641 public struct PangoLayoutIter{} 1642 1643 1644 /** 1645 * The PangoLayoutLine structure represents one of the lines resulting 1646 * from laying out a paragraph via PangoLayout. PangoLayoutLine 1647 * structures are obtained by calling pango_layout_get_line() and 1648 * are only valid until the text, attributes, or settings of the 1649 * parent PangoLayout are modified. 1650 * Routines for rendering PangoLayout objects are provided in 1651 * code specific to each rendering system. 1652 */ 1653 public struct PangoLayoutLine 1654 { 1655 PangoLayout *layout; 1656 int startIndex; /+* start of line as byte index into layout->text +/ 1657 int length; /+* length of line inn bytes +/ 1658 GSList *runs; 1659 uint bitfield0; 1660 //uint isParagraphStart : 1; /+* TRUE if this is the first line of the paragraph +/ 1661 //uint resolvedDir : 3; /+* Resolved PangoDirection of line +/ 1662 } 1663 1664 1665 /** 1666 * A PangoScriptIter is used to iterate through a string 1667 * and identify ranges in different scripts. 1668 */ 1669 public struct PangoScriptIter{} 1670 1671 1672 /** 1673 * The PangoLanguage structure is used to 1674 * represent a language. 1675 * PangoLanguage pointers can be efficiently 1676 * copied and compared with each other. 1677 */ 1678 public struct PangoLanguage{} 1679 1680 1681 /** 1682 * PangoCairoFont is an interface exported by fonts for 1683 * use with Cairo. The actual type of the font will depend 1684 * on the particular font technology Cairo was compiled to use. 1685 * Since 1.18 1686 */ 1687 public struct PangoCairoFont{} 1688 1689 1690 /** 1691 * PangoCairoFontMap is an interface exported by font maps for 1692 * use with Cairo. The actual type of the font map will depend 1693 * on the particular font technology Cairo was compiled to use. 1694 * Since 1.10 1695 */ 1696 public struct PangoCairoFontMap{} 1697 1698 1699 /** 1700 * Main Gtk struct. 1701 * PangoRenderer is a base class for objects that are used to 1702 * render Pango objects such as PangoGlyphString and 1703 * PangoLayout. 1704 * PangoMatrix *matrix; 1705 * the current transformation matrix for the Renderer; may 1706 * be NULL, which should be treated the same as the identity matrix. 1707 * Since 1.8 1708 */ 1709 public struct PangoRenderer 1710 { 1711 PangoMatrix *matrix; /+* May be NULL +/ 1712 } 1713 1714 1715 /** 1716 * Class structure for PangoRenderer. 1717 * draw_glyphs () 1718 * draws a PangoGlyphString 1719 * draw_rectangle () 1720 * draws a rectangle 1721 * draw_error_underline () 1722 * draws a squiggly line that approximately 1723 * covers the given rectangle in the style of an underline used to 1724 * indicate a spelling error. 1725 * draw_shape () 1726 * draw content for a glyph shaped with PangoAttrShape. 1727 * x, y are the coordinates of the left edge of the baseline, 1728 * in user coordinates. 1729 * draw_trapezoid () 1730 * draws a trapezoidal filled area 1731 * draw_glyph () 1732 * draws a single glyph 1733 * part_changed () 1734 * do renderer specific processing when rendering 1735 * attributes change 1736 * begin () 1737 * Do renderer-specific initialization before drawing 1738 * end () 1739 * Do renderer-specific cleanup after drawing 1740 * prepare_run () 1741 * updates the renderer for a new run 1742 * draw_glyph_item () 1743 * draws a PangoGlyphItem 1744 * Since 1.8 1745 */ 1746 public struct PangoRendererClass 1747 { 1748 /+* All of the following have defaulx implementations 1749 * and take as coordinates user coordinates inn Pango units 1750 +/ 1751 extern(C) void function(PangoRenderer* renderer, PangoFont* font, PangoGlyphString* glyphs, int x, int y) drawGlyphs; 1752 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part, int x, int y, int width, int height) drawRectangle; 1753 extern(C) void function(PangoRenderer* renderer, int x, int y, int width, int height) drawErrorUnderline; 1754 /+* Nothing is drawn for shaped glyphs unless this is implemented +/ 1755 extern(C) void function(PangoRenderer* renderer, PangoAttrShape* attr, int x, int y) drawShape; 1756 /+* These two must be implemented and take coordinates inn 1757 * device space as doubles. 1758 +/ 1759 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part, double y1_, double x11, double x21, double y2, double x12, double x22) drawTrapezoid; 1760 extern(C) void function(PangoRenderer* renderer, PangoFont* font, PangoGlyph glyph, double x, double y) drawGlyph; 1761 /+* Notification of change inn rendering attributes 1762 +/ 1763 extern(C) void function(PangoRenderer* renderer, PangoRenderPart part) partChanged; 1764 /+* Paired around drawing operations 1765 +/ 1766 extern(C) void function(PangoRenderer* renderer) begin; 1767 extern(C) void function(PangoRenderer* renderer) end; 1768 /+* Hooks into the details of layout rendering 1769 +/ 1770 extern(C) void function(PangoRenderer* renderer, PangoLayoutRun* run) prepareRun; 1771 /+* All of the following have defaulx implementations 1772 * and take as coordinates user coordinates inn Pango units 1773 +/ 1774 extern(C) void function(PangoRenderer* renderer, char* text, PangoGlyphItem* glyphItem, int x, int y) drawGlyphItem; 1775 } 1776 1777 1778 /** 1779 * Main Gtk struct. 1780 * The PangoCoverage structure represents a map from Unicode characters 1781 * to PangoCoverageLevel. It is an opaque structure with no public fields. 1782 */ 1783 public struct PangoCoverage{} 1784 1785 1786 /** 1787 * The PangoEngineInfo structure contains information about a particular 1788 * engine. It contains the following fields: 1789 * const gchar *id; 1790 * a unique string ID for the engine. 1791 * const gchar *engine_type; 1792 * a string identifying the engine type. 1793 * const gchar *render_type; 1794 * a string identifying the render type. 1795 * PangoEngineScriptInfo *scripts; 1796 * array of scripts this engine supports. 1797 * gint n_scripts; 1798 * number of items in scripts. 1799 */ 1800 public struct PangoEngineInfo 1801 { 1802 char *id; 1803 char *engineType; 1804 char *renderType; 1805 PangoEngineScriptInfo *scripts; 1806 int nScripts; 1807 } 1808 1809 1810 /** 1811 * The PangoEngineScriptInfo structure contains 1812 * information about how the shaper covers a particular 1813 * script. 1814 * PangoScript script; 1815 * a PangoScript. The value PANGO_SCRIPT_COMMON has 1816 * the special meaning here of "all scripts" 1817 * const gchar *langs; 1818 * a semicolon separated list of languages that this 1819 * engine handles for this script. This may be empty, 1820 * in which case the engine is saying that it is a 1821 * fallback choice for all languages for this range, 1822 * but should not be used if another engine 1823 * indicates that it is specific for the language for 1824 * a given code point. An entry in this list of "*" 1825 * indicates that this engine is specific to all 1826 * languages for this range. 1827 */ 1828 public struct PangoEngineScriptInfo 1829 { 1830 PangoScript script; 1831 char *langs; 1832 } 1833 1834 1835 /** 1836 * Main Gtk struct. 1837 * PangoEngine is the base class for all types of language and 1838 * script specific engines. It has no functionality by itself. 1839 */ 1840 public struct PangoEngine{} 1841 1842 1843 /** 1844 * Class structure for PangoEngine 1845 */ 1846 public struct PangoEngineClass{} 1847 1848 1849 /** 1850 * Main Gtk struct. 1851 * The PangoEngineLang class is implemented by engines that 1852 * customize the rendering-system independent part of the 1853 * Pango pipeline for a particular script or language. For 1854 * instance, a custom PangoEngineLang could be provided for 1855 * Thai to implement the dictionary-based word boundary 1856 * lookups needed for that language. 1857 */ 1858 public struct PangoEngineLang{} 1859 1860 1861 /** 1862 * Class structure for PangoEngineLang 1863 * script_break () 1864 * Provides a custom implementation of pango_break(). 1865 * If NULL, pango_default_break() is used instead. If not NULL, for 1866 * Pango versions before 1.16 (module interface version before 1.6.0), 1867 * this was called instead of pango_default_break(), but in newer versions, 1868 * pango_default_break() is always called and this is called after that to 1869 * allow tailoring the breaking results. 1870 */ 1871 public struct PangoEngineLangClass 1872 { 1873 extern(C) void function(PangoEngineLang* engine, char* text, int len, PangoAnalysis* analysis, PangoLogAttr* attrs, int attrsLen) scriptBreak; 1874 } 1875 1876 1877 /** 1878 * Main Gtk struct. 1879 * The PangoEngineShape class is implemented by engines that 1880 * customize the rendering-system dependent part of the 1881 * Pango pipeline for a particular script or language. 1882 * A PangoEngineShape implementation is then specific to both 1883 * a particular rendering system or group of rendering systems 1884 * and to a particular script. For instance, there is one 1885 * PangoEngineShape implementation to handle shaping Arabic 1886 * for Fontconfig-based backends. 1887 */ 1888 public struct PangoEngineShape{} 1889 1890 1891 /** 1892 * Class structure for PangoEngineShape 1893 * script_shape () 1894 * Given a font, a piece of text, and a PangoAnalysis 1895 * structure, converts characters to glyphs and positions the 1896 * resulting glyphs. The results are stored in the PangoGlyphString 1897 * that is passed in. (The implementation should resize it 1898 * appropriately using pango_glyph_string_set_size()). All fields 1899 * of the log_clusters and glyphs array must be filled in, with 1900 * the exception that Pango will automatically generate 1901 * glyphs->glyphs[i].attr.is_cluster_start 1902 * using the log_clusters array. Each input character must occur in one 1903 * of the output logical clusters; 1904 * if no rendering is desired for a character, this may involve 1905 * inserting glyphs with the PangoGlyph ID PANGO_GLYPH_EMPTY, which 1906 * is guaranteed never to render. If the shaping fails for any reason, 1907 * the shaper should return with an empty (zero-size) glyph string. 1908 * If the shaper has not set the size on the glyph string yet, simply 1909 * returning signals the failure too. 1910 * covers () 1911 * Returns the characters that this engine can cover 1912 * with a given font for a given language. If not overridden, the default 1913 * implementation simply returns the coverage information for the 1914 * font itself unmodified. 1915 */ 1916 public struct PangoEngineShapeClass 1917 { 1918 extern(C) void function(PangoEngineShape* engine, PangoFont* font, char* itemText, uint itemLength, PangoAnalysis* analysis, PangoGlyphString* glyphs, char* paragraphText, uint paragraphLength) scriptShape; 1919 extern(C) PangoCoverageLevel function(PangoEngineShape* engine, PangoFont* font, PangoLanguage* language, gunichar wc) covers; 1920 } 1921 1922 1923 /* 1924 * Converts a dimension to device units by rounding. 1925 * d : 1926 * a dimension in Pango units. 1927 * Returns : 1928 * rounded dimension in device units. 1929 */ 1930 // TODO 1931 // #define PANGO_PIXELS(d) (((int)(d) + 512) >> 10) 1932 1933 /* 1934 * Converts a dimension to device units by flooring. 1935 * d : 1936 * a dimension in Pango units. 1937 * Returns : 1938 * floored dimension in device units. 1939 * Since 1.14 1940 */ 1941 // TODO 1942 // #define PANGO_PIXELS_FLOOR(d) (((int)(d)) >> 10) 1943 1944 /* 1945 * Converts a dimension to device units by ceiling. 1946 * d : 1947 * a dimension in Pango units. 1948 * Returns : 1949 * ceiled dimension in device units. 1950 * Since 1.14 1951 */ 1952 // TODO 1953 // #define PANGO_PIXELS_CEIL(d) (((int)(d) + 1023) >> 10) 1954 1955 /* 1956 * Rounds a dimension to whole device units, but does not 1957 * convert it to device units. 1958 * d : 1959 * a dimension in Pango units. 1960 * Returns : 1961 * rounded dimension in Pango units. 1962 * Since 1.18 1963 */ 1964 // TODO 1965 // #define PANGO_UNITS_ROUND(d) 1966 1967 /* 1968 * Extracts the ascent from a PangoRectangle 1969 * representing glyph extents. The ascent is the distance from the 1970 * baseline to the highest point of the character. This is positive if the 1971 * glyph ascends above the baseline. 1972 * rect : 1973 * a PangoRectangle 1974 */ 1975 // TODO 1976 // #define PANGO_ASCENT(rect) (-(rect).y) 1977 1978 /* 1979 * Extracts the descent from a PangoRectangle 1980 * representing glyph extents. The descent is the distance from the 1981 * baseline to the lowest point of the character. This is positive if the 1982 * glyph descends below the baseline. 1983 * rect : 1984 * a PangoRectangle 1985 */ 1986 // TODO 1987 // #define PANGO_DESCENT(rect) ((rect).y + (rect).height) 1988 1989 /* 1990 * Extracts the left bearing from a PangoRectangle 1991 * representing glyph extents. The left bearing is the distance from the 1992 * horizontal origin to the farthest left point of the character. 1993 * This is positive for characters drawn completely to the right of the 1994 * glyph origin. 1995 * rect : 1996 * a PangoRectangle 1997 */ 1998 // TODO 1999 // #define PANGO_LBEARING(rect) ((rect).x) 2000 2001 /* 2002 * Extracts the right bearing from a PangoRectangle 2003 * representing glyph extents. The right bearing is the distance from the 2004 * horizontal origin to the farthest right point of the character. 2005 * This is positive except for characters drawn completely to the left of the 2006 * horizontal origin. 2007 * rect : 2008 * a PangoRectangle 2009 */ 2010 // TODO 2011 // #define PANGO_RBEARING(rect) ((rect).x + (rect).width) 2012 2013 /* 2014 * Returns a PangoGlyph value that means no glyph was found for wc. 2015 * The way this unknown glyphs are rendered is backend specific. For example, 2016 * a box with the hexadecimal Unicode code-point of the character written in it 2017 * is what is done in the most common backends. 2018 * wc : 2019 * a Unicode character 2020 */ 2021 // TODO 2022 // #define PANGO_GET_UNKNOWN_GLYPH(wc) ((PangoGlyph)(wc)|PANGO_GLYPH_UNKNOWN_FLAG) 2023 2024 /* 2025 * Casts a GObject to a PangoFont. 2026 * object : 2027 * a GObject. 2028 */ 2029 // TODO 2030 // #define PANGO_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT, PangoFont)) 2031 2032 /* 2033 * Returns TRUE if object is a PangoFont. 2034 * object : 2035 * a GObject. 2036 */ 2037 // TODO 2038 // #define PANGO_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT)) 2039 2040 /* 2041 * Casts a GObject to a PangoFontFamily. 2042 * object : 2043 * a GObject. 2044 */ 2045 // TODO 2046 // #define PANGO_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FAMILY, PangoFontFamily)) 2047 2048 /* 2049 * Returns TRUE if object is a PangoFontFamily. 2050 * object : 2051 * a GObject. 2052 */ 2053 // TODO 2054 // #define PANGO_IS_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FAMILY)) 2055 2056 /* 2057 * Casts a GObject to a PangoFontFace. 2058 * object : 2059 * a GObject. 2060 */ 2061 // TODO 2062 // #define PANGO_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FACE, PangoFontFace)) 2063 2064 /* 2065 * Returns TRUE if object is a PangoFontFace. 2066 * object : 2067 * a GObject. 2068 */ 2069 // TODO 2070 // #define PANGO_IS_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FACE)) 2071 2072 /* 2073 * Casts a GObject to a PangoFontMap. 2074 * object : 2075 * a GObject. 2076 */ 2077 // TODO 2078 // #define PANGO_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_MAP, PangoFontMap)) 2079 2080 /* 2081 * Returns TRUE if object is a PangoFontMap. 2082 * object : 2083 * a GObject. 2084 */ 2085 // TODO 2086 // #define PANGO_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_MAP)) 2087 2088 /* 2089 * Casts a GObject to a PangoFontMapClass. 2090 * klass : 2091 * a GObject. 2092 */ 2093 // TODO 2094 // #define PANGO_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_MAP, PangoFontMapClass)) 2095 2096 /* 2097 * Returns TRUE if klass is a subtype of PangoFontMapClass. 2098 * klass : 2099 * a GObject. 2100 */ 2101 // TODO 2102 // #define PANGO_IS_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_MAP)) 2103 2104 /* 2105 * Returns the type of a PangoFontMap. 2106 * obj : 2107 * a PangoFontMap. 2108 */ 2109 // TODO 2110 // #define PANGO_FONT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_MAP, PangoFontMapClass)) 2111 2112 /* 2113 * Whether a PangoGravity represents a gravity that results in reversal of text direction. 2114 * gravity : 2115 * the PangoGravity to check 2116 * Returns : 2117 * TRUE if gravity is PANGO_GRAVITY_WEST or PANGO_GRAVITY_NORTH, 2118 * FALSE otherwise. 2119 * Since 1.32 2120 */ 2121 // TODO 2122 // #define PANGO_GRAVITY_IS_IMPROPER(gravity) 2123 2124 /* 2125 * Whether a PangoGravity represents vertical writing directions. 2126 * gravity : 2127 * the PangoGravity to check 2128 * Returns : 2129 * TRUE if gravity is PANGO_GRAVITY_EAST or PANGO_GRAVITY_WEST, 2130 * FALSE otherwise. 2131 * Since 1.16 2132 */ 2133 // TODO 2134 // #define PANGO_GRAVITY_IS_VERTICAL(gravity) 2135 2136 /* 2137 * Outputs the necessary code for GObject type registration for a 2138 * PangoEngineLang class defined in a module. Two static symbols 2139 * are defined. 2140 * static GType prefix_type; 2141 * static void prefix_register_type (GTypeModule module); 2142 * The prefix_register_type() 2143 * function should be called in your script_engine_init() function for 2144 * each type that your module implements, and then your script_engine_create() 2145 * function can create instances of the object as follows: 2146 * $(DDOC_COMMENT example) 2147 * name : 2148 * Name of the the type to register (for example:, ArabicEngineFc 2149 * prefix : 2150 * Prefix for symbols that will be defined (for example:, arabic_engine_fc 2151 * class_init : 2152 * Class initialization function for the new type, or NULL 2153 * instance_init : 2154 * Instance initialization function for the new type, or NULL 2155 */ 2156 // TODO 2157 // #define PANGO_ENGINE_LANG_DEFINE_TYPE(name, prefix, class_init, instance_init) 2158 2159 /* 2160 * Outputs the necessary code for GObject type registration for a 2161 * PangoEngineShape class defined in a module. Two static symbols 2162 * are defined. 2163 * static GType prefix_type; 2164 * static void prefix_register_type (GTypeModule module); 2165 * The prefix_register_type() 2166 * function should be called in your script_engine_init() function for 2167 * each type that your module implements, and then your script_engine_create() 2168 * function can create instances of the object as follows: 2169 * $(DDOC_COMMENT example) 2170 * name : 2171 * Name of the the type to register (for example:, ArabicEngineFc 2172 * prefix : 2173 * Prefix for symbols that will be defined (for example:, arabic_engine_fc 2174 * class_init : 2175 * Class initialization function for the new type, or NULL 2176 * instance_init : 2177 * Instance initialization function for the new type, or NULL 2178 */ 2179 // TODO 2180 // #define PANGO_ENGINE_SHAPE_DEFINE_TYPE(name, prefix, class_init, instance_init) 2181 2182 /* 2183 * This macro encodes the given Pango version into an integer. The numbers 2184 * returned by PANGO_VERSION and pango_version() are encoded using this macro. 2185 * Two encoded version numbers can be compared as integers. 2186 * major : 2187 * the major component of the version number 2188 * minor : 2189 * the minor component of the version number 2190 * micro : 2191 * the micro component of the version number 2192 */ 2193 // TODO 2194 // #define PANGO_VERSION_ENCODE(major, minor, micro) 2195 2196 /* 2197 * Checks that the version of Pango available at compile-time is not older than 2198 * the provided version number. 2199 * major : 2200 * the major component of the version number 2201 * minor : 2202 * the minor component of the version number 2203 * micro : 2204 * the micro component of the version number 2205 */ 2206 // TODO 2207 // #define PANGO_VERSION_CHECK(major,minor,micro) 2208 2209 /* 2210 * A callback function used by pango_fontset_foreach() when enumerating 2211 * the fonts in a fontset. 2212 * fontset : 2213 * a PangoFontset 2214 * font : 2215 * a font from fontset 2216 * user_data : 2217 * callback data 2218 * Returns : 2219 * if TRUE, stop iteration and return immediately. 2220 * Since 1.4 2221 */ 2222 // gboolean (*PangoFontsetForeachFunc) (PangoFontset *fontset, PangoFont *font, gpointer user_data); 2223 public alias extern(C) int function(PangoFontset* fontset, PangoFont* font, void* userData) PangoFontsetForeachFunc; 2224 2225 /* 2226 * Type of a function that can duplicate user data for an attribute. 2227 * A copy function passed to attribute new functions that take 2228 * user data. 2229 * user_data : 2230 * user data to copy 2231 * Returns : 2232 * new copy of user_data. 2233 */ 2234 // gpointer (*PangoAttrDataCopyFunc) (gconstpointer user_data); 2235 public alias extern(C) void* function(void* userData) PangoAttrDataCopyFunc; 2236 2237 /* 2238 * Type of a function filtering a list of attributes. 2239 * A predicate function used by pango_attr_list_filter() 2240 * to filter out a subset of attributes for a list. 2241 * attribute : 2242 * a Pango attribute 2243 * user_data : 2244 * user data passed to the function 2245 * Returns : 2246 * TRUE if the attribute should be selected for 2247 * filtering, FALSE otherwise. 2248 */ 2249 // gboolean (*PangoAttrFilterFunc) (PangoAttribute *attribute, gpointer user_data); 2250 public alias extern(C) int function(PangoAttribute* attribute, void* userData) PangoAttrFilterFunc; 2251 2252 /* 2253 * Function type for rendering attributes of type PANGO_ATTR_SHAPE 2254 * with Pango's Cairo renderer. 2255 * cr : 2256 * a Cairo context with current point set to where the shape should 2257 * be rendered 2258 * attr : 2259 * the PANGO_ATTR_SHAPE to render 2260 * do_path : 2261 * whether only the shape path should be appended to current 2262 * path of cr and no filling/stroking done. This will be set 2263 * to TRUE when called from pango_cairo_layout_path() and 2264 * pango_cairo_layout_line_path() rendering functions. 2265 * data : 2266 * user data passed to pango_cairo_context_set_shape_renderer() 2267 */ 2268 // void (*PangoCairoShapeRendererFunc) (cairo_t *cr, PangoAttrShape *attr, gboolean do_path, gpointer data); 2269 public alias extern(C) void function(cairo_t* cr, PangoAttrShape* attr, int doPath, void* data) PangoCairoShapeRendererFunc;