sig
  type t
  type window_style = [ `close | `fullscreen | `resize | `titlebar ]
  type video_mode = { width : int; height : int; bitsPerPixel : int; }
  type window_settings = {
    depthBits : int;
    stencilBits : int;
    antialiasingLevel : int;
  }
  val mode :
    width:int -> height:int -> bitsPerPixel:int -> SFRenderWindow.video_mode
  val settings :
    depthBits:int ->
    stencilBits:int ->
    antialiasingLevel:int -> SFRenderWindow.window_settings
  external create :
    mode:SFRenderWindow.video_mode ->
    title:string ->
    style:SFRenderWindow.window_style list ->
    settings:SFRenderWindow.window_settings -> SFRenderWindow.t
    = "caml_sfRenderWindow_Create"
  external createFromHandle :
    handle:nativeint ->
    settings:SFRenderWindow.window_settings -> SFRenderWindow.t
    = "caml_sfRenderWindow_CreateFromHandle"
  val make :
    ?style:SFRenderWindow.window_style list ->
    ?bpp:int ->
    ?depth:int ->
    ?stencil:int ->
    ?antialiasing:int -> int * int -> string -> SFRenderWindow.t
  external isOpened : SFRenderWindow.t -> bool
    = "caml_sfRenderWindow_IsOpened"
  external close : SFRenderWindow.t -> unit = "caml_sfRenderWindow_Close"
  external display : SFRenderWindow.t -> unit = "caml_sfRenderWindow_Display"
  external destroy : SFRenderWindow.t -> unit = "caml_sfRenderWindow_Destroy"
  external getEvent : SFRenderWindow.t -> SFEvent.t option
    = "caml_sfRenderWindow_GetEvent"
  external clear : SFRenderWindow.t -> SFColor.t -> unit
    = "caml_sfRenderWindow_Clear"
  external blank : SFRenderWindow.t -> unit = "caml_sfRenderWindow_Blank"
  external getWidth : SFRenderWindow.t -> int
    = "caml_sfRenderWindow_GetWidth"
  external getHeight : SFRenderWindow.t -> int
    = "caml_sfRenderWindow_GetHeight"
  external getSize : SFRenderWindow.t -> int * int
    = "caml_sfRenderWindow_GetSize"
  external setSize : SFRenderWindow.t -> width:int -> height:int -> unit
    = "caml_sfRenderWindow_SetSize"
  external showMouseCursor : SFRenderWindow.t -> show:bool -> unit
    = "caml_sfRenderWindow_ShowMouseCursor"
  external show : SFRenderWindow.t -> state:bool -> unit
    = "caml_sfRenderWindow_Show"
  external enableKeyRepeat : SFRenderWindow.t -> enabled:bool -> unit
    = "caml_sfRenderWindow_EnableKeyRepeat"
  external setActive : SFRenderWindow.t -> active:bool -> unit
    = "caml_sfRenderWindow_SetActive"
  external drawSprite : SFRenderWindow.t -> sprite:SFSprite.t -> unit
    = "caml_sfRenderWindow_DrawSprite"
  external drawString : SFRenderWindow.t -> text:SFString.t -> unit
    = "caml_sfRenderWindow_DrawString"
  external drawShape : SFRenderWindow.t -> shape:SFShape.t -> unit
    = "caml_sfRenderWindow_DrawShape"
  external preserveOpenGLStates : SFRenderWindow.t -> preserve:bool -> unit
    = "caml_sfRenderWindow_PreserveOpenGLStates"
  external setCursorPosition :
    SFRenderWindow.t -> left:int -> top:int -> unit
    = "caml_sfRenderWindow_SetCursorPosition"
  external setPosition : SFRenderWindow.t -> left:int -> top:int -> unit
    = "caml_sfRenderWindow_SetPosition"
  external setFramerateLimit : SFRenderWindow.t -> limit:int -> unit
    = "caml_sfRenderWindow_SetFramerateLimit"
  external getFrameTime : SFRenderWindow.t -> float
    = "caml_sfRenderWindow_GetFrameTime"
  external setView : SFRenderWindow.t -> view:SFView.t -> unit
    = "caml_sfRenderWindow_SetView"
  external convertCoords :
    SFRenderWindow.t ->
    winX:int -> winY:int -> targetView:SFView.t -> float * float
    = "caml_sfRenderWindow_ConvertCoords"
  external useVerticalSync : SFRenderWindow.t -> enabled:bool -> unit
    = "caml_sfRenderWindow_UseVerticalSync"
  external setJoystickThreshold : SFRenderWindow.t -> threshold:float -> unit
    = "caml_sfRenderWindow_SetJoystickThreshold"
  external getInput : SFRenderWindow.t -> SFInput.t
    = "caml_sfRenderWindow_GetInput"
end