! Do not modify this file automatically generated by cfwrapper.py using:
! gtk-fortran 4.8.0, GTK 4.18.4, GLib 2.84.1, Fedora 42 x86_64
! This file is part of the gtk-fortran library, distributed under
! GNU General Public License version 3.

module pango
use, intrinsic :: iso_c_binding
implicit none
interface

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-tabs.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!PangoTabArray *pango_tab_array_new (gint initial_size, gboolean positions_in_pixels);
function pango_tab_array_new(initial_size, positions_in_pixels) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_tab_array_new
  integer(c_int), value :: initial_size
  integer(c_int), value :: positions_in_pixels
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_tab_array_get_type (void) ;
function pango_tab_array_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_tab_array_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoTabArray *pango_tab_array_copy (PangoTabArray *src);
function pango_tab_array_copy(src) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_tab_array_copy
  type(c_ptr), value :: src
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_tab_array_free (PangoTabArray *tab_array);
subroutine pango_tab_array_free(tab_array) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: tab_array
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gint pango_tab_array_get_size (PangoTabArray *tab_array);
function pango_tab_array_get_size(tab_array) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_tab_array_get_size
  type(c_ptr), value :: tab_array
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_tab_array_resize (PangoTabArray *tab_array, gint new_size);
subroutine pango_tab_array_resize(tab_array, new_size) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: tab_array
  integer(c_int), value :: new_size
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_tab_array_set_tab (PangoTabArray *tab_array, gint tab_index, PangoTabAlign alignment, gint location);
subroutine pango_tab_array_set_tab(tab_array, tab_index, alignment, location)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: tab_array
  integer(c_int), value :: tab_index
  integer(c_int), value :: alignment
  integer(c_int), value :: location
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_tab_array_get_tab (PangoTabArray *tab_array, gint tab_index, PangoTabAlign *alignment, gint *location);
subroutine pango_tab_array_get_tab(tab_array, tab_index, alignment, location)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: tab_array
  integer(c_int), value :: tab_index
  type(c_ptr), value :: alignment
  type(c_ptr), value :: location
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_tab_array_get_tabs (PangoTabArray *tab_array, PangoTabAlign **alignments, gint **locations);
subroutine pango_tab_array_get_tabs(tab_array, alignments, locations) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: tab_array
  type(c_ptr), value :: alignments
  type(c_ptr), value :: locations
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_tab_array_get_positions_in_pixels (PangoTabArray *tab_array);
function pango_tab_array_get_positions_in_pixels(tab_array) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_tab_array_get_positions_in_pixels
  type(c_ptr), value :: tab_array
end function

! PANGO_AVAILABLE_IN_1_50
!void pango_tab_array_set_positions_in_pixels (PangoTabArray *tab_array, gboolean positions_in_pixels);
subroutine pango_tab_array_set_positions_in_pixels(tab_array,&
& positions_in_pixels) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: tab_array
  integer(c_int), value :: positions_in_pixels
end subroutine

! PANGO_AVAILABLE_IN_1_50
!char * pango_tab_array_to_string (PangoTabArray *tab_array);
function pango_tab_array_to_string(tab_array) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_tab_array_to_string
  type(c_ptr), value :: tab_array
end function

! PANGO_AVAILABLE_IN_1_50
!PangoTabArray * pango_tab_array_from_string (const char *text);
function pango_tab_array_from_string(text) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_tab_array_from_string
  character(kind=c_char), dimension(*) :: text
end function

! PANGO_AVAILABLE_IN_1_50
!void pango_tab_array_set_decimal_point (PangoTabArray *tab_array, int tab_index, gunichar decimal_point);
subroutine pango_tab_array_set_decimal_point(tab_array, tab_index,&
& decimal_point) bind(c)
  import :: c_ptr, c_int, c_int32_t
  implicit none
  type(c_ptr), value :: tab_array
  integer(c_int), value :: tab_index
  integer(c_int32_t), value :: decimal_point
end subroutine

! PANGO_AVAILABLE_IN_1_50
!gunichar pango_tab_array_get_decimal_point (PangoTabArray *tab_array, int tab_index);
function pango_tab_array_get_decimal_point(tab_array, tab_index) bind(c)
  import :: c_int32_t, c_ptr, c_int
  implicit none
  integer(c_int32_t) :: pango_tab_array_get_decimal_point
  type(c_ptr), value :: tab_array
  integer(c_int), value :: tab_index
end function

! PANGO_AVAILABLE_IN_1_50
!void pango_tab_array_sort (PangoTabArray *tab_array);
subroutine pango_tab_array_sort(tab_array) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: tab_array
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-enum-types.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_attr_type_get_type (void) ;
function pango_attr_type_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_attr_type_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_underline_get_type (void) ;
function pango_underline_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_underline_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_overline_get_type (void) ;
function pango_overline_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_overline_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_show_flags_get_type (void) ;
function pango_show_flags_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_show_flags_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_text_transform_get_type (void) ;
function pango_text_transform_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_text_transform_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_baseline_shift_get_type (void) ;
function pango_baseline_shift_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_baseline_shift_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_font_scale_get_type (void) ;
function pango_font_scale_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_font_scale_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_bidi_type_get_type (void) ;
function pango_bidi_type_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_bidi_type_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_coverage_level_get_type (void) ;
function pango_coverage_level_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_coverage_level_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_direction_get_type (void) ;
function pango_direction_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_direction_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_style_get_type (void) ;
function pango_style_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_style_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_variant_get_type (void) ;
function pango_variant_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_variant_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_weight_get_type (void) ;
function pango_weight_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_weight_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_stretch_get_type (void) ;
function pango_stretch_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_stretch_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_font_mask_get_type (void) ;
function pango_font_mask_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_font_mask_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_shape_flags_get_type (void) ;
function pango_shape_flags_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_shape_flags_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_gravity_get_type (void) ;
function pango_gravity_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_gravity_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_gravity_hint_get_type (void) ;
function pango_gravity_hint_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_gravity_hint_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_alignment_get_type (void) ;
function pango_alignment_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_alignment_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_wrap_mode_get_type (void) ;
function pango_wrap_mode_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_wrap_mode_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_ellipsize_mode_get_type (void) ;
function pango_ellipsize_mode_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_ellipsize_mode_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_layout_serialize_flags_get_type (void) ;
function pango_layout_serialize_flags_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_layout_serialize_flags_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_layout_deserialize_error_get_type (void) ;
function pango_layout_deserialize_error_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_layout_deserialize_error_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_layout_deserialize_flags_get_type (void) ;
function pango_layout_deserialize_flags_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_layout_deserialize_flags_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_render_part_get_type (void) ;
function pango_render_part_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_render_part_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_script_get_type (void) ;
function pango_script_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_script_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_tab_align_get_type (void) ;
function pango_tab_align_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_tab_align_get_type
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-language.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_language_get_type (void) ;
function pango_language_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_language_get_type
end function

! PANGO_AVAILABLE_IN_1_16
!PangoLanguage * pango_language_get_default (void) ;
function pango_language_get_default() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_language_get_default
end function

! PANGO_AVAILABLE_IN_1_48
!PangoLanguage ** pango_language_get_preferred (void) ;
function pango_language_get_preferred() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_language_get_preferred
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLanguage * pango_language_from_string (const char *language);
function pango_language_from_string(language) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_language_from_string
  character(kind=c_char), dimension(*) :: language
end function

! PANGO_AVAILABLE_IN_ALL
!const char * pango_language_to_string (PangoLanguage *language) ;
function pango_language_to_string(language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_language_to_string
  type(c_ptr), value :: language
end function

! PANGO_AVAILABLE_IN_ALL
!const char * pango_language_get_sample_string (PangoLanguage *language) ;
function pango_language_get_sample_string(language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_language_get_sample_string
  type(c_ptr), value :: language
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_language_matches (PangoLanguage *language, const char *range_list) ;
function pango_language_matches(language, range_list) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: pango_language_matches
  type(c_ptr), value :: language
  character(kind=c_char), dimension(*) :: range_list
end function

! PANGO_AVAILABLE_IN_1_4
!gboolean pango_language_includes_script (PangoLanguage *language, PangoScript script) ;
function pango_language_includes_script(language, script) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_language_includes_script
  type(c_ptr), value :: language
  integer(c_int), value :: script
end function

! PANGO_AVAILABLE_IN_1_22
!const PangoScript * pango_language_get_scripts (PangoLanguage *language, int *num_scripts);
function pango_language_get_scripts(language, num_scripts) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_language_get_scripts
  type(c_ptr), value :: language
  type(c_ptr), value :: num_scripts
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-break.h
!--------------------------------------------------
! PANGO_DEPRECATED_IN_1_44
!void pango_break (const char *text, int length, PangoAnalysis *analysis, PangoLogAttr *attrs, int attrs_len);
subroutine pango_break(text, length, analysis, attrs, attrs_len) bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: analysis
  type(c_ptr), value :: attrs
  integer(c_int), value :: attrs_len
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_get_log_attrs (const char *text, int length, int level, PangoLanguage *language, PangoLogAttr *attrs, int attrs_len);
subroutine pango_get_log_attrs(text, length, level, language, attrs, attrs_len)&
& bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  integer(c_int), value :: level
  type(c_ptr), value :: language
  type(c_ptr), value :: attrs
  integer(c_int), value :: attrs_len
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_default_break (const char *text, int length, PangoAnalysis *analysis, PangoLogAttr *attrs, int attrs_len);
subroutine pango_default_break(text, length, analysis, attrs, attrs_len)&
& bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: analysis
  type(c_ptr), value :: attrs
  integer(c_int), value :: attrs_len
end subroutine

! PANGO_AVAILABLE_IN_1_44
!void pango_tailor_break (const char *text, int length, PangoAnalysis *analysis, int offset, PangoLogAttr *attrs, int attrs_len);
subroutine pango_tailor_break(text, length, analysis, offset, attrs, attrs_len)&
& bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: analysis
  integer(c_int), value :: offset
  type(c_ptr), value :: attrs
  integer(c_int), value :: attrs_len
end subroutine

! PANGO_AVAILABLE_IN_1_50
!void pango_attr_break (const char *text, int length, PangoAttrList *attr_list, int offset, PangoLogAttr *attrs, int attrs_len);
subroutine pango_attr_break(text, length, attr_list, offset, attrs, attrs_len)&
& bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: attr_list
  integer(c_int), value :: offset
  type(c_ptr), value :: attrs
  integer(c_int), value :: attrs_len
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-attributes.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_attribute_get_type (void) ;
function pango_attribute_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_attribute_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttrType pango_attr_type_register (const char *name);
function pango_attr_type_register(name) bind(c)
  import :: c_int, c_char
  implicit none
  integer(c_int) :: pango_attr_type_register
  character(kind=c_char), dimension(*) :: name
end function

! PANGO_AVAILABLE_IN_1_22
!const char * pango_attr_type_get_name (PangoAttrType type) ;
function pango_attr_type_get_name(type) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_type_get_name
  integer(c_int), value :: type
end function

! PANGO_AVAILABLE_IN_1_20
!void pango_attribute_init (PangoAttribute *attr, const PangoAttrClass *klass);
subroutine pango_attribute_init(attr, klass) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: attr
  type(c_ptr), value :: klass
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attribute_copy (const PangoAttribute *attr);
function pango_attribute_copy(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_copy
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_attribute_destroy (PangoAttribute *attr);
subroutine pango_attribute_destroy(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: attr
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_attribute_equal (const PangoAttribute *attr1, const PangoAttribute *attr2) ;
function pango_attribute_equal(attr1, attr2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_attribute_equal
  type(c_ptr), value :: attr1
  type(c_ptr), value :: attr2
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_language_new (PangoLanguage *language);
function pango_attr_language_new(language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_language_new
  type(c_ptr), value :: language
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_family_new (const char *family);
function pango_attr_family_new(family) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_attr_family_new
  character(kind=c_char), dimension(*) :: family
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_foreground_new (guint16 red, guint16 green, guint16 blue);
function pango_attr_foreground_new(red, green, blue) bind(c)
  import :: c_ptr, c_int16_t
  implicit none
  type(c_ptr) :: pango_attr_foreground_new
  integer(c_int16_t), value :: red
  integer(c_int16_t), value :: green
  integer(c_int16_t), value :: blue
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_background_new (guint16 red, guint16 green, guint16 blue);
function pango_attr_background_new(red, green, blue) bind(c)
  import :: c_ptr, c_int16_t
  implicit none
  type(c_ptr) :: pango_attr_background_new
  integer(c_int16_t), value :: red
  integer(c_int16_t), value :: green
  integer(c_int16_t), value :: blue
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_size_new (int size);
function pango_attr_size_new(size) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_size_new
  integer(c_int), value :: size
end function

! PANGO_AVAILABLE_IN_1_8
!PangoAttribute * pango_attr_size_new_absolute (int size);
function pango_attr_size_new_absolute(size) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_size_new_absolute
  integer(c_int), value :: size
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_style_new (PangoStyle style);
function pango_attr_style_new(style) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_style_new
  integer(c_int), value :: style
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_weight_new (PangoWeight weight);
function pango_attr_weight_new(weight) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_weight_new
  integer(c_int), value :: weight
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_variant_new (PangoVariant variant);
function pango_attr_variant_new(variant) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_variant_new
  integer(c_int), value :: variant
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_stretch_new (PangoStretch stretch);
function pango_attr_stretch_new(stretch) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_stretch_new
  integer(c_int), value :: stretch
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_font_desc_new (const PangoFontDescription *desc);
function pango_attr_font_desc_new(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_font_desc_new
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_underline_new (PangoUnderline underline);
function pango_attr_underline_new(underline) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_underline_new
  integer(c_int), value :: underline
end function

! PANGO_AVAILABLE_IN_1_8
!PangoAttribute * pango_attr_underline_color_new (guint16 red, guint16 green, guint16 blue);
function pango_attr_underline_color_new(red, green, blue) bind(c)
  import :: c_ptr, c_int16_t
  implicit none
  type(c_ptr) :: pango_attr_underline_color_new
  integer(c_int16_t), value :: red
  integer(c_int16_t), value :: green
  integer(c_int16_t), value :: blue
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_strikethrough_new (gboolean strikethrough);
function pango_attr_strikethrough_new(strikethrough) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_strikethrough_new
  integer(c_int), value :: strikethrough
end function

! PANGO_AVAILABLE_IN_1_8
!PangoAttribute * pango_attr_strikethrough_color_new (guint16 red, guint16 green, guint16 blue);
function pango_attr_strikethrough_color_new(red, green, blue) bind(c)
  import :: c_ptr, c_int16_t
  implicit none
  type(c_ptr) :: pango_attr_strikethrough_color_new
  integer(c_int16_t), value :: red
  integer(c_int16_t), value :: green
  integer(c_int16_t), value :: blue
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_rise_new (int rise);
function pango_attr_rise_new(rise) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_rise_new
  integer(c_int), value :: rise
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttribute * pango_attr_baseline_shift_new (int shift);
function pango_attr_baseline_shift_new(shift) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_baseline_shift_new
  integer(c_int), value :: shift
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttribute * pango_attr_font_scale_new (PangoFontScale scale);
function pango_attr_font_scale_new(scale) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_font_scale_new
  integer(c_int), value :: scale
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_scale_new (double scale_factor);
function pango_attr_scale_new(scale_factor) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr) :: pango_attr_scale_new
  real(c_double), value :: scale_factor
end function

! PANGO_AVAILABLE_IN_1_4
!PangoAttribute * pango_attr_fallback_new (gboolean enable_fallback);
function pango_attr_fallback_new(enable_fallback) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_fallback_new
  integer(c_int), value :: enable_fallback
end function

! PANGO_AVAILABLE_IN_1_6
!PangoAttribute * pango_attr_letter_spacing_new (int letter_spacing);
function pango_attr_letter_spacing_new(letter_spacing) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_letter_spacing_new
  integer(c_int), value :: letter_spacing
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_shape_new (const PangoRectangle *ink_rect, const PangoRectangle *logical_rect);
function pango_attr_shape_new(ink_rect, logical_rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_shape_new
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end function

! PANGO_AVAILABLE_IN_1_8
!PangoAttribute * pango_attr_shape_new_with_data (const PangoRectangle *ink_rect, const PangoRectangle *logical_rect, gpointer data, PangoAttrDataCopyFunc copy_func, GDestroyNotify destroy_func);
function pango_attr_shape_new_with_data(ink_rect, logical_rect, data,&
& copy_func, destroy_func) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr) :: pango_attr_shape_new_with_data
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
  type(c_ptr), value :: data
  type(c_funptr), value :: copy_func
  type(c_funptr), value :: destroy_func
end function

! PANGO_AVAILABLE_IN_1_16
!PangoAttribute * pango_attr_gravity_new (PangoGravity gravity);
function pango_attr_gravity_new(gravity) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_gravity_new
  integer(c_int), value :: gravity
end function

! PANGO_AVAILABLE_IN_1_16
!PangoAttribute * pango_attr_gravity_hint_new (PangoGravityHint hint);
function pango_attr_gravity_hint_new(hint) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_gravity_hint_new
  integer(c_int), value :: hint
end function

! PANGO_AVAILABLE_IN_1_38
!PangoAttribute * pango_attr_font_features_new (const char *features);
function pango_attr_font_features_new(features) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_attr_font_features_new
  character(kind=c_char), dimension(*) :: features
end function

! PANGO_AVAILABLE_IN_1_38
!PangoAttribute * pango_attr_foreground_alpha_new (guint16 alpha);
function pango_attr_foreground_alpha_new(alpha) bind(c)
  import :: c_ptr, c_int16_t
  implicit none
  type(c_ptr) :: pango_attr_foreground_alpha_new
  integer(c_int16_t), value :: alpha
end function

! PANGO_AVAILABLE_IN_1_38
!PangoAttribute * pango_attr_background_alpha_new (guint16 alpha);
function pango_attr_background_alpha_new(alpha) bind(c)
  import :: c_ptr, c_int16_t
  implicit none
  type(c_ptr) :: pango_attr_background_alpha_new
  integer(c_int16_t), value :: alpha
end function

! PANGO_AVAILABLE_IN_1_44
!PangoAttribute * pango_attr_allow_breaks_new (gboolean allow_breaks);
function pango_attr_allow_breaks_new(allow_breaks) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_allow_breaks_new
  integer(c_int), value :: allow_breaks
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttribute * pango_attr_word_new (void);
function pango_attr_word_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_word_new
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttribute * pango_attr_sentence_new (void);
function pango_attr_sentence_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_sentence_new
end function

! PANGO_AVAILABLE_IN_1_44
!PangoAttribute * pango_attr_insert_hyphens_new (gboolean insert_hyphens);
function pango_attr_insert_hyphens_new(insert_hyphens) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_insert_hyphens_new
  integer(c_int), value :: insert_hyphens
end function

! PANGO_AVAILABLE_IN_1_46
!PangoAttribute * pango_attr_overline_new (PangoOverline overline);
function pango_attr_overline_new(overline) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_overline_new
  integer(c_int), value :: overline
end function

! PANGO_AVAILABLE_IN_1_46
!PangoAttribute * pango_attr_overline_color_new (guint16 red, guint16 green, guint16 blue);
function pango_attr_overline_color_new(red, green, blue) bind(c)
  import :: c_ptr, c_int16_t
  implicit none
  type(c_ptr) :: pango_attr_overline_color_new
  integer(c_int16_t), value :: red
  integer(c_int16_t), value :: green
  integer(c_int16_t), value :: blue
end function

! PANGO_AVAILABLE_IN_1_44
!PangoAttribute * pango_attr_show_new (PangoShowFlags flags);
function pango_attr_show_new(flags) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_show_new
  integer(c_int), value :: flags
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttribute * pango_attr_line_height_new (double factor);
function pango_attr_line_height_new(factor) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr) :: pango_attr_line_height_new
  real(c_double), value :: factor
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttribute * pango_attr_line_height_new_absolute (int height);
function pango_attr_line_height_new_absolute(height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_line_height_new_absolute
  integer(c_int), value :: height
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttribute * pango_attr_text_transform_new (PangoTextTransform transform);
function pango_attr_text_transform_new(transform) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_text_transform_new
  integer(c_int), value :: transform
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrString * pango_attribute_as_string (PangoAttribute *attr);
function pango_attribute_as_string(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_string
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrLanguage * pango_attribute_as_language (PangoAttribute *attr);
function pango_attribute_as_language(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_language
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrInt * pango_attribute_as_int (PangoAttribute *attr);
function pango_attribute_as_int(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_int
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrSize * pango_attribute_as_size (PangoAttribute *attr);
function pango_attribute_as_size(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_size
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrFloat * pango_attribute_as_float (PangoAttribute *attr);
function pango_attribute_as_float(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_float
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrColor * pango_attribute_as_color (PangoAttribute *attr);
function pango_attribute_as_color(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_color
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrFontDesc * pango_attribute_as_font_desc (PangoAttribute *attr);
function pango_attribute_as_font_desc(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_font_desc
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrShape * pango_attribute_as_shape (PangoAttribute *attr);
function pango_attribute_as_shape(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_shape
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrFontFeatures * pango_attribute_as_font_features (PangoAttribute *attr);
function pango_attribute_as_font_features(attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attribute_as_font_features
  type(c_ptr), value :: attr
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_attr_list_get_type (void) ;
function pango_attr_list_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_attr_list_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttrList * pango_attr_list_new (void);
function pango_attr_list_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_list_new
end function

! PANGO_AVAILABLE_IN_1_10
!PangoAttrList * pango_attr_list_ref (PangoAttrList *list);
function pango_attr_list_ref(list) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_list_ref
  type(c_ptr), value :: list
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_attr_list_unref (PangoAttrList *list);
subroutine pango_attr_list_unref(list) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: list
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoAttrList * pango_attr_list_copy (PangoAttrList *list);
function pango_attr_list_copy(list) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_list_copy
  type(c_ptr), value :: list
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_attr_list_insert (PangoAttrList *list, PangoAttribute *attr);
subroutine pango_attr_list_insert(list, attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: list
  type(c_ptr), value :: attr
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_attr_list_insert_before (PangoAttrList *list, PangoAttribute *attr);
subroutine pango_attr_list_insert_before(list, attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: list
  type(c_ptr), value :: attr
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_attr_list_change (PangoAttrList *list, PangoAttribute *attr);
subroutine pango_attr_list_change(list, attr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: list
  type(c_ptr), value :: attr
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_attr_list_splice (PangoAttrList *list, PangoAttrList *other, int pos, int len);
subroutine pango_attr_list_splice(list, other, pos, len) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: list
  type(c_ptr), value :: other
  integer(c_int), value :: pos
  integer(c_int), value :: len
end subroutine

! PANGO_AVAILABLE_IN_1_44
!void pango_attr_list_update (PangoAttrList *list, int pos, int remove, int add);
subroutine pango_attr_list_update(list, pos, remove, add) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: list
  integer(c_int), value :: pos
  integer(c_int), value :: remove
  integer(c_int), value :: add
end subroutine

! PANGO_AVAILABLE_IN_1_2
!PangoAttrList * pango_attr_list_filter (PangoAttrList *list, PangoAttrFilterFunc func, gpointer data);
function pango_attr_list_filter(list, func, data) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr) :: pango_attr_list_filter
  type(c_ptr), value :: list
  type(c_funptr), value :: func
  type(c_ptr), value :: data
end function

! PANGO_AVAILABLE_IN_1_44
!GSList * pango_attr_list_get_attributes (PangoAttrList *list);
function pango_attr_list_get_attributes(list) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_list_get_attributes
  type(c_ptr), value :: list
end function

! PANGO_AVAILABLE_IN_1_46
!gboolean pango_attr_list_equal (PangoAttrList *list, PangoAttrList *other_list);
function pango_attr_list_equal(list, other_list) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_attr_list_equal
  type(c_ptr), value :: list
  type(c_ptr), value :: other_list
end function

! PANGO_AVAILABLE_IN_1_50
!char * pango_attr_list_to_string (PangoAttrList *list);
function pango_attr_list_to_string(list) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_list_to_string
  type(c_ptr), value :: list
end function

! PANGO_AVAILABLE_IN_1_50
!PangoAttrList * pango_attr_list_from_string (const char *text);
function pango_attr_list_from_string(text) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_attr_list_from_string
  character(kind=c_char), dimension(*) :: text
end function

! PANGO_AVAILABLE_IN_1_44
!GType pango_attr_iterator_get_type (void) ;
function pango_attr_iterator_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_attr_iterator_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttrIterator * pango_attr_list_get_iterator (PangoAttrList *list);
function pango_attr_list_get_iterator(list) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_list_get_iterator
  type(c_ptr), value :: list
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_attr_iterator_range (PangoAttrIterator *iterator, int *start, int *end);
subroutine pango_attr_iterator_range(iterator, start, end) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iterator
  type(c_ptr), value :: start
  type(c_ptr), value :: end
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_attr_iterator_next (PangoAttrIterator *iterator);
function pango_attr_iterator_next(iterator) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_attr_iterator_next
  type(c_ptr), value :: iterator
end function

! PANGO_AVAILABLE_IN_ALL
!PangoAttrIterator * pango_attr_iterator_copy (PangoAttrIterator *iterator);
function pango_attr_iterator_copy(iterator) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_iterator_copy
  type(c_ptr), value :: iterator
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_attr_iterator_destroy (PangoAttrIterator *iterator);
subroutine pango_attr_iterator_destroy(iterator) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iterator
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoAttribute * pango_attr_iterator_get (PangoAttrIterator *iterator, PangoAttrType type);
function pango_attr_iterator_get(iterator, type) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_attr_iterator_get
  type(c_ptr), value :: iterator
  integer(c_int), value :: type
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_attr_iterator_get_font (PangoAttrIterator *iterator, PangoFontDescription *desc, PangoLanguage **language, GSList **extra_attrs);
subroutine pango_attr_iterator_get_font(iterator, desc, language, extra_attrs)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iterator
  type(c_ptr), value :: desc
  type(c_ptr), value :: language
  type(c_ptr), value :: extra_attrs
end subroutine

! PANGO_AVAILABLE_IN_1_2
!GSList * pango_attr_iterator_get_attrs (PangoAttrIterator *iterator);
function pango_attr_iterator_get_attrs(iterator) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_attr_iterator_get_attrs
  type(c_ptr), value :: iterator
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-engine.h
!--------------------------------------------------
! PANGO_DEPRECATED_IN_1_38
!GType pango_engine_get_type (void) ;
function pango_engine_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_engine_get_type
end function

! PANGO_DEPRECATED_IN_1_38
!GType pango_engine_lang_get_type (void) ;
function pango_engine_lang_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_engine_lang_get_type
end function

! PANGO_DEPRECATED_IN_1_38
!GType pango_engine_shape_get_type (void) ;
function pango_engine_shape_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_engine_shape_get_type
end function

! PANGO_DEPRECATED_IN_1_38
!void script_engine_list (PangoEngineInfo **engines, int *n_engines);
subroutine script_engine_list(engines, n_engines) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: engines
  type(c_ptr), value :: n_engines
end subroutine

! PANGO_DEPRECATED_IN_1_38
!void script_engine_init (GTypeModule *module);
subroutine script_engine_init(module) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: module
end subroutine

! PANGO_DEPRECATED_IN_1_38
!void script_engine_exit (void);
subroutine script_engine_exit() bind(c)
  implicit none
end subroutine

! PANGO_DEPRECATED_IN_1_38
!PangoEngine *script_engine_create (const char *id);
function script_engine_create(id) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: script_engine_create
  character(kind=c_char), dimension(*) :: id
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-modules.h
!--------------------------------------------------
! PANGO_DEPRECATED_IN_1_38
!PangoMap * pango_find_map (PangoLanguage *language, guint engine_type_id, guint render_type_id);
function pango_find_map(language, engine_type_id, render_type_id) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_find_map
  type(c_ptr), value :: language
  integer(c_int), value :: engine_type_id
  integer(c_int), value :: render_type_id
end function

! PANGO_DEPRECATED_IN_1_38
!PangoEngine * pango_map_get_engine (PangoMap *map, PangoScript script);
function pango_map_get_engine(map, script) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_map_get_engine
  type(c_ptr), value :: map
  integer(c_int), value :: script
end function

! PANGO_DEPRECATED_IN_1_38
!void pango_map_get_engines (PangoMap *map, PangoScript script, GSList **exact_engines, GSList **fallback_engines);
subroutine pango_map_get_engines(map, script, exact_engines, fallback_engines)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: map
  integer(c_int), value :: script
  type(c_ptr), value :: exact_engines
  type(c_ptr), value :: fallback_engines
end subroutine

! PANGO_DEPRECATED_IN_1_38
!void pango_module_register (PangoIncludedModule *module);
subroutine pango_module_register(module) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: module
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-fontmap.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_font_map_get_type (void) ;
function pango_font_map_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_font_map_get_type
end function

! PANGO_AVAILABLE_IN_1_22
!PangoContext * pango_font_map_create_context (PangoFontMap *fontmap);
function pango_font_map_create_context(fontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_map_create_context
  type(c_ptr), value :: fontmap
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFont * pango_font_map_load_font (PangoFontMap *fontmap, PangoContext *context, const PangoFontDescription *desc);
function pango_font_map_load_font(fontmap, context, desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_map_load_font
  type(c_ptr), value :: fontmap
  type(c_ptr), value :: context
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontset *pango_font_map_load_fontset (PangoFontMap *fontmap, PangoContext *context, const PangoFontDescription *desc, PangoLanguage *language);
function pango_font_map_load_fontset(fontmap, context, desc, language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_map_load_fontset
  type(c_ptr), value :: fontmap
  type(c_ptr), value :: context
  type(c_ptr), value :: desc
  type(c_ptr), value :: language
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_map_list_families (PangoFontMap *fontmap, PangoFontFamily ***families, int *n_families);
subroutine pango_font_map_list_families(fontmap, families, n_families) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fontmap
  type(c_ptr), value :: families
  type(c_ptr), value :: n_families
end subroutine

! PANGO_AVAILABLE_IN_1_32
!guint pango_font_map_get_serial (PangoFontMap *fontmap);
function pango_font_map_get_serial(fontmap) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_map_get_serial
  type(c_ptr), value :: fontmap
end function

! PANGO_AVAILABLE_IN_1_34
!void pango_font_map_changed (PangoFontMap *fontmap);
subroutine pango_font_map_changed(fontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fontmap
end subroutine

! PANGO_AVAILABLE_IN_1_46
!PangoFontFamily *pango_font_map_get_family (PangoFontMap *fontmap, const char *name);
function pango_font_map_get_family(fontmap, name) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_font_map_get_family
  type(c_ptr), value :: fontmap
  character(kind=c_char), dimension(*) :: name
end function

! PANGO_AVAILABLE_IN_1_52
!PangoFont * pango_font_map_reload_font (PangoFontMap *fontmap, PangoFont *font, double scale, PangoContext *context, const char *variations);
function pango_font_map_reload_font(fontmap, font, scale, context, variations)&
& bind(c)
  import :: c_ptr, c_double, c_char
  implicit none
  type(c_ptr) :: pango_font_map_reload_font
  type(c_ptr), value :: fontmap
  type(c_ptr), value :: font
  real(c_double), value :: scale
  type(c_ptr), value :: context
  character(kind=c_char), dimension(*) :: variations
end function

! PANGO_AVAILABLE_IN_1_56
!gboolean pango_font_map_add_font_file (PangoFontMap *fontmap, const char *filename, GError **error);
function pango_font_map_add_font_file(fontmap, filename, error) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: pango_font_map_add_font_file
  type(c_ptr), value :: fontmap
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-fontset.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_fontset_get_type (void) ;
function pango_fontset_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_fontset_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFont * pango_fontset_get_font (PangoFontset *fontset, guint wc);
function pango_fontset_get_font(fontset, wc) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_fontset_get_font
  type(c_ptr), value :: fontset
  integer(c_int), value :: wc
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontMetrics * pango_fontset_get_metrics (PangoFontset *fontset);
function pango_fontset_get_metrics(fontset) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fontset_get_metrics
  type(c_ptr), value :: fontset
end function

! PANGO_AVAILABLE_IN_1_4
!void pango_fontset_foreach (PangoFontset *fontset, PangoFontsetForeachFunc func, gpointer data);
subroutine pango_fontset_foreach(fontset, func, data) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: fontset
  type(c_funptr), value :: func
  type(c_ptr), value :: data
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-color.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_color_get_type (void) ;
function pango_color_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_color_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoColor *pango_color_copy (const PangoColor *src);
function pango_color_copy(src) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_color_copy
  type(c_ptr), value :: src
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_color_free (PangoColor *color);
subroutine pango_color_free(color) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: color
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_color_parse (PangoColor *color, const char *spec);
function pango_color_parse(color, spec) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: pango_color_parse
  type(c_ptr), value :: color
  character(kind=c_char), dimension(*) :: spec
end function

! PANGO_AVAILABLE_IN_1_46
!gboolean pango_color_parse_with_alpha (PangoColor *color, guint16 *alpha, const char *spec);
function pango_color_parse_with_alpha(color, alpha, spec) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: pango_color_parse_with_alpha
  type(c_ptr), value :: color
  type(c_ptr), value :: alpha
  character(kind=c_char), dimension(*) :: spec
end function

! PANGO_AVAILABLE_IN_1_16
!char *pango_color_to_string (const PangoColor *color);
function pango_color_to_string(color) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_color_to_string
  type(c_ptr), value :: color
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pangocairo.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_10
!GType pango_cairo_font_map_get_type (void) ;
function pango_cairo_font_map_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_cairo_font_map_get_type
end function

! PANGO_AVAILABLE_IN_1_10
!PangoFontMap *pango_cairo_font_map_new (void);
function pango_cairo_font_map_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_cairo_font_map_new
end function

! PANGO_AVAILABLE_IN_1_18
!PangoFontMap *pango_cairo_font_map_new_for_font_type (cairo_font_type_t fonttype);
function pango_cairo_font_map_new_for_font_type(fonttype) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_cairo_font_map_new_for_font_type
  integer(c_int), value :: fonttype
end function

! PANGO_AVAILABLE_IN_1_10
!PangoFontMap *pango_cairo_font_map_get_default (void);
function pango_cairo_font_map_get_default() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_cairo_font_map_get_default
end function

! PANGO_AVAILABLE_IN_1_22
!void pango_cairo_font_map_set_default (PangoCairoFontMap *fontmap);
subroutine pango_cairo_font_map_set_default(fontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fontmap
end subroutine

! PANGO_AVAILABLE_IN_1_18
!cairo_font_type_t pango_cairo_font_map_get_font_type (PangoCairoFontMap *fontmap);
function pango_cairo_font_map_get_font_type(fontmap) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_cairo_font_map_get_font_type
  type(c_ptr), value :: fontmap
end function

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_font_map_set_resolution (PangoCairoFontMap *fontmap, double dpi);
subroutine pango_cairo_font_map_set_resolution(fontmap, dpi) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: fontmap
  real(c_double), value :: dpi
end subroutine

! PANGO_AVAILABLE_IN_1_10
!double pango_cairo_font_map_get_resolution (PangoCairoFontMap *fontmap);
function pango_cairo_font_map_get_resolution(fontmap) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: pango_cairo_font_map_get_resolution
  type(c_ptr), value :: fontmap
end function

! PANGO_DEPRECATED_IN_1_22_FOR(pango_font_map_create_context)
!PangoContext *pango_cairo_font_map_create_context (PangoCairoFontMap *fontmap);
function pango_cairo_font_map_create_context(fontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_cairo_font_map_create_context
  type(c_ptr), value :: fontmap
end function

! PANGO_AVAILABLE_IN_1_18
!GType pango_cairo_font_get_type (void) ;
function pango_cairo_font_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_cairo_font_get_type
end function

! PANGO_AVAILABLE_IN_1_18
!cairo_scaled_font_t *pango_cairo_font_get_scaled_font (PangoCairoFont *font);
function pango_cairo_font_get_scaled_font(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_cairo_font_get_scaled_font
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_update_context (cairo_t *cr, PangoContext *context);
subroutine pango_cairo_update_context(cr, context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: context
end subroutine

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_context_set_font_options (PangoContext *context, const cairo_font_options_t *options);
subroutine pango_cairo_context_set_font_options(context, options) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: options
end subroutine

! PANGO_AVAILABLE_IN_1_10
!const cairo_font_options_t *pango_cairo_context_get_font_options (PangoContext *context);
function pango_cairo_context_get_font_options(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_cairo_context_get_font_options
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_context_set_resolution (PangoContext *context, double dpi);
subroutine pango_cairo_context_set_resolution(context, dpi) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: context
  real(c_double), value :: dpi
end subroutine

! PANGO_AVAILABLE_IN_1_10
!double pango_cairo_context_get_resolution (PangoContext *context);
function pango_cairo_context_get_resolution(context) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: pango_cairo_context_get_resolution
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_1_18
!void pango_cairo_context_set_shape_renderer (PangoContext *context, PangoCairoShapeRendererFunc func, gpointer data, GDestroyNotify dnotify);
subroutine pango_cairo_context_set_shape_renderer(context, func, data, dnotify)&
& bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: context
  type(c_funptr), value :: func
  type(c_ptr), value :: data
  type(c_funptr), value :: dnotify
end subroutine

! PANGO_AVAILABLE_IN_1_18
!PangoCairoShapeRendererFunc pango_cairo_context_get_shape_renderer (PangoContext *context, gpointer *data);
function pango_cairo_context_get_shape_renderer(context, data) bind(c)
  import :: c_funptr, c_ptr
  implicit none
  type(c_funptr) :: pango_cairo_context_get_shape_renderer
  type(c_ptr), value :: context
  type(c_ptr), value :: data
end function

! PANGO_AVAILABLE_IN_1_22
!PangoContext *pango_cairo_create_context (cairo_t *cr);
function pango_cairo_create_context(cr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_cairo_create_context
  type(c_ptr), value :: cr
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLayout *pango_cairo_create_layout (cairo_t *cr);
function pango_cairo_create_layout(cr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_cairo_create_layout
  type(c_ptr), value :: cr
end function

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_update_layout (cairo_t *cr, PangoLayout *layout);
subroutine pango_cairo_update_layout(cr, layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: layout
end subroutine

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_show_glyph_string (cairo_t *cr, PangoFont *font, PangoGlyphString *glyphs);
subroutine pango_cairo_show_glyph_string(cr, font, glyphs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
end subroutine

! PANGO_AVAILABLE_IN_1_22
!void pango_cairo_show_glyph_item (cairo_t *cr, const char *text, PangoGlyphItem *glyph_item);
subroutine pango_cairo_show_glyph_item(cr, text, glyph_item) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: cr
  character(kind=c_char), dimension(*) :: text
  type(c_ptr), value :: glyph_item
end subroutine

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_show_layout_line (cairo_t *cr, PangoLayoutLine *line);
subroutine pango_cairo_show_layout_line(cr, line) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: line
end subroutine

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_show_layout (cairo_t *cr, PangoLayout *layout);
subroutine pango_cairo_show_layout(cr, layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: layout
end subroutine

! PANGO_AVAILABLE_IN_1_14
!void pango_cairo_show_error_underline (cairo_t *cr, double x, double y, double width, double height);
subroutine pango_cairo_show_error_underline(cr, x, y, width, height) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: cr
  real(c_double), value :: x
  real(c_double), value :: y
  real(c_double), value :: width
  real(c_double), value :: height
end subroutine

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_glyph_string_path (cairo_t *cr, PangoFont *font, PangoGlyphString *glyphs);
subroutine pango_cairo_glyph_string_path(cr, font, glyphs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
end subroutine

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_layout_line_path (cairo_t *cr, PangoLayoutLine *line);
subroutine pango_cairo_layout_line_path(cr, line) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: line
end subroutine

! PANGO_AVAILABLE_IN_1_10
!void pango_cairo_layout_path (cairo_t *cr, PangoLayout *layout);
subroutine pango_cairo_layout_path(cr, layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: layout
end subroutine

! PANGO_AVAILABLE_IN_1_14
!void pango_cairo_error_underline_path (cairo_t *cr, double x, double y, double width, double height);
subroutine pango_cairo_error_underline_path(cr, x, y, width, height) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: cr
  real(c_double), value :: x
  real(c_double), value :: y
  real(c_double), value :: width
  real(c_double), value :: height
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-direction.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-fontset-simple.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_fontset_simple_get_type (void) ;
function pango_fontset_simple_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_fontset_simple_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontsetSimple * pango_fontset_simple_new (PangoLanguage *language);
function pango_fontset_simple_new(language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fontset_simple_new
  type(c_ptr), value :: language
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_fontset_simple_append (PangoFontsetSimple *fontset, PangoFont *font);
subroutine pango_fontset_simple_append(fontset, font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fontset
  type(c_ptr), value :: font
end subroutine

! PANGO_AVAILABLE_IN_ALL
!int pango_fontset_simple_size (PangoFontsetSimple *fontset);
function pango_fontset_simple_size(fontset) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_fontset_simple_size
  type(c_ptr), value :: fontset
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-bidi-type.h
!--------------------------------------------------
! PANGO_DEPRECATED_IN_1_44
!PangoBidiType pango_bidi_type_for_unichar (gunichar ch) ;
function pango_bidi_type_for_unichar(ch) bind(c)
  import :: c_int, c_int32_t
  implicit none
  integer(c_int) :: pango_bidi_type_for_unichar
  integer(c_int32_t), value :: ch
end function

! PANGO_DEPRECATED_IN_1_44
!PangoDirection pango_unichar_direction (gunichar ch) ;
function pango_unichar_direction(ch) bind(c)
  import :: c_int, c_int32_t
  implicit none
  integer(c_int) :: pango_unichar_direction
  integer(c_int32_t), value :: ch
end function

! PANGO_DEPRECATED_IN_1_44
!PangoDirection pango_find_base_dir (const gchar *text, gint length);
function pango_find_base_dir(text, length) bind(c)
  import :: c_int, c_char
  implicit none
  integer(c_int) :: pango_find_base_dir
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
end function

! PANGO_DEPRECATED_IN_1_30_FOR(g_unichar_get_mirror_char)
!gboolean pango_get_mirror_char (gunichar ch, gunichar *mirrored_ch);
function pango_get_mirror_char(ch, mirrored_ch) bind(c)
  import :: c_int, c_int32_t, c_char
  implicit none
  integer(c_int) :: pango_get_mirror_char
  integer(c_int32_t), value :: ch
  character(kind=c_char), dimension(*) :: mirrored_ch
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-glyph.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_glyph_string_get_type (void) ;
function pango_glyph_string_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_glyph_string_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoGlyphString * pango_glyph_string_new (void);
function pango_glyph_string_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_glyph_string_new
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_glyph_string_set_size (PangoGlyphString *string, int new_len);
subroutine pango_glyph_string_set_size(string, new_len) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: string
  integer(c_int), value :: new_len
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoGlyphString * pango_glyph_string_copy (PangoGlyphString *string);
function pango_glyph_string_copy(string) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_glyph_string_copy
  type(c_ptr), value :: string
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_glyph_string_free (PangoGlyphString *string);
subroutine pango_glyph_string_free(string) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: string
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_glyph_string_extents (PangoGlyphString *glyphs, PangoFont *font, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_glyph_string_extents(glyphs, font, ink_rect, logical_rect)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: glyphs
  type(c_ptr), value :: font
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_1_14
!int pango_glyph_string_get_width (PangoGlyphString *glyphs);
function pango_glyph_string_get_width(glyphs) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_glyph_string_get_width
  type(c_ptr), value :: glyphs
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_glyph_string_extents_range (PangoGlyphString *glyphs, int start, int end, PangoFont *font, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_glyph_string_extents_range(glyphs, start, end, font, ink_rect,&
& logical_rect) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: glyphs
  integer(c_int), value :: start
  integer(c_int), value :: end
  type(c_ptr), value :: font
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_glyph_string_get_logical_widths (PangoGlyphString *glyphs, const char *text, int length, int embedding_level, int *logical_widths);
subroutine pango_glyph_string_get_logical_widths(glyphs, text, length,&
& embedding_level, logical_widths) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: glyphs
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  integer(c_int), value :: embedding_level
  type(c_ptr), value :: logical_widths
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_glyph_string_index_to_x (PangoGlyphString *glyphs, const char *text, int length, PangoAnalysis *analysis, int index_, gboolean trailing, int *x_pos);
subroutine pango_glyph_string_index_to_x(glyphs, text, length, analysis,&
& index_, trailing, x_pos) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: glyphs
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: analysis
  integer(c_int), value :: index_
  integer(c_int), value :: trailing
  type(c_ptr), value :: x_pos
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_glyph_string_x_to_index (PangoGlyphString *glyphs, const char *text, int length, PangoAnalysis *analysis, int x_pos, int *index_, int *trailing);
subroutine pango_glyph_string_x_to_index(glyphs, text, length, analysis, x_pos,&
& index_, trailing) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: glyphs
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: analysis
  integer(c_int), value :: x_pos
  type(c_ptr), value :: index_
  type(c_ptr), value :: trailing
end subroutine

! PANGO_AVAILABLE_IN_1_50
!void pango_glyph_string_index_to_x_full (PangoGlyphString *glyphs, const char *text, int length, PangoAnalysis *analysis, PangoLogAttr *attrs, int index_, gboolean trailing, int *x_pos);
subroutine pango_glyph_string_index_to_x_full(glyphs, text, length, analysis,&
& attrs, index_, trailing, x_pos) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: glyphs
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: analysis
  type(c_ptr), value :: attrs
  integer(c_int), value :: index_
  integer(c_int), value :: trailing
  type(c_ptr), value :: x_pos
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_shape (const char *text, int length, const PangoAnalysis *analysis, PangoGlyphString *glyphs);
subroutine pango_shape(text, length, analysis, glyphs) bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: analysis
  type(c_ptr), value :: glyphs
end subroutine

! PANGO_AVAILABLE_IN_1_32
!void pango_shape_full (const char *item_text, int item_length, const char *paragraph_text, int paragraph_length, const PangoAnalysis *analysis, PangoGlyphString *glyphs);
subroutine pango_shape_full(item_text, item_length, paragraph_text,&
& paragraph_length, analysis, glyphs) bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: item_text
  integer(c_int), value :: item_length
  character(kind=c_char), dimension(*) :: paragraph_text
  integer(c_int), value :: paragraph_length
  type(c_ptr), value :: analysis
  type(c_ptr), value :: glyphs
end subroutine

! PANGO_AVAILABLE_IN_1_44
!void pango_shape_with_flags (const char *item_text, int item_length, const char *paragraph_text, int paragraph_length, const PangoAnalysis *analysis, PangoGlyphString *glyphs, PangoShapeFlags flags);
subroutine pango_shape_with_flags(item_text, item_length, paragraph_text,&
& paragraph_length, analysis, glyphs, flags) bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: item_text
  integer(c_int), value :: item_length
  character(kind=c_char), dimension(*) :: paragraph_text
  integer(c_int), value :: paragraph_length
  type(c_ptr), value :: analysis
  type(c_ptr), value :: glyphs
  integer(c_int), value :: flags
end subroutine

! PANGO_AVAILABLE_IN_1_50
!void pango_shape_item (PangoItem *item, const char *paragraph_text, int paragraph_length, PangoLogAttr *log_attrs, PangoGlyphString *glyphs, PangoShapeFlags flags);
subroutine pango_shape_item(item, paragraph_text, paragraph_length, log_attrs,&
& glyphs, flags) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: item
  character(kind=c_char), dimension(*) :: paragraph_text
  integer(c_int), value :: paragraph_length
  type(c_ptr), value :: log_attrs
  type(c_ptr), value :: glyphs
  integer(c_int), value :: flags
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-script.h
!--------------------------------------------------
! PANGO_DEPRECATED_IN_1_44_FOR(g_unichar_get_script)
!PangoScript pango_script_for_unichar (gunichar ch) ;
function pango_script_for_unichar(ch) bind(c)
  import :: c_int, c_int32_t
  implicit none
  integer(c_int) :: pango_script_for_unichar
  integer(c_int32_t), value :: ch
end function

! PANGO_AVAILABLE_IN_1_44
!GType pango_script_iter_get_type (void) ;
function pango_script_iter_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_script_iter_get_type
end function

! PANGO_AVAILABLE_IN_1_4
!PangoScriptIter *pango_script_iter_new (const char *text, int length);
function pango_script_iter_new(text, length) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: pango_script_iter_new
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
end function

! PANGO_AVAILABLE_IN_1_4
!void pango_script_iter_get_range (PangoScriptIter *iter, const char **start, const char **end, PangoScript *script);
subroutine pango_script_iter_get_range(iter, start, end, script) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
  type(c_ptr), dimension(*) :: start
  type(c_ptr), dimension(*) :: end
  type(c_ptr), value :: script
end subroutine

! PANGO_AVAILABLE_IN_1_4
!gboolean pango_script_iter_next (PangoScriptIter *iter);
function pango_script_iter_next(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_script_iter_next
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_1_4
!void pango_script_iter_free (PangoScriptIter *iter);
subroutine pango_script_iter_free(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
end subroutine

! PANGO_AVAILABLE_IN_1_4
!PangoLanguage *pango_script_get_sample_language (PangoScript script) ;
function pango_script_get_sample_language(script) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_script_get_sample_language
  integer(c_int), value :: script
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-coverage.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_coverage_get_type (void) ;
function pango_coverage_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_coverage_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoCoverage * pango_coverage_new (void);
function pango_coverage_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_coverage_new
end function

! PANGO_DEPRECATED_IN_1_52_FOR(g_object_ref)
!PangoCoverage * pango_coverage_ref (PangoCoverage *coverage);
function pango_coverage_ref(coverage) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_coverage_ref
  type(c_ptr), value :: coverage
end function

! PANGO_DEPRECATED_IN_1_52_FOR(g_object_unref)
!void pango_coverage_unref (PangoCoverage *coverage);
subroutine pango_coverage_unref(coverage) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: coverage
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoCoverage * pango_coverage_copy (PangoCoverage *coverage);
function pango_coverage_copy(coverage) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_coverage_copy
  type(c_ptr), value :: coverage
end function

! PANGO_AVAILABLE_IN_ALL
!PangoCoverageLevel pango_coverage_get (PangoCoverage *coverage, int index_);
function pango_coverage_get(coverage, index_) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_coverage_get
  type(c_ptr), value :: coverage
  integer(c_int), value :: index_
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_coverage_set (PangoCoverage *coverage, int index_, PangoCoverageLevel level);
subroutine pango_coverage_set(coverage, index_, level) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: coverage
  integer(c_int), value :: index_
  integer(c_int), value :: level
end subroutine

! PANGO_DEPRECATED_IN_1_44
!void pango_coverage_max (PangoCoverage *coverage, PangoCoverage *other);
subroutine pango_coverage_max(coverage, other) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: coverage
  type(c_ptr), value :: other
end subroutine

! PANGO_DEPRECATED_IN_1_44
!void pango_coverage_to_bytes (PangoCoverage *coverage, guchar **bytes, int *n_bytes);
subroutine pango_coverage_to_bytes(coverage, bytes, n_bytes) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: coverage
  type(c_ptr), dimension(*) :: bytes
  type(c_ptr), value :: n_bytes
end subroutine

! PANGO_DEPRECATED_IN_1_44
!PangoCoverage *pango_coverage_from_bytes (guchar *bytes, int n_bytes);
function pango_coverage_from_bytes(bytes, n_bytes) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: pango_coverage_from_bytes
  character(kind=c_char), dimension(*) :: bytes
  integer(c_int), value :: n_bytes
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-font.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_font_description_get_type (void) ;
function pango_font_description_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_font_description_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontDescription *pango_font_description_new (void);
function pango_font_description_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_description_new
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontDescription *pango_font_description_copy (const PangoFontDescription *desc);
function pango_font_description_copy(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_description_copy
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontDescription *pango_font_description_copy_static (const PangoFontDescription *desc);
function pango_font_description_copy_static(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_description_copy_static
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!guint pango_font_description_hash (const PangoFontDescription *desc) ;
function pango_font_description_hash(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_hash
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_font_description_equal (const PangoFontDescription *desc1, const PangoFontDescription *desc2) ;
function pango_font_description_equal(desc1, desc2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_equal
  type(c_ptr), value :: desc1
  type(c_ptr), value :: desc2
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_free (PangoFontDescription *desc);
subroutine pango_font_description_free(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: desc
end subroutine

! PANGO_DEPRECATED_IN_1_56
!void pango_font_descriptions_free (PangoFontDescription **descs, int n_descs);
subroutine pango_font_descriptions_free(descs, n_descs) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: descs
  integer(c_int), value :: n_descs
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_set_family (PangoFontDescription *desc, const char *family);
subroutine pango_font_description_set_family(desc, family) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: desc
  character(kind=c_char), dimension(*) :: family
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_set_family_static (PangoFontDescription *desc, const char *family);
subroutine pango_font_description_set_family_static(desc, family) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: desc
  character(kind=c_char), dimension(*) :: family
end subroutine

! PANGO_AVAILABLE_IN_ALL
!const char *pango_font_description_get_family (const PangoFontDescription *desc) ;
function pango_font_description_get_family(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_description_get_family
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_set_style (PangoFontDescription *desc, PangoStyle style);
subroutine pango_font_description_set_style(desc, style) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  integer(c_int), value :: style
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoStyle pango_font_description_get_style (const PangoFontDescription *desc) ;
function pango_font_description_get_style(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_get_style
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_set_variant (PangoFontDescription *desc, PangoVariant variant);
subroutine pango_font_description_set_variant(desc, variant) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  integer(c_int), value :: variant
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoVariant pango_font_description_get_variant (const PangoFontDescription *desc) ;
function pango_font_description_get_variant(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_get_variant
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_set_weight (PangoFontDescription *desc, PangoWeight weight);
subroutine pango_font_description_set_weight(desc, weight) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  integer(c_int), value :: weight
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoWeight pango_font_description_get_weight (const PangoFontDescription *desc) ;
function pango_font_description_get_weight(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_get_weight
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_set_stretch (PangoFontDescription *desc, PangoStretch stretch);
subroutine pango_font_description_set_stretch(desc, stretch) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  integer(c_int), value :: stretch
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoStretch pango_font_description_get_stretch (const PangoFontDescription *desc) ;
function pango_font_description_get_stretch(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_get_stretch
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_set_size (PangoFontDescription *desc, gint size);
subroutine pango_font_description_set_size(desc, size) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  integer(c_int), value :: size
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gint pango_font_description_get_size (const PangoFontDescription *desc) ;
function pango_font_description_get_size(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_get_size
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_1_8
!void pango_font_description_set_absolute_size (PangoFontDescription *desc, double size);
subroutine pango_font_description_set_absolute_size(desc, size) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: desc
  real(c_double), value :: size
end subroutine

! PANGO_AVAILABLE_IN_1_8
!gboolean pango_font_description_get_size_is_absolute (const PangoFontDescription *desc) ;
function pango_font_description_get_size_is_absolute(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_get_size_is_absolute
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_1_16
!void pango_font_description_set_gravity (PangoFontDescription *desc, PangoGravity gravity);
subroutine pango_font_description_set_gravity(desc, gravity) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  integer(c_int), value :: gravity
end subroutine

! PANGO_AVAILABLE_IN_1_16
!PangoGravity pango_font_description_get_gravity (const PangoFontDescription *desc) ;
function pango_font_description_get_gravity(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_get_gravity
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_1_42
!void pango_font_description_set_variations_static (PangoFontDescription *desc, const char *variations);
subroutine pango_font_description_set_variations_static(desc, variations)&
& bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: desc
  character(kind=c_char), dimension(*) :: variations
end subroutine

! PANGO_AVAILABLE_IN_1_42
!void pango_font_description_set_variations (PangoFontDescription *desc, const char *variations);
subroutine pango_font_description_set_variations(desc, variations) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: desc
  character(kind=c_char), dimension(*) :: variations
end subroutine

! PANGO_AVAILABLE_IN_1_42
!const char *pango_font_description_get_variations (const PangoFontDescription *desc) ;
function pango_font_description_get_variations(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_description_get_variations
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_1_56
!void pango_font_description_set_features_static (PangoFontDescription *desc, const char *features);
subroutine pango_font_description_set_features_static(desc, features) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: desc
  character(kind=c_char), dimension(*) :: features
end subroutine

! PANGO_AVAILABLE_IN_1_56
!void pango_font_description_set_features (PangoFontDescription *desc, const char *features);
subroutine pango_font_description_set_features(desc, features) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: desc
  character(kind=c_char), dimension(*) :: features
end subroutine

! PANGO_AVAILABLE_IN_1_42
!const char *pango_font_description_get_features (const PangoFontDescription *desc) ;
function pango_font_description_get_features(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_description_get_features
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontMask pango_font_description_get_set_fields (const PangoFontDescription *desc) ;
function pango_font_description_get_set_fields(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_get_set_fields
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_unset_fields (PangoFontDescription *desc, PangoFontMask to_unset);
subroutine pango_font_description_unset_fields(desc, to_unset) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  integer(c_int), value :: to_unset
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_merge (PangoFontDescription *desc, const PangoFontDescription *desc_to_merge, gboolean replace_existing);
subroutine pango_font_description_merge(desc, desc_to_merge, replace_existing)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  type(c_ptr), value :: desc_to_merge
  integer(c_int), value :: replace_existing
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_font_description_merge_static (PangoFontDescription *desc, const PangoFontDescription *desc_to_merge, gboolean replace_existing);
subroutine pango_font_description_merge_static(desc, desc_to_merge,&
& replace_existing) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: desc
  type(c_ptr), value :: desc_to_merge
  integer(c_int), value :: replace_existing
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_font_description_better_match (const PangoFontDescription *desc, const PangoFontDescription *old_match, const PangoFontDescription *new_match) ;
function pango_font_description_better_match(desc, old_match, new_match)&
& bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_description_better_match
  type(c_ptr), value :: desc
  type(c_ptr), value :: old_match
  type(c_ptr), value :: new_match
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontDescription *pango_font_description_from_string (const char *str);
function pango_font_description_from_string(str) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_font_description_from_string
  character(kind=c_char), dimension(*) :: str
end function

! PANGO_AVAILABLE_IN_ALL
!char * pango_font_description_to_string (const PangoFontDescription *desc);
function pango_font_description_to_string(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_description_to_string
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!char * pango_font_description_to_filename (const PangoFontDescription *desc);
function pango_font_description_to_filename(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_description_to_filename
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_font_metrics_get_type (void) ;
function pango_font_metrics_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_font_metrics_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontMetrics *pango_font_metrics_ref (PangoFontMetrics *metrics);
function pango_font_metrics_ref(metrics) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_metrics_ref
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_metrics_unref (PangoFontMetrics *metrics);
subroutine pango_font_metrics_unref(metrics) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: metrics
end subroutine

! PANGO_AVAILABLE_IN_ALL
!int pango_font_metrics_get_ascent (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_ascent(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_ascent
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_ALL
!int pango_font_metrics_get_descent (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_descent(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_descent
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_1_44
!int pango_font_metrics_get_height (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_height(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_height
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_ALL
!int pango_font_metrics_get_approximate_char_width (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_approximate_char_width(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_approximate_char_width
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_ALL
!int pango_font_metrics_get_approximate_digit_width (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_approximate_digit_width(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_approximate_digit_width
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_1_6
!int pango_font_metrics_get_underline_position (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_underline_position(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_underline_position
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_1_6
!int pango_font_metrics_get_underline_thickness (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_underline_thickness(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_underline_thickness
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_1_6
!int pango_font_metrics_get_strikethrough_position (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_strikethrough_position(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_strikethrough_position
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_1_6
!int pango_font_metrics_get_strikethrough_thickness (PangoFontMetrics *metrics) ;
function pango_font_metrics_get_strikethrough_thickness(metrics) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_metrics_get_strikethrough_thickness
  type(c_ptr), value :: metrics
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_font_family_get_type (void) ;
function pango_font_family_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_font_family_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_family_list_faces (PangoFontFamily *family, PangoFontFace ***faces, int *n_faces);
subroutine pango_font_family_list_faces(family, faces, n_faces) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: family
  type(c_ptr), value :: faces
  type(c_ptr), value :: n_faces
end subroutine

! PANGO_AVAILABLE_IN_ALL
!const char *pango_font_family_get_name (PangoFontFamily *family) ;
function pango_font_family_get_name(family) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_family_get_name
  type(c_ptr), value :: family
end function

! PANGO_AVAILABLE_IN_1_4
!gboolean pango_font_family_is_monospace (PangoFontFamily *family) ;
function pango_font_family_is_monospace(family) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_family_is_monospace
  type(c_ptr), value :: family
end function

! PANGO_AVAILABLE_IN_1_44
!gboolean pango_font_family_is_variable (PangoFontFamily *family) ;
function pango_font_family_is_variable(family) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_family_is_variable
  type(c_ptr), value :: family
end function

! PANGO_AVAILABLE_IN_1_46
!PangoFontFace *pango_font_family_get_face (PangoFontFamily *family, const char *name);
function pango_font_family_get_face(family, name) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_font_family_get_face
  type(c_ptr), value :: family
  character(kind=c_char), dimension(*) :: name
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_font_face_get_type (void) ;
function pango_font_face_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_font_face_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontDescription *pango_font_face_describe (PangoFontFace *face);
function pango_font_face_describe(face) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_face_describe
  type(c_ptr), value :: face
end function

! PANGO_AVAILABLE_IN_ALL
!const char *pango_font_face_get_face_name (PangoFontFace *face) ;
function pango_font_face_get_face_name(face) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_face_get_face_name
  type(c_ptr), value :: face
end function

! PANGO_AVAILABLE_IN_1_4
!void pango_font_face_list_sizes (PangoFontFace *face, int **sizes, int *n_sizes);
subroutine pango_font_face_list_sizes(face, sizes, n_sizes) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: face
  type(c_ptr), value :: sizes
  type(c_ptr), value :: n_sizes
end subroutine

! PANGO_AVAILABLE_IN_1_18
!gboolean pango_font_face_is_synthesized (PangoFontFace *face) ;
function pango_font_face_is_synthesized(face) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_font_face_is_synthesized
  type(c_ptr), value :: face
end function

! PANGO_AVAILABLE_IN_1_46
!PangoFontFamily * pango_font_face_get_family (PangoFontFace *face);
function pango_font_face_get_family(face) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_face_get_family
  type(c_ptr), value :: face
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_font_get_type (void) ;
function pango_font_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_font_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontDescription *pango_font_describe (PangoFont *font);
function pango_font_describe(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_describe
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_1_14
!PangoFontDescription *pango_font_describe_with_absolute_size (PangoFont *font);
function pango_font_describe_with_absolute_size(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_describe_with_absolute_size
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_ALL
!PangoCoverage * pango_font_get_coverage (PangoFont *font, PangoLanguage *language);
function pango_font_get_coverage(font, language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_get_coverage
  type(c_ptr), value :: font
  type(c_ptr), value :: language
end function

! PANGO_DEPRECATED_IN_1_44
!PangoEngineShape * pango_font_find_shaper (PangoFont *font, PangoLanguage *language, guint32 ch);
function pango_font_find_shaper(font, language, ch) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr) :: pango_font_find_shaper
  type(c_ptr), value :: font
  type(c_ptr), value :: language
  integer(c_int32_t), value :: ch
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontMetrics * pango_font_get_metrics (PangoFont *font, PangoLanguage *language);
function pango_font_get_metrics(font, language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_get_metrics
  type(c_ptr), value :: font
  type(c_ptr), value :: language
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_font_get_glyph_extents (PangoFont *font, PangoGlyph glyph, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_font_get_glyph_extents(font, glyph, ink_rect, logical_rect)&
& bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr), value :: font
  integer(c_int32_t), value :: glyph
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_1_10
!PangoFontMap *pango_font_get_font_map (PangoFont *font);
function pango_font_get_font_map(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_get_font_map
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_1_46
!PangoFontFace * pango_font_get_face (PangoFont *font);
function pango_font_get_face(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_get_face
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_1_44
!gboolean pango_font_has_char (PangoFont *font, gunichar wc);
function pango_font_has_char(font, wc) bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_font_has_char
  type(c_ptr), value :: font
  integer(c_int32_t), value :: wc
end function

! PANGO_AVAILABLE_IN_1_44
!void pango_font_get_features (PangoFont *font, hb_feature_t *features, guint len, guint *num_features);
subroutine pango_font_get_features(font, features, len, num_features) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: font
  type(c_ptr), value :: features
  integer(c_int), value :: len
  type(c_ptr), value :: num_features
end subroutine

! PANGO_AVAILABLE_IN_1_44
!hb_font_t * pango_font_get_hb_font (PangoFont *font);
function pango_font_get_hb_font(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_get_hb_font
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_1_50
!PangoLanguage ** pango_font_get_languages (PangoFont *font);
function pango_font_get_languages(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_get_languages
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_1_50
!GBytes * pango_font_serialize (PangoFont *font);
function pango_font_serialize(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_serialize
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_1_50
!PangoFont * pango_font_deserialize (PangoContext *context, GBytes *bytes, GError **error);
function pango_font_deserialize(context, bytes, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_font_deserialize
  type(c_ptr), value :: context
  type(c_ptr), value :: bytes
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-item.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_item_get_type (void) ;
function pango_item_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_item_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoItem * pango_item_new (void);
function pango_item_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_item_new
end function

! PANGO_AVAILABLE_IN_ALL
!PangoItem * pango_item_copy (PangoItem *item);
function pango_item_copy(item) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_item_copy
  type(c_ptr), value :: item
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_item_free (PangoItem *item);
subroutine pango_item_free(item) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: item
end subroutine

! PANGO_AVAILABLE_IN_1_54
!int pango_item_get_char_offset (PangoItem *item);
function pango_item_get_char_offset(item) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_item_get_char_offset
  type(c_ptr), value :: item
end function

! PANGO_AVAILABLE_IN_ALL
!PangoItem * pango_item_split (PangoItem *orig, int split_index, int split_offset);
function pango_item_split(orig, split_index, split_offset) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_item_split
  type(c_ptr), value :: orig
  integer(c_int), value :: split_index
  integer(c_int), value :: split_offset
end function

! PANGO_AVAILABLE_IN_1_44
!void pango_item_apply_attrs (PangoItem *item, PangoAttrIterator *iter);
subroutine pango_item_apply_attrs(item, iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: item
  type(c_ptr), value :: iter
end subroutine

! PANGO_AVAILABLE_IN_ALL
!GList * pango_reorder_items (GList *items);
function pango_reorder_items(items) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_reorder_items
  type(c_ptr), value :: items
end function

! PANGO_AVAILABLE_IN_ALL
!GList * pango_itemize (PangoContext *context, const char *text, int start_index, int length, PangoAttrList *attrs, PangoAttrIterator *cached_iter);
function pango_itemize(context, text, start_index, length, attrs, cached_iter)&
& bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: pango_itemize
  type(c_ptr), value :: context
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: start_index
  integer(c_int), value :: length
  type(c_ptr), value :: attrs
  type(c_ptr), value :: cached_iter
end function

! PANGO_AVAILABLE_IN_1_4
!GList * pango_itemize_with_base_dir (PangoContext *context, PangoDirection base_dir, const char *text, int start_index, int length, PangoAttrList *attrs, PangoAttrIterator *cached_iter);
function pango_itemize_with_base_dir(context, base_dir, text, start_index,&
& length, attrs, cached_iter) bind(c)
  import :: c_ptr, c_int, c_char
  implicit none
  type(c_ptr) :: pango_itemize_with_base_dir
  type(c_ptr), value :: context
  integer(c_int), value :: base_dir
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: start_index
  integer(c_int), value :: length
  type(c_ptr), value :: attrs
  type(c_ptr), value :: cached_iter
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pangofc-fontmap.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_fc_font_map_get_type (void) ;
function pango_fc_font_map_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_fc_font_map_get_type
end function

! PANGO_AVAILABLE_IN_1_4
!void pango_fc_font_map_cache_clear (PangoFcFontMap *fcfontmap);
subroutine pango_fc_font_map_cache_clear(fcfontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fcfontmap
end subroutine

! 
!void pango_fc_font_map_config_changed (PangoFcFontMap *fcfontmap);
subroutine pango_fc_font_map_config_changed(fcfontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fcfontmap
end subroutine

! 
!void pango_fc_font_map_set_config (PangoFcFontMap *fcfontmap, FcConfig *fcconfig);
subroutine pango_fc_font_map_set_config(fcfontmap, fcconfig) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fcfontmap
  type(c_ptr), value :: fcconfig
end subroutine

! 
!FcConfig * pango_fc_font_map_get_config (PangoFcFontMap *fcfontmap);
function pango_fc_font_map_get_config(fcfontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fc_font_map_get_config
  type(c_ptr), value :: fcfontmap
end function

! PANGO_AVAILABLE_IN_1_6
!void pango_fc_font_map_add_decoder_find_func (PangoFcFontMap *fcfontmap, PangoFcDecoderFindFunc findfunc, gpointer user_data, GDestroyNotify dnotify);
subroutine pango_fc_font_map_add_decoder_find_func(fcfontmap, findfunc,&
& user_data, dnotify) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: fcfontmap
  type(c_funptr), value :: findfunc
  type(c_ptr), value :: user_data
  type(c_funptr), value :: dnotify
end subroutine

! PANGO_AVAILABLE_IN_1_26
!PangoFcDecoder *pango_fc_font_map_find_decoder (PangoFcFontMap *fcfontmap, FcPattern *pattern);
function pango_fc_font_map_find_decoder(fcfontmap, pattern) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fc_font_map_find_decoder
  type(c_ptr), value :: fcfontmap
  type(c_ptr), value :: pattern
end function

! PANGO_AVAILABLE_IN_1_4
!PangoFontDescription *pango_fc_font_description_from_pattern (FcPattern *pattern, gboolean include_size);
function pango_fc_font_description_from_pattern(pattern, include_size) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_fc_font_description_from_pattern
  type(c_ptr), value :: pattern
  integer(c_int), value :: include_size
end function

! PANGO_DEPRECATED_IN_1_22_FOR(pango_font_map_create_context)
!PangoContext * pango_fc_font_map_create_context (PangoFcFontMap *fcfontmap);
function pango_fc_font_map_create_context(fcfontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fc_font_map_create_context
  type(c_ptr), value :: fcfontmap
end function

! PANGO_AVAILABLE_IN_1_4
!void pango_fc_font_map_shutdown (PangoFcFontMap *fcfontmap);
subroutine pango_fc_font_map_shutdown(fcfontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fcfontmap
end subroutine

! PANGO_AVAILABLE_IN_1_44
!hb_face_t * pango_fc_font_map_get_hb_face (PangoFcFontMap *fcfontmap, PangoFcFont *fcfont);
function pango_fc_font_map_get_hb_face(fcfontmap, fcfont) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fc_font_map_get_hb_face
  type(c_ptr), value :: fcfontmap
  type(c_ptr), value :: fcfont
end function

! PANGO_AVAILABLE_IN_1_48
!void pango_fc_font_map_set_default_substitute (PangoFcFontMap *fontmap, PangoFcSubstituteFunc func, gpointer data, GDestroyNotify notify);
subroutine pango_fc_font_map_set_default_substitute(fontmap, func, data,&
& notify) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: fontmap
  type(c_funptr), value :: func
  type(c_ptr), value :: data
  type(c_funptr), value :: notify
end subroutine

! PANGO_AVAILABLE_IN_1_48
!void pango_fc_font_map_substitute_changed (PangoFcFontMap *fontmap);
subroutine pango_fc_font_map_substitute_changed(fontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fontmap
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-types.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_16
!int pango_units_from_double (double d) ;
function pango_units_from_double(d) bind(c)
  import :: c_int, c_double
  implicit none
  integer(c_int) :: pango_units_from_double
  real(c_double), value :: d
end function

! PANGO_AVAILABLE_IN_1_16
!double pango_units_to_double (int i) ;
function pango_units_to_double(i) bind(c)
  import :: c_double, c_int
  implicit none
  real(c_double) :: pango_units_to_double
  integer(c_int), value :: i
end function

! PANGO_AVAILABLE_IN_1_16
!void pango_extents_to_pixels (PangoRectangle *inclusive, PangoRectangle *nearest);
subroutine pango_extents_to_pixels(inclusive, nearest) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: inclusive
  type(c_ptr), value :: nearest
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-utils.h
!--------------------------------------------------
! PANGO_DEPRECATED
!char ** pango_split_file_list (const char *str);
function pango_split_file_list(str) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_split_file_list
  character(kind=c_char), dimension(*) :: str
end function

! PANGO_DEPRECATED
!char *pango_trim_string (const char *str);
function pango_trim_string(str) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_trim_string
  character(kind=c_char), dimension(*) :: str
end function

! PANGO_DEPRECATED
!gint pango_read_line (FILE *stream, GString *str);
function pango_read_line(stream, str) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_read_line
  type(c_ptr), value :: stream
  type(c_ptr), value :: str
end function

! PANGO_DEPRECATED
!gboolean pango_skip_space (const char **pos);
function pango_skip_space(pos) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_skip_space
  type(c_ptr), dimension(*) :: pos
end function

! PANGO_DEPRECATED
!gboolean pango_scan_word (const char **pos, GString *out);
function pango_scan_word(pos, out) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_scan_word
  type(c_ptr), dimension(*) :: pos
  type(c_ptr), value :: out
end function

! PANGO_DEPRECATED
!gboolean pango_scan_string (const char **pos, GString *out);
function pango_scan_string(pos, out) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_scan_string
  type(c_ptr), dimension(*) :: pos
  type(c_ptr), value :: out
end function

! PANGO_DEPRECATED
!gboolean pango_scan_int (const char **pos, int *out);
function pango_scan_int(pos, out) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_scan_int
  type(c_ptr), dimension(*) :: pos
  type(c_ptr), value :: out
end function

! PANGO_DEPRECATED
!gboolean pango_parse_enum (GType type, const char *str, int *value, gboolean warn, char **possible_values);
function pango_parse_enum(type, str, value, warn, possible_values) bind(c)
  import :: c_int, c_size_t, c_char, c_ptr
  implicit none
  integer(c_int) :: pango_parse_enum
  integer(c_size_t), value :: type
  character(kind=c_char), dimension(*) :: str
  type(c_ptr), value :: value
  integer(c_int), value :: warn
  type(c_ptr), dimension(*) :: possible_values
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_parse_style (const char *str, PangoStyle *style, gboolean warn);
function pango_parse_style(str, style, warn) bind(c)
  import :: c_int, c_char, c_ptr
  implicit none
  integer(c_int) :: pango_parse_style
  character(kind=c_char), dimension(*) :: str
  type(c_ptr), value :: style
  integer(c_int), value :: warn
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_parse_variant (const char *str, PangoVariant *variant, gboolean warn);
function pango_parse_variant(str, variant, warn) bind(c)
  import :: c_int, c_char, c_ptr
  implicit none
  integer(c_int) :: pango_parse_variant
  character(kind=c_char), dimension(*) :: str
  type(c_ptr), value :: variant
  integer(c_int), value :: warn
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_parse_weight (const char *str, PangoWeight *weight, gboolean warn);
function pango_parse_weight(str, weight, warn) bind(c)
  import :: c_int, c_char, c_ptr
  implicit none
  integer(c_int) :: pango_parse_weight
  character(kind=c_char), dimension(*) :: str
  type(c_ptr), value :: weight
  integer(c_int), value :: warn
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_parse_stretch (const char *str, PangoStretch *stretch, gboolean warn);
function pango_parse_stretch(str, stretch, warn) bind(c)
  import :: c_int, c_char, c_ptr
  implicit none
  integer(c_int) :: pango_parse_stretch
  character(kind=c_char), dimension(*) :: str
  type(c_ptr), value :: stretch
  integer(c_int), value :: warn
end function

! PANGO_AVAILABLE_IN_1_12
!void pango_quantize_line_geometry (int *thickness, int *position);
subroutine pango_quantize_line_geometry(thickness, position) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: thickness
  type(c_ptr), value :: position
end subroutine

! PANGO_AVAILABLE_IN_1_4
!guint8 * pango_log2vis_get_embedding_levels (const gchar *text, int length, PangoDirection *pbase_dir);
function pango_log2vis_get_embedding_levels(text, length, pbase_dir) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: pango_log2vis_get_embedding_levels
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: pbase_dir
end function

! PANGO_AVAILABLE_IN_1_10
!gboolean pango_is_zero_width (gunichar ch) ;
function pango_is_zero_width(ch) bind(c)
  import :: c_int, c_int32_t
  implicit none
  integer(c_int) :: pango_is_zero_width
  integer(c_int32_t), value :: ch
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_find_paragraph_boundary (const char *text, int length, int *paragraph_delimiter_index, int *next_paragraph_start);
subroutine pango_find_paragraph_boundary(text, length,&
& paragraph_delimiter_index, next_paragraph_start) bind(c)
  import :: c_char, c_int, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), value :: paragraph_delimiter_index
  type(c_ptr), value :: next_paragraph_start
end subroutine

! PANGO_AVAILABLE_IN_1_16
!int pango_version (void) ;
function pango_version() bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: pango_version
end function

! PANGO_AVAILABLE_IN_1_16
!const char * pango_version_string (void) ;
function pango_version_string() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_version_string
end function

! PANGO_AVAILABLE_IN_1_16
!const char * pango_version_check (int required_major, int required_minor, int required_micro) ;
function pango_version_check(required_major, required_minor, required_micro)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_version_check
  integer(c_int), value :: required_major
  integer(c_int), value :: required_minor
  integer(c_int), value :: required_micro
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pangoft2.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!void pango_ft2_render (FT_Bitmap *bitmap, PangoFont *font, PangoGlyphString *glyphs, gint x, gint y);
subroutine pango_ft2_render(bitmap, font, glyphs, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: bitmap
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_6
!void pango_ft2_render_transformed (FT_Bitmap *bitmap, const PangoMatrix *matrix, PangoFont *font, PangoGlyphString *glyphs, int x, int y);
subroutine pango_ft2_render_transformed(bitmap, matrix, font, glyphs, x, y)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: bitmap
  type(c_ptr), value :: matrix
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_ft2_render_layout_line (FT_Bitmap *bitmap, PangoLayoutLine *line, int x, int y);
subroutine pango_ft2_render_layout_line(bitmap, line, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: bitmap
  type(c_ptr), value :: line
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_6
!void pango_ft2_render_layout_line_subpixel (FT_Bitmap *bitmap, PangoLayoutLine *line, int x, int y);
subroutine pango_ft2_render_layout_line_subpixel(bitmap, line, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: bitmap
  type(c_ptr), value :: line
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_ft2_render_layout (FT_Bitmap *bitmap, PangoLayout *layout, int x, int y);
subroutine pango_ft2_render_layout(bitmap, layout, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: bitmap
  type(c_ptr), value :: layout
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_6
!void pango_ft2_render_layout_subpixel (FT_Bitmap *bitmap, PangoLayout *layout, int x, int y);
subroutine pango_ft2_render_layout_subpixel(bitmap, layout, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: bitmap
  type(c_ptr), value :: layout
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_ALL
!GType pango_ft2_font_map_get_type (void) ;
function pango_ft2_font_map_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_ft2_font_map_get_type
end function

! PANGO_AVAILABLE_IN_1_2
!PangoFontMap *pango_ft2_font_map_new (void);
function pango_ft2_font_map_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ft2_font_map_new
end function

! PANGO_AVAILABLE_IN_1_2
!void pango_ft2_font_map_set_resolution (PangoFT2FontMap *fontmap, double dpi_x, double dpi_y);
subroutine pango_ft2_font_map_set_resolution(fontmap, dpi_x, dpi_y) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: fontmap
  real(c_double), value :: dpi_x
  real(c_double), value :: dpi_y
end subroutine

! PANGO_DEPRECATED_IN_1_48_FOR(pango_fc_font_map_set_default_substitute)
!void pango_ft2_font_map_set_default_substitute (PangoFT2FontMap *fontmap, PangoFT2SubstituteFunc func, gpointer data, GDestroyNotify notify);
subroutine pango_ft2_font_map_set_default_substitute(fontmap, func, data,&
& notify) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: fontmap
  type(c_funptr), value :: func
  type(c_ptr), value :: data
  type(c_funptr), value :: notify
end subroutine

! PANGO_DEPRECATED_IN_1_48_FOR(pango_fc_font_map_substitute_changed)
!void pango_ft2_font_map_substitute_changed (PangoFT2FontMap *fontmap);
subroutine pango_ft2_font_map_substitute_changed(fontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: fontmap
end subroutine

! PANGO_DEPRECATED_IN_1_22_FOR(pango_font_map_create_context)
!PangoContext *pango_ft2_font_map_create_context (PangoFT2FontMap *fontmap);
function pango_ft2_font_map_create_context(fontmap) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ft2_font_map_create_context
  type(c_ptr), value :: fontmap
end function

! PANGO_DEPRECATED_FOR(pango_font_map_create_context)
!PangoContext *pango_ft2_get_context (double dpi_x, double dpi_y);
function pango_ft2_get_context(dpi_x, dpi_y) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr) :: pango_ft2_get_context
  real(c_double), value :: dpi_x
  real(c_double), value :: dpi_y
end function

! PANGO_DEPRECATED_FOR(pango_ft2_font_map_new)
!PangoFontMap *pango_ft2_font_map_for_display (void);
function pango_ft2_font_map_for_display() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ft2_font_map_for_display
end function

! PANGO_DEPRECATED
!void pango_ft2_shutdown_display (void);
subroutine pango_ft2_shutdown_display() bind(c)
  implicit none
end subroutine

! PANGO_DEPRECATED_FOR(PANGO_GET_UNKNOWN_GLYPH)
!PangoGlyph pango_ft2_get_unknown_glyph (PangoFont *font);
function pango_ft2_get_unknown_glyph(font) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: pango_ft2_get_unknown_glyph
  type(c_ptr), value :: font
end function

! PANGO_DEPRECATED_FOR(pango_fc_font_kern_glyphs)
!int pango_ft2_font_get_kerning (PangoFont *font, PangoGlyph left, PangoGlyph right);
function pango_ft2_font_get_kerning(font, left, right) bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_ft2_font_get_kerning
  type(c_ptr), value :: font
  integer(c_int32_t), value :: left
  integer(c_int32_t), value :: right
end function

! PANGO_DEPRECATED_FOR(pango_fc_font_lock_face)
!FT_Face pango_ft2_font_get_face (PangoFont *font);
function pango_ft2_font_get_face(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ft2_font_get_face
  type(c_ptr), value :: font
end function

! PANGO_DEPRECATED_FOR(pango_font_get_coverage)
!PangoCoverage *pango_ft2_font_get_coverage (PangoFont *font, PangoLanguage *language);
function pango_ft2_font_get_coverage(font, language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ft2_font_get_coverage
  type(c_ptr), value :: font
  type(c_ptr), value :: language
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-context.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_context_get_type (void) ;
function pango_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_context_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoContext * pango_context_new (void);
function pango_context_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_context_new
end function

! PANGO_AVAILABLE_IN_1_32
!void pango_context_changed (PangoContext *context);
subroutine pango_context_changed(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_context_set_font_map (PangoContext *context, PangoFontMap *font_map);
subroutine pango_context_set_font_map(context, font_map) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: font_map
end subroutine

! PANGO_AVAILABLE_IN_1_6
!PangoFontMap * pango_context_get_font_map (PangoContext *context);
function pango_context_get_font_map(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_context_get_font_map
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_1_32
!guint pango_context_get_serial (PangoContext *context);
function pango_context_get_serial(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_context_get_serial
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_context_list_families (PangoContext *context, PangoFontFamily ***families, int *n_families);
subroutine pango_context_list_families(context, families, n_families) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: families
  type(c_ptr), value :: n_families
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoFont * pango_context_load_font (PangoContext *context, const PangoFontDescription *desc);
function pango_context_load_font(context, desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_context_load_font
  type(c_ptr), value :: context
  type(c_ptr), value :: desc
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontset * pango_context_load_fontset (PangoContext *context, const PangoFontDescription *desc, PangoLanguage *language);
function pango_context_load_fontset(context, desc, language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_context_load_fontset
  type(c_ptr), value :: context
  type(c_ptr), value :: desc
  type(c_ptr), value :: language
end function

! PANGO_AVAILABLE_IN_ALL
!PangoFontMetrics * pango_context_get_metrics (PangoContext *context, const PangoFontDescription *desc, PangoLanguage *language);
function pango_context_get_metrics(context, desc, language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_context_get_metrics
  type(c_ptr), value :: context
  type(c_ptr), value :: desc
  type(c_ptr), value :: language
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_context_set_font_description (PangoContext *context, const PangoFontDescription *desc);
subroutine pango_context_set_font_description(context, desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: desc
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoFontDescription * pango_context_get_font_description (PangoContext *context);
function pango_context_get_font_description(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_context_get_font_description
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLanguage * pango_context_get_language (PangoContext *context);
function pango_context_get_language(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_context_get_language
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_context_set_language (PangoContext *context, PangoLanguage *language);
subroutine pango_context_set_language(context, language) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: language
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_context_set_base_dir (PangoContext *context, PangoDirection direction);
subroutine pango_context_set_base_dir(context, direction) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: direction
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoDirection pango_context_get_base_dir (PangoContext *context);
function pango_context_get_base_dir(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_context_get_base_dir
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_1_16
!void pango_context_set_base_gravity (PangoContext *context, PangoGravity gravity);
subroutine pango_context_set_base_gravity(context, gravity) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: gravity
end subroutine

! PANGO_AVAILABLE_IN_1_16
!PangoGravity pango_context_get_base_gravity (PangoContext *context);
function pango_context_get_base_gravity(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_context_get_base_gravity
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_1_16
!PangoGravity pango_context_get_gravity (PangoContext *context);
function pango_context_get_gravity(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_context_get_gravity
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_1_16
!void pango_context_set_gravity_hint (PangoContext *context, PangoGravityHint hint);
subroutine pango_context_set_gravity_hint(context, hint) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: hint
end subroutine

! PANGO_AVAILABLE_IN_1_16
!PangoGravityHint pango_context_get_gravity_hint (PangoContext *context);
function pango_context_get_gravity_hint(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_context_get_gravity_hint
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_1_6
!void pango_context_set_matrix (PangoContext *context, const PangoMatrix *matrix);
subroutine pango_context_set_matrix(context, matrix) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: matrix
end subroutine

! PANGO_AVAILABLE_IN_1_6
!const PangoMatrix * pango_context_get_matrix (PangoContext *context);
function pango_context_get_matrix(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_context_get_matrix
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_1_44
!void pango_context_set_round_glyph_positions (PangoContext *context, gboolean round_positions);
subroutine pango_context_set_round_glyph_positions(context, round_positions)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: round_positions
end subroutine

! PANGO_AVAILABLE_IN_1_44
!gboolean pango_context_get_round_glyph_positions (PangoContext *context);
function pango_context_get_round_glyph_positions(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_context_get_round_glyph_positions
  type(c_ptr), value :: context
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-glyph-item.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_glyph_item_get_type (void) ;
function pango_glyph_item_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_glyph_item_get_type
end function

! PANGO_AVAILABLE_IN_1_2
!PangoGlyphItem *pango_glyph_item_split (PangoGlyphItem *orig, const char *text, int split_index);
function pango_glyph_item_split(orig, text, split_index) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: pango_glyph_item_split
  type(c_ptr), value :: orig
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: split_index
end function

! PANGO_AVAILABLE_IN_1_20
!PangoGlyphItem *pango_glyph_item_copy (PangoGlyphItem *orig);
function pango_glyph_item_copy(orig) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_glyph_item_copy
  type(c_ptr), value :: orig
end function

! PANGO_AVAILABLE_IN_1_6
!void pango_glyph_item_free (PangoGlyphItem *glyph_item);
subroutine pango_glyph_item_free(glyph_item) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: glyph_item
end subroutine

! PANGO_AVAILABLE_IN_1_2
!GSList * pango_glyph_item_apply_attrs (PangoGlyphItem *glyph_item, const char *text, PangoAttrList *list);
function pango_glyph_item_apply_attrs(glyph_item, text, list) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: pango_glyph_item_apply_attrs
  type(c_ptr), value :: glyph_item
  character(kind=c_char), dimension(*) :: text
  type(c_ptr), value :: list
end function

! PANGO_AVAILABLE_IN_1_6
!void pango_glyph_item_letter_space (PangoGlyphItem *glyph_item, const char *text, PangoLogAttr *log_attrs, int letter_spacing);
subroutine pango_glyph_item_letter_space(glyph_item, text, log_attrs,&
& letter_spacing) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: glyph_item
  character(kind=c_char), dimension(*) :: text
  type(c_ptr), value :: log_attrs
  integer(c_int), value :: letter_spacing
end subroutine

! PANGO_AVAILABLE_IN_1_26
!void pango_glyph_item_get_logical_widths (PangoGlyphItem *glyph_item, const char *text, int *logical_widths);
subroutine pango_glyph_item_get_logical_widths(glyph_item, text,&
& logical_widths) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: glyph_item
  character(kind=c_char), dimension(*) :: text
  type(c_ptr), value :: logical_widths
end subroutine

! PANGO_AVAILABLE_IN_1_22
!GType pango_glyph_item_iter_get_type (void) ;
function pango_glyph_item_iter_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_glyph_item_iter_get_type
end function

! PANGO_AVAILABLE_IN_1_22
!PangoGlyphItemIter *pango_glyph_item_iter_copy (PangoGlyphItemIter *orig);
function pango_glyph_item_iter_copy(orig) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_glyph_item_iter_copy
  type(c_ptr), value :: orig
end function

! PANGO_AVAILABLE_IN_1_22
!void pango_glyph_item_iter_free (PangoGlyphItemIter *iter);
subroutine pango_glyph_item_iter_free(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
end subroutine

! PANGO_AVAILABLE_IN_1_22
!gboolean pango_glyph_item_iter_init_start (PangoGlyphItemIter *iter, PangoGlyphItem *glyph_item, const char *text);
function pango_glyph_item_iter_init_start(iter, glyph_item, text) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: pango_glyph_item_iter_init_start
  type(c_ptr), value :: iter
  type(c_ptr), value :: glyph_item
  character(kind=c_char), dimension(*) :: text
end function

! PANGO_AVAILABLE_IN_1_22
!gboolean pango_glyph_item_iter_init_end (PangoGlyphItemIter *iter, PangoGlyphItem *glyph_item, const char *text);
function pango_glyph_item_iter_init_end(iter, glyph_item, text) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: pango_glyph_item_iter_init_end
  type(c_ptr), value :: iter
  type(c_ptr), value :: glyph_item
  character(kind=c_char), dimension(*) :: text
end function

! PANGO_AVAILABLE_IN_1_22
!gboolean pango_glyph_item_iter_next_cluster (PangoGlyphItemIter *iter);
function pango_glyph_item_iter_next_cluster(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_glyph_item_iter_next_cluster
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_1_22
!gboolean pango_glyph_item_iter_prev_cluster (PangoGlyphItemIter *iter);
function pango_glyph_item_iter_prev_cluster(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_glyph_item_iter_prev_cluster
  type(c_ptr), value :: iter
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-matrix.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_6
!GType pango_matrix_get_type (void) ;
function pango_matrix_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_matrix_get_type
end function

! PANGO_AVAILABLE_IN_1_6
!PangoMatrix *pango_matrix_copy (const PangoMatrix *matrix);
function pango_matrix_copy(matrix) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_matrix_copy
  type(c_ptr), value :: matrix
end function

! PANGO_AVAILABLE_IN_1_6
!void pango_matrix_free (PangoMatrix *matrix);
subroutine pango_matrix_free(matrix) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: matrix
end subroutine

! PANGO_AVAILABLE_IN_1_6
!void pango_matrix_translate (PangoMatrix *matrix, double tx, double ty);
subroutine pango_matrix_translate(matrix, tx, ty) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: matrix
  real(c_double), value :: tx
  real(c_double), value :: ty
end subroutine

! PANGO_AVAILABLE_IN_1_6
!void pango_matrix_scale (PangoMatrix *matrix, double scale_x, double scale_y);
subroutine pango_matrix_scale(matrix, scale_x, scale_y) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: matrix
  real(c_double), value :: scale_x
  real(c_double), value :: scale_y
end subroutine

! PANGO_AVAILABLE_IN_1_6
!void pango_matrix_rotate (PangoMatrix *matrix, double degrees);
subroutine pango_matrix_rotate(matrix, degrees) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: matrix
  real(c_double), value :: degrees
end subroutine

! PANGO_AVAILABLE_IN_1_6
!void pango_matrix_concat (PangoMatrix *matrix, const PangoMatrix *new_matrix);
subroutine pango_matrix_concat(matrix, new_matrix) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: matrix
  type(c_ptr), value :: new_matrix
end subroutine

! PANGO_AVAILABLE_IN_1_16
!void pango_matrix_transform_point (const PangoMatrix *matrix, double *x, double *y);
subroutine pango_matrix_transform_point(matrix, x, y) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: matrix
  type(c_ptr), value :: x
  type(c_ptr), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_16
!void pango_matrix_transform_distance (const PangoMatrix *matrix, double *dx, double *dy);
subroutine pango_matrix_transform_distance(matrix, dx, dy) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: matrix
  type(c_ptr), value :: dx
  type(c_ptr), value :: dy
end subroutine

! PANGO_AVAILABLE_IN_1_16
!void pango_matrix_transform_rectangle (const PangoMatrix *matrix, PangoRectangle *rect);
subroutine pango_matrix_transform_rectangle(matrix, rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: matrix
  type(c_ptr), value :: rect
end subroutine

! PANGO_AVAILABLE_IN_1_16
!void pango_matrix_transform_pixel_rectangle (const PangoMatrix *matrix, PangoRectangle *rect);
subroutine pango_matrix_transform_pixel_rectangle(matrix, rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: matrix
  type(c_ptr), value :: rect
end subroutine

! PANGO_AVAILABLE_IN_1_12
!double pango_matrix_get_font_scale_factor (const PangoMatrix *matrix) ;
function pango_matrix_get_font_scale_factor(matrix) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: pango_matrix_get_font_scale_factor
  type(c_ptr), value :: matrix
end function

! PANGO_AVAILABLE_IN_1_38
!void pango_matrix_get_font_scale_factors (const PangoMatrix *matrix, double *xscale, double *yscale);
subroutine pango_matrix_get_font_scale_factors(matrix, xscale, yscale) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: matrix
  type(c_ptr), value :: xscale
  type(c_ptr), value :: yscale
end subroutine

! PANGO_AVAILABLE_IN_1_50
!double pango_matrix_get_slant_ratio (const PangoMatrix *matrix) ;
function pango_matrix_get_slant_ratio(matrix) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: pango_matrix_get_slant_ratio
  type(c_ptr), value :: matrix
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-gravity.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_16
!double pango_gravity_to_rotation (PangoGravity gravity) ;
function pango_gravity_to_rotation(gravity) bind(c)
  import :: c_double, c_int
  implicit none
  real(c_double) :: pango_gravity_to_rotation
  integer(c_int), value :: gravity
end function

! PANGO_AVAILABLE_IN_1_16
!PangoGravity pango_gravity_get_for_matrix (const PangoMatrix *matrix) ;
function pango_gravity_get_for_matrix(matrix) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_gravity_get_for_matrix
  type(c_ptr), value :: matrix
end function

! PANGO_AVAILABLE_IN_1_16
!PangoGravity pango_gravity_get_for_script (PangoScript script, PangoGravity base_gravity, PangoGravityHint hint) ;
function pango_gravity_get_for_script(script, base_gravity, hint) bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: pango_gravity_get_for_script
  integer(c_int), value :: script
  integer(c_int), value :: base_gravity
  integer(c_int), value :: hint
end function

! PANGO_AVAILABLE_IN_1_26
!PangoGravity pango_gravity_get_for_script_and_width (PangoScript script, gboolean wide, PangoGravity base_gravity, PangoGravityHint hint) ;
function pango_gravity_get_for_script_and_width(script, wide, base_gravity,&
& hint) bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: pango_gravity_get_for_script_and_width
  integer(c_int), value :: script
  integer(c_int), value :: wide
  integer(c_int), value :: base_gravity
  integer(c_int), value :: hint
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pangofc-font.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_fc_font_get_type (void) ;
function pango_fc_font_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_fc_font_get_type
end function

! PANGO_DEPRECATED_IN_1_44
!gboolean pango_fc_font_has_char (PangoFcFont *font, gunichar wc);
function pango_fc_font_has_char(font, wc) bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_fc_font_has_char
  type(c_ptr), value :: font
  integer(c_int32_t), value :: wc
end function

! PANGO_AVAILABLE_IN_1_4
!guint pango_fc_font_get_glyph (PangoFcFont *font, gunichar wc);
function pango_fc_font_get_glyph(font, wc) bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_fc_font_get_glyph
  type(c_ptr), value :: font
  integer(c_int32_t), value :: wc
end function

! 
!PangoLanguage ** pango_fc_font_get_languages (PangoFcFont *font);
function pango_fc_font_get_languages(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fc_font_get_languages
  type(c_ptr), value :: font
end function

! PANGO_AVAILABLE_IN_1_48
!FcPattern *pango_fc_font_get_pattern (PangoFcFont *font);
function pango_fc_font_get_pattern(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fc_font_get_pattern
  type(c_ptr), value :: font
end function

! PANGO_DEPRECATED_FOR(PANGO_GET_UNKNOWN_GLYPH)
!PangoGlyph pango_fc_font_get_unknown_glyph (PangoFcFont *font, gunichar wc);
function pango_fc_font_get_unknown_glyph(font, wc) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: pango_fc_font_get_unknown_glyph
  type(c_ptr), value :: font
  integer(c_int32_t), value :: wc
end function

! PANGO_DEPRECATED_IN_1_32
!void pango_fc_font_kern_glyphs (PangoFcFont *font, PangoGlyphString *glyphs);
subroutine pango_fc_font_kern_glyphs(font, glyphs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
end subroutine

! PANGO_DEPRECATED_IN_1_44_FOR(pango_font_get_hb_font)
!FT_Face pango_fc_font_lock_face (PangoFcFont *font);
function pango_fc_font_lock_face(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fc_font_lock_face
  type(c_ptr), value :: font
end function

! PANGO_DEPRECATED_IN_1_44_FOR(pango_font_get_hb_font)
!void pango_fc_font_unlock_face (PangoFcFont *font);
subroutine pango_fc_font_unlock_face(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: font
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-renderer.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_8
!GType pango_renderer_get_type (void) ;
function pango_renderer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_renderer_get_type
end function

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_draw_layout (PangoRenderer *renderer, PangoLayout *layout, int x, int y);
subroutine pango_renderer_draw_layout(renderer, layout, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: renderer
  type(c_ptr), value :: layout
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_draw_layout_line (PangoRenderer *renderer, PangoLayoutLine *line, int x, int y);
subroutine pango_renderer_draw_layout_line(renderer, line, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: renderer
  type(c_ptr), value :: line
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_draw_glyphs (PangoRenderer *renderer, PangoFont *font, PangoGlyphString *glyphs, int x, int y);
subroutine pango_renderer_draw_glyphs(renderer, font, glyphs, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: renderer
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_22
!void pango_renderer_draw_glyph_item (PangoRenderer *renderer, const char *text, PangoGlyphItem *glyph_item, int x, int y);
subroutine pango_renderer_draw_glyph_item(renderer, text, glyph_item, x, y)&
& bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: renderer
  character(kind=c_char), dimension(*) :: text
  type(c_ptr), value :: glyph_item
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_draw_rectangle (PangoRenderer *renderer, PangoRenderPart part, int x, int y, int width, int height);
subroutine pango_renderer_draw_rectangle(renderer, part, x, y, width, height)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: renderer
  integer(c_int), value :: part
  integer(c_int), value :: x
  integer(c_int), value :: y
  integer(c_int), value :: width
  integer(c_int), value :: height
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_draw_error_underline (PangoRenderer *renderer, int x, int y, int width, int height);
subroutine pango_renderer_draw_error_underline(renderer, x, y, width, height)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: renderer
  integer(c_int), value :: x
  integer(c_int), value :: y
  integer(c_int), value :: width
  integer(c_int), value :: height
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_draw_trapezoid (PangoRenderer *renderer, PangoRenderPart part, double y1_, double x11, double x21, double y2, double x12, double x22);
subroutine pango_renderer_draw_trapezoid(renderer, part, y1_, x11, x21, y2,&
& x12, x22) bind(c)
  import :: c_ptr, c_int, c_double
  implicit none
  type(c_ptr), value :: renderer
  integer(c_int), value :: part
  real(c_double), value :: y1_
  real(c_double), value :: x11
  real(c_double), value :: x21
  real(c_double), value :: y2
  real(c_double), value :: x12
  real(c_double), value :: x22
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_draw_glyph (PangoRenderer *renderer, PangoFont *font, PangoGlyph glyph, double x, double y);
subroutine pango_renderer_draw_glyph(renderer, font, glyph, x, y) bind(c)
  import :: c_ptr, c_int32_t, c_double
  implicit none
  type(c_ptr), value :: renderer
  type(c_ptr), value :: font
  integer(c_int32_t), value :: glyph
  real(c_double), value :: x
  real(c_double), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_activate (PangoRenderer *renderer);
subroutine pango_renderer_activate(renderer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: renderer
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_deactivate (PangoRenderer *renderer);
subroutine pango_renderer_deactivate(renderer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: renderer
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_part_changed (PangoRenderer *renderer, PangoRenderPart part);
subroutine pango_renderer_part_changed(renderer, part) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: renderer
  integer(c_int), value :: part
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_set_color (PangoRenderer *renderer, PangoRenderPart part, const PangoColor *color);
subroutine pango_renderer_set_color(renderer, part, color) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: renderer
  integer(c_int), value :: part
  type(c_ptr), value :: color
end subroutine

! PANGO_AVAILABLE_IN_1_8
!PangoColor *pango_renderer_get_color (PangoRenderer *renderer, PangoRenderPart part);
function pango_renderer_get_color(renderer, part) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_renderer_get_color
  type(c_ptr), value :: renderer
  integer(c_int), value :: part
end function

! PANGO_AVAILABLE_IN_1_38
!void pango_renderer_set_alpha (PangoRenderer *renderer, PangoRenderPart part, guint16 alpha);
subroutine pango_renderer_set_alpha(renderer, part, alpha) bind(c)
  import :: c_ptr, c_int, c_int16_t
  implicit none
  type(c_ptr), value :: renderer
  integer(c_int), value :: part
  integer(c_int16_t), value :: alpha
end subroutine

! PANGO_AVAILABLE_IN_1_38
!guint16 pango_renderer_get_alpha (PangoRenderer *renderer, PangoRenderPart part);
function pango_renderer_get_alpha(renderer, part) bind(c)
  import :: c_int16_t, c_ptr, c_int
  implicit none
  integer(c_int16_t) :: pango_renderer_get_alpha
  type(c_ptr), value :: renderer
  integer(c_int), value :: part
end function

! PANGO_AVAILABLE_IN_1_8
!void pango_renderer_set_matrix (PangoRenderer *renderer, const PangoMatrix *matrix);
subroutine pango_renderer_set_matrix(renderer, matrix) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: renderer
  type(c_ptr), value :: matrix
end subroutine

! PANGO_AVAILABLE_IN_1_8
!const PangoMatrix *pango_renderer_get_matrix (PangoRenderer *renderer);
function pango_renderer_get_matrix(renderer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_renderer_get_matrix
  type(c_ptr), value :: renderer
end function

! PANGO_AVAILABLE_IN_1_20
!PangoLayout *pango_renderer_get_layout (PangoRenderer *renderer);
function pango_renderer_get_layout(renderer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_renderer_get_layout
  type(c_ptr), value :: renderer
end function

! PANGO_AVAILABLE_IN_1_20
!PangoLayoutLine *pango_renderer_get_layout_line (PangoRenderer *renderer);
function pango_renderer_get_layout_line(renderer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_renderer_get_layout_line
  type(c_ptr), value :: renderer
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pangofc-decoder.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_6
!GType pango_fc_decoder_get_type (void) ;
function pango_fc_decoder_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_fc_decoder_get_type
end function

! PANGO_AVAILABLE_IN_1_6
!FcCharSet *pango_fc_decoder_get_charset (PangoFcDecoder *decoder, PangoFcFont *fcfont);
function pango_fc_decoder_get_charset(decoder, fcfont) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_fc_decoder_get_charset
  type(c_ptr), value :: decoder
  type(c_ptr), value :: fcfont
end function

! PANGO_AVAILABLE_IN_1_6
!PangoGlyph pango_fc_decoder_get_glyph (PangoFcDecoder *decoder, PangoFcFont *fcfont, guint32 wc);
function pango_fc_decoder_get_glyph(decoder, fcfont, wc) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: pango_fc_decoder_get_glyph
  type(c_ptr), value :: decoder
  type(c_ptr), value :: fcfont
  integer(c_int32_t), value :: wc
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-layout.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_ALL
!GType pango_layout_get_type (void) ;
function pango_layout_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_layout_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLayout *pango_layout_new (PangoContext *context);
function pango_layout_new(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_new
  type(c_ptr), value :: context
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLayout *pango_layout_copy (PangoLayout *src);
function pango_layout_copy(src) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_copy
  type(c_ptr), value :: src
end function

! PANGO_AVAILABLE_IN_ALL
!PangoContext *pango_layout_get_context (PangoLayout *layout);
function pango_layout_get_context(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_context
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_attributes (PangoLayout *layout, PangoAttrList *attrs);
subroutine pango_layout_set_attributes(layout, attrs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: attrs
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoAttrList *pango_layout_get_attributes (PangoLayout *layout);
function pango_layout_get_attributes(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_attributes
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_text (PangoLayout *layout, const char *text, int length);
subroutine pango_layout_set_text(layout, text, length) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: layout
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
end subroutine

! PANGO_AVAILABLE_IN_ALL
!const char *pango_layout_get_text (PangoLayout *layout);
function pango_layout_get_text(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_text
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_30
!gint pango_layout_get_character_count (PangoLayout *layout);
function pango_layout_get_character_count(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_character_count
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_markup (PangoLayout *layout, const char *markup, int length);
subroutine pango_layout_set_markup(layout, markup, length) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: layout
  character(kind=c_char), dimension(*) :: markup
  integer(c_int), value :: length
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_markup_with_accel (PangoLayout *layout, const char *markup, int length, gunichar accel_marker, gunichar *accel_char);
subroutine pango_layout_set_markup_with_accel(layout, markup, length,&
& accel_marker, accel_char) bind(c)
  import :: c_ptr, c_char, c_int, c_int32_t
  implicit none
  type(c_ptr), value :: layout
  character(kind=c_char), dimension(*) :: markup
  integer(c_int), value :: length
  integer(c_int32_t), value :: accel_marker
  character(kind=c_char), dimension(*) :: accel_char
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_font_description (PangoLayout *layout, const PangoFontDescription *desc);
subroutine pango_layout_set_font_description(layout, desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: desc
end subroutine

! PANGO_AVAILABLE_IN_1_8
!const PangoFontDescription *pango_layout_get_font_description (PangoLayout *layout);
function pango_layout_get_font_description(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_font_description
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_width (PangoLayout *layout, int width);
subroutine pango_layout_set_width(layout, width) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: width
end subroutine

! PANGO_AVAILABLE_IN_ALL
!int pango_layout_get_width (PangoLayout *layout);
function pango_layout_get_width(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_width
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_20
!void pango_layout_set_height (PangoLayout *layout, int height);
subroutine pango_layout_set_height(layout, height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: height
end subroutine

! PANGO_AVAILABLE_IN_1_20
!int pango_layout_get_height (PangoLayout *layout);
function pango_layout_get_height(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_height
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_wrap (PangoLayout *layout, PangoWrapMode wrap);
subroutine pango_layout_set_wrap(layout, wrap) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: wrap
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoWrapMode pango_layout_get_wrap (PangoLayout *layout);
function pango_layout_get_wrap(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_wrap
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_16
!gboolean pango_layout_is_wrapped (PangoLayout *layout);
function pango_layout_is_wrapped(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_is_wrapped
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_indent (PangoLayout *layout, int indent);
subroutine pango_layout_set_indent(layout, indent) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: indent
end subroutine

! PANGO_AVAILABLE_IN_ALL
!int pango_layout_get_indent (PangoLayout *layout);
function pango_layout_get_indent(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_indent
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_spacing (PangoLayout *layout, int spacing);
subroutine pango_layout_set_spacing(layout, spacing) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: spacing
end subroutine

! PANGO_AVAILABLE_IN_ALL
!int pango_layout_get_spacing (PangoLayout *layout);
function pango_layout_get_spacing(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_spacing
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_44
!void pango_layout_set_line_spacing (PangoLayout *layout, float factor);
subroutine pango_layout_set_line_spacing(layout, factor) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: layout
  real(c_float), value :: factor
end subroutine

! PANGO_AVAILABLE_IN_1_44
!float pango_layout_get_line_spacing (PangoLayout *layout);
function pango_layout_get_line_spacing(layout) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: pango_layout_get_line_spacing
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_justify (PangoLayout *layout, gboolean justify);
subroutine pango_layout_set_justify(layout, justify) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: justify
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_get_justify (PangoLayout *layout);
function pango_layout_get_justify(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_justify
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_50
!void pango_layout_set_justify_last_line (PangoLayout *layout, gboolean justify);
subroutine pango_layout_set_justify_last_line(layout, justify) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: justify
end subroutine

! PANGO_AVAILABLE_IN_1_50
!gboolean pango_layout_get_justify_last_line (PangoLayout *layout);
function pango_layout_get_justify_last_line(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_justify_last_line
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_4
!void pango_layout_set_auto_dir (PangoLayout *layout, gboolean auto_dir);
subroutine pango_layout_set_auto_dir(layout, auto_dir) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: auto_dir
end subroutine

! PANGO_AVAILABLE_IN_1_4
!gboolean pango_layout_get_auto_dir (PangoLayout *layout);
function pango_layout_get_auto_dir(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_auto_dir
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_alignment (PangoLayout *layout, PangoAlignment alignment);
subroutine pango_layout_set_alignment(layout, alignment) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: alignment
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoAlignment pango_layout_get_alignment (PangoLayout *layout);
function pango_layout_get_alignment(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_alignment
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_tabs (PangoLayout *layout, PangoTabArray *tabs);
subroutine pango_layout_set_tabs(layout, tabs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: tabs
end subroutine

! PANGO_AVAILABLE_IN_ALL
!PangoTabArray* pango_layout_get_tabs (PangoLayout *layout);
function pango_layout_get_tabs(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_tabs
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_set_single_paragraph_mode (PangoLayout *layout, gboolean setting);
subroutine pango_layout_set_single_paragraph_mode(layout, setting) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: setting
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_get_single_paragraph_mode (PangoLayout *layout);
function pango_layout_get_single_paragraph_mode(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_single_paragraph_mode
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_6
!void pango_layout_set_ellipsize (PangoLayout *layout, PangoEllipsizeMode ellipsize);
subroutine pango_layout_set_ellipsize(layout, ellipsize) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: ellipsize
end subroutine

! PANGO_AVAILABLE_IN_1_6
!PangoEllipsizeMode pango_layout_get_ellipsize (PangoLayout *layout);
function pango_layout_get_ellipsize(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_ellipsize
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_16
!gboolean pango_layout_is_ellipsized (PangoLayout *layout);
function pango_layout_is_ellipsized(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_is_ellipsized
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_16
!int pango_layout_get_unknown_glyphs_count (PangoLayout *layout);
function pango_layout_get_unknown_glyphs_count(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_unknown_glyphs_count
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_46
!PangoDirection pango_layout_get_direction (PangoLayout *layout, int index);
function pango_layout_get_direction(layout, index) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_direction
  type(c_ptr), value :: layout
  integer(c_int), value :: index
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_context_changed (PangoLayout *layout);
subroutine pango_layout_context_changed(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
end subroutine

! PANGO_AVAILABLE_IN_1_32
!guint pango_layout_get_serial (PangoLayout *layout);
function pango_layout_get_serial(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_serial
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_get_log_attrs (PangoLayout *layout, PangoLogAttr **attrs, gint *n_attrs);
subroutine pango_layout_get_log_attrs(layout, attrs, n_attrs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: attrs
  type(c_ptr), value :: n_attrs
end subroutine

! PANGO_AVAILABLE_IN_1_30
!const PangoLogAttr *pango_layout_get_log_attrs_readonly (PangoLayout *layout, gint *n_attrs);
function pango_layout_get_log_attrs_readonly(layout, n_attrs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_log_attrs_readonly
  type(c_ptr), value :: layout
  type(c_ptr), value :: n_attrs
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_index_to_pos (PangoLayout *layout, int index_, PangoRectangle *pos);
subroutine pango_layout_index_to_pos(layout, index_, pos) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: index_
  type(c_ptr), value :: pos
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_index_to_line_x (PangoLayout *layout, int index_, gboolean trailing, int *line, int *x_pos);
subroutine pango_layout_index_to_line_x(layout, index_, trailing, line, x_pos)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: index_
  integer(c_int), value :: trailing
  type(c_ptr), value :: line
  type(c_ptr), value :: x_pos
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_get_cursor_pos (PangoLayout *layout, int index_, PangoRectangle *strong_pos, PangoRectangle *weak_pos);
subroutine pango_layout_get_cursor_pos(layout, index_, strong_pos, weak_pos)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: index_
  type(c_ptr), value :: strong_pos
  type(c_ptr), value :: weak_pos
end subroutine

! PANGO_AVAILABLE_IN_1_50
!void pango_layout_get_caret_pos (PangoLayout *layout, int index_, PangoRectangle *strong_pos, PangoRectangle *weak_pos);
subroutine pango_layout_get_caret_pos(layout, index_, strong_pos, weak_pos)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: index_
  type(c_ptr), value :: strong_pos
  type(c_ptr), value :: weak_pos
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_move_cursor_visually (PangoLayout *layout, gboolean strong, int old_index, int old_trailing, int direction, int *new_index, int *new_trailing);
subroutine pango_layout_move_cursor_visually(layout, strong, old_index,&
& old_trailing, direction, new_index, new_trailing) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: strong
  integer(c_int), value :: old_index
  integer(c_int), value :: old_trailing
  integer(c_int), value :: direction
  type(c_ptr), value :: new_index
  type(c_ptr), value :: new_trailing
end subroutine

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_xy_to_index (PangoLayout *layout, int x, int y, int *index_, int *trailing);
function pango_layout_xy_to_index(layout, x, y, index_, trailing) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_xy_to_index
  type(c_ptr), value :: layout
  integer(c_int), value :: x
  integer(c_int), value :: y
  type(c_ptr), value :: index_
  type(c_ptr), value :: trailing
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_get_extents (PangoLayout *layout, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_layout_get_extents(layout, ink_rect, logical_rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_get_pixel_extents (PangoLayout *layout, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_layout_get_pixel_extents(layout, ink_rect, logical_rect)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_get_size (PangoLayout *layout, int *width, int *height);
subroutine pango_layout_get_size(layout, width, height) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: width
  type(c_ptr), value :: height
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_get_pixel_size (PangoLayout *layout, int *width, int *height);
subroutine pango_layout_get_pixel_size(layout, width, height) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: width
  type(c_ptr), value :: height
end subroutine

! PANGO_AVAILABLE_IN_1_22
!int pango_layout_get_baseline (PangoLayout *layout);
function pango_layout_get_baseline(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_baseline
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!int pango_layout_get_line_count (PangoLayout *layout);
function pango_layout_get_line_count(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_get_line_count
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLayoutLine *pango_layout_get_line (PangoLayout *layout, int line);
function pango_layout_get_line(layout, line) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_layout_get_line
  type(c_ptr), value :: layout
  integer(c_int), value :: line
end function

! PANGO_AVAILABLE_IN_1_16
!PangoLayoutLine *pango_layout_get_line_readonly (PangoLayout *layout, int line);
function pango_layout_get_line_readonly(layout, line) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_layout_get_line_readonly
  type(c_ptr), value :: layout
  integer(c_int), value :: line
end function

! PANGO_AVAILABLE_IN_ALL
!GSList * pango_layout_get_lines (PangoLayout *layout);
function pango_layout_get_lines(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_lines
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_16
!GSList * pango_layout_get_lines_readonly (PangoLayout *layout);
function pango_layout_get_lines_readonly(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_lines_readonly
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_50
!GBytes * pango_layout_serialize (PangoLayout *layout, PangoLayoutSerializeFlags flags);
function pango_layout_serialize(layout, flags) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_layout_serialize
  type(c_ptr), value :: layout
  integer(c_int), value :: flags
end function

! PANGO_AVAILABLE_IN_1_50
!gboolean pango_layout_write_to_file (PangoLayout *layout, PangoLayoutSerializeFlags flags, const char *filename, GError **error);
function pango_layout_write_to_file(layout, flags, filename, error) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: pango_layout_write_to_file
  type(c_ptr), value :: layout
  integer(c_int), value :: flags
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: error
end function

! PANGO_AVAILABLE_IN_1_50
!GQuark pango_layout_deserialize_error_quark (void);
function pango_layout_deserialize_error_quark() bind(c)
  import :: c_int32_t
  implicit none
  integer(c_int32_t) :: pango_layout_deserialize_error_quark
end function

! PANGO_AVAILABLE_IN_1_50
!PangoLayout * pango_layout_deserialize (PangoContext *context, GBytes *bytes, PangoLayoutDeserializeFlags flags, GError **error);
function pango_layout_deserialize(context, bytes, flags, error) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_layout_deserialize
  type(c_ptr), value :: context
  type(c_ptr), value :: bytes
  integer(c_int), value :: flags
  type(c_ptr), value :: error
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_layout_line_get_type (void) ;
function pango_layout_line_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_layout_line_get_type
end function

! PANGO_AVAILABLE_IN_1_10
!PangoLayoutLine *pango_layout_line_ref (PangoLayoutLine *line);
function pango_layout_line_ref(line) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_line_ref
  type(c_ptr), value :: line
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_line_unref (PangoLayoutLine *line);
subroutine pango_layout_line_unref(line) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: line
end subroutine

! PANGO_AVAILABLE_IN_1_50
!int pango_layout_line_get_start_index (PangoLayoutLine *line);
function pango_layout_line_get_start_index(line) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_line_get_start_index
  type(c_ptr), value :: line
end function

! PANGO_AVAILABLE_IN_1_50
!int pango_layout_line_get_length (PangoLayoutLine *line);
function pango_layout_line_get_length(line) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_line_get_length
  type(c_ptr), value :: line
end function

! PANGO_AVAILABLE_IN_1_50
!gboolean pango_layout_line_is_paragraph_start (PangoLayoutLine *line);
function pango_layout_line_is_paragraph_start(line) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_line_is_paragraph_start
  type(c_ptr), value :: line
end function

! PANGO_AVAILABLE_IN_1_50
!PangoDirection pango_layout_line_get_resolved_direction (PangoLayoutLine *line);
function pango_layout_line_get_resolved_direction(line) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_line_get_resolved_direction
  type(c_ptr), value :: line
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_line_x_to_index (PangoLayoutLine *line, int x_pos, int *index_, int *trailing);
function pango_layout_line_x_to_index(line, x_pos, index_, trailing) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_line_x_to_index
  type(c_ptr), value :: line
  integer(c_int), value :: x_pos
  type(c_ptr), value :: index_
  type(c_ptr), value :: trailing
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_line_index_to_x (PangoLayoutLine *line, int index_, gboolean trailing, int *x_pos);
subroutine pango_layout_line_index_to_x(line, index_, trailing, x_pos) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: line
  integer(c_int), value :: index_
  integer(c_int), value :: trailing
  type(c_ptr), value :: x_pos
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_line_get_x_ranges (PangoLayoutLine *line, int start_index, int end_index, int **ranges, int *n_ranges);
subroutine pango_layout_line_get_x_ranges(line, start_index, end_index, ranges,&
& n_ranges) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: line
  integer(c_int), value :: start_index
  integer(c_int), value :: end_index
  type(c_ptr), value :: ranges
  type(c_ptr), value :: n_ranges
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_line_get_extents (PangoLayoutLine *line, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_layout_line_get_extents(line, ink_rect, logical_rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: line
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_1_44
!void pango_layout_line_get_height (PangoLayoutLine *line, int *height);
subroutine pango_layout_line_get_height(line, height) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: line
  type(c_ptr), value :: height
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_line_get_pixel_extents (PangoLayoutLine *layout_line, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_layout_line_get_pixel_extents(layout_line, ink_rect,&
& logical_rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout_line
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!GType pango_layout_iter_get_type (void) ;
function pango_layout_iter_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_layout_iter_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLayoutIter *pango_layout_get_iter (PangoLayout *layout);
function pango_layout_get_iter(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_get_iter
  type(c_ptr), value :: layout
end function

! PANGO_AVAILABLE_IN_1_20
!PangoLayoutIter *pango_layout_iter_copy (PangoLayoutIter *iter);
function pango_layout_iter_copy(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_iter_copy
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_iter_free (PangoLayoutIter *iter);
subroutine pango_layout_iter_free(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
end subroutine

! PANGO_AVAILABLE_IN_ALL
!int pango_layout_iter_get_index (PangoLayoutIter *iter);
function pango_layout_iter_get_index(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_iter_get_index
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLayoutRun *pango_layout_iter_get_run (PangoLayoutIter *iter);
function pango_layout_iter_get_run(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_iter_get_run
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_1_16
!PangoLayoutRun *pango_layout_iter_get_run_readonly (PangoLayoutIter *iter);
function pango_layout_iter_get_run_readonly(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_iter_get_run_readonly
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!PangoLayoutLine *pango_layout_iter_get_line (PangoLayoutIter *iter);
function pango_layout_iter_get_line(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_iter_get_line
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_1_16
!PangoLayoutLine *pango_layout_iter_get_line_readonly (PangoLayoutIter *iter);
function pango_layout_iter_get_line_readonly(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_iter_get_line_readonly
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_iter_at_last_line (PangoLayoutIter *iter);
function pango_layout_iter_at_last_line(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_iter_at_last_line
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_1_20
!PangoLayout *pango_layout_iter_get_layout (PangoLayoutIter *iter);
function pango_layout_iter_get_layout(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_layout_iter_get_layout
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_iter_next_char (PangoLayoutIter *iter);
function pango_layout_iter_next_char(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_iter_next_char
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_iter_next_cluster (PangoLayoutIter *iter);
function pango_layout_iter_next_cluster(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_iter_next_cluster
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_iter_next_run (PangoLayoutIter *iter);
function pango_layout_iter_next_run(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_iter_next_run
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_layout_iter_next_line (PangoLayoutIter *iter);
function pango_layout_iter_next_line(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_iter_next_line
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_iter_get_char_extents (PangoLayoutIter *iter, PangoRectangle *logical_rect);
subroutine pango_layout_iter_get_char_extents(iter, logical_rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_iter_get_cluster_extents (PangoLayoutIter *iter, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_layout_iter_get_cluster_extents(iter, ink_rect, logical_rect)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_iter_get_run_extents (PangoLayoutIter *iter, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_layout_iter_get_run_extents(iter, ink_rect, logical_rect)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_iter_get_line_extents (PangoLayoutIter *iter, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_layout_iter_get_line_extents(iter, ink_rect, logical_rect)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_iter_get_line_yrange (PangoLayoutIter *iter, int *y0_, int *y1_);
subroutine pango_layout_iter_get_line_yrange(iter, y0_, y1_) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
  type(c_ptr), value :: y0_
  type(c_ptr), value :: y1_
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_layout_iter_get_layout_extents (PangoLayoutIter *iter, PangoRectangle *ink_rect, PangoRectangle *logical_rect);
subroutine pango_layout_iter_get_layout_extents(iter, ink_rect, logical_rect)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: iter
  type(c_ptr), value :: ink_rect
  type(c_ptr), value :: logical_rect
end subroutine

! PANGO_AVAILABLE_IN_ALL
!int pango_layout_iter_get_baseline (PangoLayoutIter *iter);
function pango_layout_iter_get_baseline(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_iter_get_baseline
  type(c_ptr), value :: iter
end function

! PANGO_AVAILABLE_IN_1_50
!int pango_layout_iter_get_run_baseline (PangoLayoutIter *iter);
function pango_layout_iter_get_run_baseline(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_layout_iter_get_run_baseline
  type(c_ptr), value :: iter
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pangoxft-render.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_8
!GType pango_xft_renderer_get_type (void) ;
function pango_xft_renderer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_xft_renderer_get_type
end function

! PANGO_AVAILABLE_IN_1_8
!PangoRenderer *pango_xft_renderer_new (Display *display, int screen);
function pango_xft_renderer_new(display, screen) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_xft_renderer_new
  type(c_ptr), value :: display
  integer(c_int), value :: screen
end function

! PANGO_AVAILABLE_IN_1_8
!void pango_xft_renderer_set_draw (PangoXftRenderer *xftrenderer, XftDraw *draw);
subroutine pango_xft_renderer_set_draw(xftrenderer, draw) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: xftrenderer
  type(c_ptr), value :: draw
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_xft_renderer_set_default_color (PangoXftRenderer *xftrenderer, PangoColor *default_color);
subroutine pango_xft_renderer_set_default_color(xftrenderer, default_color)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: xftrenderer
  type(c_ptr), value :: default_color
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_xft_render (XftDraw *draw, XftColor *color, PangoFont *font, PangoGlyphString *glyphs, gint x, gint y);
subroutine pango_xft_render(draw, color, font, glyphs, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: draw
  type(c_ptr), value :: color
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_ALL
!void pango_xft_picture_render (Display *display, Picture src_picture, Picture dest_picture, PangoFont *font, PangoGlyphString *glyphs, gint x, gint y);
subroutine pango_xft_picture_render(display, src_picture, dest_picture, font,&
& glyphs, x, y) bind(c)
  import :: c_ptr, c_long, c_int
  implicit none
  type(c_ptr), value :: display
  integer(c_long), value :: src_picture
  integer(c_long), value :: dest_picture
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_xft_render_transformed (XftDraw *draw, XftColor *color, PangoMatrix *matrix, PangoFont *font, PangoGlyphString *glyphs, int x, int y);
subroutine pango_xft_render_transformed(draw, color, matrix, font, glyphs, x,&
& y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: draw
  type(c_ptr), value :: color
  type(c_ptr), value :: matrix
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_xft_render_layout_line (XftDraw *draw, XftColor *color, PangoLayoutLine *line, int x, int y);
subroutine pango_xft_render_layout_line(draw, color, line, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: draw
  type(c_ptr), value :: color
  type(c_ptr), value :: line
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

! PANGO_AVAILABLE_IN_1_8
!void pango_xft_render_layout (XftDraw *draw, XftColor *color, PangoLayout *layout, int x, int y);
subroutine pango_xft_render_layout(draw, color, layout, x, y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: draw
  type(c_ptr), value :: color
  type(c_ptr), value :: layout
  integer(c_int), value :: x
  integer(c_int), value :: y
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-features.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-markup.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_32
!GMarkupParseContext * pango_markup_parser_new (gunichar accel_marker);
function pango_markup_parser_new(accel_marker) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr) :: pango_markup_parser_new
  integer(c_int32_t), value :: accel_marker
end function

! PANGO_AVAILABLE_IN_1_32
!gboolean pango_markup_parser_finish (GMarkupParseContext *context, PangoAttrList **attr_list, char **text, gunichar *accel_char, GError **error);
function pango_markup_parser_finish(context, attr_list, text, accel_char,&
& error) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: pango_markup_parser_finish
  type(c_ptr), value :: context
  type(c_ptr), value :: attr_list
  type(c_ptr), dimension(*) :: text
  character(kind=c_char), dimension(*) :: accel_char
  type(c_ptr), value :: error
end function

! PANGO_AVAILABLE_IN_ALL
!gboolean pango_parse_markup (const char *markup_text, int length, gunichar accel_marker, PangoAttrList **attr_list, char **text, gunichar *accel_char, GError **error);
function pango_parse_markup(markup_text, length, accel_marker, attr_list, text,&
& accel_char, error) bind(c)
  import :: c_int, c_char, c_int32_t, c_ptr
  implicit none
  integer(c_int) :: pango_parse_markup
  character(kind=c_char), dimension(*) :: markup_text
  integer(c_int), value :: length
  integer(c_int32_t), value :: accel_marker
  type(c_ptr), value :: attr_list
  type(c_ptr), dimension(*) :: text
  character(kind=c_char), dimension(*) :: accel_char
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-version-macros.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/pango-1.0/pango/pango-ot.h
!--------------------------------------------------
! PANGO_DEPRECATED
!GType pango_ot_info_get_type (void) ;
function pango_ot_info_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_ot_info_get_type
end function

! PANGO_DEPRECATED
!GType pango_ot_ruleset_get_type (void) ;
function pango_ot_ruleset_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_ot_ruleset_get_type
end function

! PANGO_DEPRECATED
!PangoOTInfo *pango_ot_info_get (FT_Face face);
function pango_ot_info_get(face) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ot_info_get
  type(c_ptr), value :: face
end function

! PANGO_DEPRECATED
!gboolean pango_ot_info_find_script (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag script_tag, guint *script_index);
function pango_ot_info_find_script(info, table_type, script_tag, script_index)&
& bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_ot_info_find_script
  type(c_ptr), value :: info
  integer(c_int), value :: table_type
  integer(c_int32_t), value :: script_tag
  type(c_ptr), value :: script_index
end function

! PANGO_DEPRECATED
!gboolean pango_ot_info_find_language (PangoOTInfo *info, PangoOTTableType table_type, guint script_index, PangoOTTag language_tag, guint *language_index, guint *required_feature_index);
function pango_ot_info_find_language(info, table_type, script_index,&
& language_tag, language_index, required_feature_index) bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_ot_info_find_language
  type(c_ptr), value :: info
  integer(c_int), value :: table_type
  integer(c_int), value :: script_index
  integer(c_int32_t), value :: language_tag
  type(c_ptr), value :: language_index
  type(c_ptr), value :: required_feature_index
end function

! PANGO_DEPRECATED
!gboolean pango_ot_info_find_feature (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag feature_tag, guint script_index, guint language_index, guint *feature_index);
function pango_ot_info_find_feature(info, table_type, feature_tag,&
& script_index, language_index, feature_index) bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_ot_info_find_feature
  type(c_ptr), value :: info
  integer(c_int), value :: table_type
  integer(c_int32_t), value :: feature_tag
  integer(c_int), value :: script_index
  integer(c_int), value :: language_index
  type(c_ptr), value :: feature_index
end function

! PANGO_DEPRECATED
!PangoOTTag *pango_ot_info_list_scripts (PangoOTInfo *info, PangoOTTableType table_type);
function pango_ot_info_list_scripts(info, table_type) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_ot_info_list_scripts
  type(c_ptr), value :: info
  integer(c_int), value :: table_type
end function

! PANGO_DEPRECATED
!PangoOTTag *pango_ot_info_list_languages (PangoOTInfo *info, PangoOTTableType table_type, guint script_index, PangoOTTag language_tag);
function pango_ot_info_list_languages(info, table_type, script_index,&
& language_tag) bind(c)
  import :: c_ptr, c_int, c_int32_t
  implicit none
  type(c_ptr) :: pango_ot_info_list_languages
  type(c_ptr), value :: info
  integer(c_int), value :: table_type
  integer(c_int), value :: script_index
  integer(c_int32_t), value :: language_tag
end function

! PANGO_DEPRECATED
!PangoOTTag *pango_ot_info_list_features (PangoOTInfo *info, PangoOTTableType table_type, PangoOTTag tag, guint script_index, guint language_index);
function pango_ot_info_list_features(info, table_type, tag, script_index,&
& language_index) bind(c)
  import :: c_ptr, c_int, c_int32_t
  implicit none
  type(c_ptr) :: pango_ot_info_list_features
  type(c_ptr), value :: info
  integer(c_int), value :: table_type
  integer(c_int32_t), value :: tag
  integer(c_int), value :: script_index
  integer(c_int), value :: language_index
end function

! PANGO_DEPRECATED
!GType pango_ot_buffer_get_type (void) ;
function pango_ot_buffer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_ot_buffer_get_type
end function

! PANGO_DEPRECATED
!PangoOTBuffer *pango_ot_buffer_new (PangoFcFont *font);
function pango_ot_buffer_new(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ot_buffer_new
  type(c_ptr), value :: font
end function

! PANGO_DEPRECATED
!void pango_ot_buffer_destroy (PangoOTBuffer *buffer);
subroutine pango_ot_buffer_destroy(buffer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: buffer
end subroutine

! PANGO_DEPRECATED
!void pango_ot_buffer_clear (PangoOTBuffer *buffer);
subroutine pango_ot_buffer_clear(buffer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: buffer
end subroutine

! PANGO_DEPRECATED
!void pango_ot_buffer_set_rtl (PangoOTBuffer *buffer, gboolean rtl);
subroutine pango_ot_buffer_set_rtl(buffer, rtl) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: buffer
  integer(c_int), value :: rtl
end subroutine

! PANGO_DEPRECATED
!void pango_ot_buffer_add_glyph (PangoOTBuffer *buffer, guint glyph, guint properties, guint cluster);
subroutine pango_ot_buffer_add_glyph(buffer, glyph, properties, cluster)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: buffer
  integer(c_int), value :: glyph
  integer(c_int), value :: properties
  integer(c_int), value :: cluster
end subroutine

! PANGO_DEPRECATED
!void pango_ot_buffer_get_glyphs (const PangoOTBuffer *buffer, PangoOTGlyph **glyphs, int *n_glyphs);
subroutine pango_ot_buffer_get_glyphs(buffer, glyphs, n_glyphs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: buffer
  type(c_ptr), value :: glyphs
  type(c_ptr), value :: n_glyphs
end subroutine

! PANGO_DEPRECATED
!void pango_ot_buffer_output (const PangoOTBuffer *buffer, PangoGlyphString *glyphs);
subroutine pango_ot_buffer_output(buffer, glyphs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: buffer
  type(c_ptr), value :: glyphs
end subroutine

! PANGO_DEPRECATED
!void pango_ot_buffer_set_zero_width_marks (PangoOTBuffer *buffer, gboolean zero_width_marks);
subroutine pango_ot_buffer_set_zero_width_marks(buffer, zero_width_marks)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: buffer
  integer(c_int), value :: zero_width_marks
end subroutine

! PANGO_DEPRECATED
!const PangoOTRuleset *pango_ot_ruleset_get_for_description (PangoOTInfo *info, const PangoOTRulesetDescription *desc);
function pango_ot_ruleset_get_for_description(info, desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ot_ruleset_get_for_description
  type(c_ptr), value :: info
  type(c_ptr), value :: desc
end function

! PANGO_DEPRECATED
!PangoOTRuleset *pango_ot_ruleset_new (PangoOTInfo *info);
function pango_ot_ruleset_new(info) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ot_ruleset_new
  type(c_ptr), value :: info
end function

! PANGO_DEPRECATED
!PangoOTRuleset *pango_ot_ruleset_new_for (PangoOTInfo *info, PangoScript script, PangoLanguage *language);
function pango_ot_ruleset_new_for(info, script, language) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_ot_ruleset_new_for
  type(c_ptr), value :: info
  integer(c_int), value :: script
  type(c_ptr), value :: language
end function

! PANGO_DEPRECATED
!PangoOTRuleset *pango_ot_ruleset_new_from_description (PangoOTInfo *info, const PangoOTRulesetDescription *desc);
function pango_ot_ruleset_new_from_description(info, desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ot_ruleset_new_from_description
  type(c_ptr), value :: info
  type(c_ptr), value :: desc
end function

! PANGO_DEPRECATED
!void pango_ot_ruleset_add_feature (PangoOTRuleset *ruleset, PangoOTTableType table_type, guint feature_index, gulong property_bit);
subroutine pango_ot_ruleset_add_feature(ruleset, table_type, feature_index,&
& property_bit) bind(c)
  import :: c_ptr, c_int, c_long
  implicit none
  type(c_ptr), value :: ruleset
  integer(c_int), value :: table_type
  integer(c_int), value :: feature_index
  integer(c_long), value :: property_bit
end subroutine

! PANGO_DEPRECATED
!gboolean pango_ot_ruleset_maybe_add_feature (PangoOTRuleset *ruleset, PangoOTTableType table_type, PangoOTTag feature_tag, gulong property_bit);
function pango_ot_ruleset_maybe_add_feature(ruleset, table_type, feature_tag,&
& property_bit) bind(c)
  import :: c_int, c_ptr, c_int32_t, c_long
  implicit none
  integer(c_int) :: pango_ot_ruleset_maybe_add_feature
  type(c_ptr), value :: ruleset
  integer(c_int), value :: table_type
  integer(c_int32_t), value :: feature_tag
  integer(c_long), value :: property_bit
end function

! PANGO_DEPRECATED
!guint pango_ot_ruleset_maybe_add_features (PangoOTRuleset *ruleset, PangoOTTableType table_type, const PangoOTFeatureMap *features, guint n_features);
function pango_ot_ruleset_maybe_add_features(ruleset, table_type, features,&
& n_features) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_ot_ruleset_maybe_add_features
  type(c_ptr), value :: ruleset
  integer(c_int), value :: table_type
  type(c_ptr), value :: features
  integer(c_int), value :: n_features
end function

! PANGO_DEPRECATED
!guint pango_ot_ruleset_get_feature_count (const PangoOTRuleset *ruleset, guint *n_gsub_features, guint *n_gpos_features);
function pango_ot_ruleset_get_feature_count(ruleset, n_gsub_features,&
& n_gpos_features) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_ot_ruleset_get_feature_count
  type(c_ptr), value :: ruleset
  type(c_ptr), value :: n_gsub_features
  type(c_ptr), value :: n_gpos_features
end function

! PANGO_DEPRECATED
!void pango_ot_ruleset_substitute (const PangoOTRuleset *ruleset, PangoOTBuffer *buffer);
subroutine pango_ot_ruleset_substitute(ruleset, buffer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: ruleset
  type(c_ptr), value :: buffer
end subroutine

! PANGO_DEPRECATED
!void pango_ot_ruleset_position (const PangoOTRuleset *ruleset, PangoOTBuffer *buffer);
subroutine pango_ot_ruleset_position(ruleset, buffer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: ruleset
  type(c_ptr), value :: buffer
end subroutine

! PANGO_DEPRECATED
!PangoScript pango_ot_tag_to_script (PangoOTTag script_tag) ;
function pango_ot_tag_to_script(script_tag) bind(c)
  import :: c_int, c_int32_t
  implicit none
  integer(c_int) :: pango_ot_tag_to_script
  integer(c_int32_t), value :: script_tag
end function

! PANGO_DEPRECATED
!PangoOTTag pango_ot_tag_from_script (PangoScript script) ;
function pango_ot_tag_from_script(script) bind(c)
  import :: c_int32_t, c_int
  implicit none
  integer(c_int32_t) :: pango_ot_tag_from_script
  integer(c_int), value :: script
end function

! PANGO_DEPRECATED
!PangoLanguage *pango_ot_tag_to_language (PangoOTTag language_tag) ;
function pango_ot_tag_to_language(language_tag) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr) :: pango_ot_tag_to_language
  integer(c_int32_t), value :: language_tag
end function

! PANGO_DEPRECATED
!PangoOTTag pango_ot_tag_from_language (PangoLanguage *language) ;
function pango_ot_tag_from_language(language) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: pango_ot_tag_from_language
  type(c_ptr), value :: language
end function

! PANGO_DEPRECATED
!GType pango_ot_ruleset_description_get_type (void) ;
function pango_ot_ruleset_description_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_ot_ruleset_description_get_type
end function

! PANGO_DEPRECATED
!guint pango_ot_ruleset_description_hash (const PangoOTRulesetDescription *desc) ;
function pango_ot_ruleset_description_hash(desc) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_ot_ruleset_description_hash
  type(c_ptr), value :: desc
end function

! PANGO_DEPRECATED
!gboolean pango_ot_ruleset_description_equal (const PangoOTRulesetDescription *desc1, const PangoOTRulesetDescription *desc2) ;
function pango_ot_ruleset_description_equal(desc1, desc2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: pango_ot_ruleset_description_equal
  type(c_ptr), value :: desc1
  type(c_ptr), value :: desc2
end function

! PANGO_DEPRECATED
!PangoOTRulesetDescription *pango_ot_ruleset_description_copy (const PangoOTRulesetDescription *desc);
function pango_ot_ruleset_description_copy(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_ot_ruleset_description_copy
  type(c_ptr), value :: desc
end function

! PANGO_DEPRECATED
!void pango_ot_ruleset_description_free (PangoOTRulesetDescription *desc);
subroutine pango_ot_ruleset_description_free(desc) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: desc
end subroutine

!--------------------------------------------------
! /usr/include/pango-1.0/pango/pangoxft.h
!--------------------------------------------------
! PANGO_AVAILABLE_IN_1_2
!PangoFontMap *pango_xft_get_font_map (Display *display, int screen);
function pango_xft_get_font_map(display, screen) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_xft_get_font_map
  type(c_ptr), value :: display
  integer(c_int), value :: screen
end function

! PANGO_DEPRECATED
!PangoContext *pango_xft_get_context (Display *display, int screen);
function pango_xft_get_context(display, screen) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: pango_xft_get_context
  type(c_ptr), value :: display
  integer(c_int), value :: screen
end function

! PANGO_AVAILABLE_IN_1_2
!void pango_xft_shutdown_display (Display *display, int screen);
subroutine pango_xft_shutdown_display(display, screen) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: display
  integer(c_int), value :: screen
end subroutine

! PANGO_DEPRECATED_IN_1_48_FOR(pango_fc_font_map_set_default_substitute)
!void pango_xft_set_default_substitute (Display *display, int screen, PangoXftSubstituteFunc func, gpointer data, GDestroyNotify notify);
subroutine pango_xft_set_default_substitute(display, screen, func, data,&
& notify) bind(c)
  import :: c_ptr, c_int, c_funptr
  implicit none
  type(c_ptr), value :: display
  integer(c_int), value :: screen
  type(c_funptr), value :: func
  type(c_ptr), value :: data
  type(c_funptr), value :: notify
end subroutine

! PANGO_DEPRECATED_IN_1_48_FOR(pango_fc_font_map_substitute_changed)
!void pango_xft_substitute_changed (Display *display, int screen);
subroutine pango_xft_substitute_changed(display, screen) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: display
  integer(c_int), value :: screen
end subroutine

! PANGO_AVAILABLE_IN_ALL
!GType pango_xft_font_map_get_type (void) ;
function pango_xft_font_map_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_xft_font_map_get_type
end function

! PANGO_AVAILABLE_IN_ALL
!GType pango_xft_font_get_type (void) ;
function pango_xft_font_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: pango_xft_font_get_type
end function

! PANGO_DEPRECATED
!XftFont * pango_xft_font_get_font (PangoFont *font);
function pango_xft_font_get_font(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_xft_font_get_font
  type(c_ptr), value :: font
end function

! PANGO_DEPRECATED
!Display * pango_xft_font_get_display (PangoFont *font);
function pango_xft_font_get_display(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_xft_font_get_display
  type(c_ptr), value :: font
end function

! PANGO_DEPRECATED_FOR(pango_fc_font_lock_face)
!FT_Face pango_xft_font_lock_face (PangoFont *font);
function pango_xft_font_lock_face(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: pango_xft_font_lock_face
  type(c_ptr), value :: font
end function

! PANGO_DEPRECATED_FOR(pango_fc_font_unlock_face)
!void pango_xft_font_unlock_face (PangoFont *font);
subroutine pango_xft_font_unlock_face(font) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: font
end subroutine

! PANGO_DEPRECATED_FOR(pango_fc_font_get_glyph)
!guint pango_xft_font_get_glyph (PangoFont *font, gunichar wc);
function pango_xft_font_get_glyph(font, wc) bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_xft_font_get_glyph
  type(c_ptr), value :: font
  integer(c_int32_t), value :: wc
end function

! PANGO_DEPRECATED_FOR(pango_fc_font_has_char)
!gboolean pango_xft_font_has_char (PangoFont *font, gunichar wc);
function pango_xft_font_has_char(font, wc) bind(c)
  import :: c_int, c_ptr, c_int32_t
  implicit none
  integer(c_int) :: pango_xft_font_has_char
  type(c_ptr), value :: font
  integer(c_int32_t), value :: wc
end function

! PANGO_DEPRECATED_FOR(PANGO_GET_UNKNOWN_GLYPH)
!PangoGlyph pango_xft_font_get_unknown_glyph (PangoFont *font, gunichar wc);
function pango_xft_font_get_unknown_glyph(font, wc) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: pango_xft_font_get_unknown_glyph
  type(c_ptr), value :: font
  integer(c_int32_t), value :: wc
end function

end interface
end module pango
