sig
  type t
  external create :
    mode:SFVideoMode.t ->
    title:string ->
    style:SFStyle.t list -> settings:SFContextSettings.t -> SFRenderWindow.t
    = "caml_sfRenderWindow_create"
  external createFromHandle :
    handle:nativeint -> settings:SFContextSettings.t -> SFRenderWindow.t
    = "caml_sfRenderWindow_createFromHandle"
  val make :
    ?style:SFStyle.t list ->
    ?bpp:int ->
    ?settings:SFContextSettings.t -> 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 -> SFContextSettings.t
    = "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 -> size:int * int -> unit
    = "caml_sfRenderWindow_setSize2"
  external setSize2 : SFRenderWindow.t -> width:int -> height:int -> unit
    = "caml_sfRenderWindow_setSize"
  external setMouseCursorVisible : SFRenderWindow.t -> show:bool -> unit
    = "caml_sfRenderWindow_setMouseCursorVisible"
  external setMouseCursorGrabbed : SFRenderWindow.t -> grabbed:bool -> unit
    = "caml_sfRenderWindow_setMouseCursorGrabbed"
  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 -> pos:int * int -> unit
    = "caml_sfRenderWindow_setPosition2"
  external setPosition2 : SFRenderWindow.t -> left:int -> top:int -> unit
    = "caml_sfRenderWindow_setPosition"
  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