_EZPALETTE_CIE_EPSILON
Constantes de la CIE définissant le raccord entre la partie cubique et la partie linéaire des fonctions de transfert de CIE L*a*b* et CIE L*u*v*.
public
mixed
_EZPALETTE_CIE_EPSILON
= 0.008855999999999999
Constantes de la CIE définissant le raccord entre la partie cubique et la partie linéaire des fonctions de transfert de CIE L*a*b* et CIE L*u*v*.
public
mixed
_EZPALETTE_CIE_EPSILON
= 0.008855999999999999
public
mixed
_EZPALETTE_CIE_KAPPA
= 903.3
Métadonnées d'une collection que l'utilisateur renseigne lui-même.
public
mixed
_EZPALETTE_COLLECTION_METADONNEES
= ['titre', 'version', 'source', 'licence', 'description', 'recommandations']
Tout ce qui n'y figure pas est soit un attribut de contrôle géré par le plugin - l'identifiant, le drapeau
editable, la date de mise à jour - soit un agrégat recalculé depuis les palettes présentes. Une interface
de saisie n'a donc à proposer que ces six champs.
Coordonnées XYZ du blanc de référence D65, sur l'échelle 0-100.
public
mixed
_EZPALETTE_D65_X
= 95.047
public
mixed
_EZPALETTE_D65_Y
= 100.0
public
mixed
_EZPALETTE_D65_Z
= 108.883
Tolérance retenue pour juger qu'une couleur tient dans le gamut sRGB, exprimée en composante normalisée.
public
mixed
_EZPALETTE_GAMUT_TOLERANCE
= 0.5 / 255
Elle vaut un demi-niveau de quantification sur huit bits : en deçà, l'écrêtage ne modifie pas l'octet rendu, et la couleur est donc représentable en pratique. Un seuil infinitésimal écarterait des couleurs qui s'affichent pourtant à l'identique.
Amplitude de clarté minimale, en points, exigée d'un nuancier destiné à l'impression en noir et blanc.
public
mixed
_EZPALETTE_IMPRESSION_NB_ETENDUE
= 40.0
Une fois la couleur retirée, il ne reste que la clarté pour distinguer deux classes : un nuancier qui n'en balaie qu'une portion étroite devient un aplat uniforme. Les séquentielles de ColorBrewer s'étendent de 61 à 82 points, ses divergentes de 49 à 67 : le seuil retenu les admet toutes et écarte les nuanciers qui ne jouent que sur la teinte.
public
mixed
_EZPALETTE_TYPE_CYCLIQUE
= 'cyclic'
public
mixed
_EZPALETTE_TYPE_DIVERGENTE
= 'diverging'
public
mixed
_EZPALETTE_TYPE_PERCEPTION_SEQUENTIELLE
= 'perceptual_sequential'
public
mixed
_EZPALETTE_TYPE_QUALITATIVE
= 'qualitative'
public
mixed
_EZPALETTE_TYPE_SEQUENTIELLE
= 'sequential'
public
mixed
_EZPALETTE_TYPES
= [\_EZPALETTE_TYPE_SEQUENTIELLE, \_EZPALETTE_TYPE_DIVERGENTE, \_EZPALETTE_TYPE_QUALITATIVE, \_EZPALETTE_TYPE_CYCLIQUE, \_EZPALETTE_TYPE_PERCEPTION_SEQUENTIELLE]
Cette action permet à l'utilisateur de recharger en base de données, de façon sécurisée, les collections de palettes standard à partir de leur fichier JSON.
action_recharger_palette_collections_dist() : void
Cette action est réservée aux utilisateurs pouvant manipuler les collections de Palette Factory. Elle ne nécessite aucun argument.
Déclaration des informations tierces (alias, traitements, jointures, etc) sur les tables de la base de données modifiées ou ajoutées par le plugin.
ezpalette_declarer_tables_interfaces(array<string|int, mixed> $interface) : array<string|int, mixed>
Le plugin se contente de déclarer les alias des tables et quelques traitements.
Tableau global des informations tierces sur les tables de la base de données
Tableau fourni en entrée et mis à jour avec les nouvelles informations
Déclaration des nouvelles tables de la base de données propres au plugin.
ezpalette_declarer_tables_objets_sql(array<string|int, mixed> $tables) : array<string|int, mixed>
Le plugin déclare une nouvelle table :
spip_palettes, qui contient les éléments descriptifs des palettes de couleurs.Tableau global décrivant la structure des tables de la base de données
Tableau fourni en entrée et mis à jour avec les nouvelles déclarations
Installation du schéma de données propre au plugin et gestion des migrations suivant les évolutions du schéma.
ezpalette_upgrade(string $nom_meta_base_version, string $version_cible) : void
Le plugin crée la table des palettes et charge la configuration des palettes standard.
Suppression de l'ensemble du schéma de données propre au plugin.
ezpalette_vider_tables(string $nom_meta_base_version) : void
Renvoie la configuration statique (non éditable) du plugin.
ezpalette_configurer() : array<string|int, mixed>
Tableau de la configuration demandée.
Fonction appelée par le pipeline `autoriser`, dont la seule existence déclare le fichier.
ezpalette_autoriser() : void
Autorisation d'accéder à la page des palettes.
autoriser_palettes_voir_dist(string $faire, string $type, int $id, null|array<string|int, mixed>|int $qui, null|array<string|int, mixed> $options) : bool
L'action : voir
Le type : _palettes, qui n'est pas un objet au sens de SPIP
Inutilisé
L'initiateur de l'action
Options éventuelles
Autorisation d'afficher l'entrée de menu du plugin, calée sur celle de voir la page.
autoriser_palettes_menu_dist(string $faire, string $type, int $id, null|array<string|int, mixed>|int $qui, null|array<string|int, mixed> $options) : bool
L'action : menu
Le type : _palettes
Inutilisé
L'initiateur de l'action
Options éventuelles
Autorisation de voir la liste des collections de palettes.
autoriser_palettecollections_voir_dist(string $faire, string $type, int $id, null|array<string|int, mixed>|int $qui, null|array<string|int, mixed> $options) : bool
L'action : voir
Le type : _palettecollections
Inutilisé
L'initiateur de l'action
Options éventuelles
Autorisation de recharger les collections standard depuis leurs fichiers JSON.
autoriser_palettecollections_charger_dist(string $faire, string $type, int $id, null|array<string|int, mixed>|int $qui, null|array<string|int, mixed> $options) : bool
L'opération vide et réécrit la table pour les collections concernées : elle est réservée aux administrateurs
complets. Jusqu'ici l'autorisation n'était pas déclarée et le contrôle ne tenait qu'à la retombée sur
autoriser_defaut_dist(), ce qui produisait le bon résultat mais par accident.
L'action : charger
Le type : _palettecollections
Inutilisé
L'initiateur de l'action
Options éventuelles
Autorisation de voir une palette.
autoriser_palette_voir_dist(string $faire, string $type, int $id, null|array<string|int, mixed>|int $qui, null|array<string|int, mixed> $options) : bool
L'action : voir
Le type d'objet : palette
Identifiant de la palette
L'initiateur de l'action
Options éventuelles
Autorisation de créer une palette.
autoriser_palette_creer_dist(string $faire, string $type, int $id, null|array<string|int, mixed>|int $qui, null|array<string|int, mixed> $options) : bool
L'action : creer
Le type d'objet : palette
Inutilisé
L'initiateur de l'action
Options éventuelles
Autorisation de modifier une palette.
autoriser_palette_modifier_dist(string $faire, string $type, int $id, null|array<string|int, mixed>|int $qui, null|array<string|int, mixed> $options) : bool
Une palette n'est modifiable que si sa collection ne l'est pas elle-même rechargée depuis un fichier JSON, ce
que porte sa colonne editable.
L'action : modifier
Le type d'objet : palette
Identifiant de la palette
L'initiateur de l'action
Options éventuelles
Autorisation de supprimer une palette, calée sur celle de la modifier.
autoriser_palette_supprimer_dist(string $faire, string $type, int $id, null|array<string|int, mixed>|int $qui, null|array<string|int, mixed> $options) : bool
L'action : supprimer
Le type d'objet : palette
Identifiant de la palette
L'initiateur de l'action
Options éventuelles
Compile la balise `#PALETTE_APERCU` qui renvoie l'aperçu SVG d'une palette, soit ses couleurs juxtaposées en bandes de largeur égale.
balise_PALETTE_APERCU_dist(Champ $p) : Champ
La signature de la balise est : #PALETTE_APERCU{palette[, largeur, hauteur, etiquettes]}.
Pile au niveau de la balise.
Pile complétée par le code à générer.
Compile la balise `#PALETTE_LEGENDE` qui renvoie la légende HTML d'une palette, soit un bandeau de couleurs accompagné de ses intitulés.
balise_PALETTE_LEGENDE_dist(Champ $p) : Champ
La signature de la balise est : #PALETTE_LEGENDE{palette[, orientation, titre, classe]}.
Pile au niveau de la balise.
Pile complétée par le code à générer.
Compile la balise `#PALETTE_EXPORT` qui renvoie une palette mise en forme pour un usage extérieur.
balise_PALETTE_EXPORT_dist(Champ $p) : Champ
La signature de la balise est : #PALETTE_EXPORT{palette[, format]}.
Pile au niveau de la balise.
Pile complétée par le code à générer.
Compile la balise `#PALETTE_CRITERES` qui traduit un jeu de filtres en critères SQL, directement utilisables comme argument `where` d'une boucle.
balise_PALETTE_CRITERES_dist(Champ $p) : Champ
La signature de la balise est : #PALETTE_CRITERES{filtres}.
Elle sert aux seuils de qualité — contraste et amplitude de clarté — qui ne se comparent pas à l'identique et ne
peuvent donc pas s'écrire en critère optionnel {champ?}. Les valeurs vides sont écartées avant traduction :
un filtre non renseigné dans un formulaire ne doit ajouter aucune condition.
Pile au niveau de la balise.
Pile complétée par le code à générer.
Compile la balise `#PALETTE_SCHEMAS` qui renvoie la liste des schémas, c'est-à-dire les palettes regroupées par parti pris chromatique. Elle est faite pour alimenter une boucle `DATA`, le schéma n'étant pas une table.
balise_PALETTE_SCHEMAS_dist(Champ $p) : Champ
La signature de la balise est : #PALETTE_SCHEMAS{[filtres]}.
Pile au niveau de la balise.
Pile complétée par le code à générer.
Linéarise une composante sRGB en supprimant sa correction gamma.
colorimetrie_srgb_lineariser(float $coordonnee) : float
La fonction opère sur une seule composante (R, G ou B), pas sur une couleur complète, et travaille en valeurs
normalisées : elle attend un flottant dans l'intervalle [0, 1] et rend un flottant dans le même intervalle. La
normalisation est donc à la charge de l'appelant, qui divise la composante 0-255 par 255 : pour la couleur
rgb(150, 160, 14), on appelle colorimetrie_srgb_lineariser(150 / 255), etc.
La valeur d'entrée est une valeur encodée, à peu près perceptuelle, telle que stockée dans un fichier ou une
feuille de style ; la valeur de sortie est proportionnelle à l'intensité lumineuse. Cette conversion est un
préalable obligatoire à tout calcul linéaire sur la lumière : passage à XYZ et calcul de la luminance relative.
Ainsi, 14 / 255 vaut 0,0549 en encodé mais seulement 0,0044 en lumière.
En pratique, la fonction n'est pas appelée directement : colorimetrie_rgb_to_xyz() et colorimetrie_luminance_relative()
s'en chargent pour les trois composantes.
Composante sRGB encodée et normalisée, dans l'intervalle [0, 1]
Composante linéarisée, dans l'intervalle [0, 1]
Applique la correction gamma à une composante sRGB linéaire.
colorimetrie_srgb_corriger_gamma(float $coordonnee) : float
Réciproque exacte de colorimetrie_srgb_lineariser() : elle attend une composante linéaire normalisée et rend la
composante encodée correspondante, toujours normalisée. Il revient à l'appelant de la dénormaliser en la
multipliant par 255.
Une couleur hors du gamut sRGB produit ici des composantes linéaires négatives, prises en charge par la partie
linéaire de la fonction : elles traversent la conversion sans produire de NAN et sont écrêtées plus loin, au
moment de la dénormalisation.
Composante sRGB linéaire normalisée, dans l'intervalle [0, 1]
Composante encodée en gamma, dans l'intervalle [0, 1]
Convertit une couleur hexadécimale en composantes RGB décimales.
colorimetrie_hex_to_dec(string $hex) : array<string|int, mixed>
C'est la porte d'entrée de tout le fichier : chaque chaîne de conversion partant d'une couleur hexadécimale commence ici. Elle est donc la seule à valider son entrée, ce qui dispense les autres de le faire.
Sont acceptées les notations sur trois ou six caractères hexadécimaux, avec ou sans # et quelle que soit la
casse. Toute autre entrée rend le noir et est journalisée : elle ne peut pas être devinée, et la laisser passer
serait pire. hexdec() en tirerait en effet une couleur en ignorant silencieusement les caractères invalides —
bonjour donnerait rgb(11, 0, 0) — au prix, depuis PHP 8.3, d'une dépréciation par composante.
Couleur hexadécimale, avec ou sans #, sur 3 ou 6 caractères
Composantes RGB, index r, g et b, chacune dans l'intervalle 0-255. Le noir si l'entrée n'est
pas une couleur hexadécimale
Convertit des composantes RGB décimales en couleur hexadécimale.
colorimetrie_dec_to_hex(int $r, int $g, int $b) : string
Les composantes sont ramenées dans l'intervalle 0-255 : une couleur hors du gamut sRGB est donc écrêtée sur le bord du gamut plutôt que rejetée.
Rouge, 0-255
Vert, 0-255
Bleu, 0-255
Couleur hexadécimale au format #RRGGBB
Convertit une couleur hexadécimale en HSL.
colorimetrie_hex_to_hsl(string $hex) : array<string|int, mixed>
Couleur hexadécimale
Coordonnées HSL :
h : teinte, 0-360s : saturation, 0-1l : luminosité, 0-1Convertit des coordonnées HSL en couleur hexadécimale.
colorimetrie_hsl_to_hex(float $h, float $s, float $l) : string
Teinte, 0-360
Saturation, 0-1
Luminosité, 0-1
Couleur hexadécimale au format #RRGGBB
Convertit des composantes RGB décimales en coordonnées XYZ, en prenant D65 pour blanc de référence.
colorimetrie_rgb_to_xyz(int $r, int $g, int $b) : array<string|int, mixed>
Rouge, 0-255
Vert, 0-255
Bleu, 0-255
Coordonnées XYZ sur l'échelle 0-100, index x, y et z
Convertit des coordonnées XYZ en composantes sRGB normalisées, sans écrêtage.
colorimetrie_xyz_to_srgb_normalise(float $x, float $y, float $z) : array<string|int, mixed>
Étape commune à colorimetrie_xyz_to_rgb() et aux fonctions d'interrogation du gamut : elle applique la matrice XYZ
vers sRGB, puis la correction gamma, et rend les trois composantes telles quelles.
Une couleur représentable en sRGB a ses trois composantes dans l'intervalle [0, 1] ; une composante hors de cet
intervalle signale une couleur hors du gamut. C'est précisément l'information que l'écrêtage de
colorimetrie_xyz_to_rgb() détruit, et la raison d'être de cette fonction.
Coordonnée X, 0-100
Coordonnée Y, 0-100
Coordonnée Z, 0-100
Composantes sRGB normalisées et non écrêtées, index r, g et b
Convertit des coordonnées XYZ en composantes RGB décimales, en prenant D65 pour blanc de référence.
colorimetrie_xyz_to_rgb(float $x, float $y, float $z) : array<string|int, mixed>
Une couleur hors du gamut sRGB est écrêtée composante par composante. L'opération n'est pas neutre : elle
déplace la teinte et écrase le chroma, sans le signaler. Pour construire une rampe régulière, interroger le
gamut au préalable avec colorimetrie_polarlab_chroma_maximal().
Coordonnée X, 0-100
Coordonnée Y, 0-100
Coordonnée Z, 0-100
Composantes [r, g, b] entières, écrêtées dans l'intervalle 0-255
Convertit des coordonnées XYZ en CIE L*a*b*, en prenant D65 pour blanc de référence.
colorimetrie_xyz_to_lab(float $x, float $y, float $z) : array<string|int, mixed>
Coordonnée X, 0-100
Coordonnée Y, 0-100
Coordonnée Z, 0-100
Coordonnées LAB, index l (0-100), a et b
Convertit des coordonnées CIE L*a*b* en XYZ, en prenant D65 pour blanc de référence.
colorimetrie_lab_to_xyz(float $l, float $a, float $b) : array<string|int, mixed>
Clarté L*, 0-100
Coordonnée a*
Coordonnée b*
Coordonnées XYZ sur l'échelle 0-100, index x, y et z
Convertit des coordonnées XYZ en CIE L*u*v*, en prenant D65 pour blanc de référence.
colorimetrie_xyz_to_luv(float $x, float $y, float $z) : array<string|int, mixed>
Coordonnée X, 0-100
Coordonnée Y, 0-100
Coordonnée Z, 0-100
Coordonnées LUV, index l (0-100), u et v
Convertit des coordonnées CIE L*u*v* en XYZ, en prenant D65 pour blanc de référence.
colorimetrie_luv_to_xyz(float $l, float $u, float $v) : array<string|int, mixed>
Clarté L*, 0-100
Coordonnée u*
Coordonnée v*
Coordonnées XYZ sur l'échelle 0-100, index x, y et z
Convertit des coordonnées cartésiennes en coordonnées polaires (chroma et teinte).
colorimetrie_cartesien_to_polaire(float $abscisse, float $ordonnee) : array<string|int, mixed>
Fonction interne commune au polarLAB et au polarLUV, qui ne diffèrent que par le plan sur lequel la transformation polaire est appliquée.
Coordonnée a*, u* ou a
Coordonnée b*, v* ou b
Coordonnées polaires, index c (chroma) et h (teinte en degrés, 0-360)
Convertit des coordonnées CIE L*a*b* en polarLAB.
colorimetrie_lab_to_polarlab(float $l, float $a, float $b) : array<string|int, mixed>
Clarté L*, 0-100
Coordonnée a*
Coordonnée b*
Coordonnées polarLAB, index l, c (chroma) et h (teinte, 0-360)
Convertit des coordonnées polarLAB en CIE L*a*b*.
colorimetrie_polarlab_to_lab(float $h, float $c, float $l) : array<string|int, mixed>
Teinte, 0-360
Chroma
Clarté L*, 0-100
Coordonnées LAB, index l, a et b
Convertit des coordonnées CIE L*u*v* en polarLUV, c'est-à-dire en HCL.
colorimetrie_luv_to_polarluv(float $l, float $u, float $v) : array<string|int, mixed>
Clarté L*, 0-100
Coordonnée u*
Coordonnée v*
Coordonnées HCL, index l, c (chroma) et h (teinte, 0-360)
Convertit des coordonnées polarLUV, c'est-à-dire HCL, en CIE L*u*v*.
colorimetrie_polarluv_to_luv(float $h, float $c, float $l) : array<string|int, mixed>
Teinte, 0-360
Chroma
Clarté L*, 0-100
Coordonnées LUV, index l, u et v
Convertit des coordonnées XYZ en Oklab, en prenant D65 pour blanc de référence.
colorimetrie_xyz_to_oklab(float $x, float $y, float $z) : array<string|int, mixed>
Oklab poursuit le même but que CIE Lab* — une distance euclidienne qui approche la distance perçue — mais son
ajustement est plus récent et corrige deux défauts bien identifiés de son aîné : la teinte des bleus dérive vers
le violet lorsqu'on éclaircit, et les dégradés passant par le bleu virent au violet en leur milieu. C'est
l'espace que retient CSS pour ses fonctions oklab() et oklch(), et celui que recommandent aujourd'hui la
plupart des outils pour construire un dégradé.
Ses échelles ne sont pas celles du reste du fichier : la clarté va de 0 à 1 et non de 0 à 100, et les
coordonnées a et b restent comprises entre -0,4 et 0,4 environ. C'est la convention d'Ottosson, reprise
telle quelle par CSS ; la renormaliser sur 0-100 rendrait les valeurs incomparables à toute autre
implémentation, ce qui coûterait plus cher que l'irrégularité.
Coordonnée X, 0-100
Coordonnée Y, 0-100
Coordonnée Z, 0-100
Coordonnées Oklab : index l (clarté, 0-1), a et b
Convertit des coordonnées Oklab en XYZ, en prenant D65 pour blanc de référence.
colorimetrie_oklab_to_xyz(float $l, float $a, float $b) : array<string|int, mixed>
Clarté, 0-1
Coordonnée a
Coordonnée b
Coordonnées XYZ sur l'échelle 0-100, index x, y et z
Convertit des coordonnées Oklab en Oklch, leur forme polaire.
colorimetrie_oklab_to_oklch(float $l, float $a, float $b) : array<string|int, mixed>
C'est à Oklab ce que polarLAB est à CIE Lab* : les mêmes couleurs, décrites par une teinte et un chroma
plutôt que par deux coordonnées cartésiennes. C'est la forme qu'expose CSS sous le nom oklch().
Clarté, 0-1
Coordonnée a
Coordonnée b
Coordonnées Oklch : index l (clarté, 0-1), c (chroma, 0-0,4 environ) et h (teinte, 0-360)
Convertit des coordonnées Oklch en Oklab.
colorimetrie_oklch_to_oklab(float $h, float $c, float $l) : array<string|int, mixed>
Teinte, 0-360
Chroma, 0-0,4 environ
Clarté, 0-1
Coordonnées Oklab, index l, a et b
Convertit une couleur hexadécimale en CIE L*a*b*.
colorimetrie_hex_to_lab(string $hex) : array<string|int, mixed>
C'est la conversion à préférer dès qu'un même jeu de couleurs doit être comparé plusieurs fois : ΔE opère sur
des coordonnées LAB, et colorimetrie_delta_e_2000() refait cette conversion à chaque appel. Comparer n couleurs
deux à deux coûte donc n² conversions si l'on passe par elle, contre n en convertissant d'abord puis en
appelant colorimetrie_lab_delta_e_2000().
Couleur hexadécimale
Coordonnées LAB, index l, a et b
Convertit une couleur hexadécimale en polarLAB.
colorimetrie_hex_to_polarlab(string $hex) : array<string|int, mixed>
Couleur hexadécimale
Coordonnées polarLAB, index l, c et h
Convertit des coordonnées polarLAB en couleur hexadécimale.
colorimetrie_polarlab_to_hex(float $h, float $c, float $l) : string
Teinte, 0-360
Chroma
Clarté, 0-100
Couleur hexadécimale au format #RRGGBB
Convertit une couleur hexadécimale en HCL, c'est-à-dire en polarLUV.
colorimetrie_hex_to_hcl(string $hex) : array<string|int, mixed>
Couleur hexadécimale
Coordonnées HCL, index l, c et h
Convertit des coordonnées HCL, c'est-à-dire polarLUV, en couleur hexadécimale.
colorimetrie_hcl_to_hex(float $h, float $c, float $l) : string
Teinte, 0-360
Chroma
Clarté, 0-100
Couleur hexadécimale au format #RRGGBB
Convertit une couleur hexadécimale en Oklab.
colorimetrie_hex_to_oklab(string $hex) : array<string|int, mixed>
Couleur hexadécimale
Coordonnées Oklab, index l (0-1), a et b
Convertit des coordonnées Oklab en couleur hexadécimale.
colorimetrie_oklab_to_hex(float $l, float $a, float $b) : string
Clarté, 0-1
Coordonnée a
Coordonnée b
Couleur hexadécimale au format #RRGGBB
Convertit une couleur hexadécimale en Oklch.
colorimetrie_hex_to_oklch(string $hex) : array<string|int, mixed>
Couleur hexadécimale
Coordonnées Oklch, index l (0-1), c et h
Convertit des coordonnées Oklch en couleur hexadécimale.
colorimetrie_oklch_to_hex(float $h, float $c, float $l) : string
Teinte, 0-360
Chroma, 0-0,4 environ
Clarté, 0-1
Couleur hexadécimale au format #RRGGBB
Indique si une couleur exprimée en polarLAB est représentable en sRGB.
colorimetrie_polarlab_est_dans_gamut(float $h, float $c, float $l) : bool
Les espaces perceptuels décrivent bien plus de couleurs qu'un écran n'en sait afficher : un triplet polarLAB
parfaitement valide peut n'avoir aucun équivalent sRGB. Dans ce cas colorimetrie_polarlab_to_hex() rend tout de même
une couleur, écrêtée composante par composante, dont la teinte et le chroma ne sont plus ceux demandés. Cette
fonction permet de le savoir avant de convertir.
Le test porte sur les composantes sRGB non écrêtées, à _EZPALETTE_GAMUT_TOLERANCE près : est tenue pour
représentable une couleur dont l'écrêtage ne changerait pas le rendu sur huit bits.
Teinte, 0-360
Chroma
Clarté, 0-100
true si la couleur est représentable en sRGB
Calcule le chroma le plus élevé qu'une teinte et une clarté données autorisent en sRGB.
colorimetrie_polarlab_chroma_maximal(float $h, float $l[, float $precision = 0.05 ]) : float
C'est l'outil qui permet de construire une rampe honnête. Laisser l'écrêtage des composantes faire son œuvre déplace la teinte et écrase la clarté ; plafonner le chroma demandé sur ce maximum les préserve toutes deux, la seule concession étant une couleur moins vive là où le gamut ne suit pas. Deux stratégies s'offrent alors :
Sur un bleu de teinte 296 étalé de la clarté 20 à 90, le premier réglage ramène la dérive de teinte de 5,5° à moins de 0,25° et rend les clartés demandées à l'unité près.
La valeur rendue est le premier franchissement du bord du gamut en partant de l'axe des gris : tous les chromas qui lui sont inférieurs sont représentables, ce qui est la propriété dont une rampe a besoin.
Teinte, 0-360
Clarté, 0-100
Largeur de l'intervalle en deçà de laquelle la dichotomie s'arrête
Chroma maximal représentable, nul si la clarté elle-même est hors de l'intervalle 0-100
Interpole entre deux couleurs, dans l'espace demandé.
colorimetrie_interpoler(string $hex1, string $hex2, float $ratio[, string $espace = 'oklab' ]) : string
Le chemin suivi d'une couleur à l'autre dépend entièrement de l'espace : entre le bleu et le jaune, RGB traverse un gris terne, HSL parcourt les verts saturés, les espaces perceptuels tiennent le milieu. C'est pourquoi l'espace est un paramètre et non un détail d'implémentation.
Oklab est retenu par défaut. C'est aujourd'hui le meilleur choix pour un dégradé : il corrige la dérive des bleus vers le violet dont souffre CIE Lab*, précisément sur le trajet qu'empruntent le plus souvent les nuanciers séquentiels et divergents.
Dans les espaces à teinte — HSL, polarLAB, HCL, Oklch — l'interpolation suit le plus court des deux arcs du cercle chromatique. Lorsqu'une des deux couleurs est achromatique, sa teinte, fixée à zéro par convention, est remplacée par celle de l'autre extrémité : sans cette précaution, un dégradé vers le blanc virerait au rouge.
Couleur de départ, hexadécimale
Couleur d'arrivée, hexadécimale
Position sur le trajet, de 0 pour la couleur de départ à 1 pour celle d'arrivée. Une valeur hors de cet intervalle est ramenée à ses bornes
Espace d'interpolation : oklab, oklch, lab, polarlab, hcl, hsl ou rgb.
Toute autre valeur revient au défaut, oklab
Couleur hexadécimale au format #RRGGBB
Simule la perception d'une couleur par une personne dont la vision des couleurs est déficiente.
colorimetrie_simuler_deficience(string $hex[, string $type = 'deuteranopie' ]) : string
Une palette cartographique n'est lisible que si ses couleurs restent distinctes pour tout le monde. Cette fonction rend la couleur telle qu'elle est perçue, ce qui permet de comparer les couleurs simulées entre elles : deux couleurs qui se confondent après simulation se confondront pour le lecteur concerné.
Trois déficiences sont couvertes, toutes trois dans leur forme complète, ou dichromatique :
protanopie : absence des cônes sensibles au rouge ;deuteranopie : absence des cônes sensibles au vert, de loin la plus fréquente ;tritanopie : absence des cônes sensibles au bleu, la plus rare.La simulation est une transformation linéaire des composantes RGB linéaires : elle modélise une réponse des photorécepteurs, qui dépend de la lumière reçue et non de la valeur encodée. C'est aussi pourquoi le résultat peut sortir du gamut, auquel cas il est écrêté comme partout ailleurs dans ce fichier.
Couleur hexadécimale
Déficience simulée : deuteranopie, protanopie ou tritanopie. Tout autre valeur rend la
couleur inchangée
Couleur perçue, hexadécimale au format #RRGGBB
Calcule la luminance relative d'une couleur, telle que définie par les WCAG.
colorimetrie_luminance_relative(int $r, int $g, int $b) : float
Rouge, 0-255
Vert, 0-255
Bleu, 0-255
Luminance relative, 0 pour le noir et 1 pour le blanc
Calcule l'écart perceptuel ΔE*ab entre deux couleurs, selon la formule CIE 1976.
colorimetrie_delta_e_76(string $hex1, string $hex2) : float
L'écart est la distance euclidienne entre les deux couleurs dans l'espace CIE Lab*, dont c'est précisément la raison d'être : y être équidistant approche l'équidistance perceptuelle.
Ordres de grandeur usuels : en deçà de 1 l'écart n'est pas perceptible, autour de 2,3 il correspond au seuil de discrimination, au-delà de 5 les deux couleurs se distinguent au premier coup d'œil.
Première couleur hexadécimale
Seconde couleur hexadécimale
Écart perceptuel, nul si les deux couleurs sont identiques
Calcule le rapport de contraste entre deux couleurs, tel que défini par les WCAG.
colorimetrie_contraste_wcag(string $hex1, string $hex2) : float
Le rapport vaut 1 pour deux couleurs de même luminance et 21 entre le noir et le blanc. Les WCAG exigent 4,5 pour le niveau AA sur du texte courant, 7 pour le niveau AAA.
Première couleur hexadécimale
Seconde couleur hexadécimale
Rapport de contraste, compris entre 1 et 21
Calcule l'écart perceptuel ΔE₀₀ entre deux couleurs exprimées en CIE L*a*b*, selon la formule CIEDE2000.
colorimetrie_lab_delta_e_2000(float $l1, float $a1, float $b1, float $l2, float $a2, float $b2) : float
CIEDE2000 est la formule recommandée par la CIE depuis 2001 et normalisée par l'ISO/CIE 11664-6. Elle corrige les défauts les mieux documentés du ΔE*ab de 1976, qui surestime les écarts dans les bleus saturés et les sous-estime près des neutres — précisément les régions où se situent la plupart des palettes cartographiques.
Elle pondère les trois composantes de l'écart par des facteurs dépendant de la position dans l'espace, et ajoute un terme de rotation qui rend compte de l'inclinaison des ellipses de discrimination dans les bleus.
Clarté de la première couleur
Coordonnée a* de la première couleur
Coordonnée b* de la première couleur
Clarté de la seconde couleur
Coordonnée a* de la seconde couleur
Coordonnée b* de la seconde couleur
Écart perceptuel, nul si les deux couleurs sont identiques
Calcule l'écart perceptuel ΔE₀₀ entre deux couleurs hexadécimales, selon la formule CIEDE2000.
colorimetrie_delta_e_2000(string $hex1, string $hex2) : float
Ordres de grandeur usuels : en deçà de 1 l'écart n'est pas perceptible, autour de 2,3 il correspond au seuil de discrimination, au-delà de 5 les deux couleurs se distinguent au premier coup d'œil.
Première couleur hexadécimale
Seconde couleur hexadécimale
Écart perceptuel, nul si les deux couleurs sont identiques
Produit un nuancier de teintes uniques en faisant varier la luminosité et la saturation d'une couleur.
nuancier_teinte_unique(string $hex, int $taille[, null|float $luminosite_min = null ][, null|float $luminosite_max = null ][, null|float $saturation_min = null ][, null|float $saturation_max = null ]) : array<string|int, mixed>
Couleur de référence, au format hexadécimal
Nombre de couleurs à produire
Luminosité de départ, 0-1. Par défaut celle de la couleur de référence
Luminosité d'arrivée, 0-1. Par défaut 0,95 si la luminosité de départ est elle-même laissée par défaut, sinon celle de la couleur de référence
Saturation de départ, 0-1. Par défaut celle de la couleur de référence
Saturation d'arrivée, 0-1. Par défaut celle de la couleur de référence
Nuancier, ou tableau vide si la taille demandée est nulle ou négative
Produit un nuancier bipolaire, divergeant depuis une couleur centrale vers deux couleurs extrêmes.
nuancier_teinte_bipolaire(string $hex1, string $hex2, int $taille[, null|string $hex_central = null ]) : array<string|int, mixed>
Couleur de la première extrémité
Couleur de la seconde extrémité
Nombre total de couleurs, un nombre impair étant recommandé pour ménager une couleur centrale
Couleur du point de bascule, blanche par défaut
Nuancier
Produit un nuancier par mélange progressif de deux couleurs.
nuancier_couleur_melangee(string $hex1, string $hex2, int $taille[, string $methode = 'rgb' ]) : array<string|int, mixed>
Le trajet d'une couleur à l'autre est délégué à colorimetrie_interpoler(), ce qui ouvre cette production à tous les
espaces qu'elle connaît : rgb rejoint la couleur d'arrivée en ligne droite et traverse souvent un gris terne,
hsl suit le cercle chromatique, oklab donne le dégradé le plus régulier à l'œil.
Couleur de départ
Couleur d'arrivée
Nombre de couleurs à produire
Espace d'interpolation : rgb par défaut, ou l'un de ceux qu'accepte
colorimetrie_interpoler() — oklab, oklch, lab, polarlab, hcl, hsl
Nuancier
Produit un nuancier analogique, composé de teintes voisines sur le cercle chromatique.
nuancier_analogique(string $hex, int $taille[, float $ecart_teinte = 30.0 ]) : array<string|int, mixed>
Couleur de référence
Nombre de couleurs à produire
Écart de teinte entre deux couleurs consécutives, en degrés. Un écart de 15 à 30° préserve la parenté visuelle des couleurs
Nuancier
Produit un nuancier complémentaire, réunissant les variations d'une couleur et celles de son opposée sur le cercle chromatique.
nuancier_complementaire(string $hex[, int $variations = 3 ]) : array<string|int, mixed>
Couleur de référence
Nombre de variations produites pour chacune des deux teintes
Nuancier de 2 × $variations couleurs
Produit un nuancier triadique, réunissant les variations de trois teintes espacées de 120° sur le cercle chromatique.
nuancier_triadique(string $hex[, int $variations = 2 ]) : array<string|int, mixed>
Couleur de référence
Nombre de variations produites pour chacune des trois teintes
Nuancier de 3 × $variations couleurs
Produit un nuancier séquentiel en interpolant la clarté et le chroma à teinte constante.
nuancier_sequentiel(string $hex_base, int $taille[, null|float $luminosite_min = null ][, null|float $luminosite_max = null ][, null|float $chroma_min = null ][, null|float $chroma_max = null ]) : array<string|int, mixed>
L'interpolation se fait dans un espace perceptuellement régulier, ce qui donne des écarts visuels réguliers entre couleurs consécutives — propriété recherchée pour représenter une variable ordonnée sur une carte.
Le chroma de chaque couleur est plafonné sur ce que le gamut sRGB autorise à sa clarté, faute de quoi la conversion écrêterait les composantes une à une : la rampe y perdrait sa teinte et n'atteindrait pas les clartés demandées. Chaque couleur est plafonnée sur son propre maximum plutôt que la rampe entière sur le plus petit d'entre eux, afin de rester aussi vive que possible ; le chroma varie donc le long de la rampe, ce qui est le comportement des nuanciers séquentiels de référence.
Couleur de référence, dont la teinte est conservée
Nombre de couleurs à produire
Clarté de départ, 0-100. Vaut 20 par défaut
Clarté d'arrivée, 0-100. Vaut 90 par défaut
Chroma de départ. Par défaut celui de la couleur de référence
Chroma d'arrivée. Par défaut celui de la couleur de référence
Nuancier
Produit un nuancier divergent, joignant deux teintes extrêmes en passant par un point neutre.
nuancier_divergent(string $hex1, string $hex2, int $taille[, float $luminosite_centrale = 90.0 ][, float $chroma_central = 5.0 ]) : array<string|int, mixed>
Couleur de la première extrémité
Couleur de la seconde extrémité
Nombre total de couleurs, un nombre impair ménageant une couleur centrale
Clarté du point neutre, 0-100. Une valeur de 85 à 95 le rend discret
Chroma du point neutre. Une valeur de 0 à 10 le rend quasi achromatique
Nuancier
Produit un nuancier qualitatif, composé de teintes réparties régulièrement sur le cercle chromatique à chroma constant.
nuancier_qualitatif(int $taille[, float $luminosite = 65.0 ][, float $chroma = 60.0 ][, float $teinte_debut = 0.0 ][, float $etalement_clarte = 0.0 ]) : array<string|int, mixed>
Les couleurs y sont perceptuellement équivalentes : aucune ne domine visuellement les autres, ce qui convient à la représentation de modalités sans ordre.
À clarté constante, ce nuancier n'est pas lisible par un daltonien. Un protanope ou un deutéranope ne perçoit
plus l'axe rouge-vert : le cercle chromatique s'effondre sur un seul axe, et il ne lui reste, pour distinguer
deux couleurs, que cet axe résiduel et la clarté — précisément ce que la clarté constante lui retire. C'est à
quoi répond $etalement_clarte, qui échelonne les couleurs de part et d'autre de $luminosite.
Nombre de couleurs à produire. Au-delà de huit, les teintes deviennent difficiles à distinguer
Clarté centrale, 0-100
Chroma commun
Teinte de la première couleur, en degrés
Amplitude de clarté balayée par le nuancier, en points de clarté. Nulle par défaut, les couleurs partageant alors la même clarté. Les clartés obtenues sont ramenées dans l'intervalle 0-100
Nuancier
Produit un nuancier multi-teintes, en déclinant chaque teinte fournie sur une plage de clarté.
nuancier_multi_teintes(array<string|int, mixed> $teintes, int $taille[, float $luminosite_min = 30.0 ][, float $luminosite_max = 90.0 ][, float $chroma = 50.0 ]) : array<string|int, mixed>
Liste des teintes, en degrés
Nombre total de couleurs, réparties entre les teintes
Clarté de départ de chaque déclinaison, 0-100
Clarté d'arrivée de chaque déclinaison, 0-100
Chroma commun
Nuancier d'au plus $taille couleurs
Renverse l'ordre des couleurs d'un nuancier.
nuancier_inverser(array<string|int, mixed> $nuancier) : array<string|int, mixed>
Nuancier à renverser
Nuancier renversé
Extrait d'un nuancier un sous-ensemble de couleurs réparties régulièrement, extrémités comprises.
nuancier_extraire(array<string|int, mixed> $nuancier, int $nombre) : array<string|int, mixed>
Nuancier de départ
Nombre de couleurs à extraire
Nuancier extrait, ou le nuancier de départ si celui-ci ne compte pas assez de couleurs, ou un tableau vide si le nombre demandé est nul ou négatif
Mesure l'uniformité perceptuelle d'un nuancier, c'est-à-dire la régularité des écarts entre ses couleurs consécutives.
nuancier_uniformite(array<string|int, mixed> $nuancier) : null|array<string|int, mixed>
Un nuancier uniforme fait progresser la perception au même rythme que la donnée représentée : c'est la propriété qui distingue les palettes conçues pour la cartographie thématique des simples dégradés. Plus le coefficient de variation est faible, plus les écarts sont réguliers.
Nuancier à mesurer
Mesures du nuancier :
delta_e_moyen : écart perceptuel ΔE₀₀ moyen entre couleurs consécutivesecart_type : dispersion de ces écartscoefficient_variation : dispersion rapportée à la moyenne, en pourcentage
Renvoie null si le nuancier compte moins de deux couleurs, ou si toutes ses couleurs sont
identiques : la régularité des écarts n'a alors pas de sens.Détermine le rapport de contraste le plus faible entre les couleurs consécutives d'un nuancier.
nuancier_contraste_minimal(array<string|int, mixed> $nuancier) : null|float
C'est le maillon faible du nuancier : deux plages voisines d'une carte présentant ce rapport seront les plus difficiles à distinguer.
Nuancier à mesurer
Rapport de contraste minimal, ou null si le nuancier compte moins de deux couleurs
Décrit la progression de clarté d'un nuancier.
nuancier_progression_clarte(array<string|int, mixed> $nuancier[, float $tolerance = 0.5 ]) : null|array<string|int, mixed>
C'est la mesure qui distingue un nuancier séquentiel de tous les autres. Un séquentiel représente une variable ordonnée, et ce qui porte cet ordre n'est pas la teinte mais la clarté : c'est elle qui survit au daltonisme, au tirage en noir et blanc et à la photocopie. Un nuancier séquentiel dont la clarté n'est pas monotone est défectueux, même si ses écarts perceptuels sont parfaitement réguliers.
nuancier_uniformite() ne sait pas faire cette différence : un divergent bien construit affiche un aussi bon
coefficient de variation qu'un séquentiel, ses couleurs étant régulièrement espacées de part et d'autre de son
point neutre. Les deux mesures sont complémentaires — la régularité des écarts d'un côté, le sens de la
progression de l'autre.
Nuancier à mesurer
Écart de clarté en deçà duquel deux couleurs consécutives sont tenues pour de même clarté. La valeur par défaut absorbe le bruit de la quantification sur huit bits, très inférieur au seuil de perception
Mesures de la progression :
clarte_min et clarte_max : clartés extrêmes rencontrées, 0-100etendue : amplitude balayée, en points de clartémonotone : true si la clarté progresse toujours dans le même
sens, false si elle change de sens ou reste platesens : croissante, decroissante, ou chaîne vide si la
progression n'est pas monotonepas_minimal : plus petit écart de clarté entre deux couleurs
consécutives, soit le maillon faible en noir et blanc
Renvoie null si le nuancier compte moins de deux couleurs.Vérifie qu'un nuancier reste lisible pour les principales déficiences de la vision des couleurs.
nuancier_verifier_daltonisme(array<string|int, mixed> $nuancier[, string $type = '' ][, float $seuil = 10.0 ][, int $classes = 12 ]) : null|array<string|int, mixed>
Un nuancier cartographique ne remplit son office que si ses couleurs restent distinctes pour tout le monde. La fonction simule la perception de chaque couleur, puis mesure l'écart perceptuel le plus faible entre deux d'entre elles : c'est le couple qui se confondra en premier.
Le critère dépend du type du nuancier, parce que « rester lisible » n'y veut pas dire la même chose. Sur une carte, un nuancier qualitatif se lit en comparant deux plages quelconques à la légende, tandis qu'un séquentiel se lit comme un gradient : ce qu'il faut y préserver n'est pas la distinction de chaque couple mais l'ordre.
qualitative, et tout type non reconnu : tous les couples doivent rester distinguables. C'est le critère
le plus exigeant, retenu par prudence pour les types dont on ne sait rien.sequential et perceptual_sequential : la progression de clarté doit survivre, c'est-à-dire rester
monotone et conserver la moitié au moins de son amplitude. C'est ce qui rend sûrs les séquentiels monochromes,
dont les couleurs sont pourtant voisines deux à deux.diverging : les deux arcs doivent rester discernables l'un de l'autre. L'échec caractéristique d'un
divergent n'est pas la confusion de deux voisines mais celle de ses deux versants, qui fait perdre le sens de
l'écart au point neutre.Nuancier à contrôler
Type du nuancier, qui détermine le critère appliqué
Écart perceptuel ΔE₀₀ en deçà duquel deux couleurs sont tenues pour confondues. Sans effet sur le critère de progression, dont le seuil se déduit du nuancier lui-même
Nombre maximal de classes sur lesquelles porte la comparaison des couples. La valeur par défaut est le plus grand nombre de couleurs que publient les collections de référence, et au-delà duquel une carte choroplèthe cesse d'être lisible
Mesures du contrôle :
critere : couples, arcs ou progressionseuil : seuil effectivement appliqué, dans l'unité du critère — un écart ΔE₀₀
pour couples et arcs, une amplitude de clarté pour progressionlisible : true si les trois déficiences sont lisiblesprotanopie, deuteranopie et tritanopie — portant :
mesure : grandeur mesurée, dans l'unité du critère. Nulle si la progression est
rompue, ce qui la place sous n'importe quel seuilcouple : les deux couleurs d'origine à l'origine de la mesure, vide pour le
critère de progressionlisible : true si la mesure atteint le seuil
Renvoie null si le nuancier compte moins de deux couleurs.Renvoie la couleur d'un nuancier correspondant à une position exprimée en pourcentage.
nuancier_couleur_a_pourcentage(array<string|int, mixed> $nuancier, float $pourcentage) : null|string
Nuancier à interroger
Position dans le nuancier, 0-100. Les valeurs hors bornes sont ramenées aux extrémités
Couleur hexadécimale, ou null si le nuancier est vide
Renvoie la couleur d'un nuancier représentant une valeur située dans un intervalle donné.
nuancier_couleur_pour_valeur(array<string|int, mixed> $nuancier, float $valeur, float $min, float $max) : null|string
C'est la jonction entre une série de données et un nuancier : à chaque valeur correspond une couleur, ce qui constitue le principe même de la carte choroplèthe.
Nuancier à interroger
Valeur à représenter. Les valeurs hors bornes sont ramenées aux extrémités
Borne inférieure de l'intervalle
Borne supérieure de l'intervalle
Couleur hexadécimale, ou null si le nuancier est vide
Traduit la désignation d'une palette en critères SQL.
palette_identifier(mixed $palette) : array<string|int, mixed>
Une palette a deux identités : id_palette, la clé technique attribuée à l'enregistrement, et le triplet
collection + scheme + taille, qui est la façon dont on la nomme en cartographie — le Blues de ColorBrewer,
en cinq classes. Aucune des deux ne prime : l'une vient de la base, l'autre du domaine. Toutes les fonctions
qui opèrent sur une palette existante acceptent donc indifféremment l'une ou l'autre, sous un unique argument
$palette.
Trois formes sont reconnues :
collection, scheme et taille : le triplet ;palette_lire() : elle porte les deux, et sa clé technique est
retenue puisque c'est la clé primaire.Désignation de la palette, sous l'une des trois formes reconnues
Critères SQL désignant la palette, ou tableau vide si la désignation est incomplète ou invalide
Retourne, pour une palette donnée, la description complète ou seulement un champ précis.
palette_lire(mixed $palette[, null|string $information = '' ][, null|bool $traiter_typo = false ]) : mixed
Les champs sérialisés — le nuancier et les mesures de qualification — sont toujours désérialisés : leur forme
en base est un détail de stockage dont l'appelant n'a pas à connaître. Les champs textuels rédigés en SPIP, soit
la seule description, sont rendus bruts par défaut et ne subissent le traitement typographique que sur demande,
car celui-ci produit du HTML qui n'a de sens qu'à l'affichage.
Désignation de la palette, voir palette_identifier()
Champ précis à retourner, ou vide pour retourner toute la description
Indique si les champs textuels doivent être traités par typo() plutôt que
rendus bruts. Vaut false par défaut. Les champs sérialisés sont eux
toujours désérialisés
Description complète de la palette, ou le seul champ demandé, ou null si la palette n'existe
pas ou si le champ demandé lui est étranger
Répertorie les palettes répondant à des critères donnés.
palette_repertorier([array<string|int, mixed> $filtres = [] ]) : array<string|int, mixed>
Critères de sélection, tous facultatifs :
collection : collection d'originescheme : identifiant du schématype : type de palette, parmi les constantes _EZPALETTE_TYPE_*taille : nombre de couleurseditable : palettes personnelles si vrai, standard si fauxdaltonisme : palettes adaptées au daltonisme si vraiclarte_monotone : palettes dont la clarté progresse dans un seul sens si vrai,
ce qui est la marque d'un nuancier qui encode un ordre et
résiste au tirage en noir et blanccontraste_min : rapport de contraste WCAG minimal exigé entre deux couleurs
consécutives, 4,5 correspondant au niveau AAclarte_etendue : amplitude de clarté minimale exigée, en points. En deçà de
40, une rampe ne se lit plus en noir et blancListe des palettes, ordonnée par collection, schéma puis taille
Traduit un jeu de filtres en critères SQL.
palette_criteres([array<string|int, mixed> $filtres = [] ]) : array<string|int, mixed>
Partagé par palette_repertorier() et palette_repertorier_schemas(), qui sélectionnent le même ensemble de
palettes et n'en diffèrent que par le regroupement.
Critères de sélection, voir palette_repertorier()
Critères SQL, tableau vide si aucun filtre n'est fourni
Répertorie les schémas, c'est-à-dire les palettes regroupées par parti pris chromatique.
palette_repertorier_schemas([array<string|int, mixed> $filtres = [] ][, int $taille_apercu = 7 ]) : array<string|int, mixed>
Un schéma — Blues, RdBu — n'est pas une table : c'est le regroupement des palettes d'une même collection
qui ne diffèrent que par leur nombre de couleurs. Il porte ce qui ne dépend pas de la taille : le type, la
description, l'aptitude déclarée au daltonisme.
C'est l'unité de navigation naturelle. Les collections embarquées comptent 83 schémas pour 858 palettes, soit dix déclinaisons par schéma et jamais moins de six : une liste de palettes est dix fois plus longue qu'une liste de schémas pour la même information chromatique.
Critères de sélection, voir palette_repertorier(). Les critères de taille et de
qualité s'appliquent aux palettes avant regroupement : un schéma est retenu dès
qu'une seule de ses palettes les satisfait, et les tailles rendues sont celles qui
les satisfont
Taille dont le nuancier illustre le schéma. Les 83 schémas embarqués ont tous une déclinaison de sept couleurs ; à défaut, c'est celle dont la taille en est la plus proche qui sert d'aperçu
Liste des schémas, ordonnée par collection puis schéma, chacun décrit par :
collection, scheme, type, description, daltonisme, editabletailles : les tailles disponibles, entiers ordonnésnb_tailles : leur nombretaille_min et taille_max : les bornesapercu : le nuancier représentatif, tableau de couleurs hexadécimalesIndique si une palette existe.
palette_existe(mixed $palette) : bool
Désignation de la palette, voir palette_identifier()
Recommande les schémas les mieux adaptés à un usage donné.
palette_recommander(array<string|int, mixed> $filtres) : array<string|int, mixed>
La recommandation s'appuie sur les listes déclarées par chaque collection dans son fichier JSON, restreintes aux schémas effectivement présents en base pour les critères demandés.
La curation prime sur la mesure. Quand une collection déclare une liste, elle fait foi : c'est un jugement d'expert, souvent éprouvé à la photocopieuse, qu'aucune de nos mesures ne reproduit. Les mesures prennent le relais là où il n'y a rien à respecter, c'est-à-dire pour les collections personnelles, qui ne déclarent jamais de recommandations — sans quoi elles ne seraient jamais recommandables.
Le contexte fait exception pour le daltonisme : la colonne daltonisme reprend, pour les collections standard,
le drapeau que la collection déclare elle-même. L'appliquer ne contredit donc aucune curation, et le faire en
base plutôt qu'après coup permet de la combiner aux autres critères.
Critères de recommandation :
type : type de palette, parmi les constantes _EZPALETTE_TYPE_*
(obligatoire)taille : nombre de couleurs souhaitécontexte : usage visé, parmi defaut, daltonisme et impression_nbcollection : restreindre à une collectiondaltonisme : ne retenir que les schémas adaptés au daltonismeSchémas recommandés, indexés par collection/scheme, chacun décrit par sa collection, son
schéma, son type, son aptitude au daltonisme, les tailles disponibles et sa description
Qualifie un nuancier et rend les valeurs à consigner sur la palette qui le porte.
palette_qualifier(array<string|int, mixed> $nuancier[, string $type = '' ][, null|bool $daltonisme_declare = null ]) : array<string|int, mixed>
C'est le point de calcul unique des mesures stockées : le chargement d'une collection, la création et la modification d'une palette l'appellent tous les trois. Ajouter une mesure ne demande donc de toucher qu'ici, et les trois chemins d'écriture ne peuvent pas diverger.
Les mesures se répartissent en deux natures, et c'est ce qui décide de leur forme de stockage :
qualification,
sérialisé en JSON. Il absorbe une nouvelle mesure sans toucher au schéma.Nuancier à qualifier
Type de la palette, qui détermine le critère de contrôle du daltonisme
Aptitude au daltonisme déclarée par la collection, null si aucune
Valeurs à consigner :
contraste_min, daltonisme, clarte_monotone et clarte_etendue : colonnes de la
table, les deux booléens sous la forme oui ou non employée par le reste du pluginqualification : tableau des mesures détaillées, à sérialiser avant enregistrementCrée une palette personnelle, ou met à jour celle qui occupe déjà le même triplet identifiant.
palette_creer(string $collection_id, string $scheme, int $taille, array<string|int, mixed> $nuancier[, array<string|int, mixed> $options = [] ]) : null|int
Collection de destination, qui ne peut pas être protégée
Identifiant du schéma
Nombre de couleurs, qui doit coïncider avec la taille du nuancier
Jeu de couleurs hexadécimales
Attributs facultatifs :
type : type de palette, qualitative par défautdescription : description libredaltonisme : aptitude au daltonismeIdentifiant de la palette créée ou mise à jour, ou null en cas d'erreur
Modifie une palette personnelle.
palette_modifier(mixed $palette, array<string|int, mixed> $modifications) : bool
Désignation de la palette, voir palette_identifier()
Champs à modifier, parmi scheme, type, nuancier, description et
daltonisme. Le nuancier peut être fourni sous forme de tableau
Vrai si la modification a eu lieu
Supprime une palette personnelle.
palette_supprimer(mixed $palette) : bool
Désignation de la palette, voir palette_identifier()
Vrai si la suppression a eu lieu
Duplique une palette vers une collection non protégée, ce qui permet de partir d'une palette standard pour en dériver une variante personnelle.
palette_dupliquer(mixed $palette, string $nouveau_scheme[, string $collection_id = 'perso' ]) : null|int
Désignation de la palette à dupliquer, voir palette_identifier()
Identifiant du schéma de la copie
Collection de destination, perso par défaut
Identifiant de la copie, ou null en cas d'erreur
Charge ou recharge en base de données les collections des palettes de couleurs standard à partir des fichiers JSON correspondants.
palette_collection_charger([null|string $collection_id = null ]) : array<string|int, mixed>
Il est possible de charger une collection donnée ou de charger toutes les collections disponibles.
Identifiant de la collection ou null pour charger toutes les collections. L'identifiant de la collection coincide avec le nom du fichier JSON contenant les informations de configuration de la collection.
Tableau résultat de l'action : soit une erreur, soit une information sur le déroulement correct. Les index sont :
Vide en base de données les collections des palettes de couleurs standard (non éditables) en préservant les palettes personnelles.
palette_collection_decharger([null|string $collection_id = null ]) : array<string|int, mixed>
Il est possible de vider une collection donnée ou toutes les collections standard enregistrées.
Identifiant de la collection ou null pour décharger toutes les collections.
Tableau résultat de l'action : soit une erreur, soit une information sur le déroulement correct. Les index sont :
Liste toutes les descriptions des collections disponibles ou seulement celles filtrées selon un ou plusieurs attributs.
palette_collection_repertorier([null|array<string|int, mixed> $filtres = [] ]) : array<string|int, mixed>
La fonction lit la meta ezpalette_collections.
Tableau associatif [champ] = valeur de critères de filtres sur les descriptions de feed.
Les opérateurs possibles sont l'égalité et la non égalité qui s'exprime en préfixant
la valeur par !.
Renvoie la liste des descriptions des collections enregistrées
Indique si une collection est protégée, c'est-à-dire si son contenu est administré par le plugin et non par l'utilisateur.
palette_collection_est_protegee(string $collection_id) : bool
Les collections standard sont décrites par un fichier JSON du dossier palettes/ et intégralement rechargées
depuis celui-ci : toute palette personnelle qu'on y déposerait disparaîtrait au premier rechargement. Une
collection inconnue n'est en revanche pas protégée, ce qui permet d'en créer une simplement en employant un nom
nouveau.
Identifiant de la collection
Vrai si la collection est administrée par le plugin
Vérifie qu'un identifiant de collection est utilisable et le normalise.
palette_collection_normaliser_identifiant(string $collection_id) : string
L'identifiant sert de clé de configuration et de valeur en base : il est réduit aux minuscules, aux chiffres, au tiret et au souligné.
Identifiant proposé
Identifiant normalisé, ou chaîne vide s'il ne comporte aucun caractère exploitable
Recalcule les agrégats d'une collection à partir des palettes réellement présentes en base.
palette_collection_recalculer(string $collection_id) : array<string|int, mixed>
Types proposés, nombre de schémas et de palettes, tailles disponibles : ces informations décrivent le contenu de la collection et ne sont donc jamais saisies, mais déduites. Les collections standard les obtiennent lors de leur chargement depuis leur fichier JSON ; pour une collection personnelle, il revient à l'appelant de demander ce recalcul après avoir créé, modifié ou supprimé des palettes.
Identifiant de la collection
Tableau résultat de l'action, aux index level, code et parameters
Crée une collection personnelle.
palette_collection_creer(string $collection_id[, array<string|int, mixed> $metadonnees = [] ]) : array<string|int, mixed>
Une collection personnelle se distingue d'une collection standard par son drapeau editable : elle n'est pas
adossée à un fichier JSON, n'est donc jamais rechargée, et ses palettes survivent aux rechargements des autres
collections.
Identifiant souhaité, normalisé automatiquement
Métadonnées de la collection, parmi titre, version, source, licence,
description et recommandations. À défaut de titre, l'identifiant en tient lieu
Tableau résultat de l'action, aux index level, code et parameters. En cas de succès,
l'index parameters porte l'identifiant retenu, qui peut différer de celui demandé
Modifie les métadonnées d'une collection personnelle.
palette_collection_modifier(string $collection_id, array<string|int, mixed> $modifications) : array<string|int, mixed>
Les collections standard sont administrées par leur fichier JSON : les modifier en base n'aurait pas de sens, puisque le prochain chargement écraserait la modification.
Identifiant de la collection
Métadonnées à modifier, parmi celles déclarées par
_EZPALETTE_COLLECTION_METADONNEES
Tableau résultat de l'action, aux index level, code et parameters
Supprime une collection personnelle.
palette_collection_supprimer(string $collection_id[, bool $avec_palettes = false ]) : array<string|int, mixed>
La suppression est refusée si la collection contient encore des palettes, à moins de le demander explicitement : effacer d'un geste un ensemble de palettes composées à la main mérite une confirmation.
Identifiant de la collection
Supprimer aussi les palettes de la collection
Tableau résultat de l'action, aux index level, code et parameters
Extrait le nuancier d'une palette et vérifie qu'il est exploitable.
palette_restituer_nuancier(array<string|int, mixed> $palette) : array<string|int, mixed>
Palette, ou nuancier seul
Nuancier réindexé de zéro, ou tableau vide si la palette n'en contient pas
Construit l'identifiant lisible d'une palette, utilisable comme préfixe de classe ou de variable CSS.
palette_restituer_identifiant(array<string|int, mixed> $palette[, null|string $defaut = 'palette' ]) : string
Deux palettes affichées sur la même page produiraient des sélecteurs identiques si le préfixe était constant : le dériver du schéma et de la collection les rend distincts.
Palette
Préfixe employé si la palette ne porte pas de schéma
Identifiant en minuscules, réduit aux lettres, chiffres et tirets
Exporte une palette dans un format d'échange.
palette_restituer_export(array<string|int, mixed> $palette[, string $format = 'json' ]) : string
Le format json est le seul à restituer les attributs de la palette et les mentions de sa collection : les
autres formats sont destinés à être intégrés dans du code et ne rendent que les couleurs.
Les formats css et oklch produisent le même bloc de variables CSS et ne diffèrent que par l'écriture des
couleurs : hexadécimale pour le premier, oklch() pour le second. Voir palette_restituer_couleur() sur ce que
cette notation apporte et sur les navigateurs qui l'interprètent.
Palette à exporter
Format visé : json, csv, scss, css, oklch, js ou php
Palette formatée, ou chaîne vide si le nuancier est vide ou le format inconnu
Écrit une couleur dans la notation CSS demandée.
palette_restituer_couleur(string $hex[, string $notation = 'hex' ]) : string
Deux notations sont proposées. hex est celle du nuancier, comprise partout. oklch décrit la même couleur par
sa clarté, son chroma et sa teinte : elle est lisible — on voit du premier coup d'œil qu'une palette progresse en
clarté à teinte constante — et surtout modifiable dans la feuille de style, où oklch(from var(--x) l c h)
permet de dériver une variante sans repasser par PHP.
Couleur hexadécimale
Notation visée, hex ou oklch. Toute autre valeur revient à hex
Couleur écrite dans la notation demandée
Produit une feuille de style déclarant une classe par couleur de la palette.
palette_restituer_css(array<string|int, mixed> $palette[, array<string|int, mixed> $options = [] ]) : string
Palette
Options de mise en forme :
prefixe : préfixe des classes, dérivé de la palette par défautpropriete : propriété CSS affectée, background-color par défautnotation : écriture des couleurs, hex par défaut ou oklchFeuille de style, ou chaîne vide si le nuancier est vide
Produit une feuille de style déclarant une variable CSS par couleur de la palette.
palette_restituer_css_variables(array<string|int, mixed> $palette[, array<string|int, mixed> $options = [] ]) : string
Palette
Options de mise en forme :
prefixe : préfixe des variables, dérivé de la palette par défautnotation : écriture des couleurs, hex par défaut ou oklchFeuille de style, ou chaîne vide si le nuancier est vide
Produit une légende HTML représentant la palette sous forme de bandeau de couleurs.
palette_restituer_legende(array<string|int, mixed> $palette[, array<string|int, mixed> $options = [] ]) : string
Palette
Options de mise en forme :
intitules : intitulé de chaque couleur, la couleur elle-même par défautorientation : horizontal par défaut, ou verticalclasse : classe CSS du bandeautitre : titre affiché, la description de la palette par défautFragment HTML, ou chaîne vide si le nuancier est vide
Produit un aperçu SVG de la palette, sous forme de bandes juxtaposées.
palette_restituer_svg(array<string|int, mixed> $palette[, array<string|int, mixed> $options = [] ]) : string
Palette
Options de mise en forme :
largeur : largeur totale en pixels, 300 par défauthauteur : hauteur totale en pixels, 50 par défautetiquettes : inscrire le code de chaque couleur dans sa bandeDocument SVG, ou chaîne vide si le nuancier est vide