filebot/source/net/filebot/util/ui/GradientStyle.java

77 lines
2.1 KiB
Java

package net.filebot.util.ui;
import java.awt.Color;
import java.awt.LinearGradientPaint;
import java.awt.MultipleGradientPaint.CycleMethod;
import java.awt.geom.Point2D;
import java.awt.geom.RectangularShape;
public enum GradientStyle {
TOP_TO_BOTTOM,
BOTTOM_TO_TOP,
LEFT_TO_RIGHT,
RIGHT_TO_LEFT,
TOP_LEFT_TO_BOTTOM_RIGHT,
BOTTOM_RIGHT_TO_TOP_LEFT,
TOP_RIGHT_TO_BOTTOM_LEFT,
BOTTOM_LEFT_TO_TOP_RIGHT;
public LinearGradientPaint getGradientPaint(RectangularShape shape, Color gradientBeginColor, Color gradientEndColor) {
Point2D start = null;
Point2D end = null;
switch (this) {
case BOTTOM_TO_TOP:
start = new Point2D.Double(shape.getCenterX(), shape.getMaxY());
end = new Point2D.Double(shape.getCenterX(), shape.getMinY());
break;
case TOP_TO_BOTTOM:
end = new Point2D.Double(shape.getCenterX(), shape.getMaxY());
start = new Point2D.Double(shape.getCenterX(), shape.getMinY());
break;
case LEFT_TO_RIGHT:
start = new Point2D.Double(shape.getMinX(), shape.getCenterY());
end = new Point2D.Double(shape.getMaxX(), shape.getCenterY());
break;
case RIGHT_TO_LEFT:
end = new Point2D.Double(shape.getMinX(), shape.getCenterY());
start = new Point2D.Double(shape.getMaxX(), shape.getCenterY());
break;
case TOP_LEFT_TO_BOTTOM_RIGHT:
start = new Point2D.Double(shape.getMinX(), shape.getMinY());
end = new Point2D.Double(shape.getMaxX(), shape.getMaxY());
break;
case BOTTOM_RIGHT_TO_TOP_LEFT:
end = new Point2D.Double(shape.getMinX(), shape.getMinY());
start = new Point2D.Double(shape.getMaxX(), shape.getMaxY());
break;
case TOP_RIGHT_TO_BOTTOM_LEFT:
start = new Point2D.Double(shape.getMaxX(), shape.getMinY());
end = new Point2D.Double(shape.getMinX(), shape.getMaxY());
break;
case BOTTOM_LEFT_TO_TOP_RIGHT:
end = new Point2D.Double(shape.getMaxX(), shape.getMinY());
start = new Point2D.Double(shape.getMinX(), shape.getMaxY());
break;
default:
return null;
}
Color[] colors = { gradientBeginColor, gradientEndColor };
float[] fractions = { 0.0f, 1.0f };
return new LinearGradientPaint(start, end, fractions, colors, CycleMethod.NO_CYCLE);
}
}