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); }
}