class PRect { protected final PVector pos; protected final PVector size; public PRect(PVector position, PVector size) { this.pos = position; this.size = size; } public PRect(float x, float y, float width, float height) { this(new PVector(x, y), new PVector(width, height)); } public void draw() { rect(pos.x, pos.y, size.x, size.y); } // paddings public PRect padding(float padding) { return new PRect(pos.x + padding, pos.y + padding, size.x - 2*padding, size.y - 2*padding); } public PRect paddingTop(float padding) { return new PRect(pos.x, pos.y + padding, size.x, size.y - padding); } public PRect paddingLeft(float padding) { return new PRect(pos.x + padding, pos.y, size.x - padding, size.y); } public PRect paddingRight(float padding) { return new PRect(pos.x, pos.y, size.x - padding, size.y); } public PRect paddingBottom(float padding) { return new PRect(pos.x, pos.y, size.x, size.y - padding); } // aligment public PRect alignTop(float height) { return new PRect(pos.x, pos.y, size.x, height); } public PRect alignLeft(float width) { return new PRect(pos.x, pos.y, width, size.y); } public PRect alignRight(float width) { return new PRect(pos.x + size.x - width, pos.y, width, size.y); } public PRect alignBottom(float height) { return new PRect(pos.x, pos.y + size.y - height, size.x, height); } }