color/Couleur.js

/**
 * @author Mattis Pingard mattis.pingard@gmail.com
 * @date 14/11/2023
 * Classe représentant une Couleur
 */
export class Couleur {

    // ATTRIBUTS
    /**
     * Composante 1 de la Couleur
     */
    #_comp1;
    /**
     * Composante 2 de la Couleur
     */
    #_comp2;
    /**
     * Composante 3 de la Couleur
     */
    #_comp3;

    // CONSTRUCTEUR
    /**
     * Créer une nouvelle Couleur avec (par défault du blanc) les composantes
     * respectives (RGB, XYZ, Lab)
     * @param {float} comp1 La valeur de la composante 1
     * @param {float} comp2 La valeur de la composante 2
     * @param {float} comp3 La valeur de la composante 3
     */
    constructor(comp1 = 0, comp2 = 0, comp3 = 0) {
        if (this.constructor == Couleur) {
            throw new Error("Classe abstraite ne peux pas être initialisé")
        } else {
            this.#_comp1 = comp1;
            this.#_comp2 = comp2;
            this.#_comp3 = comp3;
        }
    }

    // GETTERS & SETTERS
    /**
     * 
     * @param {int} indComp L'indice de la composante
     * @returns {float} La valeur de la composante
     */
    getComp(indComp) {
        switch (indComp) {
            case 1:
                return this.#_comp1;
            case 2:
                return this.#_comp2;
            case 3:
                return this.#_comp3;
        }
    }

    /**
     * 
     * @param {int} indComp L'indice de la composante
     * @param {float} val La nouvelle valeur de la composante
     */
    setComp(indComp, val) {
        switch (indComp) {
            case 1:
                this.#_comp1 = val;
                break;
            case 2:
                this.#_comp2 = val;
                break;
            case 3:
                this.#_comp3 = val;
                break;
        }
    }

    /**
     * 
     * @param {int} comp L'indice de la composante
     * @param {Couleur} couleur Couleur à comparer
     * @returns {bool} Vrai si la composante l'objet courant est supérieur à la composante de la couleur passée en paramètre
     */
    isCompSuperiorTo(comp, couleur) {
        return this.getComp(comp) > couleur.getComp(comp);
    }

    /**
     * 
     * @param {int} comp L'indice de la composante
     * @param {Couleur} couleur Couleur à comparer
     * @returns {bool} Vrai si la composante l'objet courant est inférieur à la composante de la couleur passée en paramètre
     */
    isCompInferiorTo(comp, couleur) {
        return this.getComp(comp) < couleur.getComp(comp);
    }
}