Un tracé libre : lignes, courbes et surfaces
Dessiner une forme point par point, avec des segments droits et des courbes, remplie d'une couleur ou d'un dégradé, et cernée d'un trait.
Demandé avec
"type": "path"
En mots de tous les jours
Écrit pour tout le monde. Il dit ce que cela pose sur une feuille de papier, et ne vous demande rien de plus.
C'est le crayon libre : vous dites où poser la pointe, puis les points par lesquels passer, et le trait suit. Les segments droits font des triangles, des flèches et des polygones ; les courbes font des arrondis, des vagues et des cercles parfaits. La forme obtenue se remplit d'une couleur ou d'un dégradé, se borde d'un trait, ou les deux à la fois. C'est de cela que sont faits un filet sous un titre, un bandeau derrière un intitulé et l'ornement d'un diplôme.
Pour un développeur
Écrit pour celui qui écrit le programme appelant : le modèle, les unités, et les réglages qui portent le poids.
Un tracé est une suite de segments appliqués dans l'ordre : move_to ouvre un contour en un point, line_to le prolonge d'une droite, curve_to y ajoute une Bézier cubique passant par deux points de contrôle, close referme le contour sur son origine. Chaque coordonnée est un nombre ou une expression, donc un tracé se cale sur la largeur de la page sans que l'appelant calcule quoi que ce soit. La peinture se dit en deux clés indépendantes, le remplissage et le trait ; le remplissage accepte une couleur ou le nom d'un dégradé déclaré. Un masque facultatif limite ce que l'article laisse voir, et il ne vaut que pour lui : les articles suivants restent entiers.
Chaque clé, avec son défaut
La référence : quelles clés sont obligatoires, lesquelles sont facultatives, ce que vaut chacune par défaut et quelles combinaisons le serveur décline.
Clé obligatoire : segments, tableau de pas valant {"move_to": {"x", "y"}}, {"line_to": {"x", "y"}}, {"curve_to": {"x1","y1","x2","y2","x","y"}} ou la chaîne "close" ; chaque coordonnée est un nombre ou une expression. Facultatives : fill, une couleur ou {"shading": "name"} ; stroke, objet à width obligatoire, plus color (défaut noir), dash (objet à lengths obligatoire et phase, défaut 0), cap (butt par défaut, round, projecting) et join (miter par défaut, round, bevel) ; clip, objet à segments obligatoire et rule (nonzero par défaut, even_odd) ; graphics_state, nom d'un état graphique déclaré ; pages, tableau d'entiers en base 1, défaut vide ; transform, six nombres ; rotate, degrés dans le sens trigonométrique autour du centre de la boîte ; layer, nom d'un calque déclaré. Refus croisés : transform et rotate ensemble ; un clip dont les segments sont vides. Une forme prend fill, stroke, ou les deux.
Une requête entière qui le dessine
Envoyez ceci tel quel et un PDF revient. Rien n'en a été retiré.
{
"items": [
{
"type": "path",
"segments": [
{"move_to": {"x": 72, "y": 700}},
{"line_to": {"x": 272, "y": 700}},
{"line_to": {"x": 172, "y": 780}},
"close"
],
"fill": [0.85, 0.89, 0.95],
"stroke": {"width": 1.0}
}
]
}
Formes
Un rectangle plein ou encadré Une ligne droite entre deux points
Où aller ensuite
Chaque clé d'une requête, en une page Les vingt autres choses que l'on peut dessiner
Glossaire
- dégradé
- Une couleur qui change tout au long de l'espace qu'elle remplit, sans la moindre marche entre un bout et l'autre : un bandeau qui s'efface, une barre qui prend du relief. Elle est décrite une fois, en quelques nombres, et peinte partout où on la veut, si bien qu'elle reste nette à n'importe quelle taille et ne pèse presque rien.
- calque
- Un groupe nommé de choses dessinées sur une page, que le lecteur peut afficher ou masquer, comme un calque posé sur un plan. Un plan peut garder ses cotes sur l'un et ses notes sur l'autre, et un calque peut être réglé pour s'afficher à l'écran et rester hors de l'impression.
- courbe de Bézier
- Une courbe tracée à partir de ses deux extrémités et de deux points qui la tirent hors de la ligne droite, comme les poignées d'un logiciel de dessin courbent un trait. Toute forme arrondie d'un PDF, et chaque lettre de chaque police, en est faite.