sig
  type zoom_mode =
      [ `auto_fill | `auto_fit | `auto_fit_in | `last | `manual ]
  type progress = { now : float; total : float; }
  type error = { status : int; open_error : bool; }
  val add : Evas.obj -> Evas.obj
  val addx : Elm_object.t_addx
  val file_set : Evas.obj -> string -> Evas.load_error
  val file_get : Evas.obj -> string
  val zoom_set : Evas.obj -> float -> unit
  val zoom_get : Evas.obj -> float
  val zoom_mode_set : Evas.obj -> Elm_photocam.zoom_mode -> unit
  val zoom_mode_get : Evas.obj -> Elm_photocam.zoom_mode
  val image_size_get : Evas.obj -> int * int
  val image_region_get : Evas.obj -> int * int * int * int
  val image_orient_set : Evas.obj -> Evas.image_orient -> unit
  val image_orient_get : Evas.obj -> Evas.image_orient
  val image_region_show : Evas.obj -> int -> int -> int -> int -> unit
  val image_region_bring_in : Evas.obj -> int -> int -> int -> int -> unit
  val paused_set : Evas.obj -> bool -> unit
  val paused_get : Evas.obj -> bool
  val internal_image_get : Evas.obj -> Evas.obj option
  val gesture_enabled_set : Evas.obj -> bool -> unit
  val gesture_enabled_get : Evas.obj -> bool
  val progress_of_ptr : Evas.ptr -> Elm_photocam.progress
  val error_of_ptr : Evas.ptr -> Elm_photocam.error
end