package org.archstudio.bna.things.shapes;
import java.awt.Dimension;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
@NonNullByDefault
public class RectangleThing extends RectangleThingBase {
public RectangleThing(@Nullable Object id) {
super(id);
}
@Override
public Shape getStickyShape() {
Rectangle r = getBoundingBox();
Dimension arc = getRoundCorners();
if (arc.getWidth() == 0 && arc.getHeight() == 0) {
return new Rectangle2D.Float(r.x, r.y, r.width, r.height);
}
return new RoundRectangle2D.Float(r.x, r.y, r.width, r.height, arc.width, arc.height);
}
@Override
public boolean shouldIncrementRotatingOffset() {
return isSelected();
}
@Override
public Point getReferencePoint() {
Rectangle r = getBoundingBox();
return new Point(r.x + r.width / 2, r.y + r.height / 2);
}
@Override
public void setReferencePoint(Point value) {
Point p = getReferencePoint();
Rectangle r = getBoundingBox();
r.x += value.x - p.x;
r.y += value.y - p.y;
setBoundingBox(r);
}
}