;; -*- scheme -*-

(include "pango-types.defs")

;; From /opt/gtk2/include/pango-1.0/pango/pango-attributes.h

(define-function pango_color_get_type
  (c-name "pango_color_get_type")
  (return-type "GType")
)

(define-method copy
  (of-object "PangoColor")
  (c-name "pango_color_copy")
  (return-type "PangoColor*")
)

(define-method free
  (of-object "PangoColor")
  (c-name "pango_color_free")
  (return-type "none")
)

(define-function color_parse
  (c-name "pango_color_parse")
  (is-constructor-of "PangoColor")
  (return-type "gboolean")
  (parameters
    '("const-char*" "spec")
  )
)

(define-function pango_attr_type_register
  (c-name "pango_attr_type_register")
  (return-type "PangoAttrType")
  (parameters
    '("const-gchar*" "name")
  )
)

(define-method copy
  (of-object "PangoAttribute")
  (c-name "pango_attribute_copy")
  (return-type "PangoAttribute*")
)

(define-method destroy
  (of-object "PangoAttribute")
  (c-name "pango_attribute_destroy")
  (return-type "none")
)

(define-method equal
  (of-object "PangoAttribute")
  (c-name "pango_attribute_equal")
  (return-type "gboolean")
  (parameters
    '("const-PangoAttribute*" "attr2")
  )
)

(define-function AttrLanguage
  (c-name "pango_attr_language_new")
  (return-type "PangoAttribute*")
  (parameters
    '("PangoLanguage*" "language")
  )
)

(define-function AttrFamily
  (c-name "pango_attr_family_new")
  (return-type "PangoAttribute*")
  (parameters
    '("const-char*" "family")
  )
)

(define-function AttrForeground
  (c-name "pango_attr_foreground_new")
  (return-type "PangoAttribute*")
  (parameters
    '("guint16" "red")
    '("guint16" "green")
    '("guint16" "blue")
  )
)

(define-function AttrBackground
  (c-name "pango_attr_background_new")
  (return-type "PangoAttribute*")
  (parameters
    '("guint16" "red")
    '("guint16" "green")
    '("guint16" "blue")
  )
)

(define-function AttrSize
  (c-name "pango_attr_size_new")
  (return-type "PangoAttribute*")
  (parameters
    '("int" "size")
  )
)

(define-function AttrSizeAbsolute
  (c-name "pango_attr_size_new_absolute")
  (return-type "PangoAttribute*")
  (parameters
    '("int" "size")
  )
)

(define-function AttrStyle
  (c-name "pango_attr_style_new")
  (return-type "PangoAttribute*")
  (parameters
    '("PangoStyle" "style")
  )
)

(define-function AttrWeight
  (c-name "pango_attr_weight_new")
  (return-type "PangoAttribute*")
  (parameters
    '("PangoWeight" "weight")
  )
)

(define-function AttrVariant
  (c-name "pango_attr_variant_new")
  (return-type "PangoAttribute*")
  (parameters
    '("PangoVariant" "variant")
  )
)

(define-function AttrStretch
  (c-name "pango_attr_stretch_new")
  (return-type "PangoAttribute*")
  (parameters
    '("PangoStretch" "stretch")
  )
)

(define-function AttrFontDesc
  (c-name "pango_attr_font_desc_new")
  (return-type "PangoAttribute*")
  (parameters
    '("const-PangoFontDescription*" "desc")
  )
)

(define-function AttrUnderline
  (c-name "pango_attr_underline_new")
  (return-type "PangoAttribute*")
  (parameters
    '("PangoUnderline" "underline")
  )
)

(define-function AttrUnderlineColor
  (c-name "pango_attr_underline_color_new")
  (return-type "PangoAttribute*")
  (parameters
    '("guint16" "red")
    '("guint16" "green")
    '("guint16" "blue")
  )
)

(define-function AttrStrikethrough
  (c-name "pango_attr_strikethrough_new")
  (return-type "PangoAttribute*")
  (parameters
    '("gboolean" "strikethrough")
  )
)

(define-function AttrStrikethroughColor
  (c-name "pango_attr_strikethrough_color_new")
  (return-type "PangoAttribute*")
  (parameters
    '("guint16" "red")
    '("guint16" "green")
    '("guint16" "blue")
  )
)

(define-function AttrRise
  (c-name "pango_attr_rise_new")
  (return-type "PangoAttribute*")
  (parameters
    '("int" "rise")
  )
)

(define-function AttrScale
  (c-name "pango_attr_scale_new")
  (return-type "PangoAttribute*")
  (parameters
    '("double" "scale_factor")
  )
)

(define-function AttrFallback
  (c-name "pango_attr_fallback_new")
  (return-type "PangoAttribute*")
  (parameters
    '("gboolean" "fallback")
  )
)

(define-function AttrLetterSpacing
  (c-name "pango_attr_letter_spacing_new")
  (return-type "PangoAttribute*")
  (parameters
    '("int" "letter_spacing")
  )
)

(define-function AttrShape
  (c-name "pango_attr_shape_new")
  (return-type "PangoAttribute*")
  (parameters
    '("const-PangoRectangle*" "ink_rect")
    '("const-PangoRectangle*" "logical_rect")
  )
)

(define-function attr_shape_new_with_data
  (c-name "pango_attr_shape_new_with_data")
  (return-type "PangoAttribute*")
  (parameters
    '("const-PangoRectangle*" "ink_rect")
    '("const-PangoRectangle*" "logical_rect")
    '("gpointer" "data")
    '("PangoAttrDataCopyFunc" "copy_func")
    '("GDestroyNotify" "destroy_func")
  )
)

(define-function pango_attr_list_get_type
  (c-name "pango_attr_list_get_type")
  (return-type "GType")
)

(define-function pango_attr_list_new
  (c-name "pango_attr_list_new")
  (return-type "PangoAttrList*")
  (is-constructor-of "PangoAttrList")
)

(define-method ref
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_ref")
  (return-type "none")
)

(define-method unref
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_unref")
  (return-type "none")
)

(define-method copy
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_copy")
  (return-type "PangoAttrList*")
)

(define-method insert
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_insert")
  (return-type "none")
  (parameters
    '("PangoAttribute*" "attr")
  )
)

(define-method insert_before
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_insert_before")
  (return-type "none")
  (parameters
    '("PangoAttribute*" "attr")
  )
)

(define-method change
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_change")
  (return-type "none")
  (parameters
    '("PangoAttribute*" "attr")
  )
)

(define-method splice
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_splice")
  (return-type "none")
  (parameters
    '("PangoAttrList*" "other")
    '("gint" "pos")
    '("gint" "len")
  )
)

(define-method filter
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_filter")
  (return-type "PangoAttrList*")
  (parameters
    '("PangoAttrFilterFunc" "func")
    '("gpointer" "data")
  )
)

(define-method get_iterator
  (of-object "PangoAttrList")
  (c-name "pango_attr_list_get_iterator")
  (return-type "PangoAttrIterator*")
)

(define-method range
  (of-object "PangoAttrIterator")
  (c-name "pango_attr_iterator_range")
  (return-type "none")
  (parameters
    '("gint*" "start")
    '("gint*" "end")
  )
)

(define-method next
  (of-object "PangoAttrIterator")
  (c-name "pango_attr_iterator_next")
  (return-type "gboolean")
)

(define-method copy
  (of-object "PangoAttrIterator")
  (c-name "pango_attr_iterator_copy")
  (return-type "PangoAttrIterator*")
)

(define-method destroy
  (of-object "PangoAttrIterator")
  (c-name "pango_attr_iterator_destroy")
  (return-type "none")
)

(define-method get
  (of-object "PangoAttrIterator")
  (c-name "pango_attr_iterator_get")
  (return-type "PangoAttribute*")
  (parameters
    '("PangoAttrType" "type")
  )
)

(define-method get_font
  (of-object "PangoAttrIterator")
  (c-name "pango_attr_iterator_get_font")
  (return-type "none")
  (parameters
    '("PangoFontDescription*" "desc")
    '("PangoLanguage**" "language")
    '("GSList**" "extra_attrs")
  )
)

(define-method get_attrs
  (of-object "PangoAttrIterator")
  (c-name "pango_attr_iterator_get_attrs")
  (return-type "GSList*")
)

(define-function parse_markup
  (c-name "pango_parse_markup")
  (return-type "gboolean")
  (parameters
    '("const-char*" "markup_text")
    '("int" "length")
    '("gunichar" "accel_marker")
    '("PangoAttrList**" "attr_list")
    '("char**" "text")
    '("gunichar*" "accel_char")
    '("GError**" "error")
  )
)

(define-virtual copy
  (of-object "PangoAttr")
  (return-type "PangoAttribute*")
)

(define-virtual destroy
  (of-object "PangoAttr")
  (return-type "none")
)

(define-virtual equal
  (of-object "PangoAttr")
  (return-type "gboolean")
  (parameters
    '("const-PangoAttribute*" "attr2")
  )
)



;; From /opt/gtk2/include/pango-1.0/pango/pango-break.h

(define-function break
  (c-name "pango_break")
  (return-type "none")
  (parameters
    '("const-gchar*" "text")
    '("gint" "length")
    '("PangoAnalysis*" "analysis")
    '("PangoLogAttr*" "attrs")
  )
)

(define-function find_paragraph_boundary
  (c-name "pango_find_paragraph_boundary")
  (return-type "none")
  (parameters
    '("const-gchar*" "text")
    '("gint" "length")
    '("gint*" "paragraph_delimiter_index")
    '("gint*" "next_paragraph_start")
  )
)

(define-function get_log_attrs
  (c-name "pango_get_log_attrs")
  (return-type "none")
  (parameters
    '("const-char*" "text")
    '("int" "length")
    '("int" "level")
    '("PangoLanguage*" "language")
    '("PangoLogAttr*" "log_attrs")
  )
)

(define-function default_break
  (c-name "pango_default_break")
  (return-type "none")
  (parameters
    '("const-gchar*" "text")
    '("int" "length")
    '("PangoAnalysis*" "analysis")
    '("PangoLogAttr*" "attrs")
    '("int" "attrs_len")
  )
)
 


;; From /opt/gtk2/include/pango-1.0/pango/pango-context.h

(define-function context_get_type
  (c-name "pango_context_get_type")
  (return-type "GType")
)

(define-function pango_context_new
  (c-name "pango_context_new")
  (return-type "PangoContext*")
  (is-constructor-of "PangoContext")
)

(define-method add_font_map
  (of-object "PangoContext")
  (c-name "pango_context_set_font_map")
  (return-type "none")
  (parameters
    '("PangoFontMap*" "font_map")
  )
)

(define-method get_font_map
  (of-object "PangoContext")
  (c-name "pango_context_get_font_map")
  (return-type "PangoFontMap*")
)

(define-method list_families
  (of-object "PangoContext")
  (c-name "pango_context_list_families")
  (return-type "none")
  (parameters
    '("PangoFontFamily***" "families")
    '("int*" "n_families")
  )
)

(define-method load_font
  (of-object "PangoContext")
  (c-name "pango_context_load_font")
  (return-type "PangoFont*")
  (parameters
    '("const-PangoFontDescription*" "desc")
  )
)

(define-method load_fontset
  (of-object "PangoContext")
  (c-name "pango_context_load_fontset")
  (return-type "PangoFontset*")
  (parameters
    '("const-PangoFontDescription*" "desc")
    '("PangoLanguage*" "language")
  )
)

(define-method get_metrics
  (of-object "PangoContext")
  (c-name "pango_context_get_metrics")
  (return-type "PangoFontMetrics*")
  (caller-owns-return #t)
  (parameters
    '("const-PangoFontDescription*" "desc")
    '("PangoLanguage*" "language" (null-ok) (default "NULL"))
  )
)

(define-method set_font_description
  (of-object "PangoContext")
  (c-name "pango_context_set_font_description")
  (return-type "none")
  (parameters
    '("const-PangoFontDescription*" "desc")
  )
)

(define-method get_font_description
  (of-object "PangoContext")
  (c-name "pango_context_get_font_description")
  (return-type "PangoFontDescription*")
)

(define-method get_language
  (of-object "PangoContext")
  (c-name "pango_context_get_language")
  (return-type "PangoLanguage*")
)

(define-method set_language
  (of-object "PangoContext")
  (c-name "pango_context_set_language")
  (return-type "none")
  (parameters
    '("PangoLanguage*" "language")
  )
)

(define-method set_base_dir
  (of-object "PangoContext")
  (c-name "pango_context_set_base_dir")
  (return-type "none")
  (parameters
    '("PangoDirection" "direction")
  )
)

(define-method get_base_dir
  (of-object "PangoContext")
  (c-name "pango_context_get_base_dir")
  (return-type "PangoDirection")
)

(define-method set_matrix
  (of-object "PangoContext")
  (c-name "pango_context_set_matrix")
  (return-type "none")
  (parameters
    '("const-PangoMatrix*" "matrix")
  )
)

(define-method get_matrix
  (of-object "PangoContext")
  (c-name "pango_context_get_matrix")
  (return-type "const-PangoMatrix*")
)

(define-function itemize
  (c-name "pango_itemize")
  (return-type "GList*")
  (parameters
    '("PangoContext*" "context")
    '("const-char*" "text")
    '("int" "start_index")
    '("int" "length")
    '("PangoAttrList*" "attrs")
    '("PangoAttrIterator*" "cached_iter" (null-ok) (default "NULL"))
  )
)

(define-function itemize_with_base_dir
  (c-name "pango_itemize_with_base_dir")
  (return-type "GList*")
  (parameters
    '("PangoContext*" "context")
    '("PangoDirection" "base_dir")
    '("const-char*" "text")
    '("int" "start_index")
    '("int" "length")
    '("PangoAttrList*" "attrs")
    '("PangoAttrIterator*" "cached_iter")
  )
)



;; From /opt/gtk2/include/pango-1.0/pango/pango-coverage.h

(define-function coverage_new
  (c-name "pango_coverage_new")
  (is-constructor-of "PangoCoverage")
  (return-type "PangoCoverage*")
)

(define-method ref
  (of-object "PangoCoverage")
  (c-name "pango_coverage_ref")
  (return-type "PangoCoverage*")
)

(define-method unref
  (of-object "PangoCoverage")
  (c-name "pango_coverage_unref")
  (return-type "none")
)

(define-method copy
  (of-object "PangoCoverage")
  (c-name "pango_coverage_copy")
  (return-type "PangoCoverage*")
)

(define-method get
  (of-object "PangoCoverage")
  (c-name "pango_coverage_get")
  (return-type "PangoCoverageLevel")
  (parameters
    '("int" "index")
  )
)

(define-method set
  (of-object "PangoCoverage")
  (c-name "pango_coverage_set")
  (return-type "none")
  (parameters
    '("int" "index")
    '("PangoCoverageLevel" "level")
  )
)

(define-method max
  (of-object "PangoCoverage")
  (c-name "pango_coverage_max")
  (return-type "none")
  (parameters
    '("PangoCoverage*" "other")
  )
)

(define-method to_bytes
  (of-object "PangoCoverage")
  (c-name "pango_coverage_to_bytes")
  (return-type "none")
  (parameters
    '("guchar**" "bytes")
    '("int*" "n_bytes")
  )
)

(define-function coverage_from_bytes
  (c-name "pango_coverage_from_bytes")
  (is-constructor-of "PangoCoverage")
  (return-type "PangoCoverage*")
  (parameters
    '("guchar*" "bytes")
    '("int" "n_bytes")
  )
)



;; From pango-engine.h

(ifdef PANGO_ENABLE_ENGINE

(define-function engine_get_type
  (c-name "pango_engine_get_type")
  (return-type "GType")
)

(define-function engine_lang_get_type
  (c-name "pango_engine_lang_get_type")
  (return-type "GType")
)

(define-function engine_shape_get_type
  (c-name "pango_engine_shape_get_type")
  (return-type "GType")
)

(define-virtual script_break
  (of-object "PangoEngineLang")
  (return-type "none")
  (parameters
    '("const-char*" "text")
    '("int" "len")
    '("PangoAnalysis*" "analysis")
    '("PangoLogAttr*" "attrs")
    '("int" "attrs_len")
  )
)

(define-virtual script_shape
  (of-object "PangoEngineShape")
  (return-type "none")
  (parameters
    '("PangoFont*" "font")
    '("const-char*" "text")
    '("int" "length")
    '("PangoAnalysis*" "analysis")
    '("PangoGlyphString*" "glyphs")
  )
)

(define-virtual covers
  (of-object "PangoEngineShape")
  (return-type "PangoCoverageLevel")
  (parameters
    '("PangoFont*" "font")
    '("PangoLanguage*" "language")
    '("gunichar" "wc")
  )
)
) ;; PANGO_ENABLE_ENGINE


;; From pango-enum-types.h

(define-function attr_type_get_type
  (c-name "pango_attr_type_get_type")
  (return-type "GType")
)

(define-function underline_get_type
  (c-name "pango_underline_get_type")
  (return-type "GType")
)

(define-function coverage_level_get_type
  (c-name "pango_coverage_level_get_type")
  (return-type "GType")
)

(define-function style_get_type
  (c-name "pango_style_get_type")
  (return-type "GType")
)

(define-function variant_get_type
  (c-name "pango_variant_get_type")
  (return-type "GType")
)

(define-function weight_get_type
  (c-name "pango_weight_get_type")
  (return-type "GType")
)

(define-function stretch_get_type
  (c-name "pango_stretch_get_type")
  (return-type "GType")
)

(define-function font_mask_get_type
  (c-name "pango_font_mask_get_type")
  (return-type "GType")
)

(define-function alignment_get_type
  (c-name "pango_alignment_get_type")
  (return-type "GType")
)

(define-function wrap_mode_get_type
  (c-name "pango_wrap_mode_get_type")
  (return-type "GType")
)

(define-function ellipsize_mode_get_type
  (c-name "pango_ellipsize_mode_get_type")
  (return-type "GType")
)

(define-function render_part_get_type
  (c-name "pango_render_part_get_type")
  (return-type "GType")
)

(define-function script_get_type
  (c-name "pango_script_get_type")
  (return-type "GType")
)

(define-function tab_align_get_type
  (c-name "pango_tab_align_get_type")
  (return-type "GType")
)

(define-function direction_get_type
  (c-name "pango_direction_get_type")
  (return-type "GType")
)



;; From /opt/gtk2/include/pango-1.0/pango/pango-font.h


(define-function font_description_get_type
  (c-name "pango_font_description_get_type")
  (return-type "GType")
)

(define-function pango_font_description_new
  (c-name "pango_font_description_new")
  (is-constructor-of "PangoFontDescription")
  (return-type "PangoFontDescription*")
)

(define-method copy
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_copy")
  (return-type "PangoFontDescription*")
)

(define-method copy_static
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_copy_static")
  (return-type "PangoFontDescription*")
)

(define-method hash
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_hash")
  (return-type "guint")
)

(define-method equal
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_equal")
  (return-type "gboolean")
  (parameters
    '("const-PangoFontDescription*" "desc2")
  )
)

(define-method free
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_free")
  (return-type "none")
)

(define-function pango_font_descriptions_free
  (c-name "pango_font_descriptions_free")
  (return-type "none")
  (parameters
    '("PangoFontDescription**" "descs")
    '("int" "n_descs")
  )
)

(define-method set_family
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_set_family")
  (return-type "none")
  (parameters
    '("const-char*" "family")
  )
)

(define-method set_family_static
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_set_family_static")
  (return-type "none")
  (parameters
    '("const-char*" "family")
  )
)

(define-method get_family
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_get_family")
  (return-type "const-char*")
)

(define-method set_style
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_set_style")
  (return-type "none")
  (parameters
    '("PangoStyle" "style")
  )
)

(define-method get_style
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_get_style")
  (return-type "PangoStyle")
)

(define-method set_variant
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_set_variant")
  (return-type "none")
  (parameters
    '("PangoVariant" "variant")
  )
)

(define-method get_variant
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_get_variant")
  (return-type "PangoVariant")
)

(define-method set_weight
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_set_weight")
  (return-type "none")
  (parameters
    '("PangoWeight" "weight")
  )
)

(define-method get_weight
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_get_weight")
  (return-type "PangoWeight")
)

(define-method set_stretch
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_set_stretch")
  (return-type "none")
  (parameters
    '("PangoStretch" "stretch")
  )
)

(define-method get_stretch
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_get_stretch")
  (return-type "PangoStretch")
)

(define-method set_size
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_set_size")
  (return-type "none")
  (parameters
    '("gint" "size")
  )
)

(define-method get_size
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_get_size")
  (return-type "gint")
)

(define-method set_absolute_size
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_set_absolute_size")
  (return-type "none")
  (parameters
    '("double" "size")
  )
)

(define-method get_size_is_absolute
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_get_size_is_absolute")
  (return-type "gboolean")
)

(define-method get_set_fields
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_get_set_fields")
  (return-type "PangoFontMask")
)

(define-method unset_fields
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_unset_fields")
  (return-type "none")
  (parameters
    '("PangoFontMask" "to_unset")
  )
)

(define-method merge
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_merge")
  (return-type "none")
  (parameters
    '("const-PangoFontDescription*" "desc_to_merge")
    '("gboolean" "replace_existing")
  )
)

(define-method merge_static
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_merge_static")
  (return-type "none")
  (parameters
    '("const-PangoFontDescription*" "desc_to_merge")
    '("gboolean" "replace_existing")
  )
)

(define-method better_match
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_better_match")
  (return-type "gboolean")
  (parameters
    '("const-PangoFontDescription*" "old_match" (null-ok) (default "NULL"))
    '("const-PangoFontDescription*" "new_match")
  )
)

(define-function pango_font_description_from_string
  (c-name "pango_font_description_from_string")
  (is-constructor-of "PangoFontDescription")
  (return-type "PangoFontDescription*")
  (parameters
    '("const-char*" "str")
  )
)

(define-method to_string
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_to_string")
  (return-type "char*")
)

(define-method to_filename
  (of-object "PangoFontDescription")
  (c-name "pango_font_description_to_filename")
  (return-type "char*")
)

(define-function pango_font_metrics_get_type
  (c-name "pango_font_metrics_get_type")
  (return-type "GType")
)

(define-method ref
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_ref")
  (return-type "PangoFontMetrics*")
)

(define-method unref
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_unref")
  (return-type "none")
)

(define-method get_ascent
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_get_ascent")
  (return-type "int")
)

(define-method get_descent
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_get_descent")
  (return-type "int")
)

(define-method get_approximate_char_width
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_get_approximate_char_width")
  (return-type "int")
)

(define-method get_approximate_digit_width
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_get_approximate_digit_width")
  (return-type "int")
)

(define-method get_underline_position
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_get_underline_position")
  (return-type "int")
)

(define-method get_underline_thickness
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_get_underline_thickness")
  (return-type "int")
)

(define-method get_strikethrough_position
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_get_strikethrough_position")
  (return-type "int")
)

(define-method get_strikethrough_thickness
  (of-object "PangoFontMetrics")
  (c-name "pango_font_metrics_get_strikethrough_thickness")
  (return-type "int")
)

(ifdef PANGO_ENABLE_BACKEND

(define-function font_metrics_new
  (c-name "pango_font_metrics_new")
  (is-constructor-of "PangoFontMetrics")
  (return-type "PangoFontMetrics*")
)
) ;; PANGO_ENABLE_BACKEND

(define-function pango_font_family_get_type
  (c-name "pango_font_family_get_type")
  (return-type "GType")
)

(define-method list_faces
  (of-object "PangoFontFamily")
  (c-name "pango_font_family_list_faces")
  (return-type "none")
  (parameters
    '("PangoFontFace***" "faces")
    '("int*" "n_faces")
  )
)

(define-method get_name
  (of-object "PangoFontFamily")
  (c-name "pango_font_family_get_name")
  (return-type "const-char*")
)

(define-method is_monospace
  (of-object "PangoFontFamily")
  (c-name "pango_font_family_is_monospace")
  (return-type "gboolean")
)

(define-function pango_font_face_get_type
  (c-name "pango_font_face_get_type")
  (return-type "GType")
)

(define-method describe
  (of-object "PangoFontFace")
  (c-name "pango_font_face_describe")
  (return-type "PangoFontDescription*")
)

(define-method get_face_name
  (of-object "PangoFontFace")
  (c-name "pango_font_face_get_face_name")
  (return-type "const-char*")
)

(define-method list_sizes
  (of-object "PangoFontFace")
  (c-name "pango_font_face_list_sizes")
  (return-type "none")
  (parameters
    '("int**" "sizes")
    '("int*" "n_sizes")
  )
)

(define-function pango_font_get_type
  (c-name "pango_font_get_type")
  (return-type "GType")
)

(define-method describe
  (of-object "PangoFont")
  (c-name "pango_font_describe")
  (return-type "PangoFontDescription*")
)

(define-method get_coverage
  (of-object "PangoFont")
  (c-name "pango_font_get_coverage")
  (return-type "PangoCoverage*")
  (parameters
    '("PangoLanguage*" "language")
  )
)

(define-method find_shaper
  (of-object "PangoFont")
  (c-name "pango_font_find_shaper")
  (return-type "PangoEngineShape*")
  (parameters
    '("PangoLanguage*" "language")
    '("guint32" "ch")
  )
)

(define-method get_metrics
  (of-object "PangoFont")
  (c-name "pango_font_get_metrics")
  (return-type "PangoFontMetrics*")
  (parameters
    '("PangoLanguage*" "language" (null-ok) (default "NULL"))
  )
)

(define-method get_glyph_extents
  (of-object "PangoFont")
  (c-name "pango_font_get_glyph_extents")
  (return-type "none")
  (parameters
    '("PangoGlyph" "glyph")
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_font_map
  (of-object "PangoFont")
  (c-name "pango_font_get_font_map")
  (return-type "PangoFontMap*")
)
 
(define-virtual list_faces
  (of-object "PangoFontFamily")
  (return-type "none")
  (parameters
    '("PangoFontFace***" "faces")
    '("int*" "n_faces")
  )
)

(define-virtual get_name
  (of-object "PangoFontFamily")
  (return-type "const-char*")
)

(define-virtual is_monospace
  (of-object "PangoFontFamily")
  (return-type "gboolean")
)

(define-virtual get_face_name
  (of-object "PangoFontFace")
  (return-type "const-char*")
)

(define-virtual describe
  (of-object "PangoFontFace")
  (return-type "PangoFontDescription*")
)

(define-virtual list_sizes
  (of-object "PangoFontFace")
  (return-type "none")
  (parameters
    '("int**" "sizes")
    '("int*" "n_sizes")
  )
)

(define-virtual describe
  (of-object "PangoFont")
  (return-type "PangoFontDescription*")
)

(define-virtual get_coverage
  (of-object "PangoFont")
  (return-type "PangoCoverage*")
  (parameters
    '("PangoLanguage*" "lang")
  )
)

(define-virtual find_shaper
  (of-object "PangoFont")
  (return-type "PangoEngineShape*")
  (parameters
    '("PangoLanguage*" "lang")
    '("guint32" "ch")
  )
)

(define-virtual get_glyph_extents
  (of-object "PangoFont")
  (return-type "none")
  (parameters
    '("PangoGlyph" "glyph")
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-virtual get_metrics
  (of-object "PangoFont")
  (return-type "PangoFontMetrics*")
  (parameters
    '("PangoLanguage*" "language")
  )
)

(define-virtual get_font_map
  (of-object "PangoFont")
  (return-type "PangoFontMap*")
)





;; From /opt/gtk2/include/pango-1.0/pango/pango-fontmap.h

(define-function font_map_get_type
  (c-name "pango_font_map_get_type")
  (return-type "GType")
)

(define-method load_font
  (of-object "PangoFontMap")
  (c-name "pango_font_map_load_font")
  (return-type "PangoFont*")
  (parameters
    '("PangoContext*" "context")
    '("const-PangoFontDescription*" "desc")
  )
)

(define-method load_fontset
  (of-object "PangoFontMap")
  (c-name "pango_font_map_load_fontset")
  (return-type "PangoFontset*")
  (parameters
    '("PangoContext*" "context")
    '("const-PangoFontDescription*" "desc")
    '("PangoLanguage*" "language")
  )
)

(define-method list_families
  (of-object "PangoFontMap")
  (c-name "pango_font_map_list_families")
  (return-type "none")
  (parameters
    '("PangoFontFamily***" "families")
    '("int*" "n_families")
  )
)

(define-method get_shape_engine_type
  (of-object "PangoFontMap")
  (c-name "pango_font_map_get_shape_engine_type")
  (return-type "const-char*")
)

(define-virtual load_font
  (of-object "PangoFontMap")
  (return-type "PangoFont*")
  (parameters
    '("PangoContext*" "context")
    '("const-PangoFontDescription*" "desc")
  )
)

(define-virtual list_families
  (of-object "PangoFontMap")
  (return-type "none")
  (parameters
    '("PangoFontFamily***" "families")
    '("int*" "n_families")
  )
)

(define-virtual load_fontset
  (of-object "PangoFontMap")
  (return-type "PangoFontset*")
  (parameters
    '("PangoContext*" "context")
    '("const-PangoFontDescription*" "desc")
    '("PangoLanguage*" "language")
  )
)



;; From /opt/gtk2/include/pango-1.0/pango/pango-fontset.h

(define-function fontset_get_type
  (c-name "pango_fontset_get_type")
  (return-type "GType")
)

(define-method get_font
  (of-object "PangoFontset")
  (c-name "pango_fontset_get_font")
  (return-type "PangoFont*")
  (parameters
    '("guint" "wc")
  )
)

(define-method get_metrics
  (of-object "PangoFontset")
  (c-name "pango_fontset_get_metrics")
  (return-type "PangoFontMetrics*")
)

(define-method foreach
  (of-object "PangoFontset")
  (c-name "pango_fontset_foreach")
  (return-type "none")
  (parameters
    '("PangoFontsetForeachFunc" "func")
    '("gpointer" "data")
  )
)

(define-function fontset_simple_get_type
  (c-name "pango_fontset_simple_get_type")
  (return-type "GType")
)

(define-function pango_fontset_simple_new
  (c-name "pango_fontset_simple_new")
  (is-constructor-of "PangoFontsetSimple")
  (return-type "PangoFontsetSimple*")
  (parameters
    '("PangoLanguage*" "language")
  )
)

(define-method append
  (of-object "PangoFontsetSimple")
  (c-name "pango_fontset_simple_append")
  (return-type "none")
  (parameters
    '("PangoFont*" "font")
  )
)

(define-method size
  (of-object "PangoFontsetSimple")
  (c-name "pango_fontset_simple_size")
  (return-type "int")
)

(define-virtual get_font
  (of-object "PangoFontset")
  (return-type "PangoFont*")
  (parameters
    '("guint" "wc")
  )
)

(define-virtual get_metrics
  (of-object "PangoFontset")
  (return-type "PangoFontMetrics*")
)

(define-virtual get_language
  (of-object "PangoFontset")
  (return-type "PangoLanguage*")
)

(define-virtual foreach
  (of-object "PangoFontset")
  (return-type "none")
  (parameters
    '("PangoFontsetForeachFunc" "func")
    '("gpointer" "data")
  )
)



;; From pango-glyph-item.h

(define-method split
  (of-object "PangoGlyphItem")
  (c-name "pango_glyph_item_split")
  (return-type "PangoGlyphItem*")
  (parameters
    '("const-char*" "text")
    '("int" "split_index")
  )
)

(define-method free
  (of-object "PangoGlyphItem")
  (c-name "pango_glyph_item_free")
  (return-type "none")
)

(define-method apply_attrs
  (of-object "PangoGlyphItem")
  (c-name "pango_glyph_item_apply_attrs")
  (return-type "GSList*")
  (parameters
    '("const-char*" "text")
    '("PangoAttrList*" "list")
  )
)

(define-method letter_space
  (of-object "PangoGlyphItem")
  (c-name "pango_glyph_item_letter_space")
  (return-type "none")
  (parameters
    '("const-char*" "text")
    '("PangoLogAttr*" "log_attrs")
    '("int" "letter_spacing")
  )
)



;; From /opt/gtk2/include/pango-1.0/pango/pango-glyph.h

(define-function pango_glyph_string_new
  (c-name "pango_glyph_string_new")
  (is-constructor-of "PangoGlyphString")
  (return-type "PangoGlyphString*")
)

(define-method set_size
  (of-object "PangoGlyphString")
  (c-name "pango_glyph_string_set_size")
  (return-type "none")
  (parameters
    '("gint" "new_len")
  )
)

(define-function pango_glyph_string_get_type
  (c-name "pango_glyph_string_get_type")
  (return-type "GType")
)

(define-method copy
  (of-object "PangoGlyphString")
  (c-name "pango_glyph_string_copy")
  (return-type "PangoGlyphString*")
)

(define-method free
  (of-object "PangoGlyphString")
  (c-name "pango_glyph_string_free")
  (return-type "none")
)

(define-method extents
  (of-object "PangoGlyphString")
  (c-name "pango_glyph_string_extents")
  (return-type "none")
  (parameters
    '("PangoFont*" "font")
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method extents_range
  (of-object "PangoGlyphString")
  (c-name "pango_glyph_string_extents_range")
  (return-type "none")
  (parameters
    '("int" "start")
    '("int" "end")
    '("PangoFont*" "font")
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_logical_widths
  (of-object "PangoGlyphString")
  (c-name "pango_glyph_string_get_logical_widths")
  (return-type "none")
  (parameters
    '("const-char*" "text")
    '("int" "length")
    '("int" "embedding_level")
    '("int*" "logical_widths")
  )
)

(define-method index_to_x
  (of-object "PangoGlyphString")
  (c-name "pango_glyph_string_index_to_x")
  (return-type "none")
  (parameters
    '("char*" "text")
    '("int" "length")
    '("PangoAnalysis*" "analysis")
    '("int" "index")
    '("gboolean" "trailing")
    '("int*" "x_pos")
  )
)

(define-method x_to_index
  (of-object "PangoGlyphString")
  (c-name "pango_glyph_string_x_to_index")
  (return-type "none")
  (parameters
    '("char*" "text")
    '("int" "length")
    '("PangoAnalysis*" "analysis")
    '("int" "x_pos")
    '("int*" "index")
    '("int*" "trailing")
  )
)

(define-function shape
  (c-name "pango_shape")
  (return-type "none")
  (parameters
    '("const-gchar*" "text")
    '("gint" "length")
    '("PangoAnalysis*" "analysis")
    '("PangoGlyphString*" "glyphs")
  )
)

(define-function reorder_items
  (c-name "pango_reorder_items")
  (return-type "GList*")
  (parameters
    '("GList*" "logical_items")
  )
)



;; From pango-item.h

(define-function item_get_type
  (c-name "pango_item_get_type")
  (return-type "GType")
)

(define-function item_new
  (c-name "pango_item_new")
  (is-constructor-of "PangoItem")
  (return-type "PangoItem*")
)

(define-method copy
  (of-object "PangoItem")
  (c-name "pango_item_copy")
  (return-type "PangoItem*")
)

(define-method free
  (of-object "PangoItem")
  (c-name "pango_item_free")
  (return-type "none")
)

(define-method split
  (of-object "PangoItem")
  (c-name "pango_item_split")
  (return-type "PangoItem*")
  (parameters
    '("int" "split_index")
    '("int" "split_offset")
  )
)



;; From /opt/gtk2/include/pango-1.0/pango/pango-layout.h

(define-function pango_layout_get_type
  (c-name "pango_layout_get_type")
  (return-type "GType")
)

(define-function pango_layout_new
  (c-name "pango_layout_new")
  (is-constructor-of "PangoLayout")
  (return-type "PangoLayout*")
  (parameters
    '("PangoContext*" "context")
  )
)

(define-method copy
  (of-object "PangoLayout")
  (c-name "pango_layout_copy")
  (return-type "PangoLayout*")
)

(define-method get_context
  (of-object "PangoLayout")
  (c-name "pango_layout_get_context")
  (return-type "PangoContext*")
)

(define-method set_attributes
  (of-object "PangoLayout")
  (c-name "pango_layout_set_attributes")
  (return-type "none")
  (parameters
    '("PangoAttrList*" "attrs")
  )
)

(define-method get_attributes
  (of-object "PangoLayout")
  (c-name "pango_layout_get_attributes")
  (return-type "PangoAttrList*")
)

(define-method set_text
  (of-object "PangoLayout")
  (c-name "pango_layout_set_text")
  (return-type "none")
  (parameters
    '("const-char*" "text")
    '("int" "length")
  )
)

(define-method get_text
  (of-object "PangoLayout")
  (c-name "pango_layout_get_text")
  (return-type "const-char*")
)

(define-method set_markup
  (of-object "PangoLayout")
  (c-name "pango_layout_set_markup")
  (return-type "none")
  (parameters
    '("const-char*" "markup")
    '("int" "length")
  )
)

(define-method set_markup_with_accel
  (of-object "PangoLayout")
  (c-name "pango_layout_set_markup_with_accel")
  (return-type "none")
  (parameters
    '("const-char*" "markup")
    '("int" "length")
    '("gunichar" "accel_marker")
    '("gunichar*" "accel_char")
  )
)

(define-method set_font_description
  (of-object "PangoLayout")
  (c-name "pango_layout_set_font_description")
  (return-type "none")
  (parameters
    '("const-PangoFontDescription*" "desc" (null-ok))
  )
)

(define-method get_font_description
  (of-object "PangoLayout")
  (c-name "pango_layout_get_font_description")
  (return-type "const-PangoFontDescription*")
)

(define-method set_width
  (of-object "PangoLayout")
  (c-name "pango_layout_set_width")
  (return-type "none")
  (parameters
    '("int" "width")
  )
)

(define-method get_width
  (of-object "PangoLayout")
  (c-name "pango_layout_get_width")
  (return-type "int")
)

(define-method set_wrap
  (of-object "PangoLayout")
  (c-name "pango_layout_set_wrap")
  (return-type "none")
  (parameters
    '("PangoWrapMode" "wrap")
  )
)

(define-method get_wrap
  (of-object "PangoLayout")
  (c-name "pango_layout_get_wrap")
  (return-type "PangoWrapMode")
)

(define-method set_indent
  (of-object "PangoLayout")
  (c-name "pango_layout_set_indent")
  (return-type "none")
  (parameters
    '("int" "indent")
  )
)

(define-method get_indent
  (of-object "PangoLayout")
  (c-name "pango_layout_get_indent")
  (return-type "int")
)

(define-method set_spacing
  (of-object "PangoLayout")
  (c-name "pango_layout_set_spacing")
  (return-type "none")
  (parameters
    '("int" "spacing")
  )
)

(define-method get_spacing
  (of-object "PangoLayout")
  (c-name "pango_layout_get_spacing")
  (return-type "int")
)

(define-method set_justify
  (of-object "PangoLayout")
  (c-name "pango_layout_set_justify")
  (return-type "none")
  (parameters
    '("gboolean" "justify")
  )
)

(define-method get_justify
  (of-object "PangoLayout")
  (c-name "pango_layout_get_justify")
  (return-type "gboolean")
)

(define-method set_auto_dir
  (of-object "PangoLayout")
  (c-name "pango_layout_set_auto_dir")
  (return-type "none")
  (parameters
    '("gboolean" "auto_dir")
  )
)

(define-method get_auto_dir
  (of-object "PangoLayout")
  (c-name "pango_layout_get_auto_dir")
  (return-type "gboolean")
)

(define-method set_alignment
  (of-object "PangoLayout")
  (c-name "pango_layout_set_alignment")
  (return-type "none")
  (parameters
    '("PangoAlignment" "alignment")
  )
)

(define-method get_alignment
  (of-object "PangoLayout")
  (c-name "pango_layout_get_alignment")
  (return-type "PangoAlignment")
)

(define-method set_tabs
  (of-object "PangoLayout")
  (c-name "pango_layout_set_tabs")
  (return-type "none")
  (parameters
    '("PangoTabArray*" "tabs" (null-ok))
  )
)

(define-method get_tabs
  (of-object "PangoLayout")
  (c-name "pango_layout_get_tabs")
  (return-type "PangoTabArray*")
)

(define-method set_single_paragraph_mode
  (of-object "PangoLayout")
  (c-name "pango_layout_set_single_paragraph_mode")
  (return-type "none")
  (parameters
    '("gboolean" "setting")
  )
)

(define-method get_single_paragraph_mode
  (of-object "PangoLayout")
  (c-name "pango_layout_get_single_paragraph_mode")
  (return-type "gboolean")
)

(define-method set_ellipsize
  (of-object "PangoLayout")
  (c-name "pango_layout_set_ellipsize")
  (return-type "none")
  (parameters
    '("PangoEllipsizeMode" "ellipsize")
  )
)

(define-method get_ellipsize
  (of-object "PangoLayout")
  (c-name "pango_layout_get_ellipsize")
  (return-type "PangoEllipsizeMode")
)

(define-method context_changed
  (of-object "PangoLayout")
  (c-name "pango_layout_context_changed")
  (return-type "none")
)

(define-method get_log_attrs
  (of-object "PangoLayout")
  (c-name "pango_layout_get_log_attrs")
  (return-type "none")
  (parameters
    '("PangoLogAttr**" "attrs")
    '("gint*" "n_attrs")
  )
)

(define-method index_to_pos
  (of-object "PangoLayout")
  (c-name "pango_layout_index_to_pos")
  (return-type "none")
  (parameters
    '("int" "index")
    '("PangoRectangle*" "pos")
  )
)

(define-method get_cursor_pos
  (of-object "PangoLayout")
  (c-name "pango_layout_get_cursor_pos")
  (return-type "none")
  (parameters
    '("int" "index")
    '("PangoRectangle*" "strong_pos")
    '("PangoRectangle*" "weak_pos")
  )
)

(define-method move_cursor_visually
  (of-object "PangoLayout")
  (c-name "pango_layout_move_cursor_visually")
  (return-type "none")
  (parameters
    '("gboolean" "strong")
    '("int" "old_index")
    '("int" "old_trailing")
    '("int" "direction")
    '("int*" "new_index")
    '("int*" "new_trailing")
  )
)

(define-method xy_to_index
  (of-object "PangoLayout")
  (c-name "pango_layout_xy_to_index")
  (return-type "gboolean")
  (parameters
    '("int" "x")
    '("int" "y")
    '("int*" "index")
    '("int*" "trailing")
  )
)

(define-method get_extents
  (of-object "PangoLayout")
  (c-name "pango_layout_get_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_pixel_extents
  (of-object "PangoLayout")
  (c-name "pango_layout_get_pixel_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_size
  (of-object "PangoLayout")
  (c-name "pango_layout_get_size")
  (return-type "none")
  (parameters
    '("int*" "width")
    '("int*" "height")
  )
)

(define-method get_pixel_size
  (of-object "PangoLayout")
  (c-name "pango_layout_get_pixel_size")
  (return-type "none")
  (parameters
    '("int*" "width")
    '("int*" "height")
  )
)

(define-method get_line_count
  (of-object "PangoLayout")
  (c-name "pango_layout_get_line_count")
  (return-type "int")
)

(define-method get_line
  (of-object "PangoLayout")
  (c-name "pango_layout_get_line")
  (return-type "PangoLayoutLine*")
  (parameters
    '("int" "line")
  )
)

(define-method get_lines
  (of-object "PangoLayout")
  (c-name "pango_layout_get_lines")
  (return-type "GSList*")
)

(define-function layout_line_get_type
  (c-name "pango_layout_line_get_type")
  (return-type "GType")
)

(define-method ref
  (of-object "PangoLayoutLine")
  (c-name "pango_layout_line_ref")
  (return-type "PangoLayoutLine*")
)

(define-method unref
  (of-object "PangoLayoutLine")
  (c-name "pango_layout_line_unref")
  (return-type "none")
)

(define-method x_to_index
  (of-object "PangoLayoutLine")
  (c-name "pango_layout_line_x_to_index")
  (return-type "gboolean")
  (parameters
    '("int" "x_pos")
    '("int*" "index")
    '("int*" "trailing")
  )
)

(define-method index_to_x
  (of-object "PangoLayoutLine")
  (c-name "pango_layout_line_index_to_x")
  (return-type "none")
  (parameters
    '("int" "index")
    '("gboolean" "trailing")
    '("int*" "x_pos")
  )
)

(define-method get_x_ranges
  (of-object "PangoLayoutLine")
  (c-name "pango_layout_line_get_x_ranges")
  (return-type "none")
  (parameters
    '("int" "start_index")
    '("int" "end_index")
    '("int**" "ranges")
    '("int*" "n_ranges")
  )
)

(define-method get_extents
  (of-object "PangoLayoutLine")
  (c-name "pango_layout_line_get_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_pixel_extents
  (of-object "PangoLayoutLine")
  (c-name "pango_layout_line_get_pixel_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-function pango_layout_iter_get_type
  (c-name "pango_layout_iter_get_type")
  (return-type "GType")
)

(define-method get_iter
  (of-object "PangoLayout")
  (c-name "pango_layout_get_iter")
  (return-type "PangoLayoutIter*")
)

(define-method free
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_free")
  (return-type "none")
)

(define-method get_index
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_index")
  (return-type "int")
)

(define-method get_run
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_run")
  (return-type "PangoLayoutRun*")
)

(define-method get_line
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_line")
  (return-type "PangoLayoutLine*")
)

(define-method at_last_line
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_at_last_line")
  (return-type "gboolean")
)

(define-method next_char
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_next_char")
  (return-type "gboolean")
)

(define-method next_cluster
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_next_cluster")
  (return-type "gboolean")
)

(define-method next_run
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_next_run")
  (return-type "gboolean")
)

(define-method next_line
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_next_line")
  (return-type "gboolean")
)

(define-method get_char_extents
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_char_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_cluster_extents
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_cluster_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_run_extents
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_run_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_line_extents
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_line_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_line_yrange
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_line_yrange")
  (return-type "none")
  (parameters
    '("int*" "y0")
    '("int*" "y1")
  )
)

(define-method get_layout_extents
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_layout_extents")
  (return-type "none")
  (parameters
    '("PangoRectangle*" "ink_rect")
    '("PangoRectangle*" "logical_rect")
  )
)

(define-method get_baseline
  (of-object "PangoLayoutIter")
  (c-name "pango_layout_iter_get_baseline")
  (return-type "int")
)



;; From pango-modules.h

(ifdef PANGO_ENABLE_BACKEND

(define-function find_map
  (c-name "pango_find_map")
  (return-type "PangoMap*")
  (parameters
    '("PangoLanguage*" "language")
    '("guint" "engine_type_id")
    '("guint" "render_type_id")
  )
)

(define-method get_engine
  (of-object "PangoMap")
  (c-name "pango_map_get_engine")
  (return-type "PangoEngine*")
  (parameters
    '("PangoScript" "script")
  )
)

(define-method get_engines
  (of-object "PangoMap")
  (c-name "pango_map_get_engines")
  (return-type "none")
  (parameters
    '("PangoScript" "script")
    '("GSList**" "exact_engines")
    '("GSList**" "fallback_engines")
  )
)

(define-function module_register
  (c-name "pango_module_register")
  (return-type "none")
  (parameters
    '("PangoIncludedModule*" "module")
  )
)
) ;; PANGO_ENABLE_BACKEND


;; From /home/jdahlin/dev/gtk-2.8/pango/pango/pango-renderer.h

(define-function pango_renderer_get_type
  (c-name "pango_renderer_get_type")
  (return-type "GType")
)

(define-method draw_layout
  (of-object "PangoRenderer")
  (c-name "pango_renderer_draw_layout")
  (return-type "none")
  (parameters
    '("PangoLayout*" "layout")
    '("int" "x")
    '("int" "y")
  )
)

(define-method draw_layout_line
  (of-object "PangoRenderer")
  (c-name "pango_renderer_draw_layout_line")
  (return-type "none")
  (parameters
    '("PangoLayoutLine*" "line")
    '("int" "x")
    '("int" "y")
  )
)

(define-method draw_glyphs
  (of-object "PangoRenderer")
  (c-name "pango_renderer_draw_glyphs")
  (return-type "none")
  (parameters
    '("PangoFont*" "font")
    '("PangoGlyphString*" "glyphs")
    '("int" "x")
    '("int" "y")
  )
)

(define-method draw_rectangle
  (of-object "PangoRenderer")
  (c-name "pango_renderer_draw_rectangle")
  (return-type "none")
  (parameters
    '("PangoRenderPart" "part")
    '("int" "x")
    '("int" "y")
    '("int" "width")
    '("int" "height")
  )
)

(define-method draw_error_underline
  (of-object "PangoRenderer")
  (c-name "pango_renderer_draw_error_underline")
  (return-type "none")
  (parameters
    '("int" "x")
    '("int" "y")
    '("int" "width")
    '("int" "height")
  )
)

(define-method draw_trapezoid
  (of-object "PangoRenderer")
  (c-name "pango_renderer_draw_trapezoid")
  (return-type "none")
  (parameters
    '("PangoRenderPart" "part")
    '("double" "y1_")
    '("double" "x11")
    '("double" "x21")
    '("double" "y2")
    '("double" "x12")
    '("double" "x22")
  )
)

(define-method draw_glyph
  (of-object "PangoRenderer")
  (c-name "pango_renderer_draw_glyph")
  (return-type "none")
  (parameters
    '("PangoFont*" "font")
    '("PangoGlyph" "glyph")
    '("double" "x")
    '("double" "y")
  )
)

(define-method activate
  (of-object "PangoRenderer")
  (c-name "pango_renderer_activate")
  (return-type "none")
)

(define-method deactivate
  (of-object "PangoRenderer")
  (c-name "pango_renderer_deactivate")
  (return-type "none")
)

(define-method part_changed
  (of-object "PangoRenderer")
  (c-name "pango_renderer_part_changed")
  (return-type "none")
  (parameters
    '("PangoRenderPart" "part")
  )
)

(define-method set_color
  (of-object "PangoRenderer")
  (c-name "pango_renderer_set_color")
  (return-type "none")
  (parameters
    '("PangoRenderPart" "part")
    '("const-PangoColor*" "color")
  )
)

(define-method get_color
  (of-object "PangoRenderer")
  (c-name "pango_renderer_get_color")
  (return-type "PangoColor*")
  (parameters
    '("PangoRenderPart" "part")
  )
)

(define-method set_matrix
  (of-object "PangoRenderer")
  (c-name "pango_renderer_set_matrix")
  (return-type "none")
  (parameters
    '("const-PangoMatrix*" "matrix")
  )
)

(define-method get_matrix
  (of-object "PangoRenderer")
  (c-name "pango_renderer_get_matrix")
  (return-type "const-PangoMatrix*")
)

(define-virtual draw_glyphs
  (of-object "PangoRenderer")
  (return-type "none")
  (parameters
    '("PangoFont*" "font")
    '("PangoGlyphString*" "glyphs")
    '("int" "x")
    '("int" "y")
  )
)

(define-virtual draw_rectangle
  (of-object "PangoRenderer")
  (return-type "none")
  (parameters
    '("PangoRenderPart" "part")
    '("int" "x")
    '("int" "y")
    '("int" "width")
    '("int" "height")
  )
)

(define-virtual draw_error_underline
  (of-object "PangoRenderer")
  (return-type "none")
  (parameters
    '("int" "x")
    '("int" "y")
    '("int" "width")
    '("int" "height")
  )
)

(define-virtual draw_shape
  (of-object "PangoRenderer")
  (return-type "none")
  (parameters
    '("PangoAttrShape*" "attr")
    '("int" "x")
    '("int" "y")
  )
)

(define-virtual draw_trapezoid
  (of-object "PangoRenderer")
  (return-type "none")
  (parameters
    '("PangoRenderPart" "part")
    '("double" "y1_")
    '("double" "x11")
    '("double" "x21")
    '("double" "y2")
    '("double" "x12")
    '("double" "x22")
  )
)

(define-virtual draw_glyph
  (of-object "PangoRenderer")
  (return-type "none")
  (parameters
    '("PangoFont*" "font")
    '("PangoGlyph" "glyph")
    '("double" "x")
    '("double" "y")
  )
)

(define-virtual part_changed
  (of-object "PangoRenderer")
  (return-type "none")
  (parameters
    '("PangoRenderPart" "part")
  )
)

(define-virtual begin
  (of-object "PangoRenderer")
  (return-type "none")
)

(define-virtual end
  (of-object "PangoRenderer")
  (return-type "none")
)

(define-virtual prepare_run
  (of-object "PangoRenderer")
  (return-type "none")
  (parameters
    '("PangoLayoutRun*" "run")
  )
)

;; From pango-script.h

(define-function script_for_unichar
  (c-name "pango_script_for_unichar")
  (return-type "PangoScript")
  (parameters
    '("gunichar" "ch")
  )
)

(define-function script_iter_new
  (c-name "pango_script_iter_new")
  (is-constructor-of "PangoScriptIter")
  (return-type "PangoScriptIter*")
  (parameters
    '("const-char*" "text")
    '("int" "length")
  )
)

(define-method get_range
  (of-object "PangoScriptIter")
  (c-name "pango_script_iter_get_range")
  (return-type "none")
  (parameters
    '("const-char**" "start")
    '("const-char**" "end")
    '("PangoScript*" "script")
  )
)

(define-method next
  (of-object "PangoScriptIter")
  (c-name "pango_script_iter_next")
  (return-type "gboolean")
)

(define-method free
  (of-object "PangoScriptIter")
  (c-name "pango_script_iter_free")
  (return-type "none")
)

(define-function get_sample_language
  (c-name "pango_script_get_sample_language")
  (return-type "PangoLanguage*")
  (parameters
    '("PangoScript" "script")
  )
)

(define-method includes_script
  (of-object "PangoLanguage")
  (c-name "pango_language_includes_script")
  (return-type "gboolean")
  (parameters
    '("PangoScript" "script")
  )
)



;; From /opt/gtk2/include/pango-1.0/pango/pango-tabs.h

(define-function pango_tab_array_new
  (c-name "pango_tab_array_new")
  (is-constructor-of "PangoTabArray")
  (return-type "PangoTabArray*")
  (parameters
    '("gint" "initial_size")
    '("gboolean" "positions_in_pixels")
  )
)

(define-function pango_tab_array_new_with_positions
  (c-name "pango_tab_array_new_with_positions")
  (is-constructor-of "PangoTabArray")
  (return-type "PangoTabArray*")
  (parameters
    '("gint" "size")
    '("gboolean" "positions_in_pixels")
    '("PangoTabAlign" "first_alignment")
    '("gint" "first_position")
  )
  (varargs #t)
)

(define-function pango_tab_array_get_type
  (c-name "pango_tab_array_get_type")
  (return-type "GType")
)

(define-method copy
  (of-object "PangoTabArray")
  (c-name "pango_tab_array_copy")
  (return-type "PangoTabArray*")
)

(define-method free
  (of-object "PangoTabArray")
  (c-name "pango_tab_array_free")
  (return-type "none")
)

(define-method get_size
  (of-object "PangoTabArray")
  (c-name "pango_tab_array_get_size")
  (return-type "gint")
)

(define-method resize
  (of-object "PangoTabArray")
  (c-name "pango_tab_array_resize")
  (return-type "none")
  (parameters
    '("gint" "new_size")
  )
)

(define-method set_tab
  (of-object "PangoTabArray")
  (c-name "pango_tab_array_set_tab")
  (return-type "none")
  (parameters
    '("gint" "tab_index")
    '("PangoTabAlign" "alignment")
    '("gint" "location")
  )
)

(define-method get_tab
  (of-object "PangoTabArray")
  (c-name "pango_tab_array_get_tab")
  (return-type "none")
  (parameters
    '("gint" "tab_index")
    '("PangoTabAlign*" "alignment")
    '("gint*" "location")
  )
)

(define-method get_tabs
  (of-object "PangoTabArray")
  (c-name "pango_tab_array_get_tabs")
  (return-type "none")
  (parameters
    '("PangoTabAlign**" "alignments")
    '("gint**" "locations")
  )
)

(define-method get_positions_in_pixels
  (of-object "PangoTabArray")
  (c-name "pango_tab_array_get_positions_in_pixels")
  (return-type "gboolean")
)



;; From /opt/gtk2/include/pango-1.0/pango/pango-types.h

(define-function matrix_get_type
  (c-name "pango_matrix_get_type")
  (return-type "GType")
)

(define-method copy
  (of-object "PangoMatrix")
  (c-name "pango_matrix_copy")
  (return-type "PangoMatrix*")
)

(define-method free
  (of-object "PangoMatrix")
  (c-name "pango_matrix_free")
  (return-type "none")
)

(define-method translate
  (of-object "PangoMatrix")
  (c-name "pango_matrix_translate")
  (return-type "none")
  (parameters
    '("double" "tx")
    '("double" "ty")
  )
)

(define-method scale
  (of-object "PangoMatrix")
  (c-name "pango_matrix_scale")
  (return-type "none")
  (parameters
    '("double" "scale_x")
    '("double" "scale_y")
  )
)

(define-method rotate
  (of-object "PangoMatrix")
  (c-name "pango_matrix_rotate")
  (return-type "none")
  (parameters
    '("double" "degrees")
  )
)

(define-method concat
  (of-object "PangoMatrix")
  (c-name "pango_matrix_concat")
  (return-type "none")
  (parameters
    '("const-PangoMatrix*" "new_matrix")
  )
)

(define-function language_get_type
  (c-name "pango_language_get_type")
  (return-type "GType")
)

(define-function pango_language_from_string
  (is-constructor-of "PangoLanguage")
  (c-name "pango_language_from_string")
  (return-type "PangoLanguage*")
  (parameters
    '("const-char*" "language")
  )
)

(define-function pango_language_from_string
  (c-name "pango_language_from_string1")
  (return-type "PangoLanguage*")
  (parameters
    '("const-char*" "language")
  )
  (deprecated "use pango.Language instead")
)

(define-function pango_language_matches
  (c-name "pango_language_matches1")
  (return-type "gboolean")
  (parameters
    '("PangoLanguage*" "language" (null-ok))
    '("const-char*" "range_list")
  )
  (deprecated "use pango.Language.matches instead")
)

(define-method matches
  (of-object "PangoLanguage")
  (c-name "pango_language_matches")
  (return-type "gboolean")
  (parameters
    '("const-char*" "range_list")
  )
)

(define-method to_string
  (of-object "PangoLanguage")
  (c-name "pango_language_to_string")
  (return-type "const-char*")
)

(define-function get_mirror_char
  (c-name "pango_get_mirror_char")
  (return-type "gboolean")
  (parameters
    '("gunichar" "ch")
    '("gunichar*" "mirrored_ch")
  )
  (deprecated "deprecated")
)
 
(define-function unichar_direction
  (c-name "pango_unichar_direction")
  (return-type "PangoDirection")
  (parameters
    '("gunichar" "ch")
  )
)

(define-function find_base_dir
  (c-name "pango_find_base_dir")
  (return-type "PangoDirection")
  (parameters
    '("const-gchar*" "text")
    '("gint" "length")
  )
)


;;

(define-function PIXELS
  (c-name "PANGO_PIXELS")
  (return-type "gint")
  (parameters
    '("gint" "size")
   )
 )

(define-function ASCENT
  (c-name "PANGO_ASCENT")
  (return-type "gint")
  (parameters
    '("PangoRectangle" "rect")
   )
 )

(define-function DESCENT
  (c-name "PANGO_DESCENT")
  (return-type "gint")
  (parameters
    '("PangoRectangle" "rect")
   )
 )

(define-function LBEARING
  (c-name "PANGO_LBEARING")
  (return-type "gint")
  (parameters
    '("PangoRectangle" "rect")
   )
 )

(define-function RBEARING
  (c-name "PANGO_RBEARING")
  (return-type "gint")
  (parameters
    '("PangoRectangle" "rect")
   )
 )



;; From pango-utils.h

(ifdef USE_PANGO_UTILS

(define-function split_file_list
  (c-name "pango_split_file_list")
  (return-type "char**")
  (parameters
    '("const-char*" "str")
  )
)

(define-function trim_string
  (c-name "pango_trim_string")
  (return-type "char*")
  (parameters
    '("const-char*" "str")
  )
)

(define-function read_line
  (c-name "pango_read_line")
  (return-type "gint")
  (parameters
    '("FILE*" "stream")
    '("GString*" "str")
  )
)

(define-function skip_space
  (c-name "pango_skip_space")
  (return-type "gboolean")
  (parameters
    '("const-char**" "pos")
  )
)

(define-function scan_word
  (c-name "pango_scan_word")
  (return-type "gboolean")
  (parameters
    '("const-char**" "pos")
    '("GString*" "out")
  )
)

(define-function scan_string
  (c-name "pango_scan_string")
  (return-type "gboolean")
  (parameters
    '("const-char**" "pos")
    '("GString*" "out")
  )
)

(define-function scan_int
  (c-name "pango_scan_int")
  (return-type "gboolean")
  (parameters
    '("const-char**" "pos")
    '("int*" "out")
  )
)

(define-function config_key_get
  (c-name "pango_config_key_get")
  (return-type "char*")
  (parameters
    '("const-char*" "key")
  )
)

(define-function lookup_aliases
  (c-name "pango_lookup_aliases")
  (return-type "none")
  (parameters
    '("const-char*" "fontname")
    '("char***" "families")
    '("int*" "n_families")
  )
)

(define-function parse_style
  (c-name "pango_parse_style")
  (return-type "gboolean")
  (parameters
    '("const-char*" "str")
    '("PangoStyle*" "style")
    '("gboolean" "warn")
  )
)

(define-function parse_variant
  (c-name "pango_parse_variant")
  (return-type "gboolean")
  (parameters
    '("const-char*" "str")
    '("PangoVariant*" "variant")
    '("gboolean" "warn")
  )
)

(define-function parse_weight
  (c-name "pango_parse_weight")
  (return-type "gboolean")
  (parameters
    '("const-char*" "str")
    '("PangoWeight*" "weight")
    '("gboolean" "warn")
  )
)

(define-function parse_stretch
  (c-name "pango_parse_stretch")
  (return-type "gboolean")
  (parameters
    '("const-char*" "str")
    '("PangoStretch*" "stretch")
    '("gboolean" "warn")
  )
)

(define-function get_sysconf_subdirectory
  (c-name "pango_get_sysconf_subdirectory")
  (return-type "const-char*")
)

(define-function get_lib_subdirectory
  (c-name "pango_get_lib_subdirectory")
  (return-type "const-char*")
)

(define-function log2vis_get_embedding_levels
  (c-name "pango_log2vis_get_embedding_levels")
  (return-type "guint8*")
  (parameters
    '("const-gchar*" "text")
    '("int" "length")
    '("PangoDirection*" "pbase_dir")
  )
)

(define-method get_sample_string
  (of-object "PangoLanguage")
  (c-name "pango_language_get_sample_string")
  (return-type "const-char*")
)

(define-function is_zero_width
  (c-name "pango_is_zero_width")
  (return-type "gboolean")
  (parameters
    '("gunichar" "ch")
  )
)
) ;; USE_PANGO_UTILS



