46 template<
typename Type>
66 Rectx(Type new_left, Type new_top, Type new_right, Type new_bottom)
162 return (p.
x >= left && p.
x < right)
193 return (r.left < right && r.right > left && r.top < bottom && r.bottom > top);
199 return ((left <= r.left)
201 && (right >= r.right)
202 && (bottom >= r.bottom));
244 right = left +
width;
260 Rectx<Type> &
shrink(
const Type &new_left,
const Type &new_top,
const Type &new_right,
const Type &new_bottom)
262 left += new_left; top += new_top; right -= new_right; bottom -= new_bottom;
271 left += left_right; top += top_bottom; right -= left_right; bottom -= top_bottom;
287 Rectx<Type> &
expand(
const Type &expand_left,
const Type &expand_top,
const Type &expand_right,
const Type &expand_bottom)
289 left -= expand_left; top -= expand_top; right += expand_right; bottom += expand_bottom;
298 left -= left_and_right;
299 right += left_and_right;
300 top -= top_and_bottom;
301 bottom += top_and_bottom;
322 left += p.
x; top += p.
y; right += p.
x; bottom += p.
y;
340 left += p.left; top += p.top; right += p.left; bottom += p.top;
349 left +=
x; top +=
y; right +=
x; bottom +=
y;
358 right = left + size.
width;
359 bottom = top + size.
height;
371 result.left =
max(left, rect.left);
372 result.right =
min(right, rect.right);
373 result.top =
max(top, rect.top);
374 result.bottom =
min(bottom, rect.bottom);
375 if (result.right < result.left)
376 result.left = result.right;
377 if (result.bottom < result.top)
378 result.top = result.bottom;
392 result.left =
min(left, rect.left);
393 result.right =
max(right, rect.right);
394 result.top =
min(top, rect.top);
395 result.bottom =
max(bottom, rect.bottom);
441 top =
max(top, cr.top);
442 left =
max(left, cr.left);
443 right =
min(right, cr.right);
444 bottom =
min(bottom, cr.bottom);
445 top =
min(top, bottom);
446 left =
min(left, right);
453 :
left(static_cast<int> (floor(rect.
left + 0.5
f))),
454 top(static_cast<int> (floor(rect.top + 0.5
f))),
455 right(static_cast<int> (floor(rect.
right + 0.5
f))),
456 bottom(static_cast<int> (floor(rect.bottom + 0.5
f)))
462 :
left(static_cast<int> (floor(rect.
left + 0.5))),
463 top(static_cast<int> (floor(rect.top + 0.5))),
464 right(static_cast<int> (floor(rect.
right + 0.5))),
465 bottom(static_cast<int> (floor(rect.bottom + 0.5)))
469 template<
typename Type>
471 :
left(static_cast<Type> (rect.
left)), top(static_cast<Type> (rect.top)),
472 right(static_cast<Type> (rect.
right)), bottom(static_cast<Type> (rect.bottom))
476 template<
typename Type>
478 :
left(static_cast<Type> (rect.
left)), top(static_cast<Type> (rect.top)),
479 right(static_cast<Type> (rect.
right)), bottom(static_cast<Type> (rect.bottom))
483 template<
typename Type>
485 :
left(static_cast<Type> (rect.
left)), top(static_cast<Type> (rect.top)),
486 right(static_cast<Type> (rect.
right)), bottom(static_cast<Type> (rect.bottom))
496 Rect(
int new_left,
int new_top,
int new_right,
int new_bottom) :
Rectx<int>(new_left, new_top, new_right, new_bottom) {}
511 Rectf(
float new_left,
float new_top,
float new_right,
float new_bottom) :
Rectx<float>(new_left, new_top, new_right, new_bottom) {}
527 Rectd(
double new_left,
double new_top,
double new_right,
double new_bottom) :
Rectx<double>(new_left, new_top, new_right, new_bottom) {}
537 return Rect(x, y, x + width, y + height);
542 return Rectf(x, y, x + width, y + height);
547 return Rectd(x, y, x + width, y + height);
Rectx()
Constructs an rectangle.
Definition: rect.h:53
Rect(const Sizex< int > &s)
Definition: rect.h:495
Rectx< Type > & normalize()
Normalize rectangle.
Definition: rect.h:406
bool operator!=(const Rectx< Type > &r) const
Rect != Rect operator.
Definition: rect.h:106
Rectx< Type > & shrink(const Type &left_right, const Type &top_bottom)
Shrink the rectangle.
Definition: rect.h:269
Rectf(const Sizex< float > &s)
Definition: rect.h:510
Rectd(const Pointx< double > &p, const Sizex< double > &size)
Definition: rect.h:528
Rectf(const Rectx< float > &rect)
Definition: rect.h:514
A min(A a, B b)
Definition: cl_math.h:55
Rectf(const Rectx< int > &rect)
Definition: rect.h:513
static Rectx< Type > xywh(Type x, Type y, Type width, Type height)
Definition: rect.h:125
Rectx< Type > & bounding_rect(const Rectx< Type > &rect)
Calculates the bounding rectangle of the rectangles.
Definition: rect.h:389
static Rectx< Type > xywh(const Pointx< Type > &pos, const Sizex< Type > &size)
Definition: rect.h:126
Sizex< Type > size() const
Returns the size of the rectangle.
Definition: rect.h:157
bool operator==(const Rectx< Type > &r) const
Rect == Rect operator.
Definition: rect.h:100
Rect(const Rectx< float > &rect)
Definition: rect.h:499
static Rectx< Type > ltrb(Type left, Type top, Type right, Type bottom)
Definition: rect.h:127
2D vector
Definition: line.h:43
Rect RectPS(int x, int y, int width, int height)
Definition: rect.h:535
2D (width,height) size structure.
Definition: size.h:51
Rectf(const Rectx< double > &rect)
Definition: rect.h:515
Type top
Y1-coordinate (top point inside the rectangle)
Definition: rect.h:133
static Rectx< Type > wh(Type width, Type height)
Definition: rect.h:123
2D (left,top,right,bottom) rectangle structure - Double
Definition: rect.h:520
Rectx< Type > & set_position(const Vec2< Type > &p)
Sets the position of the rectangle.
Definition: rect.h:228
Rectx(const Sizex< Type > &s)
Constructs an rectangle.
Definition: rect.h:58
Rectd(const Sizex< double > &s)
Definition: rect.h:526
bool is_inside(const Rectx< Type > &r) const
Returns true if rectangle passed is inside this rectangle.
Definition: rect.h:197
Rectd(const Rectx< int > &rect)
Definition: rect.h:529
Type x
Definition: vec2.h:75
Rectx(Type new_left, Type new_top, const Sizex< Type > &size)
Constructs an rectangle.
Definition: rect.h:81
2D (x,y) point structure.
Definition: point.h:48
Rectx< Type > & set_size(const Sizex< Type > &size)
Sets the size of the rectangle, maintaining top/left position.
Definition: rect.h:356
static Pointx< Type > calc_origin(Origin origin, const Sizex< Type > &size)
Returns the anchor point for the origin within the dimensions of the size structure.
Rectx< Type > & shrink(const Type &new_left, const Type &new_top, const Type &new_right, const Type &new_bottom)
Shrink the rectangle.
Definition: rect.h:260
Rectx< Type > & expand(const Type &left_and_right, const Type &top_and_bottom)
Expand the rectangle.
Definition: rect.h:296
Rect(const Rectx< int > &rect)
Definition: rect.h:498
Rectx< Type > & shrink(const Type &shrink)
Shrink the rectangle.
Definition: rect.h:278
Rectd RectdPS(double x, double y, double width, double height)
Definition: rect.h:545
Type y() const
Y position of rectangle.
Definition: rect.h:151
Rectd()
Definition: rect.h:523
Rectf(float new_left, float new_top, float new_right, float new_bottom)
Definition: rect.h:511
Rectx< Type > & expand(const Type &expand)
Expand the rectangle.
Definition: rect.h:308
Rectx< Type > & translate(Type x, Type y)
Translate the rect.
Definition: rect.h:347
Rectx< Type > & translate(const Vec2< Type > &p)
Translate the rect.
Definition: rect.h:320
Type bottom
Y2-coordinate (point outside the rectange)
Definition: rect.h:139
Rectd(double new_left, double new_top, const Sizex< double > &size)
Definition: rect.h:532
Rectf(const Sizex< int > &s)
Definition: rect.h:509
Rect(const Rectx< double > &rect)
Definition: rect.h:500
Rectd(const Sizex< int > &s)
Definition: rect.h:524
Rectx< Type > & translate(const Sizex< Type > &p)
Translate the rect.
Definition: rect.h:329
Rectf()
Definition: rect.h:508
Pointx< Type > bottom_right() const
Returns the bottom-right point outside the rectangle.
Definition: rect.h:179
Pointx< Type > top_right() const
Returns the top-right point outside the rectangle.
Definition: rect.h:173
Type y
Definition: vec2.h:76
Type right
X2-coordinate (point outside the rectangle)
Definition: rect.h:136
Rectx< Type > & clip(const Rectx< Type > &cr)
Clip according to the specified clip rectangle.
Definition: rect.h:439
bool is_overlapped(const Rectx< Type > &r) const
Returns true if rectangle passed is overlapping or inside this rectangle.
Definition: rect.h:191
Type height
Size height.
Definition: size.h:74
Rectf(const Pointx< float > &p, const Sizex< float > &size)
Definition: rect.h:512
Rect(int new_left, int new_top, const Sizex< int > &size)
Definition: rect.h:501
Rectf RectfPS(float x, float y, float width, float height)
Definition: rect.h:540
Rect(const Pointx< int > &p, const Sizex< int > &size)
Definition: rect.h:497
Type height() const
Returns the height of the rectangle.
Definition: rect.h:145
Rectf(float new_left, float new_top, const Sizex< float > &size)
Definition: rect.h:516
2D (left,top,right,bottom) rectangle structure - Float
Definition: rect.h:505
Rectx< Type > & apply_alignment(Origin origin, Type x, Type y)
Applies an origin and offset pair to this rectangle.
Definition: rect.h:423
Rectx< Type > & expand(const Type &expand_left, const Type &expand_top, const Type &expand_right, const Type &expand_bottom)
Expand the rectangle.
Definition: rect.h:287
Rectd(double new_left, double new_top, double new_right, double new_bottom)
Definition: rect.h:527
Type left
X1-coordinate (left point inside the rectangle)
Definition: rect.h:130
2D (left,top,right,bottom) rectangle structure - Integer
Definition: rect.h:491
A max(A a, B b)
Definition: cl_math.h:56
Type width
Size width.
Definition: size.h:71
Rectd(const Rectx< double > &rect)
Definition: rect.h:531
Rectx(Type new_left, Type new_top, Type new_right, Type new_bottom)
Constructs an rectangle.
Definition: rect.h:66
Rectx< Type > & operator*=(const Type &s)
Rect *= operator.
Definition: rect.h:112
Rectd(const Sizex< float > &s)
Definition: rect.h:525
Rectx< Type > & set_height(Type height)
Sets the height of the rectangle.
Definition: rect.h:251
Pointx< Type > bottom_left() const
Returns the bottom-left point outside the rectangle.
Definition: rect.h:185
Pointx< Type > center() const
Returns the center point of the rectangle.
Definition: rect.h:220
Pointx< Type > position() const
Returns the position of the rectangle.
Definition: rect.h:154
Rectx< Type > rot_bounds(const Vec2< Type > &hotspot, float angle) const
Returns another Rectx containing a rotated version of this one.
Rectx< Type > & overlap(const Rectx< Type > &rect)
Calculates the intersection of two rectangles.
Definition: rect.h:368
Pointx< Type > top_left() const
Returns the top-left point inside the rectangle.
Definition: rect.h:167
Rect(int new_left, int new_top, int new_right, int new_bottom)
Definition: rect.h:496
Origin
Alignment origins.
Definition: origin.h:35
Rectx< Type > & set_width(Type width)
Sets the width of the rectangle.
Definition: rect.h:242
Type width() const
Returns the width of the rectangle.
Definition: rect.h:142
Type x() const
X position of rectangle.
Definition: rect.h:148
Rect()
Definition: rect.h:494
static Rectx< Type > wh(const Sizex< Type > &size)
Definition: rect.h:124
Definition: Application/application.h:35
Rectx< Type > operator*(const Type &s) const
Rect * operator.
Definition: rect.h:118
Rectx(const Pointx< Type > &p, const Sizex< Type > &size)
Constructs an rectangle.
Definition: rect.h:73
bool contains(const Vec2< Type > &p) const
Returns true if the rectangle contains the point.
Definition: rect.h:160
Rectx< Type > & translate(const Rectx< Type > &p)
Translate the rect by another rect (only uses the left and top coords).
Definition: rect.h:338
Rectd(const Rectx< float > &rect)
Definition: rect.h:530