sig
  type t
  type window_style = [ `close | `fullscreen | `resize | `titlebar ]
  type video_mode = { width : int; height : int; bitsPerPixel : int; }
  type context_settings = {
    depthBits : int;
    stencilBits : int;
    antialiasingLevel : int;
    majorVersion : int;
    minorVersion : int;
  }
  val mode :
    width:int -> height:int -> bitsPerPixel:int -> SFRenderWindow.video_mode
  val settings :
    depthBits:int ->
    stencilBits:int ->
    antialiasingLevel:int ->
    version:int * int -> SFRenderWindow.context_settings
  external create :
    mode:SFRenderWindow.video_mode ->
    title:string ->
    style:SFRenderWindow.window_style list ->
    settings:SFRenderWindow.context_settings -> SFRenderWindow.t
    = "caml_sfRenderWindow_create"
  external createFromHandle :
    handle:nativeint ->
    settings:SFRenderWindow.context_settings -> SFRenderWindow.t
    = "caml_sfRenderWindow_createFromHandle"
  val make :
    ?style:SFRenderWindow.window_style list ->
    ?bpp:int ->
    ?depth:int ->
    ?stencil:int ->
    ?antialiasing:int ->
    ?version:int * int -> int * int -> string -> SFRenderWindow.t
  external isOpen : SFRenderWindow.t -> bool = "caml_sfRenderWindow_isOpen"
  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 pollEvent : SFRenderWindow.t -> SFEvent.t option
    = "caml_sfRenderWindow_pollEvent"
  external waitEvent : SFRenderWindow.t -> SFEvent.t
    = "caml_sfRenderWindow_waitEvent"
  external clear : SFRenderWindow.t -> SFColor.t -> unit
    = "caml_sfRenderWindow_clear"
  external blank : SFRenderWindow.t -> unit = "caml_sfRenderWindow_blank"
  external getSettings : SFRenderWindow.t -> SFRenderWindow.context_settings
    = "caml_sfRenderWindow_getSettings"
  external getSize : SFRenderWindow.t -> int * int
    = "caml_sfRenderWindow_getSize"
  external getWidth : SFRenderWindow.t -> int
    = "caml_sfRenderWindow_getWidth"
  external getHeight : SFRenderWindow.t -> int
    = "caml_sfRenderWindow_getHeight"
  external setSize : SFRenderWindow.t -> width:int -> height:int -> unit
    = "caml_sfRenderWindow_setSize"
  external setSize2 : SFRenderWindow.t -> size:int * int -> unit
    = "caml_sfRenderWindow_setSize2"
  external setMouseCursorVisible : SFRenderWindow.t -> show:bool -> unit
    = "caml_sfRenderWindow_setMouseCursorVisible"
  external setVisible : SFRenderWindow.t -> visible:bool -> unit
    = "caml_sfRenderWindow_setVisible"
  external setKeyRepeatEnabled : SFRenderWindow.t -> enabled:bool -> unit
    = "caml_sfRenderWindow_setKeyRepeatEnabled"
  external setActive : SFRenderWindow.t -> active:bool -> unit
    = "caml_sfRenderWindow_setActive"
  external drawSprite :
    SFRenderWindow.t ->
    sprite:SFSprite.t -> ?states:SFRenderStates.t -> unit -> unit
    = "caml_sfRenderWindow_drawSprite"
  external drawText :
    SFRenderWindow.t ->
    text:SFText.t -> ?states:SFRenderStates.t -> unit -> unit
    = "caml_sfRenderWindow_drawText"
  external drawShape :
    SFRenderWindow.t ->
    shape:SFShape.t -> ?states:SFRenderStates.t -> unit -> unit
    = "caml_sfRenderWindow_drawShape"
  external drawCircleShape :
    SFRenderWindow.t ->
    circle:SFCircleShape.t -> ?states:SFRenderStates.t -> unit -> unit
    = "caml_sfRenderWindow_drawCircleShape"
  external setPosition : SFRenderWindow.t -> left:int -> top:int -> unit
    = "caml_sfRenderWindow_setPosition"
  external setPosition2 : SFRenderWindow.t -> pos:int * int -> unit
    = "caml_sfRenderWindow_setPosition2"
  external setFramerateLimit : SFRenderWindow.t -> limit:int -> unit
    = "caml_sfRenderWindow_setFramerateLimit"
  external setView : SFRenderWindow.t -> view:SFView.t -> unit
    = "caml_sfRenderWindow_setView"
  external setVerticalSyncEnabled : SFRenderWindow.t -> enabled:bool -> unit
    = "caml_sfRenderWindow_setVerticalSyncEnabled"
  external setJoystickThreshold : SFRenderWindow.t -> threshold:float -> unit
    = "caml_sfRenderWindow_setJoystickThreshold"
  external setTitle : SFRenderWindow.t -> title:string -> unit
    = "caml_sfRenderWindow_setTitle"
  external pushGLStates : SFRenderWindow.t -> unit
    = "caml_sfRenderWindow_pushGLStates"
  external popGLStates : SFRenderWindow.t -> unit
    = "caml_sfRenderWindow_popGLStates"
  external resetGLStates : SFRenderWindow.t -> unit
    = "caml_sfRenderWindow_resetGLStates"
  external getView : SFRenderWindow.t -> SFView.t
    = "caml_sfRenderWindow_getView"
  external capture : SFRenderWindow.t -> SFImage.t
    = "caml_sfRenderWindow_capture"
  external getMousePosition : relativeTo:SFRenderWindow.t -> int * int
    = "caml_sfRenderWindow_getMousePosition"
  external setMousePosition :
    relativeTo:SFRenderWindow.t -> int * int -> unit
    = "caml_sfRenderWindow_setMousePosition"
end