The width and height of a Rect can be negative; for instance, a Rect with an origin of
[ 0, 0 ] and a size of [ 10, 10 ] is equivalent to a Rect with an origin of [ 10, 10 ] and a size of [ -10, -10 ].

Application code can normalize rectangles using normalize; this
function will ensure that the width and height of a rectangle are positive values. All functions taking a Rect as
an argument will internally operate on a normalized copy; all functions returning a Rect will always return a
normalized rectangle.

Rounds the origin and size of the given rectangle to their nearest integer
values; the rounding is guaranteed to be large enough to have an area bigger or equal to the original rectangle, but might not fully contain
its extents.

Rounds the origin of the given rectangle to its nearest integer value and
and recompute the size so that the rectangle is large enough to contain all the conrners of the original rectangle.

Rounds the origin and the size of the given rectangle to their nearest
integer values; the rounding is guaranteed to be large enough to contain the original rectangle.