package toritools.additionaltypes;
import static audioProject.AudioProject.getFloat;
import static java.lang.Math.*;
import java.awt.Color;
public class ColorCycler {
private int red = 0, green = 0, blue = 0;
private boolean redUp = false, greenUp = false, blueUp = false;
private final int lr, hr, lg, hg, lb, hb;
private Color currColor = Color.BLACK;
public ColorCycler(final int lr, final int hr, final int lg, final int hg, final int lb, final int hb) {
this.lr = max(0, lr);
this.hr = min(255, hr);
this.lg = max(0, lg);
this.hg = min(255, hg);
this.lb = max(0, lb);
this.hb = min(255, hb);
}
public void cycleColors() {
cycleColors(2);
}
public void cycleColors(final float rate) {
red = (int) (red + getFloat() * rate * (redUp ? 1 : -1));
if ((red = max(lr, red)) == lr)
redUp = true;
else if ((red = min(hr, red)) == hr)
redUp = false;
green = (int) (green + getFloat() * rate * (greenUp ? 1 : -1));
if ((green = max(lg, green)) == lg)
greenUp = true;
else if ((green = min(hg, green)) == hg)
greenUp = false;
blue = (int) (blue + getFloat() * rate * (blueUp ? 1 : -1));
if ((blue = max(lb, blue)) == lb)
blueUp = true;
else if ((blue = min(hb, blue)) == hb)
blueUp = false;
currColor = new Color(red, green, blue);
}
public Color getColor() {
return currColor;
}
}