package com.drawbridge.correspondance;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Point;
import java.awt.RadialGradientPaint;
public class RadialSpotlight extends Spotlight
{
int centerX, centerY, radius, blur;
public RadialSpotlight(int centerX, int centerY, int radius, int blur) {
this.centerX = centerX;
this.centerY = centerY;
this.radius = radius;
this.blur = blur;
}
/**
*
* @param g
* Graphics
*/
public void paintRadialSpotlight(Graphics g)
{
int diameter = (radius + blur) * 2;
Graphics2D g2 = (Graphics2D) g;
Paint oldPaint = g2.getPaint();
float firstStop = ((float) radius / (float) (radius + blur));
if (firstStop <= 0.0f)
{
firstStop = 0.01f;
}
else if (firstStop >= 1.0f)
{
firstStop = 0.99f;
}
RadialGradientPaint rgp = new RadialGradientPaint(new Point(centerX, centerY),
radius + blur,
new float[] { 0.0f, firstStop, 1.0f },
new Color[] { Color.white, Color.white, new Color(255, 255, 255, 0) });
g2.setPaint(rgp);
int xNew = centerX - (radius + blur);
int yNew = centerY - (radius + blur);
g2.fillRect(xNew, yNew, diameter, diameter);
g2.setPaint(oldPaint);
}
}