97 return !memcmp(&a, &b,
sizeof(a));
105 return{ (b.
x < a.
x) ? b.
x : a.
x,
106 (b.
y < a.
y) ? b.
y : a.
y };
110 return{ (a.
x < b.
x) ? b.
x : a.
x,
111 (a.
y < b.
y) ? b.
y : a.
y };
119 return a * (1.0f - t) + b * t;
123 return sqrtf(a.
x * a.
x + a.
y * a.
y);
145 return a.
x * b.
x + a.
y * b.
y;
234 return !memcmp(&a, &b,
sizeof(a));
242 return{ (b.
x < a.
x) ? b.
x : a.
x,
243 (b.
y < a.
y) ? b.
y : a.
y,
244 (b.
z < a.
z) ? b.
z : a.
z };
248 return{ (a.
x < b.
x) ? b.
x : a.
x,
249 (a.
y < b.
y) ? b.
y : a.
y,
250 (a.
z < b.
z) ? b.
z : a.
z };
257 return a * (1.0f - t) + b * t;
261 return sqrtf(a.
x * a.
x + a.
y * a.
y + a.
z * a.
z);
273 return a.
x * b.
x + a.
y * b.
y + a.
z * b.
z;
283 inline vec4() :
x(0.0f),
y(0.0f),
z(0.0f),
w(0.0f) { }
289 inline vec4(
const float val[4]) :
x(val[0]),
y(val[1]),
z(val[2]),
w(val[3]) { }
292 return !memcmp(&a, &b,
sizeof(a));
380 return{ (b.
x < a.
x) ? b.
x : a.
x,
381 (b.
y < a.
y) ? b.
y : a.
y,
382 (b.
z < a.
z) ? b.
z : a.
z,
383 (b.
w < a.
w) ? b.
w : a.
w };
387 return{ (a.
x < b.
x) ? b.
x : a.
x,
388 (a.
y < b.
y) ? b.
y : a.
y,
389 (a.
z < b.
z) ? b.
z : a.
z,
390 (a.
w < b.
w) ? b.
w : a.
w };
393 inline void load(
const float* val) {
400 inline void store(
float* val)
const {
430 inline float x()
const {
return left; }
431 inline float y()
const {
return top; }
447 inline void Inset(
float dx,
float dy) {
458 inline void Move(
float dx,
float dy) {
485 *
this = { p.
x, p.
y, p.
x, p.
y };
520 return !memcmp(&a, &b,
sizeof(a));
540 inline int x()
const {
return left; }
541 inline int y()
const {
return top; }
568 inline void Move(
int dx,
int dy) {
595 *
this = { (int)std::floor(p.
x), (int)std::floor(p.
y), (int)std::ceil(p.
x), (int)std::ceil(p.
y) };
598 if ((
int)std::floor(p.
x) <
left)
left = (int)std::floor(p.
x);
599 if ((
int)std::floor(p.
y) <
top)
top = (int)std::floor(p.
y);
600 if ((
int)std::ceil(p.
x) >
right)
right = (int)std::ceil(p.
x);
632 return !memcmp(&a, &b,
sizeof(a));
#define UExport
Definition Exports.h:22
Root namespace for every public Ultralight type, function, and enumeration.
vec2 Point
Point is typedef'd to a 2D vector.
Definition Geometry.h:411
Integer Rectangle Helper.
Definition Geometry.h:533
void Join(const IntRect &rhs)
Definition Geometry.h:579
friend bool operator==(const IntRect &a, const IntRect &b)
Definition Geometry.h:631
int x() const
Definition Geometry.h:540
bool Contains(const IntRect &r) const
Definition Geometry.h:610
void Outset(int dx, int dy)
Definition Geometry.h:564
int right
Definition Geometry.h:534
int bottom
Definition Geometry.h:534
void Join(const Point &p)
Definition Geometry.h:592
Point origin() const
Definition Geometry.h:545
friend bool operator!=(const IntRect &a, const IntRect &b)
Definition Geometry.h:635
int y() const
Definition Geometry.h:541
bool IsEmpty() const
Definition Geometry.h:549
bool Intersects(const IntRect &rhs) const
Definition Geometry.h:615
void Move(int dx, int dy)
Definition Geometry.h:568
int center_x() const
Definition Geometry.h:542
void Inset(int dx, int dy)
Definition Geometry.h:557
IntRect Intersect(const IntRect &other) const
Definition Geometry.h:624
void SetEmpty()
Definition Geometry.h:547
bool IsValid() const
Definition Geometry.h:553
bool Contains(const Point &p) const
Definition Geometry.h:605
int height() const
Definition Geometry.h:539
int width() const
Definition Geometry.h:538
int left
Definition Geometry.h:534
int center_y() const
Definition Geometry.h:543
static constexpr IntRect MakeEmpty()
Definition Geometry.h:536
int top
Definition Geometry.h:534
int area() const
Definition Geometry.h:575
Float Rectangle Helper.
Definition Geometry.h:416
void Inset(float dx, float dy)
Definition Geometry.h:447
float y() const
Definition Geometry.h:431
void Move(float dx, float dy)
Definition Geometry.h:458
Rect Intersect(const Rect &other) const
Definition Geometry.h:512
void Join(const Point &p)
Definition Geometry.h:482
float bottom
Definition Geometry.h:417
friend bool operator==(const Rect &a, const Rect &b)
Definition Geometry.h:519
bool Contains(const Rect &r) const
Definition Geometry.h:500
friend bool operator!=(const Rect &a, const Rect &b)
Definition Geometry.h:523
float height() const
Definition Geometry.h:429
Point origin() const
Definition Geometry.h:435
float center_x() const
Definition Geometry.h:432
float right
Definition Geometry.h:417
float area() const
Definition Geometry.h:465
float left
Definition Geometry.h:417
float center_y() const
Definition Geometry.h:433
bool IsEmpty() const
Definition Geometry.h:439
vec4 ToVec4()
Definition Geometry.h:527
static constexpr Rect MakeEmpty()
Definition Geometry.h:419
float x() const
Definition Geometry.h:430
float width() const
Definition Geometry.h:428
void Join(const Rect &rhs)
Definition Geometry.h:469
bool Intersects(const Rect &rhs) const
Definition Geometry.h:505
void SetEmpty()
Definition Geometry.h:437
bool IsValid() const
Definition Geometry.h:443
void Outset(float dx, float dy)
Definition Geometry.h:454
bool Contains(const Point &p) const
Definition Geometry.h:495
static constexpr Rect FromXYWH(float x, float y, float width, float height)
Create a Rect from an origin and a size (the DOMRect / CSS box convention).
Definition Geometry.h:424
float top
Definition Geometry.h:417
Rounded Rectangle Helper.
Definition Geometry.h:643
float GetSignedDistance(const Point &p) const
Negative is inside, positive is outside.
Rect rect
Definition Geometry.h:644
bool Intersect(const RoundedRect &other, RoundedRect &result) const
Returns whether or not intersection is found.
Rect CalculateInterior() const
float radii_x[4]
Definition Geometry.h:645
float radii_y[4]
Definition Geometry.h:646
2D Vector Helper
Definition Geometry.h:17
vec2 & operator+=(const vec2 &rhs)
Definition Geometry.h:48
vec2 & operator+=(float rhs)
Definition Geometry.h:72
friend float length2(const vec2 &a)
squared length
Definition Geometry.h:127
vec2 yy() const
Definition Geometry.h:30
vec2 xx() const
Definition Geometry.h:28
friend vec2 mix(const vec2 &a, const vec2 &b, float t)
Definition Geometry.h:118
vec2 yx() const
Definition Geometry.h:26
friend float dot(const vec2 &a, const vec2 &b)
Definition Geometry.h:144
friend float distance(const vec2 &a, const vec2 &b)
Definition Geometry.h:131
friend float distance2(const vec2 &a, const vec2 &b)
squared distance
Definition Geometry.h:136
vec2 & operator/=(float rhs)
Definition Geometry.h:90
vec2 & operator/=(const vec2 &rhs)
Definition Geometry.h:66
friend vec2 operator-(vec2 lhs, const vec2 &rhs)
Definition Geometry.h:34
vec2()
Definition Geometry.h:20
vec2 & operator-=(const vec2 &rhs)
Definition Geometry.h:54
friend vec2 operator+(vec2 lhs, const vec2 &rhs)
Definition Geometry.h:32
friend vec2 operator*(vec2 lhs, const vec2 &rhs)
Definition Geometry.h:36
friend vec2 normalize(const vec2 &a)
Definition Geometry.h:140
vec2(float x, float y)
Definition Geometry.h:22
vec2 & operator*=(const vec2 &rhs)
Definition Geometry.h:60
friend vec2 clamp(const vec2 &x, const vec2 &minVal, const vec2 &maxVal)
Definition Geometry.h:114
friend vec2 max_(const vec2 &a, const vec2 &b)
Definition Geometry.h:109
friend vec2 operator/(vec2 lhs, float rhs)
Definition Geometry.h:46
friend bool operator==(const vec2 &a, const vec2 &b)
Definition Geometry.h:96
float y
Definition Geometry.h:18
friend bool operator!=(const vec2 &a, const vec2 &b)
Definition Geometry.h:100
friend vec2 operator+(vec2 lhs, float rhs)
Definition Geometry.h:40
friend vec2 operator*(vec2 lhs, float rhs)
Definition Geometry.h:44
friend vec2 min_(const vec2 &a, const vec2 &b)
Definition Geometry.h:104
vec2 & operator*=(float rhs)
Definition Geometry.h:84
friend vec2 operator/(vec2 lhs, const vec2 &rhs)
Definition Geometry.h:38
float x
Definition Geometry.h:18
vec2 & operator-=(float rhs)
Definition Geometry.h:78
friend vec2 operator-(vec2 lhs, float rhs)
Definition Geometry.h:42
friend float length(const vec2 &a)
Definition Geometry.h:122
vec2(float x)
Definition Geometry.h:24
friend float distance(const vec3 &a, const vec3 &b)
Definition Geometry.h:264
vec3 & operator/=(float rhs)
Definition Geometry.h:226
friend float length(const vec3 &a)
Definition Geometry.h:260
friend vec3 operator/(vec3 lhs, float rhs)
Definition Geometry.h:175
vec3 & operator*=(float rhs)
Definition Geometry.h:219
friend vec3 operator/(vec3 lhs, const vec3 &rhs)
Definition Geometry.h:167
friend vec3 operator*(vec3 lhs, float rhs)
Definition Geometry.h:173
vec3 & operator*=(const vec3 &rhs)
Definition Geometry.h:191
friend vec3 operator+(vec3 lhs, const vec3 &rhs)
Definition Geometry.h:161
vec3 & operator/=(const vec3 &rhs)
Definition Geometry.h:198
friend vec3 max_(const vec3 &a, const vec3 &b)
Definition Geometry.h:247
vec3 & operator+=(const vec3 &rhs)
Definition Geometry.h:177
vec3 & operator+=(float rhs)
Definition Geometry.h:205
vec3(float x, float y, float z)
Definition Geometry.h:157
friend vec3 normalize(const vec3 &a)
Definition Geometry.h:268
friend vec3 operator-(vec3 lhs, const vec3 &rhs)
Definition Geometry.h:163
friend vec3 operator-(vec3 lhs, float rhs)
Definition Geometry.h:171
friend vec3 operator*(vec3 lhs, const vec3 &rhs)
Definition Geometry.h:165
friend vec3 mix(const vec3 &a, const vec3 &b, float t)
Definition Geometry.h:256
float y
Definition Geometry.h:153
friend vec3 clamp(const vec3 &x, const vec3 &minVal, const vec3 &maxVal)
Definition Geometry.h:252
vec3 & operator-=(const vec3 &rhs)
Definition Geometry.h:184
vec3 & operator-=(float rhs)
Definition Geometry.h:212
friend bool operator!=(const vec3 &a, const vec3 &b)
Definition Geometry.h:237
vec3(float x)
Definition Geometry.h:159
float x
Definition Geometry.h:153
friend float dot(const vec3 &a, const vec3 &b)
Definition Geometry.h:272
friend bool operator==(const vec3 &a, const vec3 &b)
Definition Geometry.h:233
friend vec3 min_(const vec3 &a, const vec3 &b)
Definition Geometry.h:241
friend vec3 operator+(vec3 lhs, float rhs)
Definition Geometry.h:169
float z
Definition Geometry.h:153
vec3()
Definition Geometry.h:155
4D Vector Helper
Definition Geometry.h:280
vec4(float x)
Definition Geometry.h:287
void load(const float *val)
Definition Geometry.h:393
vec4()
Definition Geometry.h:283
vec4 & operator+=(const vec4 &rhs)
Definition Geometry.h:315
void store(float *val) const
Definition Geometry.h:400
vec4 & operator*=(const vec4 &rhs)
Definition Geometry.h:331
vec4 & operator-=(const vec4 &rhs)
Definition Geometry.h:323
vec4 & operator+=(float rhs)
Definition Geometry.h:347
friend vec4 operator-(vec4 lhs, float rhs)
Definition Geometry.h:309
vec4(const float val[4])
Definition Geometry.h:289
vec4 & operator*=(float rhs)
Definition Geometry.h:363
float w
Definition Geometry.h:281
friend vec4 operator/(vec4 lhs, float rhs)
Definition Geometry.h:313
vec4 & operator/=(float rhs)
Definition Geometry.h:371
friend vec4 min_(const vec4 &a, const vec4 &b)
Definition Geometry.h:379
vec4(float x, float y, float z, float w)
Definition Geometry.h:285
friend vec4 operator-(vec4 lhs, const vec4 &rhs)
Definition Geometry.h:301
friend vec4 operator*(vec4 lhs, const vec4 &rhs)
Definition Geometry.h:303
friend vec4 operator+(vec4 lhs, const vec4 &rhs)
Definition Geometry.h:299
float y
Definition Geometry.h:281
friend vec4 operator/(vec4 lhs, const vec4 &rhs)
Definition Geometry.h:305
vec4 & operator/=(const vec4 &rhs)
Definition Geometry.h:339
vec4 & operator-=(float rhs)
Definition Geometry.h:355
friend bool operator==(const vec4 &a, const vec4 &b)
Definition Geometry.h:291
float x
Definition Geometry.h:281
friend vec4 operator+(vec4 lhs, float rhs)
Definition Geometry.h:307
friend bool operator!=(const vec4 &a, const vec4 &b)
Definition Geometry.h:295
friend vec4 max_(const vec4 &a, const vec4 &b)
Definition Geometry.h:386
float z
Definition Geometry.h:281
friend vec4 operator*(vec4 lhs, float rhs)
Definition Geometry.h:311