package org.archstudio.bna.things.borders;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import org.archstudio.bna.IBNAView;
import org.archstudio.bna.ICoordinate;
import org.archstudio.bna.ICoordinateMapper;
import org.archstudio.bna.things.AbstractThingPeer;
import org.archstudio.bna.ui.IUIResources;
import org.eclipse.swt.graphics.Rectangle;
public class PulsingBorderThingPeer<T extends PulsingBorderThing> extends AbstractThingPeer<T> {
public static final int MAX_ROTATION = 8;
public PulsingBorderThingPeer(T thing, IBNAView view, ICoordinateMapper cm) {
super(thing, view, cm);
}
@Override
public boolean draw(Rectangle localBounds, IUIResources r) {
Rectangle lbb = cm.worldToLocal(t.getBoundingBox());
if (!localBounds.intersects(lbb)) {
return false;
}
int offset = t.getRotatingOffset() % MAX_ROTATION * t.getGlowWidth() / 4 - 4;
Shape localShape = new Rectangle2D.Double(lbb.x - offset, lbb.y - offset, lbb.width + 2 * offset, lbb.height
+ 2 * offset);
r.glowShape(localShape, t.getGlowColor(), t.getGlowWidth(), t.getGlowAlpha());
return true;
}
@Override
public boolean isInThing(ICoordinate location) {
return false;
}
}