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;