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); } }