package open.dolphin.impl.schema;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
/**
*
* @author Kazushi Minagawa.
*/
public class AreaHolder implements DrawingHolder {
private Area area;
private Stroke stroke;
private Paint paint;
private AlphaComposite ac;
private boolean fill;
public AreaHolder() {
}
public AreaHolder(Area area, Stroke stroke, Paint paint, AlphaComposite ac, boolean fill) {
this();
setArea(area);
setStroke(stroke);
setPaint(paint);
setAlphaComposite(ac);
setFill(fill);
}
public final Shape getArea() {
return area;
}
public final void setArea(Area area) {
this.area = area;
}
public final Paint getPaint() {
return paint;
}
public final void setPaint(Paint color) {
this.paint = color;
}
public final boolean isFill() {
return fill;
}
public final void setFill(boolean fill) {
this.fill = fill;
}
public final Stroke getStroke() {
return stroke;
}
public final void setStroke(Stroke stroke) {
this.stroke = stroke;
}
public final AlphaComposite getAlphaComposite() {
return ac;
}
public final void setAlphaComposite(AlphaComposite ac) {
this.ac = ac;
}
@Override
public boolean contains(Point p) {
return area.contains(p.getX(), p.getY());
}
@Override
public void draw(Graphics2D g2d) {
Stroke saveStroke = g2d.getStroke();
Paint savePaint = g2d.getPaint();
Composite saveComposite = g2d.getComposite();
g2d.setComposite(getAlphaComposite());
g2d.setPaint(getPaint());
if (isFill()) {
if (getStroke() != null) {
g2d.setStroke(getStroke());
}
g2d.fill(getArea());
} else {
if (getStroke() != null) {
g2d.setStroke(getStroke());
}
g2d.draw(getArea());
}
g2d.setStroke(saveStroke);
g2d.setPaint(savePaint);
g2d.setComposite(saveComposite);
}
@Override
public void translate(double x, double y) {
AffineTransform trans = AffineTransform.getTranslateInstance(
x,
y);
area.transform(trans);
}
}