struct

SF::Rect(T)

Inherits Struct / Value / Object

Utility struct for manipulating 2D axis aligned rectangles

A rectangle is defined by its top-left corner and its size. It is a very simple struct defined for convenience, so its member variables (left, top, width and height) can be accessed directly, just like the vector classes (Vector2 and Vector3).

To keep things simple, SF::Rect doesn't define functions to emulate the properties that are not directly members (such as right, bottom, center, etc.), it rather only provides intersection functions.

SF::Rect uses the usual rules for its boundaries:

  • The left and top edges are included in the rectangle's area
  • The right (left + width) and bottom (top + height) edges are excluded from the rectangle's area

This means that SF::IntRect.new(0, 0, 1, 1) and SF::IntRect.new(1, 1, 1, 1) don't intersect.

SF::Rect is a generic and may be used with any numeric type, but for simplicity the instantiations used by SFML are aliased:

  • SF::Rect(Int32) is SF::IntRect
  • SF::Rect(Float32) is SF::FloatRect

So that you don't have to care about the template syntax.

See also: SF.int_rect, SF.float_rect.

Usage example:

# Define a rectangle, located at (0, 0) with a size of 20x5
r1 = SF.int_rect(0, 0, 20, 5)

# Define another rectangle, located at (4, 2) with a size of 18x10
position = SF.vector2i(4, 2)
size = SF.vector2i(18, 10)
r2 = SF::IntRect.new(position, size)

# Test intersections with the point (3, 1)
r1.contains?(3, 1) #=> true
r2.contains?(3, 1) #=> false

# Test the intersection between r1 and r2
r1.intersects?(r2) #=> (4, 2, 16, 3)

Constructors

new(left : T, top : T, width : T, height : T)

Construct the rectangle from its coordinates

Be careful, the last two parameters are the width and height, not the right and bottom coordinates!

Source
new(position : Vector2(T), size : Vector2(T))

Construct the rectangle from position and size

Be careful, the last parameter is the size, not the bottom-right corner!

Source
new

Default constructor: equivalent to new(0, 0, 0, 0)

Source

Instance methods

==(other : self) : Bool

Returns true if all corresponding coordinates of two rects are equal

Source
contains?(x : Number, y : Number) : Bool

Returns true if a point is inside the rectangle's area

Source
contains?(point : Vector2 | Tuple) : Bool

Returns true if a point is inside the rectangle's area

Source
height

Height of the rectangle

Source
height=(height : T)

Height of the rectangle

Source
intersects?(other : Rect(T)) : Rect(T) | Nil

Check the intersection between two rectangles

Returns the overlapped rectangle or nil if there is no overlap.

Source
left

Left coordinate of the rectangle

Source
left=(left : T)

Left coordinate of the rectangle

Source
top

Top coordinate of the rectangle

Source
top=(top : T)

Top coordinate of the rectangle

Source
width

Width of the rectangle

Source
width=(width : T)

Width of the rectangle

Source