56 template <logical_coordinate_system>
59 static constexpr bool value =
false;
64 static constexpr bool value =
true;
66 template <logical_coordinate_system>
69 static constexpr bool value =
false;
74 static constexpr bool value =
true;
106 template <
typename CoordinateType>
119 template <
typename CoordinateType2>
121 dx{ static_cast<CoordinateType>(other.
dx) },
dy{ static_cast<CoordinateType>(other.
dy) },
dz{ static_cast<CoordinateType>(other.
dz) } {}
146 template <
typename T>
160 template <
typename CoordinateType>
168 template <
typename CoordinateType>
176 template <
typename CoordinateType>
184 template <
typename CoordinateType>
192 template <
typename CoordinateType>
200 template <
typename CoordinateType>
208 template <
typename CoordinateType>
216 template <
typename CoordinateType>
224 template <
typename CoordinateType>
230 struct bad_size : std::logic_error {
bad_size() : std::logic_error{
"neogfx::bad_size" } {} };
233 template <
typename CoordinateType>
246 template <
typename Scalar>
248 template <
typename Scalar>
252 template <
typename CoordinateType2>
254 cx{ static_cast<CoordinateType>(other.
cx) },
cy{ static_cast<CoordinateType>(other.
cy) },
cz{ static_cast<CoordinateType>(other.
cz) } {}
293 template <
typename T>
317 template <
typename CoordinateType>
325 template <
typename CoordinateType>
333 template <
typename CoordinateType>
341 template <
typename CoordinateType>
349 template <
typename CoordinateType>
357 template <
typename CoordinateType>
365 template <
typename CoordinateType>
373 template <
typename CoordinateType>
381 template <
typename CoordinateType>
388 template <
typename CoordinateType>
399 template <
typename Scalar>
404 template <
typename Scalar>
409 constexpr basic_point(CoordinateType
x, CoordinateType
y, CoordinateType
z = {}) :
411 template <
typename CoordinateType2>
413 x{ static_cast<CoordinateType>(other.
x) },
414 y{ static_cast<CoordinateType>(other.
y) },
415 z{ static_cast<CoordinateType>(other.
z) } {}
417 x{ other.dx },
y{ other.dy },
z{} {}
419 x{ other.cx },
y{ other.cy },
z{} {}
455 template <
typename T>
469 template <
typename CoordinateType>
477 template <
typename CoordinateType>
485 template <
typename CoordinateType>
493 template <
typename CoordinateType>
501 template <
typename CoordinateType>
509 template <
typename CoordinateType>
517 template <
typename CoordinateType>
525 template <
typename CoordinateType>
533 template <
typename CoordinateType>
541 template <
typename CoordinateType>
549 template <
typename CoordinateType>
557 template <
typename CoordinateType>
565 template <
typename CoordinateType>
573 template <
typename CoordinateType>
581 template <
typename CoordinateType>
589 template <
typename CoordinateType>
597 template <
typename CoordinateType>
605 template <
typename CoordinateType>
613 template <
typename CoordinateType>
621 template <
typename CoordinateType>
629 template <
typename CoordinateType>
635 template <
typename DimensionType>
654 template <
typename DimensionType2>
692 template <
typename DimensionType>
700 template <
typename DimensionType>
708 template <
typename DimensionType>
716 template <
typename DimensionType>
724 template <
typename DimensionType>
732 template <
typename DimensionType>
740 template <
typename DimensionType>
748 template <
typename DimensionType>
757 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem = logical_coordinate_system::AutomaticGui>
799 template <
typename CoordinateType2, logical_coordinate_system CoordinateSystem2>
803 template <
typename CoordinateType2, logical_coordinate_system CoordinateSystem2>
863 template <
typename... Args>
867 result.
inflate(std::forward<Args>(aArgs)...);
875 template <
typename... Args>
879 result.
deflate(std::forward<Args>(aArgs)...);
882 template <
typename... T>
886 result.
inflate(std::forward<T>(aAmount)...);
889 template <
typename... T>
893 result.
deflate(std::forward<T>(aAmount)...);
947 result.position().y = p.
y;
966 result.extents().cy = e.
cy;
1010 template <
typename T>
1015 template <
typename T>
1016 std::enable_if_t<std::is_same_v<T, coordinate_type>,
self_type const&>
as()
const
1028 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1036 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1044 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1052 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1060 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1068 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1076 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1080 ret.
basic_point<CoordinateType>::operator+=(right);
1084 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1088 ret.
basic_size<CoordinateType>::operator+=(right);
1092 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1096 ret.
basic_size<CoordinateType>::operator+=(right);
1100 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1104 ret.
basic_point<CoordinateType>::operator-=(right);
1108 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1112 ret.
basic_size<CoordinateType>::operator-=(right);
1116 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1120 ret.
basic_size<CoordinateType>::operator-=(right);
1124 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1130 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1136 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1139 return left < right || left == right;
1142 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1145 return right < left;
1148 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1151 return right < left || left == right;
1154 template <
typename CoordinateType, logical_coordinate_system CoordinateSystem>
1160 template <
typename CoordinateType>
1165 typedef CoordinateType coordinate_type;
1172 template <
typename CoordinateType2>
1174 a(static_cast<
point_type>(other.
a)),
b(static_cast<
point_type>(other.
b)), d(
b -
a), m(d.dx != 0 ? d.dy / d.dx : 0), c(
a.y - m *
a.x) {}
1191 return p.
x >= std::min(
a.
x,
b.
x) && p.
x <= std::max(
a.
x,
b.
x) &&
1192 p.
y >= std::min(
a.
y,
b.
y) && p.
y <= std::max(
a.
y,
b.
y);
1196 if (d.
dx == 0 || other.d.dx == 0)
1198 if (d.
dx == other.d.dx)
1202 pointOfIntersection.
x =
a.
x;
1203 pointOfIntersection.
y = other.m *
a.
x + other.c;
1207 pointOfIntersection.
x = other.a.x;
1208 pointOfIntersection.
y = m * other.a.x + c;
1211 else if (d.
dy == 0 || other.d.dy == 0)
1213 if (d.
dy == other.d.dy)
1217 pointOfIntersection.
y =
a.
y;
1218 pointOfIntersection.
x = (
a.
y - other.c) / other.m;
1222 pointOfIntersection.
y = other.a.y;
1223 pointOfIntersection.
x = (other.a.y - c) / m;
1230 pointOfIntersection.
x = (other.c - c) / (m - other.m);
1231 pointOfIntersection.
y = pointOfIntersection.
x * m + c;
1233 return within_bounding_rect(pointOfIntersection) && other.within_bounding_rect(pointOfIntersection);
1257 template <
typename DimensionType>
1260 template <
typename DimensionType>
1263 template <
typename DimensionType>
1288 template <
typename T>
1291 return aTransformation * aPoint.
to_vec3();
1294 template <
typename T>
1302 template <
typename T>
1308 template <
typename T>
1316 return point{
mix(aLhs.
x, aRhs.
x, aMixValue),
mix(aLhs.
y, aRhs.
y, aMixValue) };
1321 return vec2{
mix(aLhs.
x, aRhs.
x, aMixValue),
mix(aLhs.
y, aRhs.
y, aMixValue) };
1326 return vec3{
mix(aLhs.
x, aRhs.
x, aMixValue),
mix(aLhs.
y, aRhs.
y, aMixValue),
mix(aLhs.
z, aRhs.
z, aMixValue) };
1329 template <
typename Elem,
typename Traits,
typename T>
1330 inline std::basic_ostream<Elem, Traits>& operator<<(std::basic_ostream<Elem, Traits>& aStream,
const basic_point<T>& aPoint)
1332 aStream <<
"(" << aPoint.x <<
", " << aPoint.y <<
")";
1336 template <
typename Elem,
typename Traits,
typename T>
1339 auto previousImbued = aStream.getloc();
1343 aStream >> ignore >> aPoint.
x >> aPoint.
y >> ignore;
1344 aStream.imbue(previousImbued);
1348 template <
typename Elem,
typename Traits,
typename T>
1349 inline std::basic_ostream<Elem, Traits>& operator<<(std::basic_ostream<Elem, Traits>& aStream,
const basic_size<T>& aSize)
1351 aStream <<
"{" << aSize.cx <<
", " << aSize.cy <<
"}";
1355 template <
typename Elem,
typename Traits,
typename T>
1358 auto previousImbued = aStream.getloc();
1362 aStream >> ignore >> aSize.
cx >> aSize.
cy >> ignore;
1363 aStream.imbue(previousImbued);
1367 template <
typename Elem,
typename Traits,
typename T>
1368 inline std::basic_ostream<Elem, Traits>& operator<<(std::basic_ostream<Elem, Traits>& aStream,
const basic_delta<T>& aDelta)
1370 aStream <<
"{dx: " << aDelta.dx <<
", dy: " << aDelta.dy <<
"}";
1374 template <
typename Elem,
typename Traits,
typename T>
1377 auto previousImbued = aStream.getloc();
1381 aStream >> ignore >> aDelta.
dx >> ignore >> aDelta.
dy >> ignore;
1382 aStream.imbue(previousImbued);
1386 template <
typename Elem,
typename Traits,
typename T>
1387 inline std::basic_ostream<Elem, Traits>& operator<<(std::basic_ostream<Elem, Traits>& aStream,
const basic_rect<T>& aRect)
1389 aStream <<
"[" << aRect.top_left() <<
" -> " << aRect.bottom_right() <<
", " << aRect.extents() <<
"]";
1393 template <
typename Elem,
typename Traits,
typename T>
1394 inline std::basic_ostream<Elem, Traits>&
operator<<(std::basic_ostream<Elem, Traits>& aStream,
const basic_box_areas<T>& aBoxAreas)
1396 aStream <<
"[" << aBoxAreas.top_left() <<
" -> " << aBoxAreas.bottom_right() <<
", " << aBoxAreas.size() <<
"]";
1400 template <
typename Elem,
typename Traits,
typename T>
1401 inline std::basic_ostream<Elem, Traits>&
operator<<(std::basic_ostream<Elem, Traits>& aStream,
const neolib::optional<basic_point<T>>& aPoint)
1404 return aStream << *aPoint;
1405 aStream <<
"(nullopt)";
1409 template <
typename Elem,
typename Traits,
typename T>
1410 inline std::basic_ostream<Elem, Traits>&
operator<<(std::basic_ostream<Elem, Traits>& aStream,
const neolib::optional<basic_size<T>>& aSize)
1413 return aStream << *aSize;
1414 aStream <<
"(nullopt)";
1418 template <
typename Elem,
typename Traits,
typename T>
1419 inline std::basic_ostream<Elem, Traits>&
operator<<(std::basic_ostream<Elem, Traits>& aStream,
const neolib::optional<basic_delta<T>>& aDelta)
1422 return aStream << *aDelta;
1423 aStream <<
"(nullopt)";
1427 template <
typename Elem,
typename Traits,
typename T>
1428 inline std::basic_ostream<Elem, Traits>&
operator<<(std::basic_ostream<Elem, Traits>& aStream,
const neolib::optional<basic_rect<T>>& aBoxAreas)
1431 return aStream << *aBoxAreas;
1432 aStream <<
"(nullopt)";
1436 template <
typename Elem,
typename Traits,
typename T>
1437 inline std::basic_ostream<Elem, Traits>&
operator<<(std::basic_ostream<Elem, Traits>& aStream,
const neolib::optional<basic_box_areas<T>>& aRect)
1440 return aStream << *aRect;
1441 aStream <<
"(nullopt)";
1457 return std::hash<neogfx::rect::coordinate_type>()(aRect.
x) ^
1458 std::hash<neogfx::rect::coordinate_type>()(aRect.
y) ^
1459 std::hash<neogfx::rect::coordinate_type>()(aRect.
cx) ^
1460 std::hash<neogfx::rect::coordinate_type>()(aRect.
cy);
basic_box_areas(dimension_type all)
dimension_type coordinate_type
self_type with_top(dimension_type d) const
basic_box_areas(const basic_box_areas< DimensionType2 > &other)
basic_box_areas(dimension_type leftRight, dimension_type topBottom)
self_type & operator/=(dimension_type amount)
self_type & operator+=(dimension_type amount)
self_type with_right(dimension_type d) const
self_type & operator-=(const self_type &other)
basic_size< dimension_type > size_type
self_type & operator+=(const self_type &other)
basic_box_areas(const point_type &aTopLeft, const point_type &aBottomRight)
self_type & operator-=(dimension_type amount)
self_type & operator*=(dimension_type amount)
auto operator<=>(const self_type &) const =default
self_type operator-() const
DimensionType dimension_type
self_type & operator*=(const self_type &other)
self_type with_left(dimension_type d) const
self_type with_bottom(dimension_type d) const
basic_box_areas(const size_type &aDimensions)
basic_box_areas(dimension_type left, dimension_type top, dimension_type right, dimension_type bottom)
point_type top_left() const
self_type & operator/=(const self_type &other)
basic_point< coordinate_type > point_type
point_type bottom_right() const
basic_delta min(const basic_delta &other) const
basic_delta< T > as() const
basic_delta operator-() const
basic_delta & operator+=(const basic_delta &other)
basic_delta & operator/=(coordinate_type s)
constexpr basic_delta(coordinate_type dx, coordinate_type dy, coordinate_type dz={})
basic_delta & operator-=(const basic_delta &other)
auto operator<=>(const basic_delta &) const =default
basic_delta floor() const
constexpr basic_delta(const basic_delta< CoordinateType2 > &other)
constexpr basic_delta(coordinate_type aSquareDelta)
basic_delta & operator/=(const basic_delta &other)
basic_delta with_dy(coordinate_type dy) const
basic_delta with_dx(coordinate_type dx) const
basic_delta round() const
CoordinateType coordinate_type
basic_delta & operator-=(coordinate_type s)
basic_vector< coordinate_type, 3 > to_vec3() const
coordinate_type magnitude() const
basic_delta & operator*=(const basic_delta &other)
basic_vector< coordinate_type, 2 > to_vec2() const
basic_delta max(const basic_delta &other) const
basic_delta & operator*=(coordinate_type s)
basic_delta & operator+=(coordinate_type s)
coordinate_type delta_x() const
bool operator==(const basic_line &other) const
basic_line from(const point_type &a) const
basic_line(const point_type &a, const point_type &b)
bool operator!=(const basic_line &other) const
bool within_bounding_rect(const point_type &p) const
bool intersection(const line &other, point &pointOfIntersection) const
coordinate_type delta_y() const
bool is_vertex(const point_type &v) const
basic_line(const basic_line< CoordinateType2 > &other)
constexpr basic_point(const basic_size< CoordinateType > &other)
basic_point mid(const basic_point &other) const
basic_point round() const
basic_point< T > as() const
basic_delta< coordinate_type > to_delta() const
basic_point & operator-=(const basic_size< coordinate_type > &other)
basic_point & operator/=(coordinate_type amount)
basic_point & operator/=(const basic_point &other)
basic_point min_max(const basic_point &other) const
basic_point & operator*=(const basic_point &other)
basic_point min(const basic_point &other) const
constexpr basic_point(const basic_point< CoordinateType2 > &other)
basic_point & operator+=(const basic_point &other)
basic_vector< coordinate_type, 2 > to_vec2() const
basic_point max_min(const basic_point &other) const
constexpr basic_point(const basic_delta< CoordinateType > &other)
basic_point & operator*=(coordinate_type amount)
basic_point & operator+=(coordinate_type amount)
constexpr basic_point(const basic_vector< Scalar, 3 > &other)
coordinate_type magnitude() const
basic_point with_z(coordinate_type z0) const
constexpr basic_point(const basic_vector< Scalar, 2 > &other)
basic_point floor() const
basic_point operator-() const
basic_point & operator+=(const basic_delta< coordinate_type > &other)
constexpr basic_point(CoordinateType x, CoordinateType y, CoordinateType z={})
basic_point with_y(coordinate_type y0) const
basic_point & operator-=(coordinate_type amount)
auto operator<=>(const basic_point &) const =default
basic_point & operator-=(const basic_delta< coordinate_type > &other)
basic_point & operator+=(const basic_size< coordinate_type > &other)
basic_point max(const basic_point &other) const
CoordinateType coordinate_type
basic_vector< coordinate_type, 3 > to_vec3() const
basic_size< coordinate_type > to_size() const
basic_point & operator-=(const basic_point &other)
basic_point with_x(coordinate_type x0) const
basic_rect(const point_type &leftCorner, const point_type &rightCorner)
point_type top_left() const
bool operator!=(const basic_rect &other) const
coordinate_type dimension_type
self_type with_x(coordinate_type c) const
point_type top_right() const
self_type & deflate(coordinate_type dx, coordinate_type dy)
basic_rect(const size_type &dimensions)
bool contains_x(const point_type &point) const
self_type & operator/=(const basic_rect &other)
CoordinateType coordinate_type
self_type & operator=(const basic_rect< CoordinateType2, CoordinateSystem2 > &other)
self_type & inflate(coordinate_type dx, coordinate_type dy)
self_type & operator/=(dimension_type value)
self_type & operator*=(const size_type &size)
self_type & operator*=(const self_type &other)
friend self_type deflate_rect(const self_type &aRect, T &&... aAmount)
point_type bottom_left() const
self_type & deflate(const delta_type &delta)
basic_vector< coordinate_type, 4 > to_vec4() const
dimension_type height() const
bool contains_y(const point_type &point) const
self_type & inflate(const size_type &size)
self_type with_cx(dimension_type d) const
coordinate_type bottom() const
dimension_type width() const
static constexpr coordinate_type one
aabb_2d to_aabb_2d() const
self_type & operator*=(dimension_type value)
static constexpr coordinate_type default_epsilon
self_type & operator/=(const size_type &size)
self_type intersection(const self_type &other) const
bool contains(const self_type &other) const
self_type & operator=(const point_type &coordinates)
self_type with_position(const point_type &p) const
self_type & center_on(const self_type &other)
basic_vector< basic_vector< coordinate_type, 2 >, 4 > to_vector() const
self_type centered_on(const self_type other) const
const point_type & position() const
self_type with_cy(dimension_type d) const
self_type with_y(coordinate_type c) const
self_type with_epsilon(const size_type &aEpsilon=default_epsilon) const
static constexpr bool gui
self_type inflated(Args &&... aArgs) const
self_type & translate(const point_type &aOffset)
self_type & inflate(const padding_type &padding)
point_type bottom_right() const
basic_rect(const point_type &coordinates)
self_type deflated(Args &&... aArgs) const
basic_rect(const basic_box_areas< coordinate_type > &aBoxAreas)
point_type center() const
self_type & operator=(const size_type &dimensions)
basic_rect(const point_type &coordinates, const size_type &dimensions)
friend self_type inflate_rect(const self_type &aRect, T &&... aAmount)
coordinate_type right() const
coordinate_type top() const
bool contains(const point_type &point) const
self_type combined(const self_type &other) const
bool operator==(const basic_rect &other) const
self_type & deflate(const padding_type &padding)
self_type & deflate(const size_type &size)
self_type & deflate(coordinate_type left, coordinate_type top, coordinate_type right, coordinate_type bottom)
self_type translated(const point_type &aOffset) const
self_type with_centered_origin() const
std::enable_if_t< std::is_same_v< T, coordinate_type >, self_type const & > as() const
std::enable_if_t<!std::is_same_v< T, coordinate_type >, basic_rect< T, CoordinateSystem > > as() const
basic_rect(coordinate_type x0, coordinate_type y0, coordinate_type x1, coordinate_type y1)
const size_type & extents() const
coordinate_type left() const
basic_rect(const basic_rect< CoordinateType2, CoordinateSystem2 > &other)
self_type & inflate(const delta_type &delta)
self_type with_extents(const size_type &e) const
self_type & indent(const point_type &aOffset)
basic_rect(const aabb_2d &aBoundingBox)
self_type & combine(const self_type &other)
static constexpr bool game
static constexpr coordinate_type zero
bool intersects(const self_type &aOther) const
static constexpr coordinate_type two
self_type & inflate(coordinate_type left, coordinate_type top, coordinate_type right, coordinate_type bottom)
CoordinateType coordinate_type
delta_type to_delta() const
constexpr basic_size(const basic_vector< Scalar, 3 > &other)
basic_size max(const basic_size &other) const
basic_size with_cy(dimension_type d) const
basic_size & operator*=(dimension_type amount)
basic_size & operator-=(const basic_size &other)
static constexpr dimension_type max_dimension()
basic_size aspect_ratio() const
basic_size & operator+=(const basic_size &other)
basic_size operator-() const
basic_size with_cz(dimension_type d) const
basic_size & operator+=(const basic_delta< CoordinateType > &other)
basic_size with_cx(dimension_type d) const
bool greater_than(const basic_size &other) const
basic_size & operator/=(const basic_size &other)
constexpr basic_size(const basic_delta< CoordinateType > &other)
basic_vector< dimension_type, 3 > to_vec3() const
constexpr basic_size(const basic_size< CoordinateType2 > &other)
basic_size min(const basic_size &other) const
basic_size & operator-=(const basic_delta< CoordinateType > &other)
constexpr basic_size(const basic_vector< Scalar, 2 > &other)
bool less_than_or_equal(const basic_size &other) const
CoordinateType dimension_type
bool less_than(const basic_size &other) const
basic_size & operator+=(dimension_type amount)
auto operator<=>(const basic_size &) const =default
basic_size & operator/=(dimension_type amount)
basic_vector< dimension_type, 3 > to_vec3_inf() const
bool greater_than_or_equal(const basic_size &other) const
basic_delta< dimension_type > delta_type
constexpr basic_size(dimension_type cx, dimension_type cy, dimension_type cz={})
basic_vector< dimension_type, 2 > to_vec2_inf() const
static constexpr basic_size max_size()
basic_vector< dimension_type, 2 > to_vec2() const
basic_size with_aspect_ratio_max(const basic_size &aspectRatio) const
dimension_type magnitude() const
constexpr basic_size(dimension_type aSquareDimension)
basic_size & operator*=(const basic_size &other)
basic_size with_aspect_ratio_min(const basic_size &aspectRatio) const
basic_size< T > as() const
basic_size & operator-=(dimension_type amount)
#define define_setting_type(T)
optional< vector2 > optional_vector2
int32_t coordinate_delta_i32
optional< rect > optional_rect
basic_rect< uint32_t > rect_u32
std::basic_ostream< Elem, Traits > & operator<<(std::basic_ostream< Elem, Traits > &aStream, const basic_point< T > &aPoint)
basic_box_areas< double > box_areas
uint32_t coordinate_delta_u32
logical_coordinate_system
basic_margin< dimension > margin
optional< margin > optional_margin
optional< rect_u32 > optional_rect_u32
optional< delta_u32 > optional_delta_u32
T inf_multiply(T lhs, T rhs)
basic_delta< CoordinateType > operator/(const basic_delta< CoordinateType > &left, CoordinateType s)
optional< point > optional_point
point mix(const point &aLhs, const point &aRhs, double aMixValue)
bool operator<=(const basic_rect< CoordinateType, CoordinateSystem > &left, const basic_rect< CoordinateType, CoordinateSystem > &right)
default_geometry_value_type dimension
std::basic_istream< Elem, Traits > & operator>>(std::basic_istream< Elem, Traits > &aStream, basic_point< T > &aPoint)
basic_delta< coordinate > delta
optional< padding > optional_padding
basic_padding< dimension > padding
default_geometry_value_type coordinate
basic_point< int32_t > point_i32
bool operator<(const basic_rect< CoordinateType, CoordinateSystem > &left, const basic_rect< CoordinateType, CoordinateSystem > &right)
default_geometry_value_type coordinate_delta
basic_delta< CoordinateType > operator-(const basic_delta< CoordinateType > &left, CoordinateType s)
optional< vector4 > optional_vector4
optional< vector3 > optional_vector3
basic_size< uint32_t > size_u32
basic_rect< coordinate, logical_coordinate_system::AutomaticGui > gui_rect
neolib::optional< logical_coordinates > optional_logical_coordinates
basic_size< int32_t > size_i32
bool operator>=(const basic_rect< CoordinateType, CoordinateSystem > &left, const basic_rect< CoordinateType, CoordinateSystem > &right)
optional< size_u32 > optional_size_u32
basic_point< uint32_t > point_u32
optional< delta > optional_delta
bool operator==(const basic_rect< CoordinateType, CoordinateSystem > &left, const basic_rect< CoordinateType, CoordinateSystem > &right)
optional< dimension > optional_dimension
bool operator>(const basic_rect< CoordinateType, CoordinateSystem > &left, const basic_rect< CoordinateType, CoordinateSystem > &right)
basic_line< coordinate > line
bool nearly_equal(basic_delta< CoordinateType > const &lhs, basic_delta< CoordinateType > const &rhs, scalar epsilon=0.00001)
scalar default_geometry_value_type
basic_rect< int32_t > rect_i32
optional< logical_coordinate_system > optional_logical_coordinate_system
optional< size > optional_size
optional< border > optional_border
optional< point_u32 > optional_point_u32
basic_point< coordinate > point
basic_border< dimension > border
optional< angle > optional_angle
basic_delta< CoordinateType > operator*(const basic_delta< CoordinateType > &left, CoordinateType s)
basic_delta< int32_t > delta_i32
basic_rect< coordinate, logical_coordinate_system::AutomaticGame > game_rect
basic_delta< uint32_t > delta_u32
optional< vector1 > optional_vector1
basic_size< coordinate > size
basic_delta< CoordinateType > operator+(const basic_delta< CoordinateType > &left, CoordinateType s)
std::array< vec3, 4 > quad
static constexpr bool value
static constexpr bool value
logical_coordinates abstract_type
friend bool operator!=(const logical_coordinates &lhs, const logical_coordinates &rhs)
bool is_game_orientation() const
bool is_gui_orientation() const
friend bool operator==(const logical_coordinates &lhs, const logical_coordinates &rhs)