Documentation du code de SPIP et de ses plugins

Palette Factory

PALETTE

Table of Contents

Constants

_EZPALETTE_IMPRESSION_NB_ETENDUE  = 40.0
Amplitude de clarté minimale, en points, exigée d'un nuancier destiné à l'impression en noir et blanc.

Functions

palette_identifier()  : array<string|int, mixed>
Traduit la désignation d'une palette en critères SQL.
palette_lire()  : mixed
Retourne, pour une palette donnée, la description complète ou seulement un champ précis.
palette_repertorier()  : array<string|int, mixed>
Répertorie les palettes répondant à des critères donnés.
palette_criteres()  : array<string|int, mixed>
Traduit un jeu de filtres en critères SQL.
palette_repertorier_schemas()  : array<string|int, mixed>
Répertorie les schémas, c'est-à-dire les palettes regroupées par parti pris chromatique.
palette_existe()  : bool
Indique si une palette existe.
palette_recommander()  : array<string|int, mixed>
Recommande les schémas les mieux adaptés à un usage donné.
palette_qualifier()  : array<string|int, mixed>
Qualifie un nuancier et rend les valeurs à consigner sur la palette qui le porte.
palette_creer()  : null|int
Crée une palette personnelle, ou met à jour celle qui occupe déjà le même triplet identifiant.
palette_modifier()  : bool
Modifie une palette personnelle.
palette_supprimer()  : bool
Supprime une palette personnelle.
palette_dupliquer()  : null|int
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.

Constants

_EZPALETTE_IMPRESSION_NB_ETENDUE

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.

Tags
note

Ce seuil ne sert qu'à défaut de curation déclarée. Aucune mesure ne reproduit le choix d'un ColorBrewer, qui déclare Blues bonne pour l'impression et YlGn non, alors que la seconde balaie une amplitude légèrement supérieure. La mesure ne départage pas une liste d'experts, elle prend le relais quand il n'y en a pas.

Functions

palette_identifier()

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 :

  • un entier, ou la chaîne de chiffres qui en vient d'un formulaire : la clé technique ;
  • un tableau portant les index collection, scheme et taille : le triplet ;
  • une palette chargée, telle que la rend palette_lire() : elle porte les deux, et sa clé technique est retenue puisque c'est la clé primaire.
Parameters
$palette : mixed

Désignation de la palette, sous l'une des trois formes reconnues

Tags
note

La collection fait partie de l'identité et n'est pas facultative. Une version antérieure permettait de chercher un schéma sans elle : la requête rendait alors la première palette venue, Blues existant aussi bien chez ColorBrewer que chez CARTOColors. Une désignation incomplète est désormais refusée plutôt que résolue au hasard.

Return values
array<string|int, mixed>

Critères SQL désignant la palette, ou tableau vide si la désignation est incomplète ou invalide

palette_lire()

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.

Parameters
$palette : mixed

Désignation de la palette, voir palette_identifier()

$information : null|string = ''

Champ précis à retourner, ou vide pour retourner toute la description

$traiter_typo : null|bool = false

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

Tags
used-by
autoriser_palette_modifier_dist()
Return values
mixed

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

palette_repertorier()

Répertorie les palettes répondant à des critères donnés.

palette_repertorier([array<string|int, mixed> $filtres = [] ]) : array<string|int, mixed>
Parameters
$filtres : array<string|int, mixed> = []

Critères de sélection, tous facultatifs :

  • string collection : collection d'origine
  • string scheme : identifiant du schéma
  • string type : type de palette, parmi les constantes _EZPALETTE_TYPE_*
  • int taille : nombre de couleurs
  • bool editable : palettes personnelles si vrai, standard si faux
  • bool daltonisme : palettes adaptées au daltonisme si vrai
  • bool clarte_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 blanc
  • float contraste_min : rapport de contraste WCAG minimal exigé entre deux couleurs consécutives, 4,5 correspondant au niveau AA
  • float clarte_etendue : amplitude de clarté minimale exigée, en points. En deçà de 40, une rampe ne se lit plus en noir et blanc
Tags
note

Une palette dont la mesure est indéterminée — moins de deux couleurs — n'est retenue par aucun critère de qualité. C'est le comportement voulu : à défaut de savoir, on n'affirme pas.

Return values
array<string|int, mixed>

Liste des palettes, ordonnée par collection, schéma puis taille

palette_criteres()

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.

Parameters
$filtres : array<string|int, mixed> = []

Critères de sélection, voir palette_repertorier()

Tags
used-by
balise_PALETTE_CRITERES_dist()
Return values
array<string|int, mixed>

Critères SQL, tableau vide si aucun filtre n'est fourni

palette_repertorier_schemas()

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émaBlues, 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.

Parameters
$filtres : array<string|int, mixed> = []

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_apercu : int = 7

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

Tags
see
palette_repertorier()

Les mêmes palettes, sans regroupement

used-by
balise_PALETTE_SCHEMAS_dist()
Return values
array<string|int, mixed>

Liste des schémas, ordonnée par collection puis schéma, chacun décrit par :

  • index collection, scheme, type, description, daltonisme, editable
  • index tailles : les tailles disponibles, entiers ordonnés
  • index nb_tailles : leur nombre
  • index taille_min et taille_max : les bornes
  • index apercu : le nuancier représentatif, tableau de couleurs hexadécimales

palette_existe()

Indique si une palette existe.

palette_existe(mixed $palette) : bool
Parameters
$palette : mixed

Désignation de la palette, voir palette_identifier()

Return values
bool

palette_recommander()

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.

Parameters
$filtres : array<string|int, mixed>

Critères de recommandation :

  • string type : type de palette, parmi les constantes _EZPALETTE_TYPE_* (obligatoire)
  • int taille : nombre de couleurs souhaité
  • string contexte : usage visé, parmi defaut, daltonisme et impression_nb
  • string collection : restreindre à une collection
  • bool daltonisme : ne retenir que les schémas adaptés au daltonisme
Tags
note

Le contexte impression_nb n'impose pas de progression de clarté monotone, alors que ce serait tentant : une palette divergente n'est jamais monotone — sa clarté culmine au point neutre — et l'exiger écarterait RdBu et BrBG, précisément les deux que ColorBrewer déclare bonnes pour l'impression. Le critère retenu est la seule amplitude de clarté, voir _EZPALETTE_IMPRESSION_NB_ETENDUE.

Return values
array<string|int, mixed>

Sché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

palette_qualifier()

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 :

  • celles qui servent à choisir une palette sont des colonnes, donc filtrables et triables depuis une boucle sans une ligne de PHP : le contraste minimal, l'aptitude au daltonisme, le caractère monotone de la clarté et l'amplitude qu'elle balaie ;
  • celles qui servent à décrire une palette déjà retenue tiennent dans un seul tableau qualification, sérialisé en JSON. Il absorbe une nouvelle mesure sans toucher au schéma.
Parameters
$nuancier : array<string|int, mixed>

Nuancier à qualifier

$type : string = ''

Type de la palette, qui détermine le critère de contrôle du daltonisme

$daltonisme_declare : null|bool = null

Aptitude au daltonisme déclarée par la collection, null si aucune

Tags
note

L'aptitude au daltonisme a deux sources. Quand la collection la déclare, cette déclaration prime : elle engage la réputation de sa source, qui l'a établie sur des critères d'expert que le calcul n'approche qu'imparfaitement. Le calcul prend le relais pour les palettes personnelles, qui n'ont aucune déclaration — sans quoi elles seraient invisibles à un filtre d'accessibilité. Le tableau qualification conserve les deux, de sorte que la provenance reste lisible.

Return values
array<string|int, mixed>

Valeurs à consigner :

  • index 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 plugin
  • index qualification : tableau des mesures détaillées, à sérialiser avant enregistrement

palette_creer()

Cré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
Parameters
$collection_id : string

Collection de destination, qui ne peut pas être protégée

$scheme : string

Identifiant du schéma

$taille : int

Nombre de couleurs, qui doit coïncider avec la taille du nuancier

$nuancier : array<string|int, mixed>

Jeu de couleurs hexadécimales

$options : array<string|int, mixed> = []

Attributs facultatifs :

  • string type : type de palette, qualitative par défaut
  • string description : description libre
  • bool daltonisme : aptitude au daltonisme
Tags
note

Cette fonction est la seule à ne pas prendre de désignation $palette : à la création, le triplet ne désigne rien, il décrit ce que l'on va créer. Ses composants sont donc explicites — et dans l'ordre du triplet, la collection d'abord, puisqu'une palette appartient toujours à une collection.

Return values
null|int

Identifiant de la palette créée ou mise à jour, ou null en cas d'erreur

palette_modifier()

Modifie une palette personnelle.

palette_modifier(mixed $palette, array<string|int, mixed> $modifications) : bool
Parameters
$palette : mixed

Désignation de la palette, voir palette_identifier()

$modifications : array<string|int, mixed>

Champs à modifier, parmi scheme, type, nuancier, description et daltonisme. Le nuancier peut être fourni sous forme de tableau

Return values
bool

Vrai si la modification a eu lieu

palette_supprimer()

Supprime une palette personnelle.

palette_supprimer(mixed $palette) : bool
Parameters
$palette : mixed

Désignation de la palette, voir palette_identifier()

Return values
bool

Vrai si la suppression a eu lieu

palette_dupliquer()

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
Parameters
$palette : mixed

Désignation de la palette à dupliquer, voir palette_identifier()

$nouveau_scheme : string

Identifiant du schéma de la copie

$collection_id : string = 'perso'

Collection de destination, perso par défaut

Return values
null|int

Identifiant de la copie, ou null en cas d'erreur


        
On this page

Search results