package open.dolphin.impl.schema;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
/**
*
* @author Kazushi Minagawa.
*/
public final class OpenPathHolder implements DrawingHolder {
private GeneralPath area;
private Stroke stroke;
private Paint paint;
private AlphaComposite ac;
private boolean fill;
public OpenPathHolder() {
}
public OpenPathHolder(GeneralPath area, Stroke stroke, Paint paint, AlphaComposite ac, boolean fill) {
this();
setArea(area);
setStroke(stroke);
setPaint(paint);
setAlphaComposite(ac);
setFill(fill);
}
public Shape getArea() {
return area;
}
public void setArea(GeneralPath area) {
this.area = area;
}
public Paint getPaint() {
return paint;
}
public void setPaint(Paint color) {
this.paint = color;
}
public boolean isFill() {
return fill;
}
public void setFill(boolean fill) {
this.fill = fill;
}
public Stroke getStroke() {
return stroke;
}
public void setStroke(Stroke stroke) {
this.stroke = stroke;
}
public AlphaComposite getAlphaComposite() {
return ac;
}
public 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);
}
}