4#include <SDL3/SDL_rect.h>
5#include "SDL3pp_error.h"
6#include "SDL3pp_optionalRef.h"
7#include "SDL3pp_spanRef.h"
8#include "SDL3pp_stdinc.h"
48 return lhs.x == rhs.x && lhs.y == rhs.y;
54 return lhs.x == rhs.x && lhs.y == rhs.y;
60 return SDL_RectsEqual(&lhs, &rhs);
66 return SDL_RectsEqualFloat(&lhs, &rhs);
100 constexpr Point(
int x,
int y) noexcept
111 : SDL_Point{int(p.x), int(p.y)}
120 constexpr explicit operator bool() const noexcept
130 constexpr int GetX() const noexcept {
return x; }
149 constexpr int GetY() const noexcept {
return y; }
203 return Point(x + other.x, y + other.y);
216 return Point(x - other.x, y - other.y);
230 return Point(x / value, y / value);
255 return Point(x / other.x, y / other.y);
270 return Point(x % value, y % value);
285 return Point(x % other.x, y % other.y);
300 return Point(x * value, y * value);
327 return Point(x * other.x, y * other.y);
498 constexpr operator FPoint()
const;
529 constexpr FPoint(
float x,
float y) noexcept
539 constexpr explicit operator bool() const noexcept
549 constexpr float GetX() const noexcept {
return x; }
568 constexpr float GetY() const noexcept {
return y; }
622 return FPoint(x + other.x, y + other.y);
635 return FPoint(x - other.x, y - other.y);
649 return FPoint(x / value, y / value);
663 return FPoint(x / other.x, y / other.y);
678 return FPoint(x * value, y * value);
693 return FPoint(x * other.x, y * other.y);
864 constexpr Rect(
int x,
int y,
int w,
int h) noexcept
876 :
Rect{corner.x, corner.y, size.x, size.y}
886 return *
this == (
const RectRaw&)(other);
890 constexpr explicit operator bool()
const {
return !
Empty(); }
897 constexpr int GetX() const noexcept {
return x; }
916 constexpr int GetY() const noexcept {
return y; }
935 constexpr int GetW() const noexcept {
return w; }
954 constexpr int GetH() const noexcept {
return h; }
999 return Rect(cx - w / 2, cy - h / 2, w, h);
1011 return Rect(center - size / 2, size);
1025 return Rect(x1, y1, x2 - x1 + 1, y2 - y1 + 1);
1046 constexpr int GetX2()
const {
return x + w - 1; }
1070 constexpr int GetY2()
const {
return y + h - 1; }
1155 p1 ? &p1->y :
nullptr,
1156 p2 ? &p2->x :
nullptr,
1157 p2 ? &p2->y :
nullptr);
1189 constexpr operator SDL_FRect()
const;
1192 constexpr operator FRect()
const;
1211 constexpr bool Empty()
const;
1243 return SDL_PointInRect(&p,
this);
1328 r.
Extend(hAmount, vAmount);
1353 constexpr Rect&
Extend(
unsigned int hAmount,
unsigned int vAmount)
1372 return Rect(x + offset.x, y + offset.y, w, h);
1385 return Rect(x - offset.x, y - offset.y, w, h);
1460 constexpr FRect(
float x,
float y,
float w,
float h) noexcept
1469 :
FRect{corner.x, corner.y, size.x, size.y}
1474 constexpr operator bool()
const {
return !
Empty(); }
1481 constexpr float GetX() const noexcept {
return x; }
1500 constexpr float GetY() const noexcept {
return y; }
1519 constexpr float GetW() const noexcept {
return w; }
1538 constexpr float GetH() const noexcept {
return h; }
1584 return FRect(cx - w / 2, cy - h / 2, w, h);
1596 return FRect(center - size / 2, size);
1610 return FRect(x1, y1, x2 - x1 + 1, y2 - y1 + 1);
1631 constexpr float GetX2()
const {
return x + w - 1; }
1655 constexpr float GetY2()
const {
return y + h - 1; }
1760 p1 ? &p1->y :
nullptr,
1761 p2 ? &p2->x :
nullptr,
1762 p2 ? &p2->y :
nullptr);
1782 constexpr bool Empty()
const;
1846 return SDL_PointInRectFloat(&p,
this);
1931 r.
Extend(hAmount, vAmount);
1975 return FRect(x + offset.x, y + offset.y, w, h);
1988 return FRect(x - offset.x, y - offset.y, w, h);
2035 SDL_RectToFRect(&rect, &frect);
2064 return SDL_PointInRect(&p, &r);
2115 return SDL_RectsEqual(&a, &b);
2140 return SDL_HasRectIntersection(&A, &B);
2164 if (
Rect result; SDL_GetRectIntersection(&A, &B, &result))
return result;
2214 SDL_GetRectEnclosingPoints(points.
data(), points.
size(), clip, &result)) {
2250 return SDL_GetRectAndLineIntersection(&rect, X1, Y1, X2, Y2);
2281 return SDL_PointInRectFloat(&p, &r);
2309 return SDL_RectEmptyFloat(&r);
2341 const float epsilon)
2343 return SDL_RectsEqualEpsilon(&a, &b, epsilon);
2347 const float epsilon)
const
2379 return SDL_RectsEqualFloat(&a, &b);
2402 return SDL_HasRectIntersectionFloat(&A, &B);
2426 if (
FRect r; SDL_GetRectIntersectionFloat(&A, &B, &r))
return r;
2449 CheckError(SDL_GetRectUnionFloat(&A, &B, &r));
2476 if (
FRect result; SDL_GetRectEnclosingPointsFloat(
2477 points.
data(), points.
size(), clip, &result)) {
2514 return SDL_GetRectAndLineIntersectionFloat(&rect, X1, Y1, X2, Y2);
2527constexpr Point::operator
FPoint()
const {
return {float(x), float(y)}; }
2531 return FPoint(*
this) / value;
2535 return FPoint(*
this) * value;
2547 if (x < rect.x) x = rect.x;
2549 if (y < rect.y) y = rect.y;
2564 x = rect.x + rect.w - 1 - (rect.x - x + rect.w - 1) % rect.w;
2565 else if (x >= rect.x + rect.w)
2566 x = rect.x + (x - rect.x - rect.w) % rect.w;
2569 y = rect.y + rect.h - 1 - (rect.y - y + rect.h - 1) % rect.h;
2570 else if (y >= rect.y + rect.h)
2571 y = rect.y + (y - rect.y - rect.h) % rect.h;
2585 if (x < rect.x) x = rect.x;
2587 if (y < rect.y) y = rect.y;
2602 x = rect.x + rect.w - 1 - SDL_fmod(rect.x - x + rect.w - 1, rect.w);
2603 else if (x >= rect.x + rect.w)
2604 x = rect.x + SDL_fmod(x - rect.x - rect.w, rect.w);
2607 y = rect.y + rect.h - 1 - SDL_fmod(rect.y - y + rect.h - 1, rect.h);
2608 else if (y >= rect.y + rect.h)
2609 y = rect.y + SDL_fmod(y - rect.y - rect.h, rect.h);
2616 return {float(x), float(y), float(w), float(h)};
Optional-like shim for references.
Definition: SDL3pp_optionalRef.h:20
span-like for empty-derived structs
Definition: SDL3pp_spanRef.h:24
constexpr T * data() const
Retrieves contained data.
Definition: SDL3pp_spanRef.h:75
constexpr size_t size() const
Retrieves contained size.
Definition: SDL3pp_spanRef.h:69
constexpr void CheckError(bool result)
Check and throw if returned value from SDL is an error.
Definition: SDL3pp_error.h:197
constexpr bool operator==(ColorRaw lhs, ColorRaw rhs) noexcept
Comparison operator for Color.
Definition: SDL3pp_pixels.h:2150
constexpr bool RectEmptyFloat(const FRectRaw &r)
Determine whether a floating point rectangle takes no space.
Definition: SDL3pp_rect.h:2307
constexpr FRect GetRectUnionFloat(const FRectRaw &A, const FRectRaw &B)
Calculate the union of two rectangles with float precision.
Definition: SDL3pp_rect.h:2446
constexpr bool InRect(const RectRaw &r) const
Determine whether a point resides inside a rectangle.
Definition: SDL3pp_rect.h:2067
constexpr bool HasRectIntersectionFloat(const FRectRaw &A, const FRectRaw &B)
Determine whether two rectangles intersect with float precision.
Definition: SDL3pp_rect.h:2400
constexpr FRect GetRectIntersectionFloat(const FRectRaw &A, const FRectRaw &B)
Calculate the intersection of two rectangles with float precision.
Definition: SDL3pp_rect.h:2424
bool GetLineIntersection(float *X1, float *Y1, float *X2, float *Y2) const
Calculate the intersection of a rectangle and line segment with float precision.
Definition: SDL3pp_rect.h:2517
Rect GetRectEnclosingPoints(SpanRef< const PointRaw > points, OptionalRef< const RectRaw > clip=std::nullopt)
Calculate a minimal rectangle enclosing a set of points.
Definition: SDL3pp_rect.h:2209
constexpr FRect GetIntersection(const FRectRaw &other) const
Calculate the intersection of two rectangles with float precision.
Definition: SDL3pp_rect.h:2430
constexpr bool EqualEpsilon(const FRectRaw &other, const float epsilon) const
Determine whether two floating point rectangles are equal, within some given epsilon.
Definition: SDL3pp_rect.h:2346
constexpr bool InRect(const FRectRaw &r) const
Determine whether a point resides inside a floating point rectangle.
Definition: SDL3pp_rect.h:2284
bool GetRectAndLineIntersectionFloat(const FRectRaw &rect, float *X1, float *Y1, float *X2, float *Y2)
Calculate the intersection of a rectangle and line segment with float precision.
Definition: SDL3pp_rect.h:2508
constexpr bool PointInRectFloat(const FPointRaw &p, const FRectRaw &r)
Determine whether a point resides inside a floating point rectangle.
Definition: SDL3pp_rect.h:2279
constexpr bool Equal(const FRectRaw &other) const
Determine whether two floating point rectangles are equal, within a default epsilon.
Definition: SDL3pp_rect.h:2382
SDL_FPoint FPointRaw
Alias to raw representation for FPoint.
Definition: SDL3pp_rect.h:28
constexpr bool Empty() const
Determine whether a rectangle has no area.
Definition: SDL3pp_rect.h:2092
constexpr bool Equal(const RectRaw &other) const
Determine whether two rectangles are equal.
Definition: SDL3pp_rect.h:2118
constexpr bool RectsEqual(const RectRaw &a, const RectRaw &b)
Determine whether two rectangles are equal.
Definition: SDL3pp_rect.h:2113
constexpr bool Empty() const
Determine whether a rectangle has no area.
Definition: SDL3pp_rect.h:2312
constexpr bool RectEmpty(const RectRaw &r)
Determine whether a rectangle has no area.
Definition: SDL3pp_rect.h:2090
constexpr Rect GetUnion(const RectRaw &other) const
Calculate the union of two rectangles.
Definition: SDL3pp_rect.h:2190
constexpr bool PointInRect(const PointRaw &p, const RectRaw &r)
Determine whether a point resides inside a rectangle.
Definition: SDL3pp_rect.h:2062
static constexpr FRect GetEnclosingPoints(SpanRef< const FPointRaw > points, OptionalRef< const FRectRaw > clip=std::nullopt)
Calculate a minimal rectangle enclosing a set of points with float precision.
Definition: SDL3pp_rect.h:2483
static Rect GetEnclosingPoints(SpanRef< const PointRaw > points, OptionalRef< const RectRaw > clip=std::nullopt)
Calculate a minimal rectangle enclosing a set of points.
Definition: SDL3pp_rect.h:2220
constexpr Rect GetRectUnion(const RectRaw &A, const RectRaw &B)
Calculate the union of two rectangles.
Definition: SDL3pp_rect.h:2183
constexpr FRect RectToFRect(const RectRaw &rect)
Convert an Rect to FRect.
Definition: SDL3pp_rect.h:2032
constexpr Rect GetRectIntersection(const RectRaw &A, const RectRaw &B)
Calculate the intersection of two rectangles.
Definition: SDL3pp_rect.h:2162
bool GetRectAndLineIntersection(const RectRaw &rect, int *X1, int *Y1, int *X2, int *Y2)
Calculate the intersection of a rectangle and line segment.
Definition: SDL3pp_rect.h:2244
constexpr FRect GetUnion(const FRectRaw &other) const
Calculate the union of two rectangles with float precision.
Definition: SDL3pp_rect.h:2453
constexpr bool RectsEqualFloat(const FRectRaw &a, const FRectRaw &b)
Determine whether two floating point rectangles are equal, within a default epsilon.
Definition: SDL3pp_rect.h:2377
constexpr bool RectsEqualEpsilon(const FRectRaw &a, const FRectRaw &b, const float epsilon)
Determine whether two floating point rectangles are equal, within some given epsilon.
Definition: SDL3pp_rect.h:2339
SDL_Rect RectRaw
Alias to raw representation for Rect.
Definition: SDL3pp_rect.h:34
SDL_FRect FRectRaw
Alias to raw representation for FRect.
Definition: SDL3pp_rect.h:40
constexpr bool HasIntersection(const RectRaw &other) const
Determine whether two rectangles intersect.
Definition: SDL3pp_rect.h:2143
constexpr bool HasIntersection(const FRectRaw &other) const
Determine whether two rectangles intersect with float precision.
Definition: SDL3pp_rect.h:2405
constexpr Rect GetIntersection(const RectRaw &other) const
Calculate the intersection of two rectangles.
Definition: SDL3pp_rect.h:2168
constexpr FRect GetRectEnclosingPointsFloat(SpanRef< const FPointRaw > points, OptionalRef< const FRectRaw > clip=std::nullopt)
Calculate a minimal rectangle enclosing a set of points with float precision.
Definition: SDL3pp_rect.h:2472
SDL_Point PointRaw
Alias to raw representation for Point.
Definition: SDL3pp_rect.h:22
constexpr bool HasRectIntersection(const RectRaw &A, const RectRaw &B)
Determine whether two rectangles intersect.
Definition: SDL3pp_rect.h:2138
Main include header for the SDL3pp library.
The structure that defines a point (using floating point values).
Definition: SDL3pp_rect.h:512
constexpr float GetY() const noexcept
Get the y coordinate.
Definition: SDL3pp_rect.h:568
constexpr FPoint operator/(const FPoint &other) const
Get point's memberwise division by another point.
Definition: SDL3pp_rect.h:661
constexpr FPoint & Wrap(const FRect &rect)
Wrap point coordinates within a specified rect.
Definition: SDL3pp_rect.h:2599
constexpr FPoint operator-() const
Get point's memberwise negation.
Definition: SDL3pp_rect.h:610
constexpr FPoint & operator/=(const FPoint &other)
Memberwise divide by another point.
Definition: SDL3pp_rect.h:749
constexpr float GetX() const noexcept
Get the x coordinate.
Definition: SDL3pp_rect.h:549
constexpr FPoint operator/(float value) const
Get point's memberwise division by an float.
Definition: SDL3pp_rect.h:647
constexpr FPoint operator-(const FPoint &other) const
Get point's memberwise subtraction with another point.
Definition: SDL3pp_rect.h:633
constexpr FPoint operator*(float value) const
Get point's memberwise multiplication by an float.
Definition: SDL3pp_rect.h:676
constexpr FPoint(float x, float y) noexcept
Constructs from its fields.
Definition: SDL3pp_rect.h:529
constexpr FPoint & operator/=(float value)
Memberwise divide by an float.
Definition: SDL3pp_rect.h:734
constexpr FPoint & SetX(float newX) noexcept
Set the x coordinate.
Definition: SDL3pp_rect.h:557
constexpr FPoint GetClamped(const FRect &rect) const
Get a point with coordinates modified so it fits into a given rect.
Definition: SDL3pp_rect.h:2576
constexpr FPoint & operator*=(const FPoint &other)
Memberwise multiply by another point.
Definition: SDL3pp_rect.h:779
constexpr FPoint & SetY(float newY) noexcept
Set the y coordinate.
Definition: SDL3pp_rect.h:576
constexpr FPoint GetWrapped(const FRect &rect) const
Get a point wrapped within a specified rect.
Definition: SDL3pp_rect.h:2592
constexpr FPoint operator+(const FPoint &other) const
Get point's memberwise addition with another point.
Definition: SDL3pp_rect.h:620
constexpr FPoint & Clamp(const FRect &rect)
Clamp point coordinates to make it fit into a given rect.
Definition: SDL3pp_rect.h:2583
constexpr FPoint & operator*=(float value)
Memberwise multiply by an float.
Definition: SDL3pp_rect.h:764
constexpr FPoint(const FPointRaw &p={}) noexcept
Wraps FPoint.
Definition: SDL3pp_rect.h:518
constexpr FPoint & operator-=(const FPoint &other)
Memberwise subtract another point.
Definition: SDL3pp_rect.h:719
constexpr FPoint operator*(const FPoint &other) const
Get point's memberwise multiplication by another point.
Definition: SDL3pp_rect.h:691
constexpr FPoint & operator+=(const FPoint &other)
Memberwise add another point.
Definition: SDL3pp_rect.h:704
A rectangle stored using floating point values.
Definition: SDL3pp_rect.h:1441
constexpr FRect & Extend(float hAmount, float vAmount)
Extend a rect by specified amount of pixels.
Definition: SDL3pp_rect.h:1956
constexpr FRect operator+(const FPoint &offset) const
Get rectangle moved by a given offset.
Definition: SDL3pp_rect.h:1973
constexpr FRect & SetX(float newX) noexcept
Set the left x coordinate.
Definition: SDL3pp_rect.h:1489
static constexpr FRect FromCorners(FPoint p1, FPoint p2)
Construct the rect from given centers coordinates.
Definition: SDL3pp_rect.h:1620
constexpr FRect(float x, float y, float w, float h) noexcept
Constructs from its fields.
Definition: SDL3pp_rect.h:1460
constexpr float GetH() const noexcept
Get height of the rect.
Definition: SDL3pp_rect.h:1538
constexpr float GetY() const noexcept
Get top y coordinate.
Definition: SDL3pp_rect.h:1500
constexpr FPoint GetTopRight() const
Get top right corner of the rect.
Definition: SDL3pp_rect.h:1687
constexpr FRect operator-(const FPoint &offset) const
Get rectangle moved by an opposite of given offset.
Definition: SDL3pp_rect.h:1986
constexpr bool Contains(const FRectRaw &other) const
Check whether the rect contains given point.
Definition: SDL3pp_rect.h:1857
constexpr FRect & operator+=(const FPoint &offset)
Move by then given offset.
Definition: SDL3pp_rect.h:1999
constexpr float GetX() const noexcept
Get left x coordinate.
Definition: SDL3pp_rect.h:1481
static constexpr FRect FromCenter(FPoint center, FPoint size)
Construct the rect from given center coordinates and size.
Definition: SDL3pp_rect.h:1594
constexpr FRect & operator-=(const FPoint &offset)
Move by an opposite of the given offset.
Definition: SDL3pp_rect.h:2014
constexpr FPoint GetBottomRight() const
Get bottom right corner of the rect.
Definition: SDL3pp_rect.h:1703
constexpr FPoint GetBottomLeft() const
Get bottom left corner of the rect.
Definition: SDL3pp_rect.h:1695
constexpr FRect(const FPointRaw &corner, const FPointRaw &size)
Constructs from top-left corner plus size.
Definition: SDL3pp_rect.h:1468
constexpr float GetX2() const
Get X coordinate of the rect second corner.
Definition: SDL3pp_rect.h:1631
constexpr FRect GetExtension(unsigned int amount) const
Get a rect extended by specified amount of pixels.
Definition: SDL3pp_rect.h:1910
static constexpr FRect FromCenter(float cx, float cy, float w, float h)
Construct the rect from given center coordinates, width and height.
Definition: SDL3pp_rect.h:1582
constexpr float GetY2() const
Get Y coordinate of the rect second corner.
Definition: SDL3pp_rect.h:1655
constexpr FRect & SetH(float newH) noexcept
Set the height of the rect.
Definition: SDL3pp_rect.h:1546
constexpr FRect & SetY2(float y2)
Set Y coordinate of the rect second corner.
Definition: SDL3pp_rect.h:1667
constexpr float GetW() const noexcept
Get width of the rect.
Definition: SDL3pp_rect.h:1519
constexpr FRect & SetX2(float x2)
Set X coordinate of the rect second corner.
Definition: SDL3pp_rect.h:1643
static constexpr FRect FromCorners(float x1, float y1, float x2, float y2)
Construct the rect from given corners coordinates.
Definition: SDL3pp_rect.h:1608
constexpr bool Contains(const FPointRaw &p) const
Check whether the rect contains given point.
Definition: SDL3pp_rect.h:1844
constexpr FRect & Extend(float amount)
Extend a rect by specified amount of pixels.
Definition: SDL3pp_rect.h:1943
constexpr FRect & SetY(float newY) noexcept
Set the top y coordinate.
Definition: SDL3pp_rect.h:1508
constexpr FRect & SetW(float newW) noexcept
Set the width of the rect.
Definition: SDL3pp_rect.h:1527
constexpr FRect GetExtension(float hAmount, float vAmount) const
Get a rect extended by specified amount of pixels.
Definition: SDL3pp_rect.h:1928
constexpr FPoint GetCentroid() const
Get centroid of the rect.
Definition: SDL3pp_rect.h:1719
bool GetLineIntersection(FPoint *p1, FPoint *p2) const
Determine whether a floating point rectangle takes no space.
Definition: SDL3pp_rect.h:1757
constexpr FPoint GetTopLeft() const
Get top left corner of the rect.
Definition: SDL3pp_rect.h:1679
constexpr FRect(const FRectRaw &r={}) noexcept
Wraps FRect.
Definition: SDL3pp_rect.h:1447
constexpr FPoint GetSize() const
Get size of the rect.
Definition: SDL3pp_rect.h:1711
The structure that defines a point (using integers).
Definition: SDL3pp_rect.h:83
constexpr Point & operator/=(int value)
Memberwise divide by an integer.
Definition: SDL3pp_rect.h:368
constexpr Point & operator%=(const Point &other)
Memberwise remainder from division by another point.
Definition: SDL3pp_rect.h:414
constexpr Point(const PointRaw &p={}) noexcept
Wraps Point.
Definition: SDL3pp_rect.h:89
constexpr Point operator/(int value) const
Get point's memberwise division by an integer.
Definition: SDL3pp_rect.h:228
constexpr Point GetClamped(const Rect &rect) const
Get a point with coordinates modified so it fits into a given rect.
Definition: SDL3pp_rect.h:2538
constexpr Point operator-(const Point &other) const
Get point's memberwise subtraction with another point.
Definition: SDL3pp_rect.h:214
constexpr Point(int x, int y) noexcept
Constructs from its fields.
Definition: SDL3pp_rect.h:100
constexpr Point operator+(const Point &other) const
Get point's memberwise addition with another point.
Definition: SDL3pp_rect.h:201
constexpr Point & Clamp(const Rect &rect)
Clamp point coordinates to make it fit into a given rect.
Definition: SDL3pp_rect.h:2545
constexpr Point operator*(const Point &other) const
Get point's memberwise multiplication by another point.
Definition: SDL3pp_rect.h:325
constexpr Point & SetX(int newX) noexcept
Set the x coordinate.
Definition: SDL3pp_rect.h:138
constexpr Point operator%(int value) const
Get point's memberwise remainder from division by an integer.
Definition: SDL3pp_rect.h:268
constexpr Point & SetY(int newY) noexcept
Set the y coordinate.
Definition: SDL3pp_rect.h:157
constexpr Point & operator*=(const Point &other)
Memberwise multiply by another point.
Definition: SDL3pp_rect.h:444
constexpr Point & operator-=(const Point &other)
Memberwise subtract another point.
Definition: SDL3pp_rect.h:353
constexpr Point operator*(int value) const
Get point's memberwise multiplication by an integer.
Definition: SDL3pp_rect.h:298
constexpr int GetY() const noexcept
Get y coordinate.
Definition: SDL3pp_rect.h:149
constexpr Point & operator/=(const Point &other)
Memberwise divide by another point.
Definition: SDL3pp_rect.h:383
constexpr Point operator%(const Point &other) const
Get point's memberwise remainder from division by another point.
Definition: SDL3pp_rect.h:283
constexpr int GetX() const noexcept
Get x coordinate.
Definition: SDL3pp_rect.h:130
constexpr Point GetWrapped(const Rect &rect) const
Get a point wrapped within a specified rect.
Definition: SDL3pp_rect.h:2554
constexpr Point & Wrap(const Rect &rect)
Wrap point coordinates within a specified rect.
Definition: SDL3pp_rect.h:2561
constexpr Point & operator%=(int value)
Memberwise remainder from division by an integer.
Definition: SDL3pp_rect.h:398
constexpr Point operator/(const Point &other) const
Get point's memberwise division by another point.
Definition: SDL3pp_rect.h:253
constexpr Point & operator+=(const Point &other)
Memberwise add another point.
Definition: SDL3pp_rect.h:338
constexpr Point operator-() const
Get point's memberwise negation.
Definition: SDL3pp_rect.h:191
constexpr Point(const FPointRaw &p)
Wraps Point.
Definition: SDL3pp_rect.h:110
constexpr Point & operator*=(int value)
Memberwise multiply by an integer.
Definition: SDL3pp_rect.h:429
A rectangle, with the origin at the upper left (using integers).
Definition: SDL3pp_rect.h:845
static constexpr Rect FromCenter(int cx, int cy, int w, int h)
Construct the rect from given center coordinates, width and height.
Definition: SDL3pp_rect.h:997
constexpr Rect(const PointRaw &corner, const PointRaw &size)
Construct from offset and size.
Definition: SDL3pp_rect.h:875
constexpr Rect & operator-=(const Point &offset)
Move by an opposite of the given offset.
Definition: SDL3pp_rect.h:1411
constexpr bool Contains(const PointRaw &p) const
Check whether the rect contains given point.
Definition: SDL3pp_rect.h:1241
bool GetLineIntersection(PointRaw *p1, PointRaw *p2) const
Calculate the intersection of a rectangle and line segment.
Definition: SDL3pp_rect.h:1152
constexpr Rect GetExtension(unsigned int hAmount, unsigned int vAmount) const
Get a rect extended by specified amount of pixels.
Definition: SDL3pp_rect.h:1325
constexpr Point GetTopLeft() const
Get top left corner of the rect.
Definition: SDL3pp_rect.h:1094
constexpr Rect & Extend(unsigned int hAmount, unsigned int vAmount)
Extend a rect by specified amount of pixels.
Definition: SDL3pp_rect.h:1353
constexpr int GetY() const noexcept
Get top y coordinate.
Definition: SDL3pp_rect.h:916
constexpr int GetH() const noexcept
Get height of the rect.
Definition: SDL3pp_rect.h:954
constexpr Rect operator+(const Point &offset) const
Get rectangle moved by a given offset.
Definition: SDL3pp_rect.h:1370
constexpr Rect & operator+=(const Point &offset)
Move by then given offset.
Definition: SDL3pp_rect.h:1396
constexpr bool operator==(const Rect &other) const
Compares with the underlying type.
Definition: SDL3pp_rect.h:884
constexpr Rect(const RectRaw &r={}) noexcept
Wraps Rect.
Definition: SDL3pp_rect.h:851
constexpr Rect GetExtension(unsigned int amount) const
Get a rect extended by specified amount of pixels.
Definition: SDL3pp_rect.h:1307
constexpr Rect & SetY(int newY) noexcept
Set the top y coordinate.
Definition: SDL3pp_rect.h:924
constexpr Rect & SetW(int newW) noexcept
Set the width of the rect.
Definition: SDL3pp_rect.h:943
constexpr Rect & Extend(unsigned int amount)
Extend a rect by specified amount of pixels.
Definition: SDL3pp_rect.h:1340
constexpr Point GetCentroid() const
Get centroid of the rect.
Definition: SDL3pp_rect.h:1134
constexpr Point GetBottomLeft() const
Get bottom left corner of the rect.
Definition: SDL3pp_rect.h:1110
constexpr Rect & SetX2(int x2)
Set X coordinate of the rect second corner.
Definition: SDL3pp_rect.h:1058
static constexpr Rect FromCorners(Point p1, Point p2)
Construct the rect from given centers coordinates.
Definition: SDL3pp_rect.h:1035
static constexpr Rect FromCorners(int x1, int y1, int x2, int y2)
Construct the rect from given corners coordinates.
Definition: SDL3pp_rect.h:1023
constexpr Rect(int x, int y, int w, int h) noexcept
Constructs from its fields.
Definition: SDL3pp_rect.h:864
constexpr Point GetSize() const
Get size of the rect.
Definition: SDL3pp_rect.h:1126
constexpr Rect operator-(const Point &offset) const
Get rectangle moved by an opposite of given offset.
Definition: SDL3pp_rect.h:1383
constexpr Point GetBottomRight() const
Get bottom right corner of the rect.
Definition: SDL3pp_rect.h:1118
constexpr int GetY2() const
Get Y coordinate of the rect second corner.
Definition: SDL3pp_rect.h:1070
static constexpr Rect FromCenter(Point center, Point size)
Construct the rect from given center coordinates and size.
Definition: SDL3pp_rect.h:1009
constexpr bool operator==(const RectRaw &other) const
Compares with the underlying type.
Definition: SDL3pp_rect.h:881
constexpr Rect & SetH(int newH) noexcept
Set the height of the rect.
Definition: SDL3pp_rect.h:962
constexpr int GetW() const noexcept
Get width of the rect.
Definition: SDL3pp_rect.h:935
constexpr Rect & SetX(int newX) noexcept
Set the left x coordinate.
Definition: SDL3pp_rect.h:905
constexpr Rect & SetY2(int y2)
Set Y coordinate of the rect second corner.
Definition: SDL3pp_rect.h:1082
constexpr int GetX() const noexcept
Get left x coordinate.
Definition: SDL3pp_rect.h:897
constexpr Point GetTopRight() const
Get top right corner of the rect.
Definition: SDL3pp_rect.h:1102
constexpr bool Contains(const RectRaw &other) const
Check whether the rect contains given point.
Definition: SDL3pp_rect.h:1254
constexpr int GetX2() const
Get X coordinate of the rect second corner.
Definition: SDL3pp_rect.h:1046