Une couleur qui glisse vers une autre
Déclarer un dégradé, en ligne droite ou en cercle, et remplir ensuite une forme avec lui en le nommant.
Résumé
Un ciel de fin de journée passe de l'orange au bleu sans qu'on voie où l'un s'arrête. C'est un dégradé. L'un glisse d'un point à un autre, comme ce ciel ; un autre rayonne d'un cercle vers un autre, comme un halo autour d'une lampe. Un troisième calcule la couleur de chaque point d'après l'endroit où ce point se tient, sa distance en largeur et sa distance en hauteur, si bien qu'il tourne dans les deux sens à la fois. Le quatrième est découpé en triangles, chaque sommet ayant sa propre couleur, et il va là où une ligne et deux cercles ne vont pas : un visage éclairé des deux côtés, une carte dont le fond change dans toutes les directions. N'importe lequel remplit la forme que vous voulez : un bandeau de titre, un fond de carte, un rond.
Techniquement
Écrit au premier niveau d'une requête, sous
"shadings"
shadings déclare les dégradés que le document définit pour lui-même, chacun sous le nom par lequel un remplissage le sélectionne. Un dégradé s'écrit en motif de dégradé — /ShadingType 1 lu dans une fonction de deux coordonnées, 2 le long d'une ligne, 3 entre deux cercles, 4 sur un maillage de triangles — atteint par /PatternType 2, si bien que la couleur transparaît à travers ce que la forme laisse passer plutôt que d'être peinte par-dessus un découpage. Les deux qui courent de bout en bout disent leurs couleurs de deux façons, et d'une seule à la fois : deux couleurs de bout en bout, ou un espace et une fonction. Deux couleurs de bout en bout s'écrivent dans l'espace que désigne le compte de leurs nombres : trois nombres écrivent /DeviceRGB, quatre écrivent /DeviceCMYK, si bien qu'un dégradé court sur les quatre plaques d'imprimerie aussi bien que sur un écran. Un maillage, lui, dit une couleur à chaque sommet, et ce qui se trouve à l'intérieur d'un triangle se déduit de ses trois sommets. Une couleur lue dans une fonction se lit sur un rectangle qui lui est propre, posé sur la page par six nombres, et c'est le seul dégradé dont la couleur tourne dans les deux directions à la fois.
Schéma de la requête
-
shadings— tableau, facultatif, vide par défaut. -
shadings[].name— chaîne, obligatoire. Le nom par lequel un remplissage sélectionne ce dégradé. -
shadings[].shading— objet, obligatoire. Sept sortes :axial—fromdeux nombres obligatoire,todeux nombres obligatoire, en coordonnées de page.radial—fromettoen trois nombres obligatoires : centre en x, centre en y, rayon.function_based—domain,matrix,spaceetfunctiontous obligatoires.domaindonne deux paires de nombres, l'intervalle que parcourt x puis l'intervalle que parcourt y ;matrix, les six nombres de l'opérateur cm du langage PDF, qui pose ce rectangle sur la page,[200, 0, 0, 100, 50, 60]étirant le domaine[[0, 1], [0, 1]]sur le rectangle de 200 par 100 dont le coin inférieur gauche se tient en 50, 60 ;space, l'un degray,rgbetcmyk, ou une encre de presse nommée et donnée en entier parseparation, ou plusieurs de ces encres à la fois pardevice_n, tout autre espace déclaré étant refusé ;function, la fonction dans laquelle se lit la couleur de chaque point, les deux coordonnées du point en entrée et les composantes d'une couleur en sortie, si bien que seulescalculationetsampledla disent et qu'une fonction prenant un autre nombre d'entrées est refusée. Rien n'est peint hors du rectangle posé. Écrit en/ShadingType1.mesh—trianglesobligatoire, tableau de groupes de trois sommets. Un sommet ditat, deux nombres en coordonnées de page, puiscolor, outintsquand le maillage donne unspace. Un maillage qui ne dit aucun triangle est refusé.lattice_mesh—rowsobligatoire, tableau de rangées de sommets, chaque sommet donné comme dans unmesh, toutes les rangées aussi longues que la première, au moins deux rangées de deux sommets. Chaque carré de quatre sommets voisins fait deux triangles : un sommet commun à plusieurs triangles n'est donc donné qu'une fois. Écrit en/ShadingType5.coons_patch_mesh—patchesobligatoire, tableau de carreaux. Un carreau donnepoints, douze points de contrôle de deux nombres chacun en coordonnées de page, etcolors, la couleur de chacun de ses quatre coins, outintsquand le maillage donne unspace. Les douze font le tour du carreau à partir du premier coin : pour chaque côté, un coin puis les deux points qui courbent le côté qui en part. Les coins sont donc le premier, le quatrième, le septième et le dixième point. Écrit en/ShadingType6.tensor_patch_mesh— les mêmespatches, avec seizepointspar carreau : les douze du contour, puis les quatre de l'intérieur, d'abord le plus proche du premier coin, puis ceux des quatrième, septième et dixième points. Écrit en/ShadingType7. Tout autre nombre de points est refusé, et là où deux carreaux se chevauchent, le second recouvre le premier.
-
Les deux qui courent de bout en bout partagent :
startetend, couleurs facultatives, nommées ensemble ;spaceetfunction, facultatifs, nommés ensemble ;extend, deux booléens facultatifs,[false, false]par défaut.spaceest l'un degray,rgbetcmyk, ou une encre de presse nommée et donnée en entier parseparation, ou plusieurs de ces encres à la fois pardevice_n, tout autre espace déclaré étant refusé. Un maillage ne prend nistart, niend, niextend: ses couleurs sont ses sommets. Une couleur lue dans une fonction donne ses propresspaceetfunction, tous deux obligatoires là, et nistart, niend, niextend. -
Chacune des sept sortes prend
anti_aliasen plus de ses propres champs : un booléen facultatif qui demande au lecteur de filtrer les transitions de couleur du dégradé contre le crénelage — le faux motif qui apparaît là où la couleur varie vite par rapport à la cadence à laquelle le périphérique de sortie l'échantillonne — ou de ne pas le faire. Absent, aucune entrée/AntiAliasn'est écrite, et le lecteur la prend alors pourfalse, la valeur par défaut que la norme ISO 32000-2 lui donne. -
Un maillage dit ses couleurs de deux façons, jamais des deux à la fois :
colorà chaque sommet et pas despace, ou bienspaceettintsà chaque sommet. Sonspacelit ce que lit celui d'un dégradé, ettintsdonne un nombre par composante — une teinte par encre quand l'espace est fait d'encres nommées, ce qui porte un maillage sur les plaques d'une presse. Unspaceà côté d'uncolorde sommet, destintssansspace, un sommet qui ne dit ni l'un ni l'autre : chacun est refusé. -
Exactement une des deux façons de dire la couleur :
startetendensemble, ouspaceetfunctionensemble. Les deux ensemble sont refusées, aucune des deux aussi. -
startetendse disent tous les deux en lumière ou tous les deux en encre : trois nombres chacun, ou quatre chacun qui écrivent le dégradé sur les quatre plaques d'imprimerie. Un gris est de la lumière. Un bout en lumière et l'autre en encre est refusé, le message nommant les nombres des deux bouts. -
functionprend quatre formes.exponential, aveclowethighobligatoires,domaindeux nombres facultatif (0 à 1),exponentfacultatif (1) etrangefacultatif.stitching, avecfunctions,boundsetencodeobligatoires,domainetrangefacultatifs. -
sampledécrit les réponses en table sur une grille, ce qui est la façon de dire une courbe qu'aucune formule ne décrit — un spectre, une caractérisation de presse, une réponse mesurée :domain,range,sizeetsamplesobligatoires,bits,decode,encodeetbetweenfacultatifs,betweendisant comment la réponse court d'un échantillon au suivant,linearpar défaut, oucubic, que le format n'admet que pour une fonction d'un seul nombre.calculationénonce la réponse sous forme de petit programme, pour une couleur calculée plutôt que consultée :program, les étapes exécutées sur une pile, avecdomainetrange, tous trois obligatoires. - Un maillage dit tous ses sommets en lumière ou tous en encre, comme les deux bouts des autres sortes : trois nombres chacun, ou quatre chacun pour écrire le maillage sur les quatre plaques d'imprimerie. Un sommet en lumière et un autre en encre est refusé.
-
Un remplissage nomme un dégradé par la forme
{"shading": "the name"}.
Une requête entière qui crée un PDF
{
"shadings": [
{
"name": "sunrise",
"shading": {
"axial": {
"from": [60, 700],
"to": [300, 700],
"start": [0.95, 0.75, 0.2],
"end": [0.2, 0.35, 0.75]
}
}
},
{
"name": "spectrum",
"shading": {
"axial": {
"from": [320, 700],
"to": [535, 700],
"space": "rgb",
"function": {
"sampled": {
"domain": [[0, 1]],
"range": [[0, 1], [0, 1], [0, 1]],
"size": [4],
"bits": 16,
"between": "cubic",
"samples": [
0.85, 0.12, 0.1,
0.92, 0.66, 0.11,
0.16, 0.6, 0.31,
0.11, 0.26, 0.72
]
}
}
}
}
}
],
"items": [
{
"type": "rect",
"rect": { "llx": 60, "lly": 700, "urx": 300, "ury": 780 },
"fill": { "shading": "sunrise" }
},
{
"type": "rect",
"rect": { "llx": 320, "lly": 700, "urx": 535, "ury": 780 },
"fill": { "shading": "spectrum" }
}
]
}
La couleur et la façon dont elle est rendue
L'appareil pour lequel les couleurs sont dites De quelle plaque d'une feuille séparée une page est L'appareil pour lequel les couleurs d'une page sont dites Déclarer une couleur au-delà du rouge-vert-bleu Ce que veulent dire les nombres bruts d'une page L'opacité, le mélange, et ce que demande une presse Une case répétée pour remplir une forme L'espace dans lequel la page mélange ses couleurs
Où aller ensuite
Toutes les clés JSON d'une requête, en une page Les quarante et un autres réglages d'une requête