sig
  type t
  external create : width:int -> height:int -> SFTexture.t
    = "caml_sfTexture_create"
  external createFromFile :
    filename:string -> ?area:int SFRect.t -> unit -> SFTexture.t
    = "caml_sfTexture_createFromFile"
  external createFromMemory :
    data:string -> ?area:int SFRect.t -> unit -> SFTexture.t
    = "caml_sfTexture_createFromMemory"
  external createFromImage :
    image:SFImage.t -> ?area:int SFRect.t -> unit -> SFTexture.t
    = "caml_sfTexture_createFromImage"
  external copy : SFTexture.t -> SFTexture.t = "caml_sfTexture_copy"
  external destroy : SFTexture.t -> unit = "caml_sfTexture_destroy"
  type coordinateType = Normalized | Pixels
  external bind : SFTexture.t -> unit = "caml_sfTexture_bind"
  external getSize : SFTexture.t -> int * int = "caml_sfTexture_getSize"
  external setSmooth : SFTexture.t -> smooth:bool -> unit
    = "caml_sfTexture_setSmooth"
  external isSmooth : SFTexture.t -> bool = "caml_sfTexture_isSmooth"
  external setRepeated : SFTexture.t -> repeated:bool -> unit
    = "caml_sfTexture_setRepeated"
  external isRepeated : SFTexture.t -> bool = "caml_sfTexture_isRepeated"
  external getMaximumSize : unit -> int = "caml_sfTexture_getMaximumSize"
  type input =
      [ `Filename of string | `Image of SFImage.t | `Memory of string ]
  val create_from : ?area:int SFRect.t -> SFTexture.input -> SFTexture.t
end