package codechicken.lib.vec;
public class Rectangle4i {
public int x;
public int y;
public int w;
public int h;
public Rectangle4i() {
}
public Rectangle4i(int x, int y, int w, int h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
public int x1() {
return x;
}
public int y1() {
return y;
}
public int x2() {
return x + w - 1;
}
public int y2() {
return y + h - 1;
}
public void set(int x, int y, int w, int h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
public Rectangle4i offset(int dx, int dy) {
x += dx;
y += dy;
return this;
}
public Rectangle4i include(int px, int py) {
if (px < x) {
expand(px - x, 0);
}
if (px >= x + w) {
expand(px - x - w + 1, 0);
}
if (py < y) {
expand(0, py - y);
}
if (py >= y + h) {
expand(0, py - y - h + 1);
}
return this;
}
public Rectangle4i include(Rectangle4i r) {
include(r.x, r.y);
return include(r.x2(), r.y2());
}
public Rectangle4i expand(int px, int py) {
if (px > 0) {
w += px;
} else {
x += px;
w -= px;
}
if (py > 0) {
h += py;
} else {
y += py;
h -= py;
}
return this;
}
public boolean contains(int px, int py) {
return x <= px && px < x + w && y <= py && py < y + h;
}
public boolean intersects(Rectangle4i r) {
return r.x + r.w > x &&
r.x < x + w &&
r.y + r.h > y &&
r.y < y + h;
}
public int area() {
return w * h;
}
}