sig
  type color =
      [ `BLACK
      | `COLOR of Gdk.color
      | `NAME of string
      | `RGB of int * int * int
      | `WHITE ]
  val color : ?colormap:Gdk.colormap -> GDraw.color -> Gdk.color
  type optcolor =
      [ `BLACK
      | `COLOR of Gdk.color
      | `DEFAULT
      | `NAME of string
      | `RGB of int * int * int
      | `WHITE ]
  val optcolor : ?colormap:Gdk.colormap -> GDraw.optcolor -> Gdk.color option
  class drawable :
    ?colormap:Gdk.colormap ->
    ([> `drawable ] as 'a) Gobject.obj ->
    object
      val mutable gc : Gdk.gc
      val w : 'Gobject.obj
      method arc :
        x:int ->
        y:int ->
        width:int ->
        height:int ->
        ?filled:bool -> ?start:float -> ?angle:float -> unit -> unit
      method color : GDraw.color -> Gdk.color
      method colormap : Gdk.colormap
      method depth : int
      method gc : Gdk.gc
      method gc_values : Gdk.GC.values
      method line : x:int -> y:int -> x:int -> y:int -> unit
      method lines : (int * int) list -> unit
      method point : x:int -> y:int -> unit
      method points : (int * int) list -> unit
      method polygon : ?filled:bool -> (int * int) list -> unit
      method put_image :
        x:int ->
        y:int ->
        ?xsrc:int ->
        ?ysrc:int -> ?width:int -> ?height:int -> Gdk.image -> unit
      method put_layout :
        x:int ->
        y:int ->
        ?fore:GDraw.color -> ?back:GDraw.color -> Pango.layout -> unit
      method put_pixbuf :
        x:int ->
        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
      method put_pixmap :
        x:int ->
        y:int ->
        ?xsrc:int ->
        ?ysrc:int -> ?width:int -> ?height:int -> Gdk.pixmap -> unit
      method put_rgb_data :
        width:int ->
        height:int ->
        ?x:int ->
        ?y:int ->
        ?dither:Gdk.Tags.rgb_dither ->
        ?row_stride:int -> Gpointer.region -> unit
      method rectangle :
        x:int ->
        y:int -> width:int -> height:int -> ?filled:bool -> unit -> unit
      method segments : ((int * int) * (int * int)) list -> unit
      method set_background : GDraw.color -> unit
      method set_clip_mask : Gdk.bitmap -> unit
      method set_clip_origin : x:int -> y:int -> unit
      method set_clip_rectangle : Gdk.Rectangle.t -> unit
      method set_clip_region : Gdk.region -> unit
      method set_foreground : GDraw.color -> unit
      method set_gc : Gdk.gc -> unit
      method set_line_attributes :
        ?width:int ->
        ?style:Gdk.GC.gdkLineStyle ->
        ?cap:Gdk.GC.gdkCapStyle -> ?join:Gdk.GC.gdkJoinStyle -> unit -> unit
      method size : int * int
      method string : string -> font:Gdk.font -> x:int -> y:int -> unit
    end
  class pixmap :
    ?colormap:Gdk.colormap ->
    ?mask:Gdk.bitmap ->
    Gdk.pixmap ->
    object
      val bitmap : GDraw.drawable option
      val mutable gc : Gdk.gc
      val mask : Gdk.bitmap option
      val w : Gdk.pixmap
      method arc :
        x:int ->
        y:int ->
        width:int ->
        height:int ->
        ?filled:bool -> ?start:float -> ?angle:float -> unit -> unit
      method color : color -> Gdk.color
      method colormap : Gdk.colormap
      method depth : int
      method gc : Gdk.gc
      method gc_values : Gdk.GC.values
      method line : x:int -> y:int -> x:int -> y:int -> unit
      method lines : (int * int) list -> unit
      method mask : Gdk.bitmap option
      method pixmap : Gdk.pixmap
      method point : x:int -> y:int -> unit
      method points : (int * int) list -> unit
      method polygon : ?filled:bool -> (int * int) list -> unit
      method put_image :
        x:int ->
        y:int ->
        ?xsrc:int ->
        ?ysrc:int -> ?width:int -> ?height:int -> Gdk.image -> unit
      method put_layout :
        x:int -> y:int -> ?fore:color -> ?back:color -> Pango.layout -> unit
      method put_pixbuf :
        x:int ->
        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
      method put_pixmap :
        x:int ->
        y:int ->
        ?xsrc:int ->
        ?ysrc:int -> ?width:int -> ?height:int -> Gdk.pixmap -> unit
      method put_rgb_data :
        width:int ->
        height:int ->
        ?x:int ->
        ?y:int ->
        ?dither:Gdk.Tags.rgb_dither ->
        ?row_stride:int -> Gpointer.region -> unit
      method rectangle :
        x:int ->
        y:int -> width:int -> height:int -> ?filled:bool -> unit -> unit
      method segments : ((int * int) * (int * int)) list -> unit
      method set_background : color -> unit
      method set_clip_mask : Gdk.bitmap -> unit
      method set_clip_origin : x:int -> y:int -> unit
      method set_clip_rectangle : Gdk.Rectangle.t -> unit
      method set_clip_region : Gdk.region -> unit
      method set_foreground : color -> unit
      method set_gc : Gdk.gc -> unit
      method set_line_attributes :
        ?width:int ->
        ?style:Gdk.GC.gdkLineStyle ->
        ?cap:Gdk.GC.gdkCapStyle -> ?join:Gdk.GC.gdkJoinStyle -> unit -> unit
      method size : int * int
      method string : string -> font:Gdk.font -> x:int -> y:int -> unit
    end
  class type misc_ops =
    object
      method colormap : Gdk.colormap
      method realize : unit -> unit
      method visual_depth : int
      method window : Gdk.window
    end
  val pixmap :
    width:int ->
    height:int ->
    ?mask:bool ->
    ?window:< misc : #GDraw.misc_ops; .. > ->
    ?colormap:Gdk.colormap -> unit -> GDraw.pixmap
  val pixmap_from_xpm :
    file:string ->
    ?window:< misc : #GDraw.misc_ops; .. > ->
    ?colormap:Gdk.colormap ->
    ?transparent:GDraw.color -> unit -> GDraw.pixmap
  val pixmap_from_xpm_d :
    data:string array ->
    ?window:< misc : #GDraw.misc_ops; .. > ->
    ?colormap:Gdk.colormap ->
    ?transparent:GDraw.color -> unit -> GDraw.pixmap
  class drag_context :
    Gdk.drag_context ->
    object
      val context : Gdk.drag_context
      method status : ?time:int32 -> Gdk.Tags.drag_action option -> unit
      method suggested_action : Gdk.Tags.drag_action
      method targets : string list
    end
end