sig
  type items_properties =
      [ `ANCHOR of Gtk.Tags.anchor_type
      | `ARROW_SHAPE_A of float
      | `ARROW_SHAPE_B of float
      | `ARROW_SHAPE_C of float
      | `BPATH of GnomeCanvas.PathDef.t
      | `CAP_STYLE of Gdk.GC.gdkCapStyle
      | `CLIP of bool
      | `CLIP_HEIGHT of float
      | `CLIP_WIDTH of float
      | `CURSOR_BLINK of bool
      | `CURSOR_VISIBLE of bool
      | `DASH of float * float array
      | `EDITABLE of bool
      | `FAMILY of string
      | `FILL_COLOR of string
      | `FILL_COLOR_RGBA of int32
      | `FILL_STIPPLE of Gdk.bitmap
      | `FIRST_ARROWHEAD of bool
      | `FONT of string
      | `GROW_HEIGHT of bool
      | `HEIGHT of float
      | `JOIN_STYLE of Gdk.GC.gdkJoinStyle
      | `JUSTIFICATION of Gtk.Tags.justification
      | `LAST_ARROWHEAD of bool
      | `LEFT_MARGIN of int
      | `LINE_STYLE of Gdk.GC.gdkLineStyle
      | `MARKUP of string
      | `NO_BPATH
      | `NO_FILL_COLOR
      | `NO_FONT
      | `NO_OUTLINE_COLOR
      | `NO_PIXBUF
      | `NO_TEXT
      | `NO_WIDGET
      | `OUTLINE_COLOR of string
      | `OUTLINE_COLOR_RGBA of int32
      | `OUTLINE_STIPPLE of Gdk.bitmap
      | `PIXBUF of GdkPixbuf.pixbuf
      | `POINTS of float array
      | `RIGHT_MARGIN of int
      | `RISE of int
      | `SCALE of float
      | `SIZE of int
      | `SIZE_PIXELS of bool
      | `SIZE_POINTS of float
      | `SMOOTH of bool
      | `TEXT of string
      | `VISIBLE of bool
      | `WEIGHT of int
      | `WIDGET of GObj.widget
      | `WIDTH of float
      | `WIDTH_PIXELS of int
      | `WIDTH_UNITS of float
      | `X of float
      | `X1 of float
      | `X2 of float
      | `X_OFFSET of float
      | `Y of float
      | `Y1 of float
      | `Y2 of float
      | `Y_OFFSET of float ]
  val propertize :
    [< GnoCanvas.items_properties ] -> string * unit Gobject.data_set
  type item_event =
      [ `BUTTON_PRESS of GdkEvent.Button.t
      | `BUTTON_RELEASE of GdkEvent.Button.t
      | `ENTER_NOTIFY of GdkEvent.Crossing.t
      | `FOCUS_CHANGE of GdkEvent.Focus.t
      | `KEY_PRESS of GdkEvent.Key.t
      | `KEY_RELEASE of GdkEvent.Key.t
      | `LEAVE_NOTIFY of GdkEvent.Crossing.t
      | `MOTION_NOTIFY of GdkEvent.Motion.t
      | `THREE_BUTTON_PRESS of GdkEvent.Button.t
      | `TWO_BUTTON_PRESS of GdkEvent.Button.t ]
  class item_signals :
    ([> GnomeCanvas.item ] as 'b) Gtk.obj ->
    object ('a)
      val obj : 'Gtk.obj
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method event : callback:(GnoCanvas.item_event -> bool) -> GtkSignal.id
    end
  class base_item :
    ([> GnomeCanvas.item ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method affine_absolute : float array -> unit
      method affine_relative : float array -> unit
      method as_item : GnomeCanvas.item Gtk.obj
      method canvas : GnoCanvas.canvas
      method connect : GnoCanvas.item_signals
      method destroy : unit -> unit
      method get_bounds : float array
      method get_oid : int
      method grab : Gdk.Tags.event_mask list -> Gdk.cursor -> int32 -> unit
      method grab_focus : unit -> unit
      method hide : unit -> unit
      method i2c_affine : float array
      method i2w : x:float -> y:float -> float * float
      method i2w_affine : float array
      method lower : int -> unit
      method lower_to_bottom : unit -> unit
      method move : x:float -> y:float -> unit
      method parent : GnoCanvas.group
      method raise : int -> unit
      method raise_to_top : unit -> unit
      method reparent : GnoCanvas.group -> unit
      method show : unit -> unit
      method ungrab : int32 -> unit
      method w2i : x:float -> y:float -> float * float
      method xform :
        [ `AFFINE of float array | `IDENTITY | `TRANSL of float array ]
    end
  and group :
    GnomeCanvas.group Gtk.obj ->
    object
      val obj : GnomeCanvas.group Gtk.obj
      method affine_absolute : float array -> unit
      method affine_relative : float array -> unit
      method as_group : GnomeCanvas.group Gtk.obj
      method as_item : GnomeCanvas.item Gtk.obj
      method canvas : GnoCanvas.canvas
      method connect : GnoCanvas.item_signals
      method destroy : unit -> unit
      method get_bounds : float array
      method get_items : GnoCanvas.base_item list
      method get_oid : int
      method grab : Gdk.Tags.event_mask list -> Gdk.cursor -> int32 -> unit
      method grab_focus : unit -> unit
      method hide : unit -> unit
      method i2c_affine : float array
      method i2w : x:float -> y:float -> float * float
      method i2w_affine : float array
      method lower : int -> unit
      method lower_to_bottom : unit -> unit
      method move : x:float -> y:float -> unit
      method parent : GnoCanvas.group
      method raise : int -> unit
      method raise_to_top : unit -> unit
      method reparent : GnoCanvas.group -> unit
      method set : GnomeCanvas.group_p list -> unit
      method show : unit -> unit
      method ungrab : int32 -> unit
      method w2i : x:float -> y:float -> float * float
      method xform :
        [ `AFFINE of float array | `IDENTITY | `TRANSL of float array ]
    end
  and canvas :
    GnomeCanvas.canvas Gtk.obj ->
    object
      val obj : GnomeCanvas.canvas Gtk.obj
      method aa : bool
      method add : GObj.widget -> unit
      method all_children : GObj.widget list
      method as_widget : Gtk.widget Gtk.obj
      method bin_window : Gdk.window
      method border_width : int
      method c2w : cx:float -> cy:float -> float * float
      method children : GObj.widget list
      method coerce : GObj.widget
      method connect : GContainer.container_signals
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method event : GObj.event_ops
      method focus : GContainer.focus
      method freeze : unit -> unit
      method get_center_scroll_region : bool
      method get_item_at : x:float -> y:float -> GnoCanvas.base_item
      method get_oid : int
      method get_scroll_offsets : int * int
      method get_scroll_region : float array
      method hadjustment : GData.adjustment
      method height : int
      method misc : GObj.misc_ops
      method move : GObj.widget -> x:int -> y:int -> unit
      method put : GObj.widget -> x:int -> y:int -> unit
      method remove : GObj.widget -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method root : GnoCanvas.group
      method scroll_to : x:int -> y:int -> unit
      method set_border_width : int -> unit
      method set_center_scroll_region : bool -> unit
      method set_hadjustment : GData.adjustment -> unit
      method set_height : int -> unit
      method set_pixels_per_unit : float -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_scroll_region :
        x1:float -> y1:float -> x2:float -> y2:float -> unit
      method set_vadjustment : GData.adjustment -> unit
      method set_width : int -> unit
      method thaw : unit -> unit
      method update_now : unit -> unit
      method vadjustment : GData.adjustment
      method w2c : wx:float -> wy:float -> int * int
      method w2c_affine : float array
      method w2c_d : wx:float -> wy:float -> float * float
      method width : int
      method window_to_world : winx:float -> winy:float -> float * float
      method world_to_window : wox:float -> woy:float -> float * float
    end
  class ['a] item :
    [> GnomeCanvas.item ] Gtk.obj ->
    object
      constraint 'a = [< GnoCanvas.items_properties ]
      val obj : [> GnomeCanvas.item ] Gtk.obj
      method affine_absolute : float array -> unit
      method affine_relative : float array -> unit
      method as_item : GnomeCanvas.item Gtk.obj
      method canvas : canvas
      method connect : item_signals
      method destroy : unit -> unit
      method get_bounds : float array
      method get_oid : int
      method grab : Gdk.Tags.event_mask list -> Gdk.cursor -> int32 -> unit
      method grab_focus : unit -> unit
      method hide : unit -> unit
      method i2c_affine : float array
      method i2w : x:float -> y:float -> float * float
      method i2w_affine : float array
      method lower : int -> unit
      method lower_to_bottom : unit -> unit
      method move : x:float -> y:float -> unit
      method parent : group
      method raise : int -> unit
      method raise_to_top : unit -> unit
      method reparent : group -> unit
      method set : 'a list -> unit
      method show : unit -> unit
      method ungrab : int32 -> unit
      method w2i : x:float -> y:float -> float * float
      method xform :
        [ `AFFINE of float array | `IDENTITY | `TRANSL of float array ]
    end
  val canvas :
    ?aa:bool ->
    ?border_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> GnoCanvas.canvas
  val group : ?x:float -> ?y:float -> #GnoCanvas.group -> GnoCanvas.group
  val wrap_item :
    [> GnomeCanvas.item ] Gtk.obj ->
    ([> `canvasitem | `gtk ], [< GnoCanvas.items_properties ] as 'a)
    GnomeCanvas.Types.t -> 'GnoCanvas.item
  type rect = GnomeCanvas.re_p GnoCanvas.item
  val rect :
    ?x1:float ->
    ?y1:float ->
    ?x2:float ->
    ?y2:float ->
    ?fill_color:string ->
    ?props:GnomeCanvas.re_p list -> #GnoCanvas.group -> GnoCanvas.rect
  type ellipse = GnomeCanvas.re_p GnoCanvas.item
  val ellipse :
    ?x1:float ->
    ?y1:float ->
    ?x2:float ->
    ?y2:float ->
    ?fill_color:string ->
    ?props:GnomeCanvas.re_p list -> #GnoCanvas.group -> GnoCanvas.ellipse
  class text :
    GnomeCanvas.text Gtk.obj ->
    object
      val obj : GnomeCanvas.text Gtk.obj
      method affine_absolute : float array -> unit
      method affine_relative : float array -> unit
      method as_item : GnomeCanvas.item Gtk.obj
      method canvas : canvas
      method connect : item_signals
      method destroy : unit -> unit
      method get_bounds : float array
      method get_oid : int
      method grab : Gdk.Tags.event_mask list -> Gdk.cursor -> int32 -> unit
      method grab_focus : unit -> unit
      method hide : unit -> unit
      method i2c_affine : float array
      method i2w : x:float -> y:float -> float * float
      method i2w_affine : float array
      method lower : int -> unit
      method lower_to_bottom : unit -> unit
      method move : x:float -> y:float -> unit
      method parent : group
      method raise : int -> unit
      method raise_to_top : unit -> unit
      method reparent : group -> unit
      method set : GnomeCanvas.text_p list -> unit
      method show : unit -> unit
      method text_height : float
      method text_width : float
      method ungrab : int32 -> unit
      method w2i : x:float -> y:float -> float * float
      method xform :
        [ `AFFINE of float array | `IDENTITY | `TRANSL of float array ]
    end
  val text :
    ?x:float ->
    ?y:float ->
    ?text:string ->
    ?font:string ->
    ?size:int ->
    ?anchor:Gtk.Tags.anchor_type ->
    ?props:GnomeCanvas.text_p list -> #GnoCanvas.group -> GnoCanvas.text
  type line = GnomeCanvas.line_p GnoCanvas.item
  val line :
    ?points:float array ->
    ?fill_color:string ->
    ?props:GnomeCanvas.line_p list -> #GnoCanvas.group -> GnoCanvas.line
  type bpath = GnomeCanvas.bpath_p GnoCanvas.item
  val bpath :
    ?bpath:GnomeCanvas.PathDef.t ->
    ?fill_color:string ->
    ?props:GnomeCanvas.bpath_p list -> #GnoCanvas.group -> GnoCanvas.bpath
  type pixbuf = GnomeCanvas.pixbuf_p GnoCanvas.item
  val pixbuf :
    ?x:float ->
    ?y:float ->
    ?pixbuf:GdkPixbuf.pixbuf ->
    ?width:float ->
    ?height:float ->
    ?props:GnomeCanvas.pixbuf_p list -> #GnoCanvas.group -> GnoCanvas.pixbuf
  type polygon = GnomeCanvas.polygon_p GnoCanvas.item
  val polygon :
    ?points:float array ->
    ?fill_color:string ->
    ?props:GnomeCanvas.polygon_p list ->
    #GnoCanvas.group -> GnoCanvas.polygon
  type widget = GnomeCanvas.widget_p GnoCanvas.item
  val widget :
    ?widget:< coerce : GObj.widget; .. > ->
    ?x:float ->
    ?y:float ->
    ?width:float ->
    ?height:float ->
    ?props:GnomeCanvas.widget_p list -> #GnoCanvas.group -> GnoCanvas.widget
  class rich_text :
    GnomeCanvas.rich_text Gtk.obj ->
    object
      val obj : GnomeCanvas.rich_text Gtk.obj
      method affine_absolute : float array -> unit
      method affine_relative : float array -> unit
      method as_item : GnomeCanvas.item Gtk.obj
      method canvas : canvas
      method connect : item_signals
      method copy_clipboard : unit -> unit
      method cut_clipboard : unit -> unit
      method destroy : unit -> unit
      method get_bounds : float array
      method get_buffer : GText.buffer
      method get_oid : int
      method grab : Gdk.Tags.event_mask list -> Gdk.cursor -> int32 -> unit
      method grab_focus : unit -> unit
      method hide : unit -> unit
      method i2c_affine : float array
      method i2w : x:float -> y:float -> float * float
      method i2w_affine : float array
      method lower : int -> unit
      method lower_to_bottom : unit -> unit
      method move : x:float -> y:float -> unit
      method parent : group
      method paste_clipboard : unit -> unit
      method raise : int -> unit
      method raise_to_top : unit -> unit
      method reparent : group -> unit
      method set : GnomeCanvas.rich_text_p list -> unit
      method show : unit -> unit
      method ungrab : int32 -> unit
      method w2i : x:float -> y:float -> float * float
      method xform :
        [ `AFFINE of float array | `IDENTITY | `TRANSL of float array ]
    end
  val rich_text :
    ?x:float ->
    ?y:float ->
    ?text:string ->
    ?width:float ->
    ?height:float ->
    ?props:GnomeCanvas.rich_text_p list ->
    #GnoCanvas.group -> GnoCanvas.rich_text
end