sig
  type t = {
    mutable surf : Sdlvideo.surface;
    mutable last_mode : int;
    mutable provide : unit -> Sdlvideo.surface;
    mutable cam_pos : int * int;
    mutable rect : Sdlvideo.rect;
    mutable vmem : bool;
  }
  val create_surface : ?alpha:bool -> int * int -> Sdlvideo.surface
  val load_image : string -> Video.t
  val duplicate_surface : Sdlvideo.surface -> Sdlvideo.surface
  val create_context : int -> int -> int -> int -> int * int -> Video.t
  val get_cam_pos : ?on:Video.t -> unit -> int * int
  val set_cam_pos : ?on:Video.t -> int * int -> unit
  val set_cam_pos_center : ?on:Video.t -> int * int -> unit
  val move_cam : ?on:Video.t -> int * int -> unit
  val blit :
    Video.t ->
    ?src_rect:Sdlvideo.rect ->
    ?on:Video.t -> ?surf:Sdlvideo.surface -> int -> int -> unit
  val fill :
    ?on:Video.t ->
    ?surf:Sdlvideo.surface ->
    ?rect:Sdlvideo.rect -> ?alpha:int -> Sdlvideo.color -> unit
  val line :
    ?on:Video.t ->
    ?surf:Sdlvideo.surface ->
    int * int -> int * int -> ?alpha:int -> Sdlvideo.color -> unit
  val point :
    ?on:Video.t -> int * int -> ?alpha:int -> Sdlvideo.color -> unit
  val ellipse :
    ?on:Video.t ->
    int * int -> int * int -> bool -> ?alpha:int -> Sdlvideo.color -> unit
  val get_resolution : unit -> int * int
  val set_mode : bool -> int * int -> int -> unit
  val flip : unit -> unit
  val quit : unit -> unit
  val color_surface :
    Sdlvideo.surface ->
    (Sdlvideo.color * int -> Sdlvideo.color * int) -> Sdlvideo.surface
  val describe_surface : Sdlvideo.surface -> string
  val provide_image : (unit -> Sdlvideo.surface) -> Video.t
  val optimize : ?alpha:bool -> Video.t -> Video.t
  val color_key : ?ck:Sdlvideo.color -> Video.t -> Video.t
  val update_image : Video.t -> unit
  val image_size : Video.t -> int * int
  val color_image :
    Video.t -> (Sdlvideo.color * int -> Sdlvideo.color * int) -> Video.t
  val tile_fill :
    ?on:Video.t ->
    ?surf:Sdlvideo.surface -> Video.t -> int * int -> int * int -> unit
  val shade_tile : Video.t
  val shade :
    ?on:Video.t -> ?surf:Sdlvideo.surface -> int * int -> int * int -> unit
end