import java.awt.*;
import java.awt.geom.*;
import java.awt.image.ColorModel;
public class RoundGradientPaint
implements Paint {
protected Point2D mPoint;
protected Point2D mRadius;
protected Color mPointColor, mBackgroundColor;
public RoundGradientPaint(double x, double y, Color pointColor,
Point2D radius, Color backgroundColor) {
if (radius.distance(0, 0) <= 0)
throw new IllegalArgumentException("Radius must be greater than 0.");
mPoint = new Point2D.Double(x, y);
mPointColor = pointColor;
mRadius = radius;
mBackgroundColor = backgroundColor;
}
public PaintContext createContext(ColorModel cm,
Rectangle deviceBounds, Rectangle2D userBounds,
AffineTransform xform, RenderingHints hints) {
Point2D transformedPoint = xform.transform(mPoint, null);
Point2D transformedRadius = xform.deltaTransform(mRadius, null);
return new RoundGradientContext(transformedPoint, mPointColor,
transformedRadius, mBackgroundColor);
}
public int getTransparency() {
int a1 = mPointColor.getAlpha();
int a2 = mBackgroundColor.getAlpha();
return (((a1 & a2) == 0xff) ? OPAQUE : TRANSLUCENT);
}
} |