sig
  val cast : 'Gobject.obj -> Gtk.curve Gtk.obj
  module P :
    sig
      val curve_type : ([> `curve ], GtkEnums.curve_type) Gobject.property
      val max_x : ([> `curve ], float) Gobject.property
      val max_y : ([> `curve ], float) Gobject.property
      val min_x : ([> `curve ], float) Gobject.property
      val min_y : ([> `curve ], float) Gobject.property
    end
  val create : Gtk.curve Gobject.param list -> Gtk.curve Gtk.obj
  external reset : [> `curve ] Gtk.obj -> unit = "ml_gtk_curve_reset"
  external set_gamma : [> `curve ] Gtk.obj -> int -> unit
    = "ml_gtk_curve_set_gamma"
  external set_vector : [> `curve ] Gtk.obj -> float array -> unit
    = "ml_gtk_curve_set_vector"
  external get_vector : [> `curve ] Gtk.obj -> int -> float array
    = "ml_gtk_curve_get_vector"
  val make_params :
    cont:(([> `curve ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?curve_type:GtkEnums.curve_type ->
    ?max_x:float -> ?max_y:float -> ?min_x:float -> ?min_y:float -> 'b
end