sig
  type mode =
      [ `alpha
      | `client_side_rotation
      | `depth
      | `depth_16
      | `depth_24
      | `depth_32
      | `depth_8
      | `direct
      | `multisample_high
      | `multisample_low
      | `multisample_med
      | `none
      | `stencil
      | `stencil_1
      | `stencil_16
      | `stencil_2
      | `stencil_4
      | `stencil_8 ]
  type resize_policy = [ `recreate | `scale ]
  type render_policy = [ `always | `on_demand ]
  type func_cb = Evas.obj -> unit
  val add : Evas.obj -> Evas.obj
  val addx : Elm_object.t_addx
  val version_add : Evas.obj -> Evas.gl_context_version -> Evas.obj
  val size_set : Evas.obj -> int -> int -> unit
  val size_get : Evas.obj -> int * int
  val gl_api_get : Evas.obj -> Evas.gl_api
  val evas_gl_get : Evas.obj -> Evas.gl
  val rotation_get : Evas.obj -> int
  val mode_set : Evas.obj -> Elm_glview.mode list -> unit
  val resize_policy_set : Evas.obj -> Elm_glview.resize_policy -> bool
  val render_policy_set : Evas.obj -> Elm_glview.render_policy -> bool
  val init_func_set : Evas.obj -> Elm_glview.func_cb -> unit
  val del_func_set : Evas.obj -> Elm_glview.func_cb -> unit
  val resize_func_set : Evas.obj -> Elm_glview.func_cb -> unit
  val render_func_set : Evas.obj -> Elm_glview.func_cb -> unit
  val changed_set : Evas.obj -> unit
end