sig
  type canvas
  type texture = Tsdl.Sdl.texture
  val video_init : unit -> unit
  val quit : unit -> unit
  type rgb = int * int * int
  type color = int * int * int * int
  type fill = Pattern of Bogue.Draw.texture | Solid of Bogue.Draw.color
  val black : Bogue.Draw.rgb
  val grey : Bogue.Draw.rgb
  val pale_grey : Bogue.Draw.rgb
  val dark_grey : Bogue.Draw.rgb
  val white : Bogue.Draw.rgb
  val red : Bogue.Draw.rgb
  val blue : Bogue.Draw.rgb
  val green : Bogue.Draw.rgb
  val magenta : Bogue.Draw.rgb
  val cyan : Bogue.Draw.rgb
  val yellow : Bogue.Draw.rgb
  val sienna : Bogue.Draw.rgb
  val label_color : Bogue.Draw.rgb
  val none : Bogue.Draw.color
  val opaque : Bogue.Draw.rgb -> Bogue.Draw.color
  val transp : Bogue.Draw.rgb -> Bogue.Draw.color
  val lighter : Bogue.Draw.color -> Bogue.Draw.color
  val darker : Bogue.Draw.color -> Bogue.Draw.color
  val set_alpha : int -> Bogue.Draw.rgb -> Bogue.Draw.color
  val random_color : unit -> Bogue.Draw.color
  val find_color : string -> Bogue.Draw.rgb
  val pale : Bogue.Draw.rgb -> 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