sig
  type t
  val create :
    width:int ->
    height:int ->
    ?style:Bogue.Style.t -> ?timeout:int -> unit -> Bogue.Sdl_area.t
  val update : Bogue.Sdl_area.t -> unit
  val clear : Bogue.Sdl_area.t -> unit
  val add :
    Bogue.Sdl_area.t -> ?name:string -> (Tsdl.Sdl.renderer -> unit) -> unit
  val cache : Bogue.Sdl_area.t -> unit
  val clear_cache : Bogue.Sdl_area.t -> unit
  val drawing_size : Bogue.Sdl_area.t -> int * int
  val pointer_pos : Bogue.Sdl_area.t -> Tsdl.Sdl.event -> int * int
  val to_pixels : int * int -> int * int
  val draw_line :
    Bogue.Sdl_area.t ->
    color:Bogue.Draw.color -> thick:int -> int * int -> int * int -> unit
  val draw_rectangle :
    Bogue.Sdl_area.t ->
    color:Bogue.Draw.color ->
    thick:int -> w:int -> h:int -> int * int -> unit
  val fill_rectangle :
    Bogue.Sdl_area.t ->
    color:Bogue.Draw.color -> w:int -> h:int -> int * int -> unit
  val draw_circle :
    Bogue.Sdl_area.t ->
    color:Bogue.Draw.color -> thick:int -> radius:int -> int * int -> unit
  val fill_circle :
    Bogue.Sdl_area.t ->
    color:Bogue.Draw.color -> radius:int -> int * int -> unit
  type draw_element
  val add_get :
    Bogue.Sdl_area.t ->
    ?name:string ->
    ?disable:bool ->
    (Tsdl.Sdl.renderer -> unit) -> Bogue.Sdl_area.draw_element
  val disable : Bogue.Sdl_area.draw_element -> unit
  val enable : Bogue.Sdl_area.draw_element -> unit
  val remove_element :
    Bogue.Sdl_area.t -> Bogue.Sdl_area.draw_element -> unit
  val add_element : Bogue.Sdl_area.t -> Bogue.Sdl_area.draw_element -> unit
  val has_element : Bogue.Sdl_area.t -> Bogue.Sdl_area.draw_element -> bool
  val get_texture : Bogue.Sdl_area.t -> Tsdl.Sdl.texture option
  val set_texture : Bogue.Sdl_area.t -> Tsdl.Sdl.texture -> unit
end