sig
  type canvas
  type texture = Tsdl.Sdl.texture
  val video_init : unit -> unit
  val quit : unit -> unit
  type rgb = Bogue.RGB.t
  type color = Bogue.RGBA.t
  type fill = Pattern of Bogue.Draw.texture | Solid of Bogue.Draw.color
  val opaque : Bogue.Draw.rgb -> Bogue.Draw.color
  val transp : Bogue.Draw.rgb -> Bogue.Draw.color
  val add_alpha : int -> Bogue.Draw.rgb -> Bogue.Draw.color
  val rgba_of_int32 : int -> Bogue.Draw.color
  val find_color : string -> Bogue.Draw.rgb
  val set_color : Tsdl.Sdl.renderer -> Bogue.Draw.color -> unit
  val set_text_color : Bogue.Draw.rgb -> unit
  val to_pixels : int * int -> int * int
  val line :
    ?thick:int ->
    Tsdl.Sdl.renderer ->
    color:Bogue.Draw.color -> x0:int -> y0:int -> x1:int -> y1:int -> unit
  val rectangle :
    ?thick:int ->
    Tsdl.Sdl.renderer ->
    color:Bogue.Draw.color -> w:int -> h:int -> x:int -> y:int -> unit
  val circle :
    ?thick:int ->
    Tsdl.Sdl.renderer ->
    color:Bogue.Draw.color -> radius:int -> x:int -> y:int -> unit
  type layer
  val use_new_layer : unit -> unit
  type align = Min | Center | Max
  val unscale_size : int * int -> int * int
  val set_system_cursor : Tsdl.Sdl.System_cursor.t -> unit
end