package me.drton.flightplot;
import java.awt.*;
/**
* Created by ada on 22.12.14.
*/
public class ColorSupplier {
private Color[] paintSequence;
private int[] paintUsage;
{
paintSequence = new Color[]{
Color.RED,
Color.GREEN,
Color.BLUE,
Color.CYAN,
Color.MAGENTA,
Color.BLACK,
Color.LIGHT_GRAY,
Color.ORANGE,
Color.RED.darker(),
Color.GREEN.darker(),
Color.BLUE.darker(),
Color.CYAN.darker(),
Color.MAGENTA.darker(),
Color.ORANGE.darker(),
};
paintUsage = new int[paintSequence.length];
}
public Color[] getPaintSequence() {
return paintSequence;
}
public Color getPaint(int idx) {
return paintSequence[idx];
}
public void resetColorsUsed() {
for (int i = 0; i < paintSequence.length; i++) {
paintUsage[i] = 0;
}
}
public void markColorUsed(Color color) {
for (int i = 0; i < paintSequence.length; i++) {
if (color.equals(paintSequence[i])) {
markColorUsed(i);
}
}
}
public void markColorUsed(int color_idx) {
paintUsage[color_idx]++;
}
/**
* Select color with minimal usage
*
* @param field
* @return
*/
public Color getNextColor(String field) {
int minUsage = -1;
int color_idx = 0;
for (int i = 0; i < paintSequence.length; i++) {
if (paintUsage[i] < minUsage || minUsage < 0) {
minUsage = paintUsage[i];
color_idx = i;
}
if (minUsage == 0) {
markColorUsed(color_idx);
break;
}
}
return paintSequence[color_idx];
}
}