diff dwt/internal/gtk/c/pangotypes.d @ 11:5f725d09c076

Added dynamic loader from gtkd with cleanup and modifications. Tango only support. No OS.d tie-in yet.
author John Reimer<terminal.node@gmail.com>
date Sat, 05 Jan 2008 15:13:44 -0800
parents
children bc06000c0816
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwt/internal/gtk/c/pangotypes.d	Sat Jan 05 15:13:44 2008 -0800
@@ -0,0 +1,1706 @@
+/******************************************************************************
+
+    This file is part of gtkD.
+
+    gtkD is free software; you can redistribute it and/or modify
+    it under the terms of the GNU Lesser General Public License as published by
+    the Free Software Foundation; either version 2.1 of the License, or
+    (at your option) any later version.
+ 
+    gtkD is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public License
+    along with gtkD; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+******************************************************************************/
+
+module dwt.internal.gtk.c.pangotypes;
+
+public import dwt.internal.gtk.c.glibtypes;
+public import dwt.internal.gtk.c.gobjecttypes;
+
+/******************************************************************************
+
+******************************************************************************/
+
+///* The pango Basic Types */
+public alias void FcPattern;
+public alias void FcCharSet;
+//public alias void LOGFONT;
+//struct Display;
+//struct FT_Bitmap;
+struct FT_Face;
+//struct XftDraw;
+//struct XftColor;
+
+
+const int PANGO_SCALE = 1024;
+const double PANGO_SCALE_XX_SMALL = 0.5787037037037;	/// The scale factor for three shrinking steps (1 / (1.2 * 1.2 * 1.2)).
+const double PANGO_SCALE_X_SMALL  = 0.6444444444444;	/// The scale factor for two shrinking steps (1 / (1.2 * 1.2)).
+const double PANGO_SCALE_SMALL    = 0.8333333333333;	/// The scale factor for one shrinking step (1 / 1.2).
+const double PANGO_SCALE_MEDIUM   = 1.0;	/// The scale factor for normal size (1.0).
+const double PANGO_SCALE_LARGE    = 1.2;	/// The scale factor for one magnification step (1.2)
+const double PANGO_SCALE_X_LARGE  = 1.4399999999999;	/// The scale factor for two magnification steps (1.2 * 1.2).
+const double PANGO_SCALE_XX_LARGE = 1.728;	/// The scale factor for three magnification steps (1.2 * 1.2 * 1.2).
+
+
+/**
+ * typedef guint32 PangoGlyph;
+ * A PangoGlyph represents a single glyph in the output form of a string.
+ */
+public alias uint PangoGlyph;
+
+/**
+ * typedef gint32 PangoGlyphUnit;
+ * The PangoGlyphUnit type is used to store dimensions within
+ * Pango. Dimensions are stored in 1/PANGO_SCALE of a device unit.
+ * (A device unit might be a pixel for screen display, or
+ * a point on a printer.) PANGO_SCALE is currently 1024, and
+ * may change in the future (unlikely though), but you should not
+ * depend on its exact value. The PANGO_PIXELS() macro can be used
+ * to convert from glyph units into device units with correct rounding.
+ */
+public alias int PangoGlyphUnit;
+
+/**
+ * typedef PangoGlyphItem PangoLayoutRun;
+ * The PangoLayoutRun structure represents a single run within
+ * a PangoLayoutLine; it is simply an alternate name for
+ * PangoGlyphItem, present for backwards compatibility.
+ * See the PangoGlyphItem docs for details on the fields.
+ */
+public alias PangoGlyphItem PangoLayoutRun;
+/**
+ * The PangoDirection type represents a direction in the
+ * Unicode bidirectional algorithm; not every value in this
+ * enumeration makes sense for every usage of PangoDirection;
+ * for example, the return value of pango_unichar_direction()
+ * and pango_find_base_dir() cannot be PANGO_DIRECTION_WEAK_LTR
+ * or PANGO_DIRECTION_WEAK_RTL, since every character is either
+ * neutral or has a strong direction; on the other hand
+ * PANGO_DIRECTION_NEUTRAL doesn't make sense to pass
+ * to pango_itemize_with_base_dir().
+ * The PANGO_DIRECTION_TTB_LTR, PANGO_DIRECTION_TTB_RTL
+ * values come from an earlier interpretation of this
+ * enumeration as the writing direction of a block of
+ * text and are no longer used; See PangoGravity for how
+ * vertical text is handled in Pango.
+ * PANGO_DIRECTION_LTR
+ */
+public enum PangoDirection
+{
+	LTR,
+	RTL,
+	TTB_LTR,
+	TTB_RTL,
+	WEAK_LTR,
+	WEAK_RTL,
+	NEUTRAL
+}
+/**
+ * An enumeration specifying the various slant styles possible for a font.
+ * PANGO_STYLE_NORMAL
+ */
+public enum PangoStyle
+{
+	NORMAL,
+	OBLIQUE,
+	ITALIC
+}
+/**
+ * An enumeration specifying the weight (boldness) of a font. This is a numerical
+ * value ranging from 100 to 900, but there are some predefined values:
+ * PANGO_WEIGHT_ULTRALIGHT
+ * the ultralight weight (= 200)
+ * PANGO_WEIGHT_LIGHT
+ */
+public enum PangoWeight
+{
+	ULTRALIGHT = 200,
+	LIGHT = 300,
+	NORMAL = 400,
+	SEMIBOLD = 600,
+	BOLD = 700,
+	ULTRABOLD = 800,
+	HEAVY = 900
+}
+/**
+ * An enumeration specifying capitalization variant of the font.
+ * PANGO_VARIANT_NORMAL
+ * A normal font.
+ * PANGO_VARIANT_SMALL_CAPS
+ * A font with the lower case characters
+ */
+public enum PangoVariant
+{
+	NORMAL,
+	SMALL_CAPS
+}
+/**
+ * An enumeration specifying the width of the font relative to other designs
+ * within a family.
+ * PANGO_STRETCH_ULTRA_CONDENSED
+ * ultra condensed width
+ * PANGO_STRETCH_EXTRA_CONDENSED
+ * extra condensed width
+ * PANGO_STRETCH_CONDENSED
+ * condensed width
+ * PANGO_STRETCH_SEMI_CONDENSED
+ * semi condensed width
+ * PANGO_STRETCH_NORMAL
+ * the normal width
+ * PANGO_STRETCH_SEMI_EXPANDED
+ * semi expanded width
+ * PANGO_STRETCH_EXPANDED
+ * expanded width
+ * PANGO_STRETCH_EXTRA_EXPANDED
+ * extra expanded width
+ * PANGO_STRETCH_ULTRA_EXPANDED
+ * ultra expanded width
+ */
+public enum PangoStretch
+{
+	ULTRA_CONDENSED,
+	EXTRA_CONDENSED,
+	CONDENSED,
+	SEMI_CONDENSED,
+	NORMAL,
+	SEMI_EXPANDED,
+	EXPANDED,
+	EXTRA_EXPANDED,
+	ULTRA_EXPANDED
+}
+/**
+ * The bits in a PangoFontMask correspond to fields in a
+ * PangoFontDescription that have been set.
+ * PANGO_FONT_MASK_FAMILY
+ * the font family is specified.
+ * PANGO_FONT_MASK_STYLE
+ * the font style is specified.
+ * PANGO_FONT_MASK_VARIANT
+ * the font variant is specified.
+ * PANGO_FONT_MASK_WEIGHT
+ * the font weight is specified.
+ * PANGO_FONT_MASK_STRETCH
+ * the font stretch is specified.
+ * PANGO_FONT_MASK_SIZE
+ * the font size is specified.
+ * PANGO_FONT_MASK_GRAVITY
+ * the font gravity is specified (Since: 1.16.)
+ */
+public enum PangoFontMask
+{
+	FAMILY = 1 << 0,
+	STYLE = 1 << 1,
+	VARIANT = 1 << 2,
+	WEIGHT = 1 << 3,
+	STRETCH = 1 << 4,
+	SIZE = 1 << 5,
+	GRAVITY = 1 << 6
+}
+/**
+ * The PangoAttrType
+ * distinguishes between different types of attributes. Along with the
+ * predefined values, it is possible to allocate additional values
+ * for custom attributes using pango_attr_type_register(). The predefined
+ * values are given below. The type of structure used to store the
+ * attribute is listed in parentheses after the description.
+ * PANGO_ATTR_INVALID
+ * does not happen
+ * PANGO_ATTR_LANGUAGE
+ * language (PangoAttrLanguage)
+ * PANGO_ATTR_FAMILY
+ * font family name list (PangoAttrString)
+ * PANGO_ATTR_STYLE
+ * font slant style (PangoAttrInt)
+ * PANGO_ATTR_WEIGHT
+ * font weight (PangoAttrInt)
+ * PANGO_ATTR_VARIANT
+ * font variant (normal or small caps) (PangoAttrInt)
+ * PANGO_ATTR_STRETCH
+ * font stretch (PangoAttrInt)
+ * PANGO_ATTR_SIZE
+ * font size in points scaled by PANGO_SCALE (PangoAttrInt)
+ * PANGO_ATTR_FONT_DESC
+ * font description (PangoAttrFontDesc)
+ * PANGO_ATTR_FOREGROUND
+ * foreground color (PangoAttrColor)
+ * PANGO_ATTR_BACKGROUND
+ * background color (PangoAttrColor)
+ * PANGO_ATTR_UNDERLINE
+ * whether the text has an underline (PangoAttrInt)
+ * PANGO_ATTR_STRIKETHROUGH
+ * whether the text is struck-through (PangoAttrInt)
+ * PANGO_ATTR_RISE
+ * baseline displacement (PangoAttrInt)
+ * PANGO_ATTR_SHAPE
+ * shape (PangoAttrShape)
+ * PANGO_ATTR_SCALE
+ * font size scale factor (PangoAttrFloat)
+ * PANGO_ATTR_FALLBACK
+ * whether fallback is enabled (PangoAttrInt)
+ * PANGO_ATTR_LETTER_SPACING
+ * letter spacing (PangoAttrInt)
+ * PANGO_ATTR_UNDERLINE_COLOR
+ * underline color (PangoAttrColor)
+ * PANGO_ATTR_STRIKETHROUGH_COLOR
+ * strikethrough color (PangoAttrColor)
+ * PANGO_ATTR_ABSOLUTE_SIZE
+ * font size in pixels scaled by PANGO_SCALE (PangoAttrInt)
+ * PANGO_ATTR_GRAVITY
+ * base text gravity (PangoAttrInt)
+ * PANGO_ATTR_GRAVITY_HINT
+ * gravity hint (PangoAttrInt)
+ */
+public enum PangoAttrType
+{
+	INVALID, /+* 0 is an invalid attribute type +/
+	LANGUAGE, /+* PangoAttrLanguage +/
+	FAMILY, /+* PangoAttrString +/
+	STYLE, /+* PangoAttrInt +/
+	WEIGHT, /+* PangoAttrInt +/
+	VARIANT, /+* PangoAttrInt +/
+	STRETCH, /+* PangoAttrInt +/
+	SIZE, /+* PangoAttrSize +/
+	FONT_DESC, /+* PangoAttrFontDesc +/
+	FOREGROUND, /+* PangoAttrColor +/
+	BACKGROUND, /+* PangoAttrColor +/
+	UNDERLINE, /+* PangoAttrInt +/
+	STRIKETHROUGH, /+* PangoAttrInt +/
+	RISE, /+* PangoAttrInt +/
+	SHAPE, /+* PangoAttrShape +/
+	SCALE, /+* PangoAttrFloat +/
+	FALLBACK, /+* PangoAttrInt +/
+	LETTER_SPACING, /+* PangoAttrInt +/
+	UNDERLINE_COLOR, /+* PangoAttrColor +/
+	STRIKETHROUGH_COLOR,/+* PangoAttrColor +/
+	ABSOLUTE_SIZE, /+* PangoAttrSize +/
+	GRAVITY, /+* PangoAttrInt +/
+	GRAVITY_HINT /+* PangoAttrInt +/
+}
+/**
+ * the PangoUnderline enumeration is used to specify
+ * whether text should be underlined, and if so, the type
+ * of underlining.
+ * PANGO_UNDERLINE_NONE
+ * no underline should be drawn
+ * PANGO_UNDERLINE_SINGLE
+ * a single underline should be drawn
+ * PANGO_UNDERLINE_DOUBLE
+ * a double underline should be drawn
+ * PANGO_UNDERLINE_LOW
+ * a single underline should be drawn at a position
+ */
+public enum PangoUnderline
+{
+	NONE,
+	SINGLE,
+	DOUBLE,
+	LOW,
+	ERROR
+}
+/**
+ * A PangoTabAlign specifies where a tab stop appears relative to the text.
+ * PANGO_TAB_LEFT
+ * the tab stop appears to the left of the text.
+ */
+public enum PangoTabAlign
+{
+	LEFT
+	/+* These are not supported now, but may be inn the
+	 * future.
+	 *
+	 * RIGHT,
+	 * CENTER,
+	 * NUMERIC
+	+/
+}
+/**
+ * A PangoWrapMode describes how to wrap the lines of a PangoLayout to the desired width.
+ * PANGO_WRAP_WORD
+ * wrap lines at word boundaries.
+ * PANGO_WRAP_CHAR
+ * wrap lines at character boundaries.
+ * PANGO_WRAP_WORD_CHAR
+ * wrap lines at word boundaries, but fall back to character boundaries if there is not
+ * enough space for a full word.
+ */
+public enum PangoWrapMode
+{
+	WORD,
+	CHAR,
+	WORD_CHAR
+}
+/**
+ * The PangoEllipsizeMode type describes what sort of (if any)
+ * ellipsization should be applied to a line of text. In
+ * the ellipsization process characters are removed from the
+ * text in order to make it fit to a given width and replaced
+ * with an ellipsis.
+ * PANGO_ELLIPSIZE_NONE
+ */
+public enum PangoEllipsizeMode
+{
+	NONE,
+	START,
+	MIDDLE,
+	END
+}
+/**
+ * A PangoAlignment describes how to align the lines of a PangoLayout within the
+ * available space. If the PangoLayout is set to justify
+ * using pango_layout_set_justify(), this only has effect for partial lines.
+ * PANGO_ALIGN_LEFT
+ * Put all available space on the right
+ * PANGO_ALIGN_CENTER
+ * Center the line within the available space
+ * PANGO_ALIGN_RIGHT
+ * Put all available space on the left
+ */
+public enum PangoAlignment
+{
+	LEFT,
+	CENTER,
+	RIGHT
+}
+/**
+ * The PangoScript enumeration identifies different writing
+ * systems. The values correspond to the names as defined in the
+ * Unicode standard.
+ * Note that new types may be added in the future. Applications should be ready
+ * to handle unknown values. This enumeration is interchangeable with
+ * GUnicodeScript. See Unicode Standard Annex
+ * 24: Script names.
+ * PANGO_SCRIPT_INVALID_CODE
+ * a value never returned from pango_script_for_unichar()
+ * PANGO_SCRIPT_COMMON
+ * a character used by multiple different scripts
+ * PANGO_SCRIPT_INHERITED
+ * a mark glyph that takes its script from the
+ */
+public enum PangoScript
+{
+	INVALID_CODE = -1,
+	COMMON = 0, /+* Zyyy +/
+	INHERITED, /+* Qaai +/
+	ARABIC, /+* Arab +/
+	ARMENIAN, /+* Armn +/
+	BENGALI, /+* Beng +/
+	BOPOMOFO, /+* Bopo +/
+	CHEROKEE, /+* Cher +/
+	COPTIC, /+* Qaac +/
+	CYRILLIC, /+* Cyrl (Cyrs) +/
+	DESERET, /+* Dsrt +/
+	DEVANAGARI, /+* Deva +/
+	ETHIOPIC, /+* Ethi +/
+	GEORGIAN, /+* Geor (Geon, Geoa) +/
+	GOTHIC, /+* Goth +/
+	GREEK, /+* Grek +/
+	GUJARATI, /+* Gujr +/
+	GURMUKHI, /+* Guru +/
+	HAN, /+* Hani +/
+	HANGUL, /+* Hang +/
+	HEBREW, /+* Hebr +/
+	HIRAGANA, /+* Hira +/
+	KANNADA, /+* Knda +/
+	KATAKANA, /+* Kana +/
+	KHMER, /+* Khmr +/
+	LAO, /+* Laoo +/
+	LATIN, /+* Latn (Latf, Latg) +/
+	MALAYALAM, /+* Mlym +/
+	MONGOLIAN, /+* Mong +/
+	MYANMAR, /+* Mymr +/
+	OGHAM, /+* Ogam +/
+	OLD_ITALIC, /+* Ital +/
+	ORIYA, /+* Orya +/
+	RUNIC, /+* Runr +/
+	SINHALA, /+* Sinh +/
+	SYRIAC, /+* Syrc (Syrj, Syrn, Syre) +/
+	TAMIL, /+* Taml +/
+	TELUGU, /+* Telu +/
+	THAANA, /+* Thaa +/
+	THAI, /+* Thai +/
+	TIBETAN, /+* Tibt +/
+	CANADIAN_ABORIGINAL, /+* Cans +/
+	YI, /+* Yiii +/
+	TAGALOG, /+* Tglg +/
+	HANUNOO, /+* Hano +/
+	BUHID, /+* Buhd +/
+	TAGBANWA, /+* Tagb +/
+	/+* Unicode-4.0 additions +/
+	BRAILLE, /+* Brai +/
+	CYPRIOT, /+* Cprt +/
+	LIMBU, /+* Limb +/
+	OSMANYA, /+* Osma +/
+	SHAVIAN, /+* Shaw +/
+	LINEAR_B, /+* Linb +/
+	TAI_LE, /+* Tale +/
+	UGARITIC, /+* Ugar +/
+	/+* Unicode-4.1 additions +/
+	NEW_TAI_LUE, /+* Talu +/
+	BUGINESE, /+* Bugi +/
+	GLAGOLITIC, /+* Glag +/
+	TIFINAGH, /+* Tfng +/
+	SYLOTI_NAGRI, /+* Sylo +/
+	OLD_PERSIAN, /+* Xpeo +/
+	KHAROSHTHI, /+* Khar +/
+	/+* Unicode-5.0 additions +/
+	UNKNOWN, /+* Zzzz +/
+	BALINESE, /+* Bali +/
+	CUNEIFORM, /+* Xsux +/
+	PHOENICIAN, /+* Phnx +/
+	PHAGS_PA, /+* Phag +/
+	NKO /+* Nkoo +/
+}
+/**
+ * Used to indicate how well a font can represent a particular Unicode
+ * character point for a particular script.
+ * PANGO_COVERAGE_NONE
+ * The character is not representable with the font.
+ * PANGO_COVERAGE_FALLBACK
+ * The character is represented in a way that may be
+ */
+public enum PangoCoverageLevel
+{
+	NONE,
+	FALLBACK,
+	APPROXIMATE,
+	EXACT
+}
+/**
+ * The PangoGravity type represents the orientation of glyphs in a segment
+ * of text. This is useful when rendering vertical text layouts. In
+ * those situations, the layout is rotated using a non-identity PangoMatrix,
+ * and then glyph orientation is controlled using PangoGravity.
+ * Not every value in this enumeration makes sense for every usage of
+ * PangoGravity; for example, PANGO_GRAVITY_AUTO only can be passed to
+ * pango_context_set_base_gravity() and can only be returned by
+ * pango_context_get_base_gravity().
+ * See also: PangoGravityHint
+ * PANGO_GRAVITY_SOUTH
+ */
+public enum PangoGravity
+{
+	SOUTH,
+	EAST,
+	NORTH,
+	WEST,
+	AUTO
+}
+/**
+ * The PangoGravityHint defines how horizontal scripts should behave in a
+ * vertical context. That is, English excerpt in a vertical paragraph for
+ * example.
+ * See PangoGravity.
+ * PANGO_GRAVITY_HINT_NATURAL
+ */
+public enum PangoGravityHint
+{
+	NATURAL,
+	STRONG,
+	LINE
+}
+
+/**
+ * Main Gtk struct.
+ * The PangoContext structure stores global information
+ * used to control the itemization process.
+ */
+public struct PangoContext{}
+
+
+/**
+ * The PangoItem structure stores information about
+ * a segment of text. It contains the following fields:
+ * gintoffset;
+ * the offset of the segment from the beginning of the
+ */
+public struct PangoItem{}
+// int offset;
+// pango-Text-Processing.html
+// int length;
+// pango-Text-Processing.html
+// int numChars;
+// pango-Text-Processing.html
+// PangoAnalysis analysis;
+// pango-Text-Processing.html
+
+
+/**
+ * The PangoAnalysis structure stores information about
+ * the properties of a segment of text. It has the following
+ * fields:
+ * PangoEngineShape*shape_engine;
+ * the engine for doing rendering-system-dependent processing.
+ * PangoEngineLang*lang_engine;
+ * the engine for doing rendering-system-independent processing.
+ * PangoFont*font;
+ * the font for this segment.
+ * guint8level;
+ * the bidirectional level for this segment.
+ * guint8gravity;
+ * the glyph orientation for this segment (A PangoGravity).
+ * guint8flags;
+ * boolean flags for this segment (currently only one) (Since: 1.16).
+ * guint8script;
+ * the detected script for this segment (A PangoScript) (Since: 1.18).
+ * PangoLanguage*language;
+ * the detected language for this segment.
+ * GSList*extra_attrs;
+ * extra attributes for this segment.
+ */
+public struct PangoAnalysis{}
+// PangoEngineShape *shapeEngine;
+// pango-Text-Processing.html
+// PangoEngineLang *langEngine;
+// pango-Text-Processing.html
+// PangoFont *font;
+// pango-Text-Processing.html
+// byte level;
+// pango-Text-Processing.html
+// byte gravity; /+* PangoGravity +/
+// pango-Text-Processing.html
+// byte flags;
+// pango-Text-Processing.html
+// byte script; /+* PangoScript +/
+// pango-Text-Processing.html
+// PangoLanguage *language;
+// pango-Text-Processing.html
+// GSList *extraAttrs;
+// pango-Text-Processing.html
+
+
+/**
+ * The PangoLogAttr structure stores information
+ * about the attributes of a single character.
+ * guintis_line_break:1;
+ * if set, can break line in front of character
+ * guintis_mandatory_break:1;
+ * if set, must break line in front of character
+ * guintis_char_break:1;
+ * if set, can break here when doing character wrapping
+ * guintis_white:1;
+ * is whitespace character
+ * guintis_cursor_position:1;
+ * if set, cursor can appear in front of character.
+ */
+public struct PangoLogAttr{}
+// uint isLineBreak : 1; /+* Can break line inn front of character +/
+// pango-Text-Processing.html
+// uint isMandatoryBreak : 1; /+* Must break line inn front of character +/
+// pango-Text-Processing.html
+// uint isCharBreak : 1; /+* Can break here when doing char wrap +/
+// pango-Text-Processing.html
+// uint isWhite : 1; /+* Whitespace character +/
+// pango-Text-Processing.html
+// /+* Cursor can appear inn front of character (i.e. this is a grapheme
+// pango-Text-Processing.html
+// * boundary, or the first character inn the text).
+// pango-Text-Processing.html
+// +/
+// pango-Text-Processing.html
+// uint isCursorPosition : 1;
+// pango-Text-Processing.html
+// /+* Note that inn degenerate cases, you could have both start/end set on
+// pango-Text-Processing.html
+// * some text, most likely for sentences (e.g. no space after a period, so
+// pango-Text-Processing.html
+// * the next sentence starts right away).
+// pango-Text-Processing.html
+// +/
+// pango-Text-Processing.html
+// uint isWordStart : 1; /+* first character inn a word +/
+// pango-Text-Processing.html
+// uint isWordEnd : 1; /+* is first non-word char after a word +/
+// pango-Text-Processing.html
+// /+* There are two ways to divide sentences. The first assigns all
+// pango-Text-Processing.html
+// * intersentence whitespace/control/format chars to some sentence,
+// pango-Text-Processing.html
+// * so all chars are inn some sentence; isSentenceBoundary denotes
+// pango-Text-Processing.html
+// * the boundaries there. The second way doesn't assign
+// pango-Text-Processing.html
+// * between-sentence spaces, etc. to any sentence, so
+// pango-Text-Processing.html
+// * isSentenceStart/isSentenceEnd mark the boundaries of those
+// pango-Text-Processing.html
+// * sentences.
+// pango-Text-Processing.html
+// +/
+// pango-Text-Processing.html
+// uint isSentenceBoundary : 1;
+// pango-Text-Processing.html
+// uint isSentenceStart : 1; /+* first character inn a sentence +/
+// pango-Text-Processing.html
+// uint isSentenceEnd : 1; /+* first non-sentence char after a sentence +/
+// pango-Text-Processing.html
+// /+* If set, backspace deletes one character rather than
+// pango-Text-Processing.html
+// * the entire grapheme cluster.
+// pango-Text-Processing.html
+// +/
+// pango-Text-Processing.html
+// uint backspaceDeletesCharacter : 1;
+// pango-Text-Processing.html
+// /+* Only few space variants (U+0020 and U+00A0) have variable
+// pango-Text-Processing.html
+// * width during justification.
+// pango-Text-Processing.html
+// +/
+// pango-Text-Processing.html
+// uint isExpandableSpace : 1;
+// pango-Text-Processing.html
+
+
+/**
+ * The PangoRectangle structure represents a rectangle. It is frequently
+ * used to represent the logical or ink extents of a single glyph or section
+ * of text. (See, for instance, pango_font_get_glyph_extents())
+ * intx;
+ * X coordinate of the left side of the rectangle.
+ * inty;
+ * Y coordinate of the the top side of the rectangle.
+ * intwidth;
+ * width of the rectangle.
+ * intheight;
+ * height of the rectangle.
+ */
+public struct PangoRectangle{}
+// int x;
+// pango-Glyph-Storage.html
+// int y;
+// pango-Glyph-Storage.html
+// int width;
+// pango-Glyph-Storage.html
+// int height;
+// pango-Glyph-Storage.html
+
+
+/**
+ * A structure specifying a transformation between user-space
+ * coordinates and device coordinates. The transformation
+ * is given by
+ * x_device = x_user * matrix->xx + y_user * matrix->xy + matrix->x0;
+ * y_device = x_user * matrix->yx + y_user * matrix->yy + matrix->y0;
+ * doublexx;
+ */
+public struct PangoMatrix{}
+// double xx;
+// pango-Glyph-Storage.html
+// double xy;
+// pango-Glyph-Storage.html
+// double yx;
+// pango-Glyph-Storage.html
+// double yy;
+// pango-Glyph-Storage.html
+// double x0;
+// pango-Glyph-Storage.html
+// double y0;
+// pango-Glyph-Storage.html
+
+
+/**
+ * The PangoGlyphInfo structure represents a single glyph together with
+ * positioning information and visual attributes.
+ * It contains the following fields.
+ * PangoGlyphglyph;
+ * the glyph itself.
+ * PangoGlyphGeometrygeometry;
+ * the positional information about the glyph.
+ * PangoGlyphVisAttrattr;
+ * the visual attributes of the glyph.
+ */
+public struct PangoGlyphInfo{}
+// PangoGlyph glyph;
+// pango-Glyph-Storage.html
+// PangoGlyphGeometry geometry;
+// pango-Glyph-Storage.html
+// PangoGlyphVisAttr attr;
+// pango-Glyph-Storage.html
+
+
+/**
+ * The PangoGlyphGeometry structure contains width and positioning
+ * information for a single glyph.
+ * PangoGlyphUnitwidth;
+ * the logical width to use for the the character.
+ * PangoGlyphUnitx_offset;
+ * horizontal offset from nominal character position.
+ * PangoGlyphUnity_offset;
+ * vertical offset from nominal character position.
+ */
+public struct PangoGlyphGeometry{}
+// PangoGlyphUnit width;
+// pango-Glyph-Storage.html
+// PangoGlyphUnit xOffset;
+// pango-Glyph-Storage.html
+// PangoGlyphUnit yOffset;
+// pango-Glyph-Storage.html
+
+
+/**
+ * The PangoGlyphVisAttr is used to communicate information between
+ * the shaping phase and the rendering phase. More attributes may be
+ * added in the future.
+ * guintis_cluster_start:1;
+ * set for the first logical glyph in each cluster. (Clusters
+ */
+public struct PangoGlyphVisAttr
+{
+	uint bitfield;
+	//uint isClusterStart : 1;
+}
+
+
+/**
+ * Main Gtk struct.
+ * The PangoGlyphString structure is used to store strings
+ * of glyphs with geometry and visual attribute information.
+ * The storage for the glyph information is owned
+ * by the structure which simplifies memory management.
+ * gintnum_glyphs;
+ * the number of glyphs in the string.
+ * PangoGlyphInfo*glyphs;
+ * an array of PangoGlyphInfo structures of length num_glyphs.
+ * gint*log_clusters;
+ * for each glyph, byte index of the starting character for the
+ * cluster. The indices are relative to the start of the text
+ * corresponding to the PangoGlyphString.
+ */
+public struct PangoGlyphString{}
+// int numGlyphs;
+// pango-Glyph-Storage.html
+// PangoGlyphInfo *glyphs;
+// pango-Glyph-Storage.html
+// /+* This is a memory inefficient way of representing the information
+// pango-Glyph-Storage.html
+// * here - each value gives the byte index within the text
+// pango-Glyph-Storage.html
+// * corresponding to the glyph string of the start of the cluster to
+// pango-Glyph-Storage.html
+// * which the glyph belongs.
+// pango-Glyph-Storage.html
+// +/
+// pango-Glyph-Storage.html
+// int *logClusters;
+// pango-Glyph-Storage.html
+
+
+/**
+ * A PangoGlyphItem is a pair of a PangoItem and the glyphs
+ * resulting from shaping the text corresponding to an item.
+ * As an example of the usage of PangoGlyphItem, the results
+ * of shaping text with PangoLayout is a list of PangoLayoutLine,
+ * each of which contains a list of PangoGlyphItem.
+ * PangoItem*item;
+ * a PangoItem structure that provides information
+ */
+public struct PangoGlyphItem{}
+// PangoItem *item;
+// pango-Glyph-Storage.html
+// PangoGlyphString *glyphs;
+// pango-Glyph-Storage.html
+
+
+/**
+ * Main Gtk struct.
+ * The PangoFontDescription structure represents the description
+ * of an ideal font. These structures are used both to list
+ * what fonts are available on the system and also for specifying
+ * the characteristics of a font to load.
+ */
+public struct PangoFontDescription{}
+
+
+/**
+ * A PangoFontMetrics structure holds the overall metric information
+ * for a font (possibly restricted to a script). The fields of this
+ * structure are private to implementations of a font backend. See
+ * the documentation of the corresponding getters for documentation
+ * of their meaning.
+ * guintref_count;
+ * reference count. Used internally. See pango_font_metrics_ref()
+ */
+public struct PangoFontMetrics{}
+// uint refCount;
+// pango-Fonts.html
+// int ascent;
+// pango-Fonts.html
+// int descent;
+// pango-Fonts.html
+// int approximateCharWidth;
+// pango-Fonts.html
+// int approximateDigitWidth;
+// pango-Fonts.html
+// int underlinePosition;
+// pango-Fonts.html
+// int underlineThickness;
+// pango-Fonts.html
+// int strikethroughPosition;
+// pango-Fonts.html
+// int strikethroughThickness;
+// pango-Fonts.html
+
+
+/**
+ * The PangoFont structure is used to represent
+ * a font in a rendering-system-independent matter.
+ * To create an implementation of a PangoFont,
+ * the rendering-system specific code should allocate
+ * a larger structure that contains a nested
+ * PangoFont, fill in the klass member of
+ * the nested PangoFont with a pointer to
+ * a appropriate PangoFontClass, then call
+ * pango_font_init() on the structure.
+ * The PangoFont structure contains one member
+ * which the implementation fills in.
+ */
+public struct PangoFont{}
+
+
+/**
+ * The PangoFontFamily structure is used to represent a family of related
+ * font faces. The faces in a family share a common design, but differ in
+ * slant, weight, width and other aspects.
+ */
+public struct PangoFontFamily{}
+
+
+/**
+ * The PangoFontFace structure is used to represent a group of fonts with
+ * the same family, slant, weight, width, but varying sizes.
+ */
+public struct PangoFontFace{}
+
+
+/**
+ * The PangoFontMap represents the set of fonts available for a
+ * particular rendering system. This is a virtual object with
+ * implementations being specific to particular rendering systems. To
+ * create an implementation of a PangoFontMap, the rendering-system
+ * specific code should allocate a larger structure that contains a nested
+ * PangoFontMap, fill in the klass member of the nested PangoFontMap with a
+ * pointer to a appropriate PangoFontMapClass, then call
+ * pango_font_map_init() on the structure.
+ * The PangoFontMap structure contains one member which the implementation
+ * fills in.
+ */
+public struct PangoFontMap{}
+
+
+/**
+ * The PangoFontMapClass structure holds the virtual functions for
+ * a particular PangoFontMap implementation.
+ * GObjectClassparent_class;
+ * parent GObjectClass.
+ * load_font()
+ * a function to load a font with a given description. See
+ */
+public struct PangoFontMapClass{}
+// GObjectClass parentClass;
+// pango-Fonts.html
+// PangoFont * (*loadFont) (PangoFontMap *fontmap,
+// pango-Fonts.html
+// PangoContext *context,
+// pango-Fonts.html
+// PangoFontDescription *desc);
+// pango-Fonts.html
+// void (*listFamilies) (PangoFontMap *fontmap,
+// pango-Fonts.html
+// PangoFontFamily ***families,
+// pango-Fonts.html
+// int *nFamilies);
+// pango-Fonts.html
+// PangoFontset *(*loadFontset) (PangoFontMap *fontmap,
+// pango-Fonts.html
+// PangoContext *context,
+// pango-Fonts.html
+// PangoFontDescription *desc,
+// pango-Fonts.html
+// PangoLanguage *language);
+// pango-Fonts.html
+// char *shapeEngineType;
+// pango-Fonts.html
+
+
+/**
+ * A PangoFontset represents a set of PangoFont to use
+ * when rendering text. It is the result of resolving a
+ * PangoFontDescription against a particular PangoContext.
+ * It has operations for finding the component font for
+ * a particular Unicode character, and for finding a composite
+ * set of metrics for the entire fontset.
+ */
+public struct PangoFontset{}
+
+
+/**
+ * The PangoFontsetClass structure holds the virtual functions for
+ * a particular PangoFontset implementation.
+ * GObjectClassparent_class;
+ * parent GObjectClass.
+ * get_font()
+ * a function to get the font in the fontset that contains the
+ */
+public struct PangoFontsetClass{}
+// GObjectClass parentClass;
+// pango-Fonts.html
+// PangoFont * (*getFont) (PangoFontset *fontset,
+// pango-Fonts.html
+// uint wc);
+// pango-Fonts.html
+// PangoFontMetrics *(*getMetrics) (PangoFontset *fontset);
+// pango-Fonts.html
+// PangoLanguage * (*getLanguage) (PangoFontset *fontset);
+// pango-Fonts.html
+// void (*foreac) (PangoFontset *fontset,
+// pango-Fonts.html
+// PangoFontsetForeachFunc func,
+// pango-Fonts.html
+// void* data);
+// pango-Fonts.html
+
+
+/**
+ * PangoFontsetSimple is a implementation of the abstract
+ * PangoFontset base class in terms of an array of fonts,
+ * which the creator provides when constructing the
+ * PangoFontsetSimple.
+ */
+public struct PangoFontsetSimple{}
+
+
+/**
+ * The PangoAttrClass structure stores the type and operations for
+ * a particular type of attribute. The functions in this structure should
+ * not be called directly. Instead, one should use the wrapper functions
+ * provided for PangoAttribute.
+ * PangoAttrTypetype;
+ * the type ID for this attribute
+ * copy()
+ * function to duplicate an attribute of this type (see pango_attribute_copy())
+ * destroy()
+ * function to free an attribute of this type (see pango_attribute_destroy())
+ * equal()
+ * function to check two attributes of this type for equality (see pango_attribute_equal())
+ */
+public struct PangoAttrClass{}
+// PangoAttrType type;
+// pango-Text-Attributes.html
+// PangoAttribute * (*copy) ( PangoAttribute *attr);
+// pango-Text-Attributes.html
+// void (*destroy) (PangoAttribute *attr);
+// pango-Text-Attributes.html
+// int (*equal) ( PangoAttribute *attr1, PangoAttribute *attr2);
+// pango-Text-Attributes.html
+
+
+/**
+ * Main Gtk struct.
+ * The PangoAttribute structure represents the common portions of all
+ * attributes. Particular types of attributes include this structure
+ * as their initial portion. The common portion of the attribute holds
+ * the range to which the value in the type-specific part of the attribute
+ * applies.
+ * constPangoAttrClass*klass;
+ * the class structure holding information about the type of the attribute
+ * guintstart_index;
+ * the start index of the range (in bytes).
+ * guintend_index;
+ * end index of the range (in bytes). The character at this index
+ */
+public struct PangoAttribute
+{
+	PangoAttrClass *klass;
+	uint startIndex; /+* inn bytes +/
+	uint endIndex; /+* inn bytes. The character at this index is not included +/
+}
+
+
+/**
+ * The PangoAttrString structure is used to represent attributes with
+ * a string value.
+ * PangoAttributeattr;
+ * the common portion of the attribute
+ * char*value;
+ * the string which is the value of the attribute
+ */
+public struct PangoAttrString{}
+// PangoAttribute attr;
+// pango-Text-Attributes.html
+// char *value;
+// pango-Text-Attributes.html
+
+
+/**
+ * The PangoAttrLanguage structure is used to represent attributes that
+ * are languages.
+ * PangoAttributeattr;
+ * the common portion of the attribute
+ * PangoLanguage*value;
+ * the PangoLanguage which is the value of the attribute
+ */
+public struct PangoAttrLanguage{}
+// PangoAttribute attr;
+// pango-Text-Attributes.html
+// PangoLanguage *value;
+// pango-Text-Attributes.html
+
+
+/**
+ * The PangoAttrColor structure is used to represent attributes that
+ * are colors.
+ * PangoAttributeattr;
+ * the common portion of the attribute
+ * PangoColorcolor;
+ * the PangoColor which is the value of the attribute
+ */
+public struct PangoAttrColor{}
+// PangoAttribute attr;
+// pango-Text-Attributes.html
+// PangoColor color;
+// pango-Text-Attributes.html
+
+
+/**
+ * The PangoAttrInt structure is used to represent attributes with
+ * an integer or enumeration value.
+ * PangoAttributeattr;
+ * the common portion of the attribute
+ * intvalue;
+ * the value of the attribute
+ */
+public struct PangoAttrInt{}
+// PangoAttribute attr;
+// pango-Text-Attributes.html
+// int value;
+// pango-Text-Attributes.html
+
+
+/**
+ * The PangoAttrFloat structure is used to represent attributes with
+ * a float or double value.
+ * PangoAttributeattr;
+ * the common portion of the attribute
+ * doublevalue;
+ * the value of the attribute
+ */
+public struct PangoAttrFloat{}
+// PangoAttribute attr;
+// pango-Text-Attributes.html
+// double value;
+// pango-Text-Attributes.html
+
+
+/**
+ * The PangoAttrFontDesc structure is used to store an attribute that
+ * sets all aspects of the font description at once.
+ * PangoAttributeattr;
+ * the common portion of the attribute
+ * PangoFontDescription*desc;
+ * the font description which is the value of this attribute
+ */
+public struct PangoAttrFontDesc{}
+// PangoAttribute attr;
+// pango-Text-Attributes.html
+// PangoFontDescription *desc;
+// pango-Text-Attributes.html
+
+
+/**
+ * The PangoAttrShape structure is used to represent attributes which
+ * impose shape restrictions.
+ * PangoAttributeattr;
+ * the common portion of the attribute
+ * PangoRectangleink_rect;
+ * the ink rectangle to restrict to
+ * PangoRectanglelogical_rect;
+ * the logical rectangle to restrict to
+ * gpointerdata;
+ * user data set (see pango_attr_shape_new_with_data())
+ * PangoAttrDataCopyFunccopy_func;
+ * copy function for the user data
+ * GDestroyNotifydestroy_func;
+ * destroy function for the user data
+ */
+public struct PangoAttrShape{}
+// PangoAttribute attr;
+// pango-Text-Attributes.html
+// PangoRectangle inkRect;
+// pango-Text-Attributes.html
+// PangoRectangle logicalRect;
+// pango-Text-Attributes.html
+// void* data;
+// pango-Text-Attributes.html
+// PangoAttrDataCopyFunc copyFunc;
+// pango-Text-Attributes.html
+// GDestroyNotify destroyFunc;
+// pango-Text-Attributes.html
+
+
+/**
+ * The PangoAttrShape structure is used to represent attributes which
+ * set font size.
+ * PangoAttributeattr;
+ * the common portion of the attribute
+ * intsize;
+ * size of font, in units of 1/PANGO_SCALE of a point (for
+ */
+public struct PangoAttrSize{}
+// PangoAttribute attr;
+// pango-Text-Attributes.html
+// int size;
+// pango-Text-Attributes.html
+// uint absolute : 1;
+// pango-Text-Attributes.html
+
+
+/**
+ * The PangoColor structure is used to
+ * represent a color in an uncalibrated RGB color-space.
+ * guint16red;
+ * The red component of the color. This is a value between 0 and 65535,
+ */
+public struct PangoColor
+{
+	ushort red;
+	ushort green;
+	ushort blue;
+}
+
+
+/**
+ * The PangoLanguage structure is used to
+ * represent a language.
+ * PangoLanguage pointers can be efficiently
+ * copied and compared with each other.
+ */
+public struct PangoLanguage{}
+
+
+/**
+ * The PangoAttrList structure represents a list of attributes
+ * that apply to a section of text. The attributes are, in general,
+ * allowed to overlap in an arbitrary fashion, however, if the
+ * attributes are manipulated only through pango_attr_list_change(),
+ * the overlap between properties will meet stricter criteria.
+ * Since the PangoAttrList structure is stored as a linear list,
+ * it is not suitable for storing attributes for large amounts
+ * of text. In general, you should not use a single PangoAttrList
+ * for more than one paragraph of text.
+ */
+public struct PangoAttrList{}
+
+
+/**
+ * The PangoAttrIterator structure is used to represent an
+ * iterator through a PangoAttrList. A new iterator is created
+ * with pango_attr_list_get_iterator(). Once the iterator
+ * is created, it can be advanced through the style changes
+ * in the text using pango_attr_iterator_next(). At each
+ * style change, the range of the current style segment and the
+ * attributes currently in effect can be queried.
+ */
+public struct PangoAttrIterator{}
+
+
+/**
+ * Main Gtk struct.
+ * A PangoTabArray struct contains an array
+ * of tab stops. Each tab stop has an alignment and a position.
+ */
+public struct PangoTabArray{}
+
+
+/**
+ * Main Gtk struct.
+ * The PangoLayout structure represents and entire paragraph
+ * of text. It is initialized with a PangoContext, UTF-8 string
+ * and set of attributes for that string. Once that is done, the
+ * set of formatted lines can be extracted from the object,
+ * the layout can be rendered, and conversion between logical
+ * character positions within the layout's text, and the physical
+ * position of the resulting glyphs can be made.
+ * There are also a number of parameters to adjust the formatting
+ * of a PangoLayout, which are illustrated in Figure1, Adjustable parameters for a PangoLayout.
+ * It is possible, as well, to ignore the 2-D setup, and simply
+ * treat the results of a PangoLayout as a list of lines.
+ * Figure1.Adjustable parameters for a PangoLayout
+ * The PangoLayout structure is opaque, and has no user-visible
+ * fields.
+ */
+public struct PangoLayout{}
+
+
+/**
+ * A PangoLayoutIter structure can be used to
+ * iterate over the visual extents of a PangoLayout.
+ * The PangoLayoutIter structure is opaque, and
+ * has no user-visible fields.
+ */
+public struct PangoLayoutIter{}
+
+
+/**
+ * The PangoLayoutLine structure represents one of the lines resulting
+ * from laying out a paragraph via PangoLayout. PangoLayoutLine
+ * structures are obtained by calling pango_layout_get_line() and
+ * are only valid until the text, attributes, or settings of the
+ * parent PangoLayout are modified.
+ * Routines for rendering PangoLayout objects are provided in
+ * code specific to each rendering system.
+ * PangoLayout*layout;
+ * the parent layout for this line
+ * gintstart_index;
+ * the start of the line as byte index into layout->text
+ * gintlength;
+ * the length of the line in bytes
+ * GSList*runs;
+ * a list containing the runs of the line in visual order
+ * guintis_paragraph_start:1;
+ * TRUE if this is the first line of the paragraph
+ * guintresolved_dir:3;
+ * the resolved PangoDirection of the line
+ */
+public struct PangoLayoutLine{}
+// PangoLayout *layout;
+// pango-Layout-Objects.html
+// int startIndex; /+* start of line as byte index into layout->text +/
+// pango-Layout-Objects.html
+// int length; /+* length of line inn bytes +/
+// pango-Layout-Objects.html
+// GSList *runs;
+// pango-Layout-Objects.html
+// uint isParagraphStart : 1; /+* TRUE if this is the first line of the paragraph +/
+// pango-Layout-Objects.html
+// uint resolvedDir : 3; /+* Resolved PangoDirection of line +/
+// pango-Layout-Objects.html
+
+
+/**
+ * Main Gtk struct.
+ * A PangoScriptIter is used to iterate through a string
+ * and identify ranges in different scripts.
+ */
+public struct PangoScriptIter{}
+
+
+/**
+ * The PangoCoverage structure represents a map from Unicode characters
+ * to PangoCoverageLevel. It is an opaque structure with no public fields.
+ */
+public struct PangoCoverage{}
+
+
+/**
+ * The PangoEngineInfo structure contains information about a particular
+ * engine. It contains the following fields:
+ * constgchar*id;
+ * a unique string ID for the engine.
+ * constgchar*engine_type;
+ * a string identifying the engine type.
+ * constgchar*render_type;
+ * a string identifying the render type.
+ * PangoEngineScriptInfo*scripts;
+ * array of scripts this engine supports.
+ * gintn_scripts;
+ * number of items in scripts.
+ */
+public struct PangoEngineInfo{}
+// char *id;
+// pango-Engines.html
+// char *engineType;
+// pango-Engines.html
+// char *renderType;
+// pango-Engines.html
+// PangoEngineScriptInfo *scripts;
+// pango-Engines.html
+// int nScripts;
+// pango-Engines.html
+
+
+/**
+ * The PangoEngineScriptInfo structure contains
+ * information about how the shaper covers a particular
+ * script.
+ * PangoScriptscript;
+ * a PangoScript. The value PANGO_SCRIPT_COMMON has
+ */
+public struct PangoEngineScriptInfo{}
+// PangoScript script;
+// pango-Engines.html
+// char *langs;
+// pango-Engines.html
+
+
+/**
+ * PangoEngine is the base class for all types of language and
+ * script specific engines. It has no functionality by itself.
+ */
+public struct PangoEngine{}
+
+
+/**
+ * Class structure for PangoEngine
+ */
+public struct PangoEngineClass{}
+
+
+/**
+ * The PangoEngineLang class is implemented by engines that
+ * customize the rendering-system independent part of the
+ * Pango pipeline for a particular script or language. For
+ * instance, a custom PangoEngineLang could be provided for
+ * Thai to implement the dictionary-based word boundary
+ * lookups needed for that language.
+ */
+public struct PangoEngineLang{}
+
+
+/**
+ * Class structure for PangoEngineLang
+ * script_break()
+ */
+public struct PangoEngineLangClass{}
+// void (*scriptBreak) (PangoEngineLang *engine,
+// PangoEngineLang.html
+// char *text,
+// PangoEngineLang.html
+// int len,
+// PangoEngineLang.html
+// PangoAnalysis *analysis,
+// PangoEngineLang.html
+// PangoLogAttr *attrs,
+// PangoEngineLang.html
+// int attrsLen);
+// PangoEngineLang.html
+
+
+/**
+ * The PangoEngineShape class is implemented by engines that
+ * customize the rendering-system dependent part of the
+ * Pango pipeline for a particular script or language.
+ * A PangoEngineShape implementation is then specific to both
+ * a particular rendering system or group of rendering systems
+ * and to a particular script. For instance, there is one
+ * PangoEngineShape implementation to handle shaping Arabic
+ * for Fontconfig-based backends.
+ */
+public struct PangoEngineShape{}
+
+
+/**
+ * Class structure for PangoEngineShape
+ * script_shape()
+ */
+public struct PangoEngineShapeClass{}
+// void (*scriptShape) (PangoEngineShape *engine,
+// PangoEngineShape.html
+// PangoFont *font,
+// PangoEngineShape.html
+// char *text,
+// PangoEngineShape.html
+// int length,
+// PangoEngineShape.html
+// PangoAnalysis *analysis,
+// PangoEngineShape.html
+// PangoGlyphString *glyphs);
+// PangoEngineShape.html
+// PangoCoverageLevel (*covers) (PangoEngineShape *engine,
+// PangoEngineShape.html
+// PangoFont *font,
+// PangoEngineShape.html
+// PangoLanguage *language,
+// PangoEngineShape.html
+// gunichar wc);
+// PangoEngineShape.html
+
+
+/*
+ * Converts a dimension to device units by rounding.
+ * d:
+ * a dimension in Pango units.
+ * Returns:
+ * rounded dimension in device units.
+ */
+// TODO
+// #define PANGO_PIXELS(d) (((int)(d) + 512) >> 10)
+
+/*
+ * Converts a dimension to device units by flooring.
+ * d:
+ * a dimension in Pango units.
+ * Returns:
+ * floored dimension in device units.
+ * Since 1.14
+ */
+// TODO
+// #define PANGO_PIXELS_FLOOR(d) (((int)(d)) >> 10)
+
+/*
+ * Converts a dimension to device units by ceiling.
+ * d:
+ * a dimension in Pango units.
+ * Returns:
+ * ceiled dimension in device units.
+ * Since 1.14
+ */
+// TODO
+// #define PANGO_PIXELS_CEIL(d) (((int)(d) + 1023) >> 10)
+
+/*
+ * Rounds a dimension to whole device units, but does not
+ * convert it to device units.
+ * d:
+ * a dimension in Pango units.
+ * Returns:
+ * rounded dimension in Pango units.
+ * Since 1.18
+ */
+// TODO
+// #define PANGO_UNITS_ROUND(d)
+
+/*
+ * Extracts the ascent from a PangoRectangle
+ * representing glyph extents. The ascent is the distance from the
+ * baseline to the highest point of the character. This is positive if the
+ * glyph ascends above the baseline.
+ * rect:
+ * a PangoRectangle
+ */
+// TODO
+// #define PANGO_ASCENT(rect) (-(rect).y)
+
+/*
+ * Extracts the descent from a PangoRectangle
+ * representing glyph extents. The descent is the distance from the
+ * baseline to the lowest point of the character. This is positive if the
+ * glyph descends below the baseline.
+ * rect:
+ * a PangoRectangle
+ */
+// TODO
+// #define PANGO_DESCENT(rect) ((rect).y + (rect).height)
+
+/*
+ * Extracts the left bearing from a PangoRectangle
+ * representing glyph extents. The left bearing is the distance from the
+ * horizontal origin to the farthest left point of the character.
+ * This is positive for characters drawn completely to the right of the
+ * glyph origin.
+ * rect:
+ * a PangoRectangle
+ */
+// TODO
+// #define PANGO_LBEARING(rect) ((rect).x)
+
+/*
+ * Extracts the right bearing from a PangoRectangle
+ * representing glyph extents. The right bearing is the distance from the
+ * horizontal origin to the farthest right point of the character.
+ * This is positive except for characters drawn completely to the left of the
+ * horizontal origin.
+ * rect:
+ * a PangoRectangle
+ */
+// TODO
+// #define PANGO_RBEARING(rect) ((rect).x + (rect).width)
+
+/*
+ * Returns a PangoGlyph value that means no glyph was found for wc.
+ * The way this unknown glyphs are rendered is backend specific. For example,
+ * a box with the hexadecimal Unicode code-point of the character written in it
+ * is what is done in the most common backends.
+ * wc:
+ * a Unicode character
+ */
+// TODO
+// #define PANGO_GET_UNKNOWN_GLYPH(wc) ((PangoGlyph)(wc)|PANGO_GLYPH_UNKNOWN_FLAG)
+
+/*
+ * Casts a GObject to a PangoFont.
+ * object:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT, PangoFont))
+
+/*
+ * Returns TRUE if object is a PangoFont.
+ * object:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT))
+
+/*
+ * Casts a GObject to a PangoFontFamily.
+ * object:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FAMILY, PangoFontFamily))
+
+/*
+ * Returns TRUE if object is a PangoFontFamily.
+ * object:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_IS_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FAMILY))
+
+/*
+ * Casts a GObject to a PangoFontFace.
+ * object:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FACE, PangoFontFace))
+
+/*
+ * Returns TRUE if object is a PangoFontFace.
+ * object:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_IS_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FACE))
+
+/*
+ * Casts a GObject to a PangoFontMap.
+ * object:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_MAP, PangoFontMap))
+
+/*
+ * Returns TRUE if object is a PangoFontMap.
+ * object:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_MAP))
+
+/*
+ * Casts a GObject to a PangoFontMapClass.
+ * klass:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_MAP, PangoFontMapClass))
+
+/*
+ * Returns TRUE if klass is a subtype of PangoFontMapClass.
+ * klass:
+ * a GObject.
+ */
+// TODO
+// #define PANGO_IS_FONT_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_MAP))
+
+/*
+ * Returns the type of a PangoFontMap.
+ * obj:
+ * a PangoFontMap.
+ */
+// TODO
+// #define PANGO_FONT_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_MAP, PangoFontMapClass))
+
+/*
+ * Outputs the necessary code for GObject type registration for a
+ * PangoEngineLang class defined in a module. Two static symbols
+ * are defined.
+ *  static GType prefix_type;
+ *  static void prefix_register_type (GTypeModule module);
+ * The prefix, _register_type()
+ * function should be called in your script_engine_init() function for
+ * each type that your module implements, and then your script_engine_create()
+ * function can create instances of the object as follows:
+ *  PangoEngine *engine = g_object_new (prefix_type, NULL);
+ * name:
+ *  Name of the the type to register (for example:, ArabicEngineFc
+ * prefix:
+ *  Prefix for symbols that will be defined (for example:, arabic_engine_fc
+ * class_init:
+ *  Class initialization function for the new type, or NULL
+ * instance_init:
+ *  Instance initialization function for the new type, or NULL
+ */
+// TODO
+// #define PANGO_ENGINE_LANG_DEFINE_TYPE(name, prefix, class_init, instance_init)
+
+/*
+ * Outputs the necessary code for GObject type registration for a
+ * PangoEngineShape class defined in a module. Two static symbols
+ * are defined.
+ *  static GType prefix_type;
+ *  static void prefix_register_type (GTypeModule module);
+ * The prefix, _register_type()
+ * function should be called in your script_engine_init() function for
+ * each type that your module implements, and then your script_engine_create()
+ * function can create instances of the object as follows:
+ *  PangoEngine *engine = g_object_new (prefix_type, NULL);
+ * name:
+ *  Name of the the type to register (for example:, ArabicEngineFc
+ * prefix:
+ *  Prefix for symbols that will be defined (for example:, arabic_engine_fc
+ * class_init:
+ *  Class initialization function for the new type, or NULL
+ * instance_init:
+ *  Instance initialization function for the new type, or NULL
+ */
+// TODO
+// #define PANGO_ENGINE_SHAPE_DEFINE_TYPE(name, prefix, class_init, instance_init)
+
+/*
+ * Whether a PangoGravity represents vertical writing directions.
+ * gravity:
+ *  the PangoGravity to check
+ * Since 1.16
+ */
+// TODO
+// #define PANGO_GRAVITY_IS_VERTICAL(gravity)
+
+/*
+ * A callback function used by pango_fontset_foreach() when enumerating
+ * the fonts in a fontset.
+ * fontset:
+ *  a PangoFontset
+ * font:
+ *  a font from fontset
+ * data:
+ *  callback data
+ * Returns:
+ *  if TRUE, stop iteration and return immediately.
+ * Since 1.4
+ */
+// gboolean (*PangoFontsetForeachFunc) (PangoFontset *fontset,  PangoFont *font,  gpointer data);
+public typedef extern(C) int  function (PangoFontset*, PangoFont*, void*) PangoFontsetForeachFunc;
+
+/*
+ * A copy function passed to attribute new functions that take
+ * user data.
+ * data:
+ * the user data
+ * Returns:
+ * a new copy of data.
+ */
+// gpointer (*PangoAttrDataCopyFunc) (gconstpointer data);
+public typedef extern(C) void*  function (void*) PangoAttrDataCopyFunc;
+
+/*
+ * A predicate function used by pango_attr_list_filter()
+ * to filter out a subset of attributes for a list.
+ * attribute:
+ * a PangoAttribute
+ * data:
+ * callback data passed to pango_attr_list_filter()
+ * Returns:
+ * TRUE if the attribute should be filtered out
+ */
+// gboolean (*PangoAttrFilterFunc) (PangoAttribute *attribute,  gpointer data);
+public typedef extern(C) int  function (PangoAttribute*, void*) PangoAttrFilterFunc;