package ch.epfl.isochrone.tiledmap;

import java.awt.Color;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe servant à représenter une table des couleurs utilisée pour la carte
 * isochrone
 * 
 * @author Charles Thiebaut (238935)
 * @author Arnaud Delamare (234841)
 * 
 */
public final class ColorTable {

    private final int length;
    private final List<Color> colorList;

    /**
     * 
     * Constructeur de la classe
     * 
     * @param length
     *            La durée en seconde d'une tranche
     * 
     * @param colorList
     *            La liste des couleurs
     */
    public ColorTable(int length, List<Color> colorList) {
        this.length = length;
        if (colorList.isEmpty()) {
            throw new IllegalArgumentException(
                    "La liste des couleurs ne doit pas être vide !");
        }
        this.colorList = new ArrayList<Color>(colorList);
    }

    /**
     * 
     * @return la durée d'une tranche en seconde
     */
    public int sliceLength() {
        return length;
    }

    /**
     * @return le nombre de tranche de la liste. La dernière tranche n'est pas
     *         considérée comme une tranche mais comme le background de la carte
     */
    public int numberOfSlice() {
        return colorList.size() - 1;
    }

    /**
     * 
     * @param tranche
     *            L'index de la tranche
     * @return la couleur correspondante
     */
    public Color sliceColor(int tranche) {
        if (tranche < 0 || tranche >= colorList.size()) {
            throw new IllegalArgumentException("Cette tranche n'existe pas");
        }
        return colorList.get(tranche);
    }
}
