sig
  type shape_p =
      [ `DASH of float * float array
      | `FILL_COLOR_RGBA of int32
      | `OUTLINE_COLOR_RGBA of int32
      | `WIDTH_UNITS of float ]
  class type textshape =
    object
      method connect :
        < after : GnoCanvas.item_signals;
          destroy : callback:(unit -> unit) -> GtkSignal.id;
          event : callback:(GnoCanvas.item_event -> bool) -> GtkSignal.id >
      method dehighlight : unit -> unit
      method hide : unit -> unit
      method highlight : ?color:int32 * int32 -> unit -> unit
      method lower_to_bottom : unit -> unit
      method show : unit -> unit
    end
  class type shape =
    object
      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 : GnoCanvas.canvas
      method connect : GnoCanvas.item_signals
      method dehighlight : unit -> unit
      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 highlight : ?color:int32 * int32 -> 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 : DGraphViewItem.shape_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
  class graph_text :
    GnomeCanvas.text Gtk.obj ->
    size_points:float ->
    props:GnomeCanvas.text_p list ->
    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 : GnoCanvas.canvas
      method connect : GnoCanvas.item_signals
      method dehighlight : unit -> unit
      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 highlight : ?color:int32 * int32 -> 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 resize : float -> 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
  class type common_view =
    object
      val obj : GnomeCanvas.canvas Gtk.obj
      method aa : bool
      method adapt_zoom : unit -> unit
      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:int -> cy:int -> 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
      method zoom_factor : float
    end
  class ['a] view_item :
    fill:bool ->
    delay:bool ->
    view:DGraphViewItem.common_view ->
    pos:float * float ->
    ops_list:XDotDraw.operation list list ->
    item:'->
    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 center : unit -> unit
      method compute : unit -> unit
      method connect : GnoCanvas.item_signals
      method connect_event : callback:(GnoCanvas.item_event -> bool) -> unit
      method dehighlight : unit -> unit
      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 highlight : ?color:int32 * int32 -> unit -> unit
      method i2c_affine : float array
      method i2w : x:float -> y:float -> float * float
      method i2w_affine : float array
      method item : 'a
      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 ]
      method zoom_text : float -> unit
    end
  exception Cannot_convert_color of string
  val view_node :
    delay:bool ->
    view:DGraphViewItem.common_view ->
    vertex:'vertex ->
    layout:XDot.node_layout -> unit -> 'vertex DGraphViewItem.view_item
  val view_edge :
    delay:bool ->
    view:DGraphViewItem.common_view ->
    edge:'edge ->
    layout:XDot.edge_layout -> unit -> 'edge DGraphViewItem.view_item
  val view_cluster :
    delay:bool ->
    view:DGraphViewItem.common_view ->
    cluster:'cluster ->
    layout:XDot.cluster_layout -> unit -> 'cluster DGraphViewItem.view_item
end