math: adjust right and bottom box edges (#6)

This commit is contained in:
drendog 2024-07-02 12:16:59 +02:00 committed by GitHub
parent 7e1b6610a2
commit bbc76ba4e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -204,18 +204,20 @@ Vector2D Hyprutils::Math::CBox::closestPoint(const Vector2D& vec) const {
return vec;
Vector2D nv = vec;
nv.x = std::clamp(nv.x, x, x + w);
nv.y = std::clamp(nv.y, y, y + h);
Vector2D maxPoint = {x + w - EPSILON, y + h - EPSILON};
nv.x = std::clamp(nv.x, x, maxPoint.x);
nv.y = std::clamp(nv.y, y, maxPoint.y);
if (std::fabs(nv.x - x) < EPSILON)
nv.x = x;
else if (std::fabs(nv.x - (x + w)) < EPSILON)
nv.x = x + w;
else if (std::fabs(nv.x - (maxPoint.x)) < EPSILON)
nv.x = maxPoint.x;
if (std::fabs(nv.y - y) < EPSILON)
nv.y = y;
else if (std::fabs(nv.y - (y + h)) < EPSILON)
nv.y = y + h;
else if (std::fabs(nv.y - (maxPoint.y)) < EPSILON)
nv.y = maxPoint.y;
return nv;
}