package org.freeplane.view.swing.map.cloud;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Rectangle;
import org.freeplane.features.cloud.CloudModel;
import org.freeplane.view.swing.map.NodeView;
public class RectangleCloudView extends CloudView {
private final boolean isRound;
RectangleCloudView(CloudModel cloudModel, NodeView source, boolean isRound) {
super(cloudModel, source);
this.isRound = isRound;
}
@Override
protected void fillPolygon(Polygon p, Graphics2D g) {
}
@Override
protected void paintDecoration(Polygon p, Graphics2D g, Graphics2D gstroke) {
final Rectangle bounds = p.getBounds();
final int distanceToConvexHull = (int) getDistanceToConvexHull();
bounds.x -= distanceToConvexHull;
bounds.y -= distanceToConvexHull;
bounds.width += 2 * distanceToConvexHull;
bounds.height += 2 * distanceToConvexHull;
if(isRound){
g.fillRoundRect(bounds.x, bounds.y, bounds.width, bounds.height, distanceToConvexHull, distanceToConvexHull);
gstroke.drawRoundRect(bounds.x, bounds.y, bounds.width, bounds.height, distanceToConvexHull, distanceToConvexHull);
}
else{
g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
gstroke.drawRect(bounds.x, bounds.y, bounds.width, bounds.height);
}
}
@Override
protected void paintDecoration(Graphics2D g, Graphics2D gstroke, double x0, double y0, double x1, double y1,
double dx, double dy, double dxn, double dyn) {
}
@Override
protected double getDistanceToConvexHull() {
return 0.5 * super.getDistanceToConvexHull();
}
}