Rectangle template. More...
#include <rect.h>
Public Member Functions | |
rect () | |
Default constructor creating empty rectangle at (0,0) | |
template<class U > | |
rect (const position2d< T > &pos, const dimension2d< U > &size) | |
Constructor with upper left corner and dimension. | |
rect (const position2d< T > &upperLeft, const position2d< T > &lowerRight) | |
Constructor with two corners. | |
rect (T x, T y, T x2, T y2) | |
Constructor with two corners. | |
void | addInternalPoint (const position2d< T > &p) |
Adds a point to the rectangle. | |
void | addInternalPoint (T x, T y) |
Adds a point to the bounding rectangle. | |
void | clipAgainst (const rect< T > &other) |
Clips this rectangle with another one. | |
bool | constrainTo (const rect< T > &other) |
Moves this rectangle to fit inside another one. | |
T | getArea () const |
Returns size of rectangle. | |
position2d< T > | getCenter () const |
Get the center of the rectangle. | |
T | getHeight () const |
Get height of rectangle. | |
dimension2d< T > | getSize () const |
Get the dimensions of the rectangle. | |
T | getWidth () const |
Get width of rectangle. | |
bool | isPointInside (const position2d< T > &pos) const |
Returns if a 2d point is within this rectangle. | |
bool | isRectCollided (const rect< T > &other) const |
Check if the rectangle collides with another rectangle. | |
bool | isValid () const |
Returns if the rect is valid to draw. | |
bool | operator!= (const rect< T > &other) const |
inequality operator | |
rect< T > | operator+ (const position2d< T > &pos) const |
move right by given numbers | |
rect< T > & | operator+= (const position2d< T > &pos) |
move right by given numbers | |
rect< T > | operator- (const position2d< T > &pos) const |
move left by given numbers | |
rect< T > & | operator-= (const position2d< T > &pos) |
move left by given numbers | |
bool | operator< (const rect< T > &other) const |
compares size of rectangles | |
bool | operator== (const rect< T > &other) const |
equality operator | |
void | repair () |
If the lower right corner of the rect is smaller then the upper left, the points are swapped. | |
Public Attributes | |
position2d< T > | LowerRightCorner |
Lower right corner. | |
position2d< T > | UpperLeftCorner |
Upper left corner. | |
Rectangle template.
Mostly used by 2D GUI elements and for 2D drawing methods. It has 2 positions instead of position and dimension and a fast method for collision detection with other rectangles and points.
Coordinates are (0,0) for top-left corner, and increasing to the right and to the bottom.
|
inline |
|
inline |
|
inline |
|
inline |
Adds a point to the rectangle.
Causes the rectangle to grow bigger if point is outside of the box
p | Point to add to the box. |
Definition at line 241 of file rect.h.
References irr::core::rect< T >::addInternalPoint().
Referenced by irr::core::rect< T >::addInternalPoint().
Adds a point to the bounding rectangle.
Causes the rectangle to grow bigger if point is outside of the box
x | X-Coordinate of the point to add to this box. |
y | Y-Coordinate of the point to add to this box. |
Definition at line 251 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
Clips this rectangle with another one.
other | Rectangle to clip with |
Definition at line 126 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
Referenced by irr::gui::IGUIElement::recalculateAbsolutePosition().
Moves this rectangle to fit inside another one.
Definition at line 147 of file rect.h.
References irr::core::rect< T >::getHeight(), irr::core::rect< T >::getWidth(), irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
|
inline |
Returns size of rectangle.
Definition at line 97 of file rect.h.
References irr::core::rect< T >::getHeight(), and irr::core::rect< T >::getWidth().
Referenced by irr::core::rect< T >::operator<().
|
inline |
Get the center of the rectangle.
Definition at line 223 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
|
inline |
Get height of rectangle.
Definition at line 190 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
Referenced by irr::core::rect< T >::constrainTo(), irr::core::rect< T >::getArea(), irr::core::rect< T >::getSize(), and irr::gui::IGUIElement::recalculateAbsolutePosition().
|
inline |
Get the dimensions of the rectangle.
Definition at line 231 of file rect.h.
References irr::core::rect< T >::getHeight(), and irr::core::rect< T >::getWidth().
Referenced by irr::gui::IGUIElement::setRelativePosition(), and irr::gui::IGUIElement::setRelativePositionProportional().
|
inline |
Get width of rectangle.
Definition at line 184 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
Referenced by irr::core::rect< T >::constrainTo(), irr::core::rect< T >::getArea(), irr::core::rect< T >::getSize(), and irr::gui::IGUIElement::recalculateAbsolutePosition().
|
inline |
Returns if a 2d point is within this rectangle.
pos | Position to test if it lies within this rectangle. |
Definition at line 105 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
Referenced by irr::gui::IGUIElement::isPointInside().
Check if the rectangle collides with another rectangle.
other | Rectangle to test collision with |
Definition at line 116 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
|
inline |
Returns if the rect is valid to draw.
It would be invalid if the UpperLeftCorner is lower or more right than the LowerRightCorner.
Definition at line 216 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
inequality operator
Definition at line 84 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
|
inline |
|
inline |
move right by given numbers
Definition at line 54 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
|
inline |
|
inline |
move left by given numbers
Definition at line 69 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
compares size of rectangles
Definition at line 91 of file rect.h.
References irr::core::aabbox3d< T >::getArea(), and irr::core::rect< T >::getArea().
equality operator
Definition at line 77 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
|
inline |
If the lower right corner of the rect is smaller then the upper left, the points are swapped.
Definition at line 196 of file rect.h.
References irr::core::rect< T >::LowerRightCorner, and irr::core::rect< T >::UpperLeftCorner.
Referenced by irr::gui::IGUIElement::recalculateAbsolutePosition().
position2d<T> irr::core::rect< T >::LowerRightCorner |
Lower right corner.
Definition at line 267 of file rect.h.
Referenced by irr::core::rect< T >::addInternalPoint(), irr::core::rect< T >::clipAgainst(), irr::core::rect< T >::constrainTo(), irr::core::rect< T >::getCenter(), irr::core::rect< T >::getHeight(), irr::core::rect< T >::getWidth(), irr::core::rect< T >::isPointInside(), irr::core::rect< T >::isRectCollided(), irr::core::rect< T >::isValid(), irr::core::rect< T >::operator!=(), irr::core::rect< T >::operator+=(), irr::core::rect< T >::operator-=(), irr::core::rect< T >::operator==(), irr::gui::IGUIElement::recalculateAbsolutePosition(), irr::core::rect< T >::repair(), irr::gui::IGUIElement::setAlignment(), and irr::gui::IGUIElement::setRelativePosition().
position2d<T> irr::core::rect< T >::UpperLeftCorner |
Upper left corner.
Definition at line 265 of file rect.h.
Referenced by irr::core::rect< T >::addInternalPoint(), irr::core::rect< T >::clipAgainst(), irr::core::rect< T >::constrainTo(), irr::core::rect< T >::getCenter(), irr::core::rect< T >::getHeight(), irr::core::rect< T >::getWidth(), irr::core::rect< T >::isPointInside(), irr::core::rect< T >::isRectCollided(), irr::core::rect< T >::isValid(), irr::core::rect< T >::operator!=(), irr::core::rect< T >::operator+=(), irr::core::rect< T >::operator-=(), irr::core::rect< T >::operator==(), irr::gui::IGUIElement::recalculateAbsolutePosition(), irr::core::rect< T >::repair(), irr::gui::IGUIElement::setAlignment(), and irr::gui::IGUIElement::setRelativePosition().