! 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 gdk_pixbuf
use, intrinsic :: iso_c_binding
implicit none
interface

!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-autocleanups.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h
!--------------------------------------------------
! GDK_PIXBUF_AVAILABLE_IN_ALL
!GType gdk_pixbuf_simple_anim_get_type (void) ;
function gdk_pixbuf_simple_anim_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_pixbuf_simple_anim_get_type
end function

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

! GDK_PIXBUF_AVAILABLE_IN_2_8
!GdkPixbufSimpleAnim *gdk_pixbuf_simple_anim_new (gint width, gint height, gfloat rate);
function gdk_pixbuf_simple_anim_new(width, height, rate) bind(c)
  import :: c_ptr, c_int, c_float
  implicit none
  type(c_ptr) :: gdk_pixbuf_simple_anim_new
  integer(c_int), value :: width
  integer(c_int), value :: height
  real(c_float), value :: rate
end function

! GDK_PIXBUF_AVAILABLE_IN_2_8
!void gdk_pixbuf_simple_anim_add_frame (GdkPixbufSimpleAnim *animation, GdkPixbuf *pixbuf);
subroutine gdk_pixbuf_simple_anim_add_frame(animation, pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: animation
  type(c_ptr), value :: pixbuf
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_simple_anim_set_loop (GdkPixbufSimpleAnim *animation, gboolean loop);
subroutine gdk_pixbuf_simple_anim_set_loop(animation, loop) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: animation
  integer(c_int), value :: loop
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_simple_anim_get_loop (GdkPixbufSimpleAnim *animation);
function gdk_pixbuf_simple_anim_get_loop(animation) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_simple_anim_get_loop
  type(c_ptr), value :: animation
end function

!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h
!--------------------------------------------------
! GDK_PIXBUF_AVAILABLE_IN_ALL
!GType gdk_pixbuf_alpha_mode_get_type (void) ;
function gdk_pixbuf_alpha_mode_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_pixbuf_alpha_mode_get_type
end function

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

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

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

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

!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h
!--------------------------------------------------
! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_scale (const GdkPixbuf *src, GdkPixbuf *dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, GdkInterpType interp_type);
subroutine gdk_pixbuf_scale(src, dest, dest_x, dest_y, dest_width, dest_height,&
& offset_x, offset_y, scale_x, scale_y, interp_type) bind(c)
  import :: c_ptr, c_int, c_double
  implicit none
  type(c_ptr), value :: src
  type(c_ptr), value :: dest
  integer(c_int), value :: dest_x
  integer(c_int), value :: dest_y
  integer(c_int), value :: dest_width
  integer(c_int), value :: dest_height
  real(c_double), value :: offset_x
  real(c_double), value :: offset_y
  real(c_double), value :: scale_x
  real(c_double), value :: scale_y
  integer(c_int), value :: interp_type
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_composite (const GdkPixbuf *src, GdkPixbuf *dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, GdkInterpType interp_type, int overall_alpha);
subroutine gdk_pixbuf_composite(src, dest, dest_x, dest_y, dest_width,&
& dest_height, offset_x, offset_y, scale_x, scale_y, interp_type,&
& overall_alpha) bind(c)
  import :: c_ptr, c_int, c_double
  implicit none
  type(c_ptr), value :: src
  type(c_ptr), value :: dest
  integer(c_int), value :: dest_x
  integer(c_int), value :: dest_y
  integer(c_int), value :: dest_width
  integer(c_int), value :: dest_height
  real(c_double), value :: offset_x
  real(c_double), value :: offset_y
  real(c_double), value :: scale_x
  real(c_double), value :: scale_y
  integer(c_int), value :: interp_type
  integer(c_int), value :: overall_alpha
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_composite_color (const GdkPixbuf *src, GdkPixbuf *dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, GdkInterpType interp_type, int overall_alpha, int check_x, int check_y, int check_size, guint32 color1, guint32 color2);
subroutine gdk_pixbuf_composite_color(src, dest, dest_x, dest_y, dest_width,&
& dest_height, offset_x, offset_y, scale_x, scale_y, interp_type,&
& overall_alpha, check_x, check_y, check_size, color1, color2) bind(c)
  import :: c_ptr, c_int, c_double, c_int32_t
  implicit none
  type(c_ptr), value :: src
  type(c_ptr), value :: dest
  integer(c_int), value :: dest_x
  integer(c_int), value :: dest_y
  integer(c_int), value :: dest_width
  integer(c_int), value :: dest_height
  real(c_double), value :: offset_x
  real(c_double), value :: offset_y
  real(c_double), value :: scale_x
  real(c_double), value :: scale_y
  integer(c_int), value :: interp_type
  integer(c_int), value :: overall_alpha
  integer(c_int), value :: check_x
  integer(c_int), value :: check_y
  integer(c_int), value :: check_size
  integer(c_int32_t), value :: color1
  integer(c_int32_t), value :: color2
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_scale_simple (const GdkPixbuf *src, int dest_width, int dest_height, GdkInterpType interp_type);
function gdk_pixbuf_scale_simple(src, dest_width, dest_height, interp_type)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_scale_simple
  type(c_ptr), value :: src
  integer(c_int), value :: dest_width
  integer(c_int), value :: dest_height
  integer(c_int), value :: interp_type
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_composite_color_simple (const GdkPixbuf *src, int dest_width, int dest_height, GdkInterpType interp_type, int overall_alpha, int check_size, guint32 color1, guint32 color2);
function gdk_pixbuf_composite_color_simple(src, dest_width, dest_height,&
& interp_type, overall_alpha, check_size, color1, color2) bind(c)
  import :: c_ptr, c_int, c_int32_t
  implicit none
  type(c_ptr) :: gdk_pixbuf_composite_color_simple
  type(c_ptr), value :: src
  integer(c_int), value :: dest_width
  integer(c_int), value :: dest_height
  integer(c_int), value :: interp_type
  integer(c_int), value :: overall_alpha
  integer(c_int), value :: check_size
  integer(c_int32_t), value :: color1
  integer(c_int32_t), value :: color2
end function

! GDK_PIXBUF_AVAILABLE_IN_2_6
!GdkPixbuf *gdk_pixbuf_rotate_simple (const GdkPixbuf *src, GdkPixbufRotation angle);
function gdk_pixbuf_rotate_simple(src, angle) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_rotate_simple
  type(c_ptr), value :: src
  integer(c_int), value :: angle
end function

! GDK_PIXBUF_AVAILABLE_IN_2_6
!GdkPixbuf *gdk_pixbuf_flip (const GdkPixbuf *src, gboolean horizontal);
function gdk_pixbuf_flip(src, horizontal) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_flip
  type(c_ptr), value :: src
  integer(c_int), value :: horizontal
end function

!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h
!--------------------------------------------------
! GDK_PIXBUF_AVAILABLE_IN_ALL
!GType gdk_pixbuf_loader_get_type (void) ;
function gdk_pixbuf_loader_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_pixbuf_loader_get_type
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbufLoader * gdk_pixbuf_loader_new (void);
function gdk_pixbuf_loader_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_loader_new
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbufLoader * gdk_pixbuf_loader_new_with_type (const char *image_type, GError **error);
function gdk_pixbuf_loader_new_with_type(image_type, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_loader_new_with_type
  character(kind=c_char), dimension(*) :: image_type
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_4
!GdkPixbufLoader * gdk_pixbuf_loader_new_with_mime_type (const char *mime_type, GError **error);
function gdk_pixbuf_loader_new_with_mime_type(mime_type, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_loader_new_with_mime_type
  character(kind=c_char), dimension(*) :: mime_type
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_2
!void gdk_pixbuf_loader_set_size (GdkPixbufLoader *loader, int width, int height);
subroutine gdk_pixbuf_loader_set_size(loader, width, height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: loader
  integer(c_int), value :: width
  integer(c_int), value :: height
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader, const guchar *buf, gsize count, GError **error);
function gdk_pixbuf_loader_write(loader, buf, count, error) bind(c)
  import :: c_int, c_ptr, c_char, c_size_t
  implicit none
  integer(c_int) :: gdk_pixbuf_loader_write
  type(c_ptr), value :: loader
  character(kind=c_char), dimension(*) :: buf
  integer(c_size_t), value :: count
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_30
!gboolean gdk_pixbuf_loader_write_bytes (GdkPixbufLoader *loader, GBytes *buffer, GError **error);
function gdk_pixbuf_loader_write_bytes(loader, buffer, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_loader_write_bytes
  type(c_ptr), value :: loader
  type(c_ptr), value :: buffer
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf * gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader);
function gdk_pixbuf_loader_get_pixbuf(loader) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_loader_get_pixbuf
  type(c_ptr), value :: loader
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbufAnimation * gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader);
function gdk_pixbuf_loader_get_animation(loader) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_loader_get_animation
  type(c_ptr), value :: loader
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_loader_close (GdkPixbufLoader *loader, GError **error);
function gdk_pixbuf_loader_close(loader, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_loader_close
  type(c_ptr), value :: loader
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_2
!GdkPixbufFormat *gdk_pixbuf_loader_get_format (GdkPixbufLoader *loader);
function gdk_pixbuf_loader_get_format(loader) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_loader_get_format
  type(c_ptr), value :: loader
end function

!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-marshal.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-macros.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h
!--------------------------------------------------
! GDK_PIXBUF_AVAILABLE_IN_2_40
!gboolean gdk_pixbuf_init_modules (const char *path, GError **error);
function gdk_pixbuf_init_modules(path, error) bind(c)
  import :: c_int, c_char, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_init_modules
  character(kind=c_char), dimension(*) :: path
  type(c_ptr), value :: error
end function

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

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GSList *gdk_pixbuf_get_formats (void);
function gdk_pixbuf_get_formats() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_formats
end function

! GDK_PIXBUF_AVAILABLE_IN_2_2
!gchar *gdk_pixbuf_format_get_name (GdkPixbufFormat *format);
function gdk_pixbuf_format_get_name(format) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_format_get_name
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_2_2
!gchar *gdk_pixbuf_format_get_description (GdkPixbufFormat *format);
function gdk_pixbuf_format_get_description(format) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_format_get_description
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_2_2
!gchar **gdk_pixbuf_format_get_mime_types (GdkPixbufFormat *format);
function gdk_pixbuf_format_get_mime_types(format) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_format_get_mime_types
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_2_2
!gchar **gdk_pixbuf_format_get_extensions (GdkPixbufFormat *format);
function gdk_pixbuf_format_get_extensions(format) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_format_get_extensions
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_2_36
!gboolean gdk_pixbuf_format_is_save_option_supported (GdkPixbufFormat *format, const gchar *option_key);
function gdk_pixbuf_format_is_save_option_supported(format, option_key) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_pixbuf_format_is_save_option_supported
  type(c_ptr), value :: format
  character(kind=c_char), dimension(*) :: option_key
end function

! GDK_PIXBUF_AVAILABLE_IN_2_2
!gboolean gdk_pixbuf_format_is_writable (GdkPixbufFormat *format);
function gdk_pixbuf_format_is_writable(format) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_format_is_writable
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_2_6
!gboolean gdk_pixbuf_format_is_scalable (GdkPixbufFormat *format);
function gdk_pixbuf_format_is_scalable(format) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_format_is_scalable
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_2_6
!gboolean gdk_pixbuf_format_is_disabled (GdkPixbufFormat *format);
function gdk_pixbuf_format_is_disabled(format) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_format_is_disabled
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_2_6
!void gdk_pixbuf_format_set_disabled (GdkPixbufFormat *format, gboolean disabled);
subroutine gdk_pixbuf_format_set_disabled(format, disabled) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: format
  integer(c_int), value :: disabled
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_2_6
!gchar *gdk_pixbuf_format_get_license (GdkPixbufFormat *format);
function gdk_pixbuf_format_get_license(format) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_format_get_license
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_2_4
!GdkPixbufFormat *gdk_pixbuf_get_file_info (const gchar *filename, gint *width, gint *height);
function gdk_pixbuf_get_file_info(filename, width, height) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_file_info
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: width
  type(c_ptr), value :: height
end function

! GDK_PIXBUF_AVAILABLE_IN_2_32
!void gdk_pixbuf_get_file_info_async (const gchar *filename, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_pixbuf_get_file_info_async(filename, cancellable, callback,&
& user_data) bind(c)
  import :: c_char, c_ptr, c_funptr
  implicit none
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_2_32
!GdkPixbufFormat *gdk_pixbuf_get_file_info_finish (GAsyncResult *async_result, gint *width, gint *height, GError **error);
function gdk_pixbuf_get_file_info_finish(async_result, width, height, error)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_file_info_finish
  type(c_ptr), value :: async_result
  type(c_ptr), value :: width
  type(c_ptr), value :: height
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbufFormat *gdk_pixbuf_format_copy (const GdkPixbufFormat *format);
function gdk_pixbuf_format_copy(format) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_format_copy
  type(c_ptr), value :: format
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_format_free (GdkPixbufFormat *format);
subroutine gdk_pixbuf_format_free(format) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: format
end subroutine

!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h
!--------------------------------------------------
! GDK_PIXBUF_AVAILABLE_IN_ALL
!GQuark gdk_pixbuf_error_quark (void);
function gdk_pixbuf_error_quark() bind(c)
  import :: c_int32_t
  implicit none
  integer(c_int32_t) :: gdk_pixbuf_error_quark
end function

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

! GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(g_object_ref)
!GdkPixbuf *gdk_pixbuf_ref (GdkPixbuf *pixbuf);
function gdk_pixbuf_ref(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_ref
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(g_object_unref)
!void gdk_pixbuf_unref (GdkPixbuf *pixbuf);
subroutine gdk_pixbuf_unref(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: pixbuf
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkColorspace gdk_pixbuf_get_colorspace (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_colorspace(pixbuf) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_get_colorspace
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!int gdk_pixbuf_get_n_channels (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_n_channels(pixbuf) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_get_n_channels
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_get_has_alpha (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_has_alpha(pixbuf) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_get_has_alpha
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!int gdk_pixbuf_get_bits_per_sample (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_bits_per_sample(pixbuf) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_get_bits_per_sample
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!guchar *gdk_pixbuf_get_pixels (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_pixels(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_pixels
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!int gdk_pixbuf_get_width (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_width(pixbuf) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_get_width
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!int gdk_pixbuf_get_height (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_height(pixbuf) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_get_height
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!int gdk_pixbuf_get_rowstride (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_rowstride(pixbuf) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_get_rowstride
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_2_26
!gsize gdk_pixbuf_get_byte_length (const GdkPixbuf *pixbuf);
function gdk_pixbuf_get_byte_length(pixbuf) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gdk_pixbuf_get_byte_length
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_2_26
!guchar *gdk_pixbuf_get_pixels_with_length (const GdkPixbuf *pixbuf, guint *length);
function gdk_pixbuf_get_pixels_with_length(pixbuf, length) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_pixels_with_length
  type(c_ptr), value :: pixbuf
  type(c_ptr), value :: length
end function

! GDK_PIXBUF_AVAILABLE_IN_2_32
!const guint8* gdk_pixbuf_read_pixels (const GdkPixbuf *pixbuf);
function gdk_pixbuf_read_pixels(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_read_pixels
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_2_32
!GBytes * gdk_pixbuf_read_pixel_bytes (const GdkPixbuf *pixbuf);
function gdk_pixbuf_read_pixel_bytes(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_read_pixel_bytes
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_new (GdkColorspace colorspace, gboolean has_alpha, int bits_per_sample, int width, int height);
function gdk_pixbuf_new(colorspace, has_alpha, bits_per_sample, width, height)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new
  integer(c_int), value :: colorspace
  integer(c_int), value :: has_alpha
  integer(c_int), value :: bits_per_sample
  integer(c_int), value :: width
  integer(c_int), value :: height
end function

! GDK_PIXBUF_AVAILABLE_IN_2_36
!gint gdk_pixbuf_calculate_rowstride (GdkColorspace colorspace, gboolean has_alpha, int bits_per_sample, int width, int height);
function gdk_pixbuf_calculate_rowstride(colorspace, has_alpha, bits_per_sample,&
& width, height) bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: gdk_pixbuf_calculate_rowstride
  integer(c_int), value :: colorspace
  integer(c_int), value :: has_alpha
  integer(c_int), value :: bits_per_sample
  integer(c_int), value :: width
  integer(c_int), value :: height
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_copy (const GdkPixbuf *pixbuf);
function gdk_pixbuf_copy(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_copy
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_new_subpixbuf (GdkPixbuf *src_pixbuf, int src_x, int src_y, int width, int height);
function gdk_pixbuf_new_subpixbuf(src_pixbuf, src_x, src_y, width, height)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_subpixbuf
  type(c_ptr), value :: src_pixbuf
  integer(c_int), value :: src_x
  integer(c_int), value :: src_y
  integer(c_int), value :: width
  integer(c_int), value :: height
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_new_from_file_utf8 (const char *filename, GError **error);
function gdk_pixbuf_new_from_file_utf8(filename, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_file_utf8
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_4
!GdkPixbuf *gdk_pixbuf_new_from_file_at_size_utf8 (const char *filename, int width, int height, GError **error);
function gdk_pixbuf_new_from_file_at_size_utf8(filename, width, height, error)&
& bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_file_at_size_utf8
  character(kind=c_char), dimension(*) :: filename
  integer(c_int), value :: width
  integer(c_int), value :: height
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_6
!GdkPixbuf *gdk_pixbuf_new_from_file_at_scale_utf8 (const char *filename, int width, int height, gboolean preserve_aspect_ratio, GError **error);
function gdk_pixbuf_new_from_file_at_scale_utf8(filename, width, height,&
& preserve_aspect_ratio, error) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_file_at_scale_utf8
  character(kind=c_char), dimension(*) :: filename
  integer(c_int), value :: width
  integer(c_int), value :: height
  integer(c_int), value :: preserve_aspect_ratio
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_new_from_file (const char *filename, GError **error);
function gdk_pixbuf_new_from_file(filename, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_file
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_4
!GdkPixbuf *gdk_pixbuf_new_from_file_at_size (const char *filename, int width, int height, GError **error);
function gdk_pixbuf_new_from_file_at_size(filename, width, height, error)&
& bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_file_at_size
  character(kind=c_char), dimension(*) :: filename
  integer(c_int), value :: width
  integer(c_int), value :: height
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_6
!GdkPixbuf *gdk_pixbuf_new_from_file_at_scale (const char *filename, int width, int height, gboolean preserve_aspect_ratio, GError **error);
function gdk_pixbuf_new_from_file_at_scale(filename, width, height,&
& preserve_aspect_ratio, error) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_file_at_scale
  character(kind=c_char), dimension(*) :: filename
  integer(c_int), value :: width
  integer(c_int), value :: height
  integer(c_int), value :: preserve_aspect_ratio
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_26
!GdkPixbuf *gdk_pixbuf_new_from_resource (const char *resource_path, GError **error);
function gdk_pixbuf_new_from_resource(resource_path, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_resource
  character(kind=c_char), dimension(*) :: resource_path
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_26
!GdkPixbuf *gdk_pixbuf_new_from_resource_at_scale (const char *resource_path, int width, int height, gboolean preserve_aspect_ratio, GError **error);
function gdk_pixbuf_new_from_resource_at_scale(resource_path, width, height,&
& preserve_aspect_ratio, error) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_resource_at_scale
  character(kind=c_char), dimension(*) :: resource_path
  integer(c_int), value :: width
  integer(c_int), value :: height
  integer(c_int), value :: preserve_aspect_ratio
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_new_from_data (const guchar *data, GdkColorspace colorspace, gboolean has_alpha, int bits_per_sample, int width, int height, int rowstride, GdkPixbufDestroyNotify destroy_fn, gpointer destroy_fn_data);
function gdk_pixbuf_new_from_data(data, colorspace, has_alpha, bits_per_sample,&
& width, height, rowstride, destroy_fn, destroy_fn_data) bind(c)
  import :: c_ptr, c_char, c_int, c_funptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_data
  character(kind=c_char), dimension(*) :: data
  integer(c_int), value :: colorspace
  integer(c_int), value :: has_alpha
  integer(c_int), value :: bits_per_sample
  integer(c_int), value :: width
  integer(c_int), value :: height
  integer(c_int), value :: rowstride
  type(c_funptr), value :: destroy_fn
  type(c_ptr), value :: destroy_fn_data
end function

! GDK_PIXBUF_AVAILABLE_IN_2_32
!GdkPixbuf *gdk_pixbuf_new_from_bytes (GBytes *data, GdkColorspace colorspace, gboolean has_alpha, int bits_per_sample, int width, int height, int rowstride);
function gdk_pixbuf_new_from_bytes(data, colorspace, has_alpha,&
& bits_per_sample, width, height, rowstride) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_bytes
  type(c_ptr), value :: data
  integer(c_int), value :: colorspace
  integer(c_int), value :: has_alpha
  integer(c_int), value :: bits_per_sample
  integer(c_int), value :: width
  integer(c_int), value :: height
  integer(c_int), value :: rowstride
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_new_from_xpm_data (const char **data);
function gdk_pixbuf_new_from_xpm_data(data) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_xpm_data
  type(c_ptr), dimension(*) :: data
end function

! GDK_PIXBUF_DEPRECATED_IN_2_32
!GdkPixbuf* gdk_pixbuf_new_from_inline (gint data_length, const guint8 *data, gboolean copy_pixels, GError **error);
function gdk_pixbuf_new_from_inline(data_length, data, copy_pixels, error)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_inline
  integer(c_int), value :: data_length
  type(c_ptr), value :: data
  integer(c_int), value :: copy_pixels
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_fill (GdkPixbuf *pixbuf, guint32 pixel);
subroutine gdk_pixbuf_fill(pixbuf, pixel) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr), value :: pixbuf
  integer(c_int32_t), value :: pixel
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_savev (GdkPixbuf *pixbuf, const char *filename, const char *type, char **option_keys, char **option_values, GError **error);
function gdk_pixbuf_savev(pixbuf, filename, type, option_keys, option_values,&
& error) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_pixbuf_savev
  type(c_ptr), value :: pixbuf
  character(kind=c_char), dimension(*) :: filename
  character(kind=c_char), dimension(*) :: type
  type(c_ptr), dimension(*) :: option_keys
  type(c_ptr), dimension(*) :: option_values
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_savev_utf8 (GdkPixbuf *pixbuf, const char *filename, const char *type, char **option_keys, char **option_values, GError **error);
function gdk_pixbuf_savev_utf8(pixbuf, filename, type, option_keys,&
& option_values, error) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_pixbuf_savev_utf8
  type(c_ptr), value :: pixbuf
  character(kind=c_char), dimension(*) :: filename
  character(kind=c_char), dimension(*) :: type
  type(c_ptr), dimension(*) :: option_keys
  type(c_ptr), dimension(*) :: option_values
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_4
!gboolean gdk_pixbuf_save_to_callbackv (GdkPixbuf *pixbuf, GdkPixbufSaveFunc save_func, gpointer user_data, const char *type, char **option_keys, char **option_values, GError **error);
function gdk_pixbuf_save_to_callbackv(pixbuf, save_func, user_data, type,&
& option_keys, option_values, error) bind(c)
  import :: c_int, c_ptr, c_funptr, c_char
  implicit none
  integer(c_int) :: gdk_pixbuf_save_to_callbackv
  type(c_ptr), value :: pixbuf
  type(c_funptr), value :: save_func
  type(c_ptr), value :: user_data
  character(kind=c_char), dimension(*) :: type
  type(c_ptr), dimension(*) :: option_keys
  type(c_ptr), dimension(*) :: option_values
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_4
!gboolean gdk_pixbuf_save_to_bufferv (GdkPixbuf *pixbuf, gchar **buffer, gsize *buffer_size, const char *type, char **option_keys, char **option_values, GError **error);
function gdk_pixbuf_save_to_bufferv(pixbuf, buffer, buffer_size, type,&
& option_keys, option_values, error) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_pixbuf_save_to_bufferv
  type(c_ptr), value :: pixbuf
  type(c_ptr), dimension(*) :: buffer
  type(c_ptr), value :: buffer_size
  character(kind=c_char), dimension(*) :: type
  type(c_ptr), dimension(*) :: option_keys
  type(c_ptr), dimension(*) :: option_values
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_14
!GdkPixbuf *gdk_pixbuf_new_from_stream (GInputStream *stream, GCancellable *cancellable, GError **error);
function gdk_pixbuf_new_from_stream(stream, cancellable, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_stream
  type(c_ptr), value :: stream
  type(c_ptr), value :: cancellable
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_new_from_stream_async (GInputStream *stream, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_pixbuf_new_from_stream_async(stream, cancellable, callback,&
& user_data) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: stream
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_new_from_stream_finish (GAsyncResult *async_result, GError **error);
function gdk_pixbuf_new_from_stream_finish(async_result, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_stream_finish
  type(c_ptr), value :: async_result
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_14
!GdkPixbuf *gdk_pixbuf_new_from_stream_at_scale (GInputStream *stream, gint width, gint height, gboolean preserve_aspect_ratio, GCancellable *cancellable, GError **error);
function gdk_pixbuf_new_from_stream_at_scale(stream, width, height,&
& preserve_aspect_ratio, cancellable, error) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_new_from_stream_at_scale
  type(c_ptr), value :: stream
  integer(c_int), value :: width
  integer(c_int), value :: height
  integer(c_int), value :: preserve_aspect_ratio
  type(c_ptr), value :: cancellable
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_new_from_stream_at_scale_async (GInputStream *stream, gint width, gint height, gboolean preserve_aspect_ratio, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_pixbuf_new_from_stream_at_scale_async(stream, width, height,&
& preserve_aspect_ratio, cancellable, callback, user_data) bind(c)
  import :: c_ptr, c_int, c_funptr
  implicit none
  type(c_ptr), value :: stream
  integer(c_int), value :: width
  integer(c_int), value :: height
  integer(c_int), value :: preserve_aspect_ratio
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_save_to_stream_finish (GAsyncResult *async_result, GError **error);
function gdk_pixbuf_save_to_stream_finish(async_result, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_save_to_stream_finish
  type(c_ptr), value :: async_result
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_36
!void gdk_pixbuf_save_to_streamv_async (GdkPixbuf *pixbuf, GOutputStream *stream, const gchar *type, gchar **option_keys, gchar **option_values, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_pixbuf_save_to_streamv_async(pixbuf, stream, type, option_keys,&
& option_values, cancellable, callback, user_data) bind(c)
  import :: c_ptr, c_char, c_funptr
  implicit none
  type(c_ptr), value :: pixbuf
  type(c_ptr), value :: stream
  character(kind=c_char), dimension(*) :: type
  type(c_ptr), dimension(*) :: option_keys
  type(c_ptr), dimension(*) :: option_values
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_2_36
!gboolean gdk_pixbuf_save_to_streamv (GdkPixbuf *pixbuf, GOutputStream *stream, const char *type, char **option_keys, char **option_values, GCancellable *cancellable, GError **error);
function gdk_pixbuf_save_to_streamv(pixbuf, stream, type, option_keys,&
& option_values, cancellable, error) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_pixbuf_save_to_streamv
  type(c_ptr), value :: pixbuf
  type(c_ptr), value :: stream
  character(kind=c_char), dimension(*) :: type
  type(c_ptr), dimension(*) :: option_keys
  type(c_ptr), dimension(*) :: option_values
  type(c_ptr), value :: cancellable
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_add_alpha (const GdkPixbuf *pixbuf, gboolean substitute_color, guchar r, guchar g, guchar b);
function gdk_pixbuf_add_alpha(pixbuf, substitute_color, r, g, b) bind(c)
  import :: c_ptr, c_int, c_int8_t
  implicit none
  type(c_ptr) :: gdk_pixbuf_add_alpha
  type(c_ptr), value :: pixbuf
  integer(c_int), value :: substitute_color
  integer(kind=c_int8_t), value :: r
  integer(kind=c_int8_t), value :: g
  integer(kind=c_int8_t), value :: b
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_copy_area (const GdkPixbuf *src_pixbuf, int src_x, int src_y, int width, int height, GdkPixbuf *dest_pixbuf, int dest_x, int dest_y);
subroutine gdk_pixbuf_copy_area(src_pixbuf, src_x, src_y, width, height,&
& dest_pixbuf, dest_x, dest_y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: src_pixbuf
  integer(c_int), value :: src_x
  integer(c_int), value :: src_y
  integer(c_int), value :: width
  integer(c_int), value :: height
  type(c_ptr), value :: dest_pixbuf
  integer(c_int), value :: dest_x
  integer(c_int), value :: dest_y
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!void gdk_pixbuf_saturate_and_pixelate (const GdkPixbuf *src, GdkPixbuf *dest, gfloat saturation, gboolean pixelate);
subroutine gdk_pixbuf_saturate_and_pixelate(src, dest, saturation, pixelate)&
& bind(c)
  import :: c_ptr, c_float, c_int
  implicit none
  type(c_ptr), value :: src
  type(c_ptr), value :: dest
  real(c_float), value :: saturation
  integer(c_int), value :: pixelate
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_2_12
!GdkPixbuf *gdk_pixbuf_apply_embedded_orientation (GdkPixbuf *src);
function gdk_pixbuf_apply_embedded_orientation(src) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_apply_embedded_orientation
  type(c_ptr), value :: src
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_set_option (GdkPixbuf *pixbuf, const gchar *key, const gchar *value);
function gdk_pixbuf_set_option(pixbuf, key, value) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_pixbuf_set_option
  type(c_ptr), value :: pixbuf
  character(kind=c_char), dimension(*) :: key
  character(kind=c_char), dimension(*) :: value
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!const gchar * gdk_pixbuf_get_option (GdkPixbuf *pixbuf, const gchar *key);
function gdk_pixbuf_get_option(pixbuf, key) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_option
  type(c_ptr), value :: pixbuf
  character(kind=c_char), dimension(*) :: key
end function

! GDK_PIXBUF_AVAILABLE_IN_2_36
!gboolean gdk_pixbuf_remove_option (GdkPixbuf *pixbuf, const gchar *key);
function gdk_pixbuf_remove_option(pixbuf, key) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_pixbuf_remove_option
  type(c_ptr), value :: pixbuf
  character(kind=c_char), dimension(*) :: key
end function

! GDK_PIXBUF_AVAILABLE_IN_2_32
!GHashTable * gdk_pixbuf_get_options (GdkPixbuf *pixbuf);
function gdk_pixbuf_get_options(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_options
  type(c_ptr), value :: pixbuf
end function

! GDK_PIXBUF_AVAILABLE_IN_2_36
!gboolean gdk_pixbuf_copy_options (GdkPixbuf *src_pixbuf, GdkPixbuf *dest_pixbuf);
function gdk_pixbuf_copy_options(src_pixbuf, dest_pixbuf) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_copy_options
  type(c_ptr), value :: src_pixbuf
  type(c_ptr), value :: dest_pixbuf
end function

!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixdata.h
!--------------------------------------------------
! GDK_PIXBUF_DEPRECATED_IN_2_32
!guint8* gdk_pixdata_serialize (const GdkPixdata *pixdata, guint *stream_length_p);
function gdk_pixdata_serialize(pixdata, stream_length_p) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixdata_serialize
  type(c_ptr), value :: pixdata
  type(c_ptr), value :: stream_length_p
end function

! GDK_PIXBUF_DEPRECATED_IN_2_32
!gboolean gdk_pixdata_deserialize (GdkPixdata *pixdata, guint stream_length, const guint8 *stream, GError **error);
function gdk_pixdata_deserialize(pixdata, stream_length, stream, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixdata_deserialize
  type(c_ptr), value :: pixdata
  integer(c_int), value :: stream_length
  type(c_ptr), value :: stream
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_DEPRECATED_IN_2_32
!gpointer gdk_pixdata_from_pixbuf (GdkPixdata *pixdata, const GdkPixbuf *pixbuf, gboolean use_rle);
function gdk_pixdata_from_pixbuf(pixdata, pixbuf, use_rle) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixdata_from_pixbuf
  type(c_ptr), value :: pixdata
  type(c_ptr), value :: pixbuf
  integer(c_int), value :: use_rle
end function

! GDK_PIXBUF_DEPRECATED_IN_2_32
!GdkPixbuf* gdk_pixbuf_from_pixdata (const GdkPixdata *pixdata, gboolean copy_pixels, GError **error);
function gdk_pixbuf_from_pixdata(pixdata, copy_pixels, error) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_from_pixdata
  type(c_ptr), value :: pixdata
  integer(c_int), value :: copy_pixels
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_DEPRECATED_IN_2_32
!GString* gdk_pixdata_to_csource (GdkPixdata *pixdata, const gchar *name, GdkPixdataDumpType dump_type);
function gdk_pixdata_to_csource(pixdata, name, dump_type) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr) :: gdk_pixdata_to_csource
  type(c_ptr), value :: pixdata
  character(kind=c_char), dimension(*) :: name
  integer(c_int), value :: dump_type
end function

!--------------------------------------------------
! /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h
!--------------------------------------------------
! GDK_PIXBUF_AVAILABLE_IN_ALL
!GType gdk_pixbuf_animation_get_type (void) ;
function gdk_pixbuf_animation_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_pixbuf_animation_get_type
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbufAnimation *gdk_pixbuf_animation_new_from_file_utf8 (const char *filename, GError **error);
function gdk_pixbuf_animation_new_from_file_utf8(filename, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_new_from_file_utf8
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbufAnimation *gdk_pixbuf_animation_new_from_file (const char *filename, GError **error);
function gdk_pixbuf_animation_new_from_file(filename, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_new_from_file
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_28
!GdkPixbufAnimation *gdk_pixbuf_animation_new_from_stream (GInputStream *stream, GCancellable *cancellable, GError **error);
function gdk_pixbuf_animation_new_from_stream(stream, cancellable, error)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_new_from_stream
  type(c_ptr), value :: stream
  type(c_ptr), value :: cancellable
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_28
!void gdk_pixbuf_animation_new_from_stream_async (GInputStream *stream, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_pixbuf_animation_new_from_stream_async(stream, cancellable,&
& callback, user_data) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: stream
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_2_28
!GdkPixbufAnimation *gdk_pixbuf_animation_new_from_stream_finish (GAsyncResult*async_result, GError **error);
function gdk_pixbuf_animation_new_from_stream_finish(async_result, error)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_new_from_stream_finish
  type(c_ptr), value :: async_result
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_AVAILABLE_IN_2_28
!GdkPixbufAnimation *gdk_pixbuf_animation_new_from_resource(const char *resource_path, GError **error);
function gdk_pixbuf_animation_new_from_resource(resource_path, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_new_from_resource
  character(kind=c_char), dimension(*) :: resource_path
  type(c_ptr), value :: error
end function

! GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(g_object_ref)
!GdkPixbufAnimation *gdk_pixbuf_animation_ref (GdkPixbufAnimation *animation);
function gdk_pixbuf_animation_ref(animation) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_ref
  type(c_ptr), value :: animation
end function

! GDK_PIXBUF_DEPRECATED_IN_2_0_FOR(g_object_unref)
!void gdk_pixbuf_animation_unref (GdkPixbufAnimation *animation);
subroutine gdk_pixbuf_animation_unref(animation) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: animation
end subroutine

! GDK_PIXBUF_AVAILABLE_IN_ALL
!int gdk_pixbuf_animation_get_width (GdkPixbufAnimation *animation);
function gdk_pixbuf_animation_get_width(animation) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_animation_get_width
  type(c_ptr), value :: animation
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!int gdk_pixbuf_animation_get_height (GdkPixbufAnimation *animation);
function gdk_pixbuf_animation_get_height(animation) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_animation_get_height
  type(c_ptr), value :: animation
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_animation_is_static_image (GdkPixbufAnimation *animation);
function gdk_pixbuf_animation_is_static_image(animation) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_animation_is_static_image
  type(c_ptr), value :: animation
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_animation_get_static_image (GdkPixbufAnimation *animation);
function gdk_pixbuf_animation_get_static_image(animation) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_get_static_image
  type(c_ptr), value :: animation
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbufAnimationIter *gdk_pixbuf_animation_get_iter (GdkPixbufAnimation *animation, const GTimeVal *start_time);
function gdk_pixbuf_animation_get_iter(animation, start_time) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_get_iter
  type(c_ptr), value :: animation
  type(c_ptr), value :: start_time
end function

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

! GDK_PIXBUF_AVAILABLE_IN_ALL
!int gdk_pixbuf_animation_iter_get_delay_time (GdkPixbufAnimationIter *iter);
function gdk_pixbuf_animation_iter_get_delay_time(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_animation_iter_get_delay_time
  type(c_ptr), value :: iter
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbuf *gdk_pixbuf_animation_iter_get_pixbuf (GdkPixbufAnimationIter *iter);
function gdk_pixbuf_animation_iter_get_pixbuf(iter) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_animation_iter_get_pixbuf
  type(c_ptr), value :: iter
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_animation_iter_on_currently_loading_frame (GdkPixbufAnimationIter *iter);
function gdk_pixbuf_animation_iter_on_currently_loading_frame(iter) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_animation_iter_on_currently_loading_frame
  type(c_ptr), value :: iter
end function

! GDK_PIXBUF_AVAILABLE_IN_ALL
!gboolean gdk_pixbuf_animation_iter_advance (GdkPixbufAnimationIter *iter, const GTimeVal *current_time);
function gdk_pixbuf_animation_iter_advance(iter, current_time) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pixbuf_animation_iter_advance
  type(c_ptr), value :: iter
  type(c_ptr), value :: current_time
end function

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

! GDK_PIXBUF_AVAILABLE_IN_ALL
!GdkPixbufAnimation* gdk_pixbuf_non_anim_new (GdkPixbuf *pixbuf);
function gdk_pixbuf_non_anim_new(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_non_anim_new
  type(c_ptr), value :: pixbuf
end function

end interface
end module gdk_pixbuf
