sig
  type 'a t = { left : 'a; top : 'a; width : 'a; height : 'a; }
  external contains_f : rect:float SFRect.t -> x:float -> y:float -> bool
    = "caml_sfFloatRect_contains"
  external contains_i : rect:int SFRect.t -> x:int -> y:int -> bool
    = "caml_sfIntRect_contains"
  external intersects_i : rect1:int SFRect.t -> rect2:int SFRect.t -> bool
    = "caml_sfFloatRect_intersects"
  external intersection_i :
    rect1:int SFRect.t -> rect2:int SFRect.t -> int SFRect.t option
    = "caml_sfFloatRect_intersection"
  external intersects_f :
    rect1:float SFRect.t -> rect2:float SFRect.t -> bool
    = "caml_sfIntRect_intersects"
  external intersection_f :
    rect1:float SFRect.t -> rect2:float SFRect.t -> float SFRect.t option
    = "caml_sfIntRect_intersection"
end