Add custom Pango VAPI
authorPhilipp Zabel <philipp.zabel@gmail.com>
Fri, 6 Nov 2009 19:07:53 +0000 (20:07 +0100)
committerPhilipp Zabel <philipp.zabel@gmail.com>
Wed, 11 Nov 2009 18:08:27 +0000 (19:08 +0100)
Fixes ownership transfer issue of the Pango.Attribute constructors and
turns Pango.Scale into double constants instead of an enum.

vapi/pango.vapi [new file with mode: 0644]

diff --git a/vapi/pango.vapi b/vapi/pango.vapi
new file mode 100644 (file)
index 0000000..4844d91
--- /dev/null
@@ -0,0 +1,959 @@
+/* pango.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "Pango", lower_case_cprefix = "pango_")]
+namespace Pango {
+       [CCode (cprefix = "PangoScale", lower_case_cprefix = "pango_scale_")]
+       namespace Scale {
+               [CCode (cheader_filename = "pango/pango.h")]
+               public const double LARGE;
+               [CCode (cheader_filename = "pango/pango.h")]
+               public const double MEDIUM;
+               [CCode (cheader_filename = "pango/pango.h")]
+               public const double SMALL;
+               [CCode (cheader_filename = "pango/pango.h")]
+               public const double XX_LARGE;
+               [CCode (cheader_filename = "pango/pango.h")]
+               public const double XX_SMALL;
+               [CCode (cheader_filename = "pango/pango.h")]
+               public const double X_LARGE;
+               [CCode (cheader_filename = "pango/pango.h")]
+               public const double X_SMALL;
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class Analysis {
+               public weak GLib.SList extra_attrs;
+               public uchar flags;
+               public weak Pango.Font font;
+               public uchar gravity;
+               public weak Pango.EngineLang lang_engine;
+               public weak Pango.Language language;
+               public uchar level;
+               public uchar script;
+               public weak Pango.EngineShape shape_engine;
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class AttrClass {
+               public weak GLib.Callback copy;
+               public weak GLib.Callback destroy;
+               public weak GLib.Callback equal;
+               public Pango.AttrType type;
+       }
+       [Compact]
+       [CCode (free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrColor : Pango.Attribute {
+               public Pango.Color color;
+       }
+       [Compact]
+       [CCode (free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrFloat : Pango.Attribute {
+               public double value;
+       }
+       [Compact]
+       [CCode (free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrFontDesc : Pango.Attribute {
+               public weak Pango.FontDescription desc;
+               [CCode (type = "PangoAttribute*", has_construct_function = false)]
+               public AttrFontDesc (Pango.FontDescription desc);
+       }
+       [Compact]
+       [CCode (free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrInt : Pango.Attribute {
+               public int value;
+       }
+       [Compact]
+       [CCode (copy_function = "pango_attr_iterator_copy", free_function = "pango_attr_iterator_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrIterator {
+               public Pango.AttrIterator copy ();
+               public unowned Pango.Attribute @get (Pango.AttrType type);
+               public unowned GLib.SList get_attrs ();
+               public void get_font (Pango.FontDescription desc, out unowned Pango.Language language, GLib.SList extra_attrs);
+               public bool next ();
+               public void range (int start, int end);
+       }
+       [Compact]
+       [CCode (free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrLanguage : Pango.Attribute {
+               public weak Pango.Language value;
+               [CCode (type = "PangoAttribute*", has_construct_function = false)]
+               public AttrLanguage (Pango.Language language);
+       }
+       [Compact]
+       [CCode (ref_function = "pango_attr_list_ref", unref_function = "pango_attr_list_unref", type_id = "PANGO_TYPE_ATTR_LIST", cheader_filename = "pango/pango.h")]
+       public class AttrList {
+               [CCode (has_construct_function = false)]
+               public AttrList ();
+               public void change (Pango.Attribute attr);
+               public Pango.AttrList copy ();
+               public unowned Pango.AttrList filter (Pango.AttrFilterFunc func, void* data);
+               public unowned Pango.AttrIterator get_iterator ();
+               public void insert (owned Pango.Attribute attr);
+               public void insert_before (Pango.Attribute attr);
+               public void splice (Pango.AttrList other, int pos, int len);
+       }
+       [Compact]
+       [CCode (free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrShape : Pango.Attribute {
+               public weak Pango.Attribute attr;
+               public weak Pango.AttrDataCopyFunc copy_func;
+               public void* data;
+               public weak GLib.DestroyNotify destroy_func;
+               public Pango.Rectangle ink_rect;
+               public Pango.Rectangle logical_rect;
+               [CCode (type = "PangoAttribute*", has_construct_function = false)]
+               public AttrShape (Pango.Rectangle ink_rect, Pango.Rectangle logical_rect);
+               [CCode (type = "PangoAttribute*", has_construct_function = false)]
+               public AttrShape.with_data (Pango.Rectangle ink_rect, Pango.Rectangle logical_rect, void* data, Pango.AttrDataCopyFunc copy_func, GLib.DestroyNotify destroy_func);
+       }
+       [Compact]
+       [CCode (free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrSize : Pango.Attribute {
+               public uint absolute;
+               public int size;
+               [CCode (type = "PangoAttribute*", has_construct_function = false)]
+               public AttrSize (int size);
+       }
+       [Compact]
+       [CCode (free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class AttrString : Pango.Attribute {
+               public weak string value;
+       }
+       [Compact]
+       [CCode (copy_function = "pango_attribute_copy", free_function = "pango_attribute_destroy", cheader_filename = "pango/pango.h")]
+       public class Attribute {
+               public uint end_index;
+               public weak Pango.AttrClass klass;
+               public uint start_index;
+               public Pango.Attribute copy ();
+               public bool equal (Pango.Attribute attr2);
+               public void init (Pango.AttrClass klass);
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class Context : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public Context ();
+               public Pango.Direction get_base_dir ();
+               public Pango.Gravity get_base_gravity ();
+               public unowned Pango.FontDescription get_font_description ();
+               public unowned Pango.FontMap get_font_map ();
+               public Pango.Gravity get_gravity ();
+               public Pango.GravityHint get_gravity_hint ();
+               public unowned Pango.Language get_language ();
+               public Pango.Matrix get_matrix ();
+               public unowned Pango.FontMetrics get_metrics (Pango.FontDescription desc, Pango.Language language);
+               public void list_families (Pango.FontFamily[] families);
+               public unowned Pango.Font load_font (Pango.FontDescription desc);
+               public unowned Pango.Fontset load_fontset (Pango.FontDescription desc, Pango.Language language);
+               public void set_base_dir (Pango.Direction direction);
+               public void set_base_gravity (Pango.Gravity gravity);
+               public void set_font_description (Pango.FontDescription desc);
+               public void set_font_map (Pango.FontMap font_map);
+               public void set_gravity_hint (Pango.GravityHint hint);
+               public void set_language (Pango.Language language);
+               public void set_matrix (Pango.Matrix matrix);
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class ContextClass {
+       }
+       [Compact]
+       [CCode (ref_function = "pango_coverage_ref", unref_function = "pango_coverage_unref", cheader_filename = "pango/pango.h")]
+       public class Coverage {
+               [CCode (has_construct_function = false)]
+               public Coverage ();
+               public Pango.Coverage copy ();
+               public static unowned Pango.Coverage from_bytes (uchar[] bytes);
+               public Pango.CoverageLevel @get (int index_);
+               public void max (Pango.Coverage other);
+               public void @set (int index_, Pango.CoverageLevel level);
+               public void to_bytes (uchar[] bytes);
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class EngineLang {
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class EngineShape {
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class Font : GLib.Object {
+               public unowned Pango.FontDescription describe ();
+               public unowned Pango.FontDescription describe_with_absolute_size ();
+               public static void descriptions_free (Pango.FontDescription[] descs);
+               public unowned Pango.EngineShape find_shaper (Pango.Language language, uint32 ch);
+               public unowned Pango.Coverage get_coverage (Pango.Language language);
+               public unowned Pango.FontMap get_font_map ();
+               public void get_glyph_extents (Pango.Glyph glyph, out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public unowned Pango.FontMetrics get_metrics (Pango.Language language);
+       }
+       [Compact]
+       [Immutable]
+       [CCode (copy_function = "pango_font_description_copy", type_id = "PANGO_TYPE_FONT_DESCRIPTION", cheader_filename = "pango/pango.h")]
+       public class FontDescription {
+               [CCode (has_construct_function = false)]
+               public FontDescription ();
+               public bool better_match (Pango.FontDescription old_match, Pango.FontDescription new_match);
+               public Pango.FontDescription copy ();
+               public bool equal (Pango.FontDescription desc2);
+               public static Pango.FontDescription from_string (string str);
+               public unowned string get_family ();
+               public Pango.Gravity get_gravity ();
+               public Pango.FontMask get_set_fields ();
+               public int get_size ();
+               public bool get_size_is_absolute ();
+               public Pango.Stretch get_stretch ();
+               public Pango.Style get_style ();
+               public Pango.Variant get_variant ();
+               public Pango.Weight get_weight ();
+               public uint hash ();
+               public void merge (Pango.FontDescription desc_to_merge, bool replace_existing);
+               public void merge_static (Pango.FontDescription desc_to_merge, bool replace_existing);
+               public void set_absolute_size (double size);
+               public void set_family (string family);
+               public void set_family_static (string family);
+               public void set_gravity (Pango.Gravity gravity);
+               public void set_size (int size);
+               public void set_stretch (Pango.Stretch stretch);
+               public void set_style (Pango.Style style);
+               public void set_variant (Pango.Variant variant);
+               public void set_weight (Pango.Weight weight);
+               public unowned string to_filename ();
+               public unowned string to_string ();
+               public void unset_fields (Pango.FontMask to_unset);
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class FontFace : GLib.Object {
+               public unowned Pango.FontDescription describe ();
+               public unowned string get_face_name ();
+               public bool is_synthesized ();
+               public void list_sizes (int[] sizes);
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class FontFamily : GLib.Object {
+               public unowned string get_name ();
+               public bool is_monospace ();
+               public void list_faces (Pango.FontFace[] faces);
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class FontMap : GLib.Object {
+               public unowned Pango.Context create_context ();
+               public void list_families (Pango.FontFamily[] families);
+               public unowned Pango.Font load_font (Pango.Context context, Pango.FontDescription desc);
+               public unowned Pango.Fontset load_fontset (Pango.Context context, Pango.FontDescription desc, Pango.Language language);
+       }
+       [Compact]
+       [CCode (ref_function = "pango_font_metrics_ref", unref_function = "pango_font_metrics_unref", type_id = "PANGO_TYPE_FONT_METRICS", cheader_filename = "pango/pango.h")]
+       public class FontMetrics {
+               public int get_approximate_char_width ();
+               public int get_approximate_digit_width ();
+               public int get_ascent ();
+               public int get_descent ();
+               public int get_strikethrough_position ();
+               public int get_strikethrough_thickness ();
+               public int get_underline_position ();
+               public int get_underline_thickness ();
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class Fontset : GLib.Object {
+               public void @foreach (Pango.FontsetForeachFunc func, void* data);
+               public unowned Pango.Font get_font (uint wc);
+               public unowned Pango.FontMetrics get_metrics ();
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class Glyph {
+       }
+       [Compact]
+       [CCode (copy_function = "pango_glyph_item_copy", type_id = "PANGO_TYPE_GLYPH_ITEM", cheader_filename = "pango/pango.h")]
+       public class GlyphItem {
+               public weak Pango.GlyphString glyphs;
+               public weak Pango.Item item;
+               public unowned GLib.SList apply_attrs (string text, Pango.AttrList list);
+               public Pango.GlyphItem copy ();
+               public void letter_space (string text, Pango.LogAttr[] log_attrs, int letter_spacing);
+               public unowned Pango.GlyphItem split (string text, int split_index);
+       }
+       [Compact]
+       [CCode (copy_function = "pango_glyph_item_iter_copy", type_id = "PANGO_TYPE_GLYPH_ITEM_ITER", cheader_filename = "pango/pango.h")]
+       public class GlyphItemIter {
+               public int end_char;
+               public int end_glyph;
+               public int end_index;
+               public weak Pango.GlyphItem glyph_item;
+               public int start_char;
+               public int start_glyph;
+               public int start_index;
+               public weak string text;
+               public Pango.GlyphItemIter copy ();
+               public bool init_end (Pango.GlyphItem glyph_item, string text);
+               public bool init_start (Pango.GlyphItem glyph_item, string text);
+               public bool next_cluster ();
+               public bool prev_cluster ();
+       }
+       [Compact]
+       [CCode (copy_function = "pango_glyph_string_copy", type_id = "PANGO_TYPE_GLYPH_STRING", cheader_filename = "pango/pango.h")]
+       public class GlyphString {
+               public Pango.GlyphInfo glyphs;
+               public int log_clusters;
+               public int num_glyphs;
+               public int space;
+               [CCode (has_construct_function = false)]
+               public GlyphString ();
+               public Pango.GlyphString copy ();
+               public void extents (Pango.Font font, out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public void extents_range (int start, int end, Pango.Font font, out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public void get_logical_widths (string text, int length, int embedding_level, int logical_widths);
+               public int get_width ();
+               public void index_to_x (string text, int length, Pango.Analysis analysis, int index_, bool trailing, int x_pos);
+               public void set_size (int new_len);
+               public void x_to_index (string text, int length, Pango.Analysis analysis, int x_pos, int index_, int trailing);
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class GlyphUnit {
+       }
+       [Compact]
+       [CCode (copy_function = "pango_item_copy", type_id = "PANGO_TYPE_ITEM", cheader_filename = "pango/pango.h")]
+       public class Item {
+               public weak Pango.Analysis analysis;
+               public int length;
+               public int num_chars;
+               public int offset;
+               [CCode (has_construct_function = false)]
+               public Item ();
+               public Pango.Item copy ();
+               public unowned Pango.Item split (int split_index, int split_offset);
+       }
+       [Compact]
+       [CCode (type_id = "PANGO_TYPE_LANGUAGE", cheader_filename = "pango/pango.h")]
+       public class Language {
+               public static unowned Pango.Language from_string (string language);
+               public static unowned Pango.Language get_default ();
+               public unowned string get_sample_string ();
+               public Pango.Script get_scripts (int num_scripts);
+               public bool includes_script (Pango.Script script);
+               public bool matches (string range_list);
+               public unowned string to_string ();
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class Layout : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public Layout (Pango.Context context);
+               public void context_changed ();
+               public Pango.Layout copy ();
+               public Pango.Alignment get_alignment ();
+               public unowned Pango.AttrList get_attributes ();
+               public bool get_auto_dir ();
+               public int get_baseline ();
+               public unowned Pango.Context get_context ();
+               public void get_cursor_pos (int index_, out Pango.Rectangle strong_pos, out Pango.Rectangle weak_pos);
+               public Pango.EllipsizeMode get_ellipsize ();
+               public void get_extents (out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public unowned Pango.FontDescription get_font_description ();
+               public int get_height ();
+               public int get_indent ();
+               public unowned Pango.LayoutIter get_iter ();
+               public bool get_justify ();
+               public unowned Pango.LayoutLine get_line (int line);
+               public int get_line_count ();
+               public unowned Pango.LayoutLine get_line_readonly (int line);
+               public unowned GLib.SList get_lines ();
+               public unowned GLib.SList get_lines_readonly ();
+               public void get_log_attrs (Pango.LogAttr[] attrs);
+               public void get_pixel_extents (out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public void get_pixel_size (out int width, out int height);
+               public bool get_single_paragraph_mode ();
+               public void get_size (out int width, out int height);
+               public int get_spacing ();
+               public unowned Pango.TabArray get_tabs ();
+               public unowned string get_text ();
+               public int get_unknown_glyphs_count ();
+               public int get_width ();
+               public Pango.WrapMode get_wrap ();
+               public void index_to_line_x (int index_, bool trailing, int line, int x_pos);
+               public void index_to_pos (int index_, out Pango.Rectangle pos);
+               public bool is_ellipsized ();
+               public bool is_wrapped ();
+               public void move_cursor_visually (bool strong, int old_index, int old_trailing, int direction, int new_index, int new_trailing);
+               public void set_alignment (Pango.Alignment alignment);
+               public void set_attributes (Pango.AttrList attrs);
+               public void set_auto_dir (bool auto_dir);
+               public void set_ellipsize (Pango.EllipsizeMode ellipsize);
+               public void set_font_description (Pango.FontDescription desc);
+               public void set_height (int height);
+               public void set_indent (int indent);
+               public void set_justify (bool justify);
+               public void set_markup (string markup, int length);
+               public void set_markup_with_accel (string markup, int length, unichar accel_marker, unichar accel_char);
+               public void set_single_paragraph_mode (bool setting);
+               public void set_spacing (int spacing);
+               public void set_tabs (Pango.TabArray tabs);
+               public void set_text (string text, int length);
+               public void set_width (int width);
+               public void set_wrap (Pango.WrapMode wrap);
+               public bool xy_to_index (int x, int y, int index_, int trailing);
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class LayoutClass {
+       }
+       [Compact]
+       [CCode (copy_function = "pango_layout_iter_copy", type_id = "PANGO_TYPE_LAYOUT_ITER", cheader_filename = "pango/pango.h")]
+       public class LayoutIter {
+               public bool at_last_line ();
+               public Pango.LayoutIter copy ();
+               public int get_baseline ();
+               public void get_char_extents (out Pango.Rectangle logical_rect);
+               public void get_cluster_extents (out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public int get_index ();
+               public unowned Pango.Layout get_layout ();
+               public void get_layout_extents (out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public unowned Pango.LayoutLine get_line ();
+               public void get_line_extents (out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public unowned Pango.LayoutLine get_line_readonly ();
+               public void get_line_yrange (out int y0_, out int y1_);
+               public unowned Pango.LayoutRun get_run ();
+               public void get_run_extents (out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public unowned Pango.LayoutRun get_run_readonly ();
+               public bool next_char ();
+               public bool next_cluster ();
+               public bool next_line ();
+               public bool next_run ();
+       }
+       [Compact]
+       [CCode (ref_function = "pango_layout_line_ref", unref_function = "pango_layout_line_unref", type_id = "PANGO_TYPE_LAYOUT_LINE", cheader_filename = "pango/pango.h")]
+       public class LayoutLine {
+               public uint is_paragraph_start;
+               public weak Pango.Layout layout;
+               public int length;
+               public uint resolved_dir;
+               public weak GLib.SList runs;
+               public int start_index;
+               public void get_extents (out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public void get_pixel_extents (out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public void get_x_ranges (int start_index, int end_index, int[] ranges);
+               public void index_to_x (int index_, bool trailing, int x_pos);
+               public bool x_to_index (int x_pos, int index_, int trailing);
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class LayoutRun {
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class Renderer : GLib.Object {
+               public int active_count;
+               public Pango.Matrix matrix;
+               public bool strikethrough;
+               public Pango.Underline underline;
+               public void activate ();
+               [NoWrapper]
+               public virtual void begin ();
+               public void deactivate ();
+               public virtual void draw_error_underline (int x, int y, int width, int height);
+               public virtual void draw_glyph (Pango.Font font, Pango.Glyph glyph, double x, double y);
+               public virtual void draw_glyph_item (string text, Pango.GlyphItem glyph_item, int x, int y);
+               public virtual void draw_glyphs (Pango.Font font, Pango.GlyphString glyphs, int x, int y);
+               public void draw_layout (Pango.Layout layout, int x, int y);
+               public void draw_layout_line (Pango.LayoutLine line, int x, int y);
+               public virtual void draw_rectangle (Pango.RenderPart part, int x, int y, int width, int height);
+               [NoWrapper]
+               public virtual void draw_shape (Pango.AttrShape attr, int x, int y);
+               public virtual void draw_trapezoid (Pango.RenderPart part, double y1_, double x11, double x21, double y2, double x12, double x22);
+               [NoWrapper]
+               public virtual void end ();
+               public Pango.Color get_color (Pango.RenderPart part);
+               public unowned Pango.Layout get_layout ();
+               public unowned Pango.LayoutLine get_layout_line ();
+               public Pango.Matrix get_matrix ();
+               public virtual void part_changed (Pango.RenderPart part);
+               [NoWrapper]
+               public virtual void prepare_run (Pango.LayoutRun run);
+               public void set_color (Pango.RenderPart part, Pango.Color color);
+               public void set_matrix (Pango.Matrix matrix);
+       }
+       [Compact]
+       [CCode (cheader_filename = "pango/pango.h")]
+       public class ScriptIter {
+               [CCode (has_construct_function = false)]
+               public ScriptIter (string text, int length);
+               public void get_range (out unowned string start, out unowned string end, Pango.Script script);
+               public bool next ();
+       }
+       [Compact]
+       [CCode (copy_function = "pango_tab_array_copy", type_id = "PANGO_TYPE_TAB_ARRAY", cheader_filename = "pango/pango.h")]
+       public class TabArray {
+               [CCode (has_construct_function = false)]
+               public TabArray (int initial_size, bool positions_in_pixels);
+               public Pango.TabArray copy ();
+               public bool get_positions_in_pixels ();
+               public int get_size ();
+               public void get_tab (int tab_index, Pango.TabAlign alignment, int location);
+               public void get_tabs (out Pango.TabAlign alignments, int locations);
+               public void resize (int new_size);
+               public void set_tab (int tab_index, Pango.TabAlign alignment, int location);
+               [CCode (has_construct_function = false)]
+               public TabArray.with_positions (int size, bool positions_in_pixels, Pango.TabAlign first_alignment, ...);
+       }
+       [CCode (type_id = "PANGO_TYPE_COLOR", cheader_filename = "pango/pango.h")]
+       public struct Color {
+               public uint16 red;
+               public uint16 green;
+               public uint16 blue;
+               public Pango.Color copy ();
+               public void free ();
+               public bool parse (string spec);
+               public unowned string to_string ();
+       }
+       [CCode (type_id = "PANGO_TYPE_GLYPH_GEOMETRY", cheader_filename = "pango/pango.h")]
+       public struct GlyphGeometry {
+               public weak Pango.GlyphUnit width;
+               public weak Pango.GlyphUnit x_offset;
+               public weak Pango.GlyphUnit y_offset;
+       }
+       [CCode (type_id = "PANGO_TYPE_GLYPH_INFO", cheader_filename = "pango/pango.h")]
+       public struct GlyphInfo {
+               public weak Pango.Glyph glyph;
+               public Pango.GlyphGeometry geometry;
+               public Pango.GlyphVisAttr attr;
+       }
+       [CCode (type_id = "PANGO_TYPE_GLYPH_VIS_ATTR", cheader_filename = "pango/pango.h")]
+       public struct GlyphVisAttr {
+               public uint is_cluster_start;
+       }
+       [CCode (type_id = "PANGO_TYPE_LOG_ATTR", cheader_filename = "pango/pango.h")]
+       public struct LogAttr {
+               public uint is_line_break;
+               public uint is_mandatory_break;
+               public uint is_char_break;
+               public uint is_white;
+               public uint is_cursor_position;
+               public uint is_word_start;
+               public uint is_word_end;
+               public uint is_sentence_boundary;
+               public uint is_sentence_start;
+               public uint is_sentence_end;
+               public uint backspace_deletes_character;
+               public uint is_expandable_space;
+               public uint is_word_boundary;
+       }
+       [CCode (type_id = "PANGO_TYPE_MATRIX", cheader_filename = "pango/pango.h")]
+       public struct Matrix {
+               public double xx;
+               public double xy;
+               public double yx;
+               public double yy;
+               public double x0;
+               public double y0;
+               public void concat (Pango.Matrix new_matrix);
+               public Pango.Matrix copy ();
+               public void free ();
+               public double get_font_scale_factor ();
+               public void rotate (double degrees);
+               public void scale (double scale_x, double scale_y);
+               public void transform_distance (double dx, double dy);
+               public void transform_pixel_rectangle (ref Pango.Rectangle rect);
+               public void transform_point (double x, double y);
+               public void transform_rectangle (ref Pango.Rectangle rect);
+               public void translate (double tx, double ty);
+       }
+       [CCode (type_id = "PANGO_TYPE_RECTANGLE", cheader_filename = "pango/pango.h")]
+       public struct Rectangle {
+               public int x;
+               public int y;
+               public int width;
+               public int height;
+       }
+       [CCode (cprefix = "PANGO_ALIGN_", cheader_filename = "pango/pango.h")]
+       public enum Alignment {
+               LEFT,
+               CENTER,
+               RIGHT
+       }
+       [CCode (cprefix = "PANGO_ATTR_", cheader_filename = "pango/pango.h")]
+       public enum AttrType {
+               INVALID,
+               LANGUAGE,
+               FAMILY,
+               STYLE,
+               WEIGHT,
+               VARIANT,
+               STRETCH,
+               SIZE,
+               FONT_DESC,
+               FOREGROUND,
+               BACKGROUND,
+               UNDERLINE,
+               STRIKETHROUGH,
+               RISE,
+               SHAPE,
+               SCALE,
+               FALLBACK,
+               LETTER_SPACING,
+               UNDERLINE_COLOR,
+               STRIKETHROUGH_COLOR,
+               ABSOLUTE_SIZE,
+               GRAVITY,
+               GRAVITY_HINT
+       }
+       [CCode (cprefix = "PANGO_BIDI_TYPE_", cheader_filename = "pango/pango.h")]
+       public enum BidiType {
+               L,
+               LRE,
+               LRO,
+               R,
+               AL,
+               RLE,
+               RLO,
+               PDF,
+               EN,
+               ES,
+               ET,
+               AN,
+               CS,
+               NSM,
+               BN,
+               B,
+               S,
+               WS,
+               ON
+       }
+       [CCode (cprefix = "PANGO_COVERAGE_", cheader_filename = "pango/pango.h")]
+       public enum CoverageLevel {
+               NONE,
+               FALLBACK,
+               APPROXIMATE,
+               EXACT
+       }
+       [CCode (cprefix = "PANGO_DIRECTION_", cheader_filename = "pango/pango.h")]
+       public enum Direction {
+               LTR,
+               RTL,
+               TTB_LTR,
+               TTB_RTL,
+               WEAK_LTR,
+               WEAK_RTL,
+               NEUTRAL
+       }
+       [CCode (cprefix = "PANGO_ELLIPSIZE_", cheader_filename = "pango/pango.h")]
+       public enum EllipsizeMode {
+               NONE,
+               START,
+               MIDDLE,
+               END
+       }
+       [CCode (cprefix = "PANGO_FONT_MASK_", cheader_filename = "pango/pango.h")]
+       [Flags]
+       public enum FontMask {
+               FAMILY,
+               STYLE,
+               VARIANT,
+               WEIGHT,
+               STRETCH,
+               SIZE,
+               GRAVITY
+       }
+       [CCode (cprefix = "PANGO_GRAVITY_", cheader_filename = "pango/pango.h")]
+       public enum Gravity {
+               SOUTH,
+               EAST,
+               NORTH,
+               WEST,
+               AUTO
+       }
+       [CCode (cprefix = "PANGO_GRAVITY_HINT_", cheader_filename = "pango/pango.h")]
+       public enum GravityHint {
+               NATURAL,
+               STRONG,
+               LINE
+       }
+       [CCode (cprefix = "PANGO_RENDER_PART_", cheader_filename = "pango/pango.h")]
+       public enum RenderPart {
+               FOREGROUND,
+               BACKGROUND,
+               UNDERLINE,
+               STRIKETHROUGH
+       }
+       [CCode (cprefix = "PANGO_SCRIPT_", cheader_filename = "pango/pango.h")]
+       public enum Script {
+               INVALID_CODE,
+               COMMON,
+               INHERITED,
+               ARABIC,
+               ARMENIAN,
+               BENGALI,
+               BOPOMOFO,
+               CHEROKEE,
+               COPTIC,
+               CYRILLIC,
+               DESERET,
+               DEVANAGARI,
+               ETHIOPIC,
+               GEORGIAN,
+               GOTHIC,
+               GREEK,
+               GUJARATI,
+               GURMUKHI,
+               HAN,
+               HANGUL,
+               HEBREW,
+               HIRAGANA,
+               KANNADA,
+               KATAKANA,
+               KHMER,
+               LAO,
+               LATIN,
+               MALAYALAM,
+               MONGOLIAN,
+               MYANMAR,
+               OGHAM,
+               OLD_ITALIC,
+               ORIYA,
+               RUNIC,
+               SINHALA,
+               SYRIAC,
+               TAMIL,
+               TELUGU,
+               THAANA,
+               THAI,
+               TIBETAN,
+               CANADIAN_ABORIGINAL,
+               YI,
+               TAGALOG,
+               HANUNOO,
+               BUHID,
+               TAGBANWA,
+               BRAILLE,
+               CYPRIOT,
+               LIMBU,
+               OSMANYA,
+               SHAVIAN,
+               LINEAR_B,
+               TAI_LE,
+               UGARITIC,
+               NEW_TAI_LUE,
+               BUGINESE,
+               GLAGOLITIC,
+               TIFINAGH,
+               SYLOTI_NAGRI,
+               OLD_PERSIAN,
+               KHAROSHTHI,
+               UNKNOWN,
+               BALINESE,
+               CUNEIFORM,
+               PHOENICIAN,
+               PHAGS_PA,
+               NKO,
+               KAYAH_LI,
+               LEPCHA,
+               REJANG,
+               SUNDANESE,
+               SAURASHTRA,
+               CHAM,
+               OL_CHIKI,
+               VAI,
+               CARIAN,
+               LYCIAN,
+               LYDIAN
+       }
+       [CCode (cprefix = "PANGO_STRETCH_", cheader_filename = "pango/pango.h")]
+       public enum Stretch {
+               ULTRA_CONDENSED,
+               EXTRA_CONDENSED,
+               CONDENSED,
+               SEMI_CONDENSED,
+               NORMAL,
+               SEMI_EXPANDED,
+               EXPANDED,
+               EXTRA_EXPANDED,
+               ULTRA_EXPANDED
+       }
+       [CCode (cprefix = "PANGO_STYLE_", cheader_filename = "pango/pango.h")]
+       public enum Style {
+               NORMAL,
+               OBLIQUE,
+               ITALIC
+       }
+       [CCode (cprefix = "PANGO_TAB_", cheader_filename = "pango/pango.h")]
+       public enum TabAlign {
+               LEFT
+       }
+       [CCode (cprefix = "PANGO_UNDERLINE_", cheader_filename = "pango/pango.h")]
+       public enum Underline {
+               NONE,
+               SINGLE,
+               DOUBLE,
+               LOW,
+               ERROR
+       }
+       [CCode (cprefix = "PANGO_VARIANT_", cheader_filename = "pango/pango.h")]
+       public enum Variant {
+               NORMAL,
+               SMALL_CAPS
+       }
+       [CCode (cprefix = "PANGO_WEIGHT_", cheader_filename = "pango/pango.h")]
+       public enum Weight {
+               THIN,
+               ULTRALIGHT,
+               LIGHT,
+               BOOK,
+               NORMAL,
+               MEDIUM,
+               SEMIBOLD,
+               BOLD,
+               ULTRABOLD,
+               HEAVY,
+               ULTRAHEAVY
+       }
+       [CCode (cprefix = "PANGO_WRAP_", cheader_filename = "pango/pango.h")]
+       public enum WrapMode {
+               WORD,
+               CHAR,
+               WORD_CHAR
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       public delegate void* AttrDataCopyFunc ();
+       [CCode (cheader_filename = "pango/pango.h")]
+       public delegate bool AttrFilterFunc (Pango.Attribute attribute);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public delegate bool FontsetForeachFunc (Pango.Fontset fontset, Pango.Font font);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const int ANALYSIS_FLAG_CENTERED_BASELINE;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const int ATTR_INDEX_FROM_TEXT_BEGINNING;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const string ENGINE_TYPE_LANG;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const string ENGINE_TYPE_SHAPE;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const string RENDER_TYPE_NONE;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const int SCALE;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const int UNKNOWN_GLYPH_HEIGHT;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const int UNKNOWN_GLYPH_WIDTH;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const int VERSION_MAJOR;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const int VERSION_MICRO;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const int VERSION_MINOR;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public const string VERSION_STRING;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_background_new (uint16 red, uint16 green, uint16 blue);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_fallback_new (bool enable_fallback);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_family_new (string family);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_foreground_new (uint16 red, uint16 green, uint16 blue);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_gravity_hint_new (Pango.GravityHint hint);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_gravity_new (Pango.Gravity gravity);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_letter_spacing_new (int letter_spacing);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_rise_new (int rise);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_scale_new (double scale_factor);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_stretch_new (Pango.Stretch stretch);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_font_desc_new (Pango.FontDescription desc);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_strikethrough_color_new (uint16 red, uint16 green, uint16 blue);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_strikethrough_new (bool strikethrough);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_style_new (Pango.Style style);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned string attr_type_get_name (Pango.AttrType type);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.AttrType attr_type_register (string name);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_underline_color_new (uint16 red, uint16 green, uint16 blue);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_underline_new (Pango.Underline underline);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_variant_new (Pango.Variant variant);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Attribute attr_weight_new (Pango.Weight weight);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.BidiType bidi_type_for_unichar (unichar ch);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static void @break (string text, int length, Pango.Analysis analysis, Pango.LogAttr[] attrs, int attrs_len);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static void extents_to_pixels (ref Pango.Rectangle inclusive, ref Pango.Rectangle nearest);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Direction find_base_dir (string text, int length);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static void find_paragraph_boundary (string text, int length, int paragraph_delimiter_index, int next_paragraph_start);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static void get_log_attrs (string text, int length, int level, Pango.Language language, Pango.LogAttr[] log_attrs, int attrs_len);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Gravity gravity_get_for_matrix (Pango.Matrix matrix);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Gravity gravity_get_for_script (Pango.Script script, Pango.Gravity base_gravity, Pango.GravityHint hint);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static double gravity_to_rotation (Pango.Gravity gravity);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool is_zero_width (unichar ch);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned GLib.List itemize (Pango.Context context, string text, int start_index, int length, Pango.AttrList attrs, Pango.AttrIterator cached_iter);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned GLib.List itemize_with_base_dir (Pango.Context context, Pango.Direction base_dir, string text, int start_index, int length, Pango.AttrList attrs, Pango.AttrIterator cached_iter);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static uchar log2vis_get_embedding_levels (string text, int length, Pango.Direction pbase_dir);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool parse_enum (GLib.Type type, string str, int value, bool warn, out unowned string possible_values);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool parse_markup (string markup_text, int length, unichar accel_marker, out unowned Pango.AttrList attr_list, out unowned string text, unichar accel_char) throws GLib.Error;
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool parse_stretch (string str, Pango.Stretch stretch, bool warn);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool parse_style (string str, Pango.Style style, bool warn);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool parse_variant (string str, Pango.Variant variant, bool warn);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool parse_weight (string str, Pango.Weight weight, bool warn);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static void quantize_line_geometry (int thickness, int position);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static int read_line (GLib.FileStream stream, GLib.StringBuilder str);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned GLib.List reorder_items (GLib.List logical_items);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool scan_int (out unowned string pos, int @out);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool scan_string (out unowned string pos, GLib.StringBuilder @out);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool scan_word (out unowned string pos, GLib.StringBuilder @out);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Script script_for_unichar (unichar ch);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned Pango.Language script_get_sample_language (Pango.Script script);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static void shape (string text, int length, Pango.Analysis analysis, Pango.GlyphString glyphs);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static bool skip_space (out unowned string pos);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned string split_file_list (string str);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned string trim_string (string str);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static Pango.Direction unichar_direction (unichar ch);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static int units_from_double (double d);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static double units_to_double (int i);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static int version ();
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned string version_check (int required_major, int required_minor, int required_micro);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned string version_string ();
+}