package hunternif.mc.atlas.util; public class Rect { public int minX, minY, maxX, maxY; public Rect() { this(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE); } public Rect(int minX, int minY, int maxX, int maxY) { this.set(minX, minY, maxX, maxY); } public Rect(Rect r) { this(r.minX, r.minY, r.maxX, r.maxY); } public Rect set(int minX, int minY, int maxX, int maxY) { this.minX = minX; this.minY = minY; this.maxX = maxX; this.maxY = maxY; return this; } public Rect set(Rect r) { this.set(r.minX, r.minY, r.maxX, r.maxY); return this; } /** Set minX and minY. */ public Rect setOrigin(int x, int y) { this.minX = x; this.minY = y; return this; } /** Set maxX and maxY, assuming that minX and minY are already set. */ public Rect setSize(int width, int height) { this.maxX = this.minX + width; this.maxY = this.minY + height; return this; } public int getWidth() { return maxX - minX; } public int getHeight() { return maxY - minY; } /** Extend the bounds to include the given point. */ public void extendTo(int x, int y) { if (x < minX) minX = x; if (x > maxX) maxX = x; if (y < minY) minY = y; if (y > maxY) maxY = y; } @Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof Rect)) return false; Rect r = (Rect) obj; return minX == r.minX && minY == r.minY && maxX == r.maxX && maxY == r.maxY; } @Override public String toString() { return String.format("Rect{%d, %d, %d, %d}", minX, minY, maxX, maxY); } }