package dev.isxander.yacl.api.utils; import dev.isxander.yacl.impl.utils.DimensionIntegerImpl; public interface Dimension { T x(); T y(); T width(); T height(); T xLimit(); T yLimit(); T centerX(); T centerY(); boolean isPointInside(T x, T y); Dimension clone(); Dimension setX(T x); Dimension setY(T y); Dimension setWidth(T width); Dimension setHeight(T height); Dimension withX(T x); Dimension withY(T y); Dimension withWidth(T width); Dimension withHeight(T height); Dimension move(T x, T y); Dimension expand(T width, T height); Dimension moved(T x, T y); Dimension expanded(T width, T height); static Dimension ofInt(int x, int y, int width, int height) { return new DimensionIntegerImpl(x, y, width, height); } }