sig
  type pixbuf = [ `pixbuf ] Gobject.obj
  type colorspace = [ `RGB ]
  type alpha_mode = [ `BILEVEL | `FULL ]
  type interpolation = [ `BILINEAR | `HYPER | `NEAREST | `TILES ]
  type gdkpixbuferror =
      ERROR_CORRUPT_IMAGE
    | ERROR_INSUFFICIENT_MEMORY
    | ERROR_BAD_OPTION
    | ERROR_UNKNOWN_TYPE
    | ERROR_UNSUPPORTED_OPERATION
    | ERROR_FAILED
  exception GdkPixbufError of GdkPixbuf.gdkpixbuferror * string
  external set_marshal_use_rle : bool -> unit
    = "ml_gdk_pixbuf_set_marshal_use_rle"
  val create :
    width:int ->
    height:int ->
    ?bits:int ->
    ?colorspace:GdkPixbuf.colorspace ->
    ?has_alpha:bool -> unit -> GdkPixbuf.pixbuf
  val cast : 'Gobject.obj -> GdkPixbuf.pixbuf
  external copy : GdkPixbuf.pixbuf -> GdkPixbuf.pixbuf = "ml_gdk_pixbuf_copy"
  external subpixbuf :
    GdkPixbuf.pixbuf ->
    src_x:int -> src_y:int -> width:int -> height:int -> GdkPixbuf.pixbuf
    = "ml_gdk_pixbuf_new_subpixbuf"
  external from_file : string -> GdkPixbuf.pixbuf
    = "ml_gdk_pixbuf_new_from_file"
  external get_file_info : string -> string * int * int
    = "ml_gdk_pixbuf_get_file_info"
  external from_file_at_size :
    string -> width:int -> height:int -> GdkPixbuf.pixbuf
    = "ml_gdk_pixbuf_new_from_file_at_size"
  external from_xpm_data : string array -> GdkPixbuf.pixbuf
    = "ml_gdk_pixbuf_new_from_xpm_data"
  val from_data :
    width:int ->
    height:int ->
    ?bits:int ->
    ?rowstride:int -> ?has_alpha:bool -> Gpointer.region -> GdkPixbuf.pixbuf
  val get_from_drawable :
    dest:GdkPixbuf.pixbuf ->
    ?dest_x:int ->
    ?dest_y:int ->
    ?width:int ->
    ?height:int ->
    ?src_x:int ->
    ?src_y:int ->
    ?colormap:Gdk.colormap -> [> `drawable ] Gobject.obj -> unit
  external get_n_channels : GdkPixbuf.pixbuf -> int
    = "ml_gdk_pixbuf_get_n_channels"
  external get_has_alpha : GdkPixbuf.pixbuf -> bool
    = "ml_gdk_pixbuf_get_has_alpha"
  external get_bits_per_sample : GdkPixbuf.pixbuf -> int
    = "ml_gdk_pixbuf_get_bits_per_sample"
  external get_width : GdkPixbuf.pixbuf -> int = "ml_gdk_pixbuf_get_width"
  external get_height : GdkPixbuf.pixbuf -> int = "ml_gdk_pixbuf_get_height"
  external get_rowstride : GdkPixbuf.pixbuf -> int
    = "ml_gdk_pixbuf_get_rowstride"
  val get_pixels : GdkPixbuf.pixbuf -> Gpointer.region
  val draw_pixbuf :
    [> `drawable ] Gobject.obj ->
    Gdk.gc ->
    ?dest_x:int ->
    ?dest_y:int ->
    ?width:int ->
    ?height:int ->
    ?dither:Gdk.Tags.rgb_dither ->
    ?x_dither:int ->
    ?y_dither:int -> ?src_x:int -> ?src_y:int -> GdkPixbuf.pixbuf -> unit
  val render_to_drawable :
    [> `drawable ] Gobject.obj ->
    ?gc:Gdk.gc ->
    ?dest_x:int ->
    ?dest_y:int ->
    ?width:int ->
    ?height:int ->
    ?dither:Gdk.Tags.rgb_dither ->
    ?x_dither:int ->
    ?y_dither:int -> ?src_x:int -> ?src_y:int -> GdkPixbuf.pixbuf -> unit
  val render_alpha :
    Gdk.bitmap ->
    ?dest_x:int ->
    ?dest_y:int ->
    ?width:int ->
    ?height:int ->
    ?threshold:int -> ?src_x:int -> ?src_y:int -> GdkPixbuf.pixbuf -> unit
  val render_to_drawable_alpha :
    [> `drawable ] Gobject.obj ->
    ?dest_x:int ->
    ?dest_y:int ->
    ?width:int ->
    ?height:int ->
    ?alpha:GdkPixbuf.alpha_mode ->
    ?threshold:int ->
    ?dither:Gdk.Tags.rgb_dither ->
    ?x_dither:int ->
    ?y_dither:int -> ?src_x:int -> ?src_y:int -> GdkPixbuf.pixbuf -> unit
  val create_pixmap :
    ?threshold:int -> GdkPixbuf.pixbuf -> Gdk.pixmap * Gdk.bitmap option
  val add_alpha :
    ?transparent:int * int * int -> GdkPixbuf.pixbuf -> GdkPixbuf.pixbuf
  val fill : GdkPixbuf.pixbuf -> int32 -> unit
  val saturate_and_pixelate :
    dest:GdkPixbuf.pixbuf ->
    saturation:float -> pixelate:bool -> GdkPixbuf.pixbuf -> unit
  val copy_area :
    dest:GdkPixbuf.pixbuf ->
    ?dest_x:int ->
    ?dest_y:int ->
    ?width:int ->
    ?height:int -> ?src_x:int -> ?src_y:int -> GdkPixbuf.pixbuf -> unit
  val scale :
    dest:GdkPixbuf.pixbuf ->
    ?dest_x:int ->
    ?dest_y:int ->
    ?width:int ->
    ?height:int ->
    ?ofs_x:float ->
    ?ofs_y:float ->
    ?scale_x:float ->
    ?scale_y:float ->
    ?interp:GdkPixbuf.interpolation -> GdkPixbuf.pixbuf -> unit
  val composite :
    dest:GdkPixbuf.pixbuf ->
    alpha:int ->
    ?dest_x:int ->
    ?dest_y:int ->
    ?width:int ->
    ?height:int ->
    ?ofs_x:float ->
    ?ofs_y:float ->
    ?scale_x:float ->
    ?scale_y:float ->
    ?interp:GdkPixbuf.interpolation -> GdkPixbuf.pixbuf -> unit
  external save :
    filename:string ->
    typ:string -> ?options:(string * string) list -> GdkPixbuf.pixbuf -> unit
    = "ml_gdk_pixbuf_save"
  external save_to_callback :
    GdkPixbuf.pixbuf ->
    typ:string -> ?options:(string * string) list -> (string -> unit) -> unit
    = "ml_gdk_pixbuf_save_to_callback"
  val save_to_buffer :
    GdkPixbuf.pixbuf ->
    typ:string -> ?options:(string * string) list -> Buffer.t -> unit
end