Engrange la balle (du grain), un jour elle te sera utile.
-Proverbe Turc-.
Introduction
C'est le premier d'une s�rie d'article sur PostScript.
Le but de cet article n'est pas appr�hender tous les points de d�tails du langage mais assez d'�l�ments
pour que vous puisez vous faire une id�e sur PostScript et de vous amuser a programmer des documents.
Cependant nous n'allons pas essayer de vous soumettre un article technique, ou un roman, ni une bible sur le sujet, mais nous allons tenter de vous pr�senter
les informations n�cessaires pour bien d�buter en PostScript.
Le langage PostScript a �t� cr�� il y a 22 ans par John Gaffney de the Evans & Sutherland Computer Corporation.
Il �tait d�velopp� par "Design System" au d�but puis Adobe Syst�mes Incorporated continua le d�veloppement comme un
langage outil ind�pendant pour le formatage de page.
Maintenant il reste le format le plus utilis� bien que la plus part des utilisateurs ne le sachent pas.
Ses capacit�s sont de haut niveau cependant beaucoup d'utilisateurs paresseux qui ne veulent
pas entrer dans les d�tails de ce langage pr�f�rez utiliser les autres outils destin�s aux utilisateurs de base
qui sont principalement bas�s sur la technique du "What You See Is What You Get".
Cependant, beaucoup d'outils WYSIWYG utilisent PostScript comme format de fichier ou comme format d'impression.
Ce langage survit toujours
tel une aide puissante pour effectuer beaucoup de travaux
associ� au dessin, de coloriage , de traitement d'image.
D'autre part, si vous d�sirez apprendre ce langage
sa structure n'est pas aussi difficile qu'on le dit.
Les commandes PostScript sont ex�cut�es gr�ce a des interpreteurs.
Les deux les plus connus font parti des logiciels libres du domaine public et sont disponible sur internet.
Il s'agit de "ghostscript" et "ghostview" de l'entreprise Aladdin.
Ils sont disponibles sur l'ensemble des plateformes Linux et la plupart des distributions linux les installent par d�faut.
nous traitons Ici du programme ghostscript bien qu'on puisse ex�cuter les exemples par d'autres interpr�teur Postscript.
Supposez que nous utilisons une plate-forme Linux et que vous vouliez utiliser ghostscript.
Le point de d�part peut �tre diff�rent en s'accordant au mod�le d'utilisation.
Si nous voulons voir les r�sultats sur l'�cran alors
nous pouvons avoir deux possibilit�s: XWindows ou l'affichage direct par la carte graphique.
Bien que l'affichage graphique directe par la carte graphique soit disponible sous le linux,
il y a certaines limitations � cause de la vari�t� des cartes graphiques.
D'autre part si le linux a un serveur X configur�,
ghostscript fonctionnera ind�pendamment du type de la carte.
Par cons�quent nous supposons que nous lan�ons
le serveur X et qu'une fen�tre xterm est ouverte. Alors nous pouvons utiliser ghostscript en tant qu'interpr�te
pour chaque commande ou groupe de commandes qui seront entr�es apr�s le prompt .
Initializing... done. Ghostscript 2.6.2 (4/19/95) Copyright (C)
1990-1995 Aladdin Enterprises, Menlo Park, CA. All rights reserved. Ghostscript
comes with NO WARRANTY: see the file COPYING for details.
GS>
Une fen�tre vide doit appara�tre en m�me temps qu'appara�t le prompt de gohstview.
Ce dernier va afficher le r�sultat de chacune des commandes donn�es apr�s le prompt GS>,
puis il affichera de nouveau un prompt dans l'attente d'une nouvelle commande.
Si vous voulez sortir de votre session ghostscript, vous devez entrer la commande
quit apres le prompt GS> .
Nous pouvons aussi utiliser ghostscript comme un compilateur. Dans ce cas nous ouvrons un fichier, par exemple,
exemple.ps .
Toutes les commandes qui doivent �tre ex�cut�es par ghostscript ont �t� �crites dans ce fichier,
comme dans le cas d'un programme.
Par cons�quent ce fichier est un programme de PostScript. L'ensemble de ce programme ou ses commandes individuelles, seront
ex�cut�es gr�ce � ghostscript si nous tapons les commandes suivante au propmt du shell de la fen�tre xterm de Linux
gs sample.ps
alors il y aura l'affichage du r�sultat du programme sample.ps.
En fait, PostScript peut �tre utilis� pour d'autres buts comme
l'arithm�tiques ou calculs math�matiques etc...
( Nous en parlerons dans d'autres articles sur le PostSript plus tard)
Si le programme produit plusieurs pages alors a l'affichage
il y aura la premi�re page et un
showpage appara�tra; le programme ghostscript est en attente de la touche
enter pour la prochaine page.
Comment utiliser PostScript pour dessiner?
Nous pouvons commencer par dessiner gr�ce a PostScript en consid�rant le g�om�trie de la page.
Les coordonn�es des points sur la pages ont comme unit� le pixel ( picture element ) qui repr�sente
nn soixante douzi�me de pouce dans le langage PostScript.
Le point en bas et � gauche de la page a pour coordon�es (0,0) et la taille de la page est
horizontalement 612 , et verticalement 792.
Ces tailles sont valides pour le type :"letter type".
Il y a plusieurs possibilit�s de d�finition de tailles de pages comme
note pour 540 et 720 ou
legal pour 612 et 1008 ou
a4 pour 595 et 842 .
La d�finition de la taille de la page peut �tre trouv�e dans le fichier
d'initialisation gs_statd.ps.
Vous pouvez d�finir une taille non standard en modifiant d'une mani�re appropri�
ce fichier, nous y reviendrons dans cette s�rie d'articles plus tard.
Nous admettrons que nous utilisons le type letter dans cette pr�sentation.
La deuxi�me �tape apr�s ces consid�rations sur la taille de la page, est de placer le pinceau
� la position initiale du trac�. Ceci peut �tre r�alis� par la commande
x y moveto
Ou x et y sont respectivement l'abscisse ( horizontale ) et l'ordonn� ( verticale ) ou va �tre
plac� le pinceau et ou x et y sont consid�r�s comme des nombres entiers correspondant � des pixels.
vous pouvez voir que la structure du langage PostScript est un peu
diff�rente des autres langages de programmation.
Ici les param�tres de la fonction ou de la commande sont donn�s avant la commande elle-m�me.
moveto est la commande qui d�place le curseur � l'emplacement donn� par deux
nombres qui sont les param�tres.
L'interpr�tation du PostScript se d�roule gr�ce a une machine � registre (la pile).
On empile les param�tres puis la commandes d�pile le nombre de param�tres dont elle a besoin.
Pour la commande moveto, � l'ex�cution elle va d�piler deux
�l�ments sur la pile qui sont ses param�tres.
Bien que le proc�d� soit presque le m�me pour les autres langages de programmation, la syntaxe pour
l'utilisateur peut para�tre diff�rente.
R�sumons nous, les param�tres d'une fonction sont rang�s sur la pile, et sont aussi important que l'appel de cette derni�re.
De m�me, l'ordre des param�tres est tr�s importants.
Maintenant nous sommes pr�t � tracer une ligne. Commen�ons avec une figure simple: juste un segment.
La commande pour r�aliser ceci est
xx yy lineto
O� xx et yy sont les coordonn�es du point correspondant a la fin du segment.
Son point de d�part est la position courante du pinceau x et y .
Maintenant �crivons un programme permettant de dessiner un rectangle.
Cela peut �tre fait avec les informations donn�es ci-dessus.
Le programme ci dessous, suppos� �tre dans sample1.ps, a l'allure suivante :
100 100 moveto
300 100 lineto
300 250 lineto
100 250 lineto
100 100 lineto
Bien que nous ayons donn� chaque commande dans les lignes s�par�es, ce n'est pas vraiment n�cessaire.
Nous pourrions les donner sur la m�me ligne en ins�rant un espace vide entre les commandes cons�cutives.
L'�criture d'un programme d�pend de l'utilisateur.
Cependant, si vous voulez �crire des programmes clairs,
la s�paration des lignes par un retour � la ligne permet de gagner en clart�.
De m�me, Les commentaires sont �galement tr�s importants pour �claircir la structure du programme.
la langage PostScript accepte les commentaires comme les autres langages de programmation.
Tout ce qui suit un signe de pourcentage dans une ligne est interpr�t� en tant
que commentaire.
Par cons�quent, en utilisant le caract�re % vous pouvez mettre beaucoup de messages d'avertissement ou explications
dans le programme.
Par exemple le programme ci-dessus peut �tre r��crit comme suit
% Cursor initialization %
100 100 moveto
% Drawing the rectangle %
300 100 lineto
300 250 lineto
100 250 lineto
100 100 lineto
Cependant nous vous pr�sentons des commentaires sur une ligne, nous pourrions
les mettre sur la m�me lignes qu'une commande, apr�s celle ci.
Si nous tapons maintenant gs sample1.ps au prompt d'un xterm,
la fen�tre de ghostscript appara�t mais sans l'affichage d�sir� du rectangle.
La raison de ceci se trouve dans le fait que les commandes ci-dessus sont ex�cut�es virtuellement.
En d'autres termes, PostScript regarde leur structure s�mantique et se plaint s' il y a
quelque chose d'incorrect mais il n'imprime rien sur la page.
Les commandes donn�es ci-dessus peuvent �tre consid�r�es comme l'�tape de conception du dessin.
La figure con�ue doit �tre imprim�e sur la page en donnant une commande PostScript s�par�e � cette fin.
Cette commande est stroke. Si nous l'ajoutons � la fin du dernier programme, alors
l'ex�cution de gs sample1.ps fera appara�tre dans une fen�tre une rectangle de largeur
200 et de hauteur 150 unit�s.
Les lignes ne sont pas obligatoirement horizontales ou verticales.
Elles peuvent �tre plac�es dans n'importe quelles directions.
A titre d'exemple voici le programme du fichier sample2.ps
% Cursor initialization %
200 200 moveto
% Drawing the rectangle %
400 300 lineto
300 300 lineto
200 200 lineto
stroke
Comme vous pourrez le voir, l'affichage r�sultant de l'interpr�tation ghostscript
sera un triangle.
Vous pouvez cr�er n'importe quelle sorte de figures compos�e de lignes ( polygones ) en utilisant les commandes
moveto et lineto.
Il y a deux autres commandes qui peuvent �tre utilis�es pour construire ainsi des figures. Ce sont
rmoveto et rlineto.
Elles s'utilisent comme ci-dessous.
x y rmoveto
x y rlineto
Ou x et y sont les distances horizontales et verticales
entre les points initiaux et finaux.
En d'autres mots la premier commande bouge le curseur par rapport � l'ancienne
position de x et de y.
La seconde commande agit de m�me, mais dessine en plus une ligne.
Ces commandes prennent le position du curseur comme point d'origine de syst�me de coordonn�es.
Tous les exemples utilisent une �paisseur de trait par d�faut �gale � 1 pour le dessin. Or l'utilisateur
peut modifier cette valeur n'importe o� dans le programme
par la commande: x setlinewidth
O� x est l'�paisseur du trait, et cette �paisseur sera la m�me jusqu'� la prochaine commande setlinewidth.
Il n'y a pas de limitation � propos de l'�paisseur du trait, par d�faut cette �paisseur est �gale � 1.
Bien sur, dessiner avec PostScript ne se limite pas � des lignes.
Des arcs de cercle peuvent aussi �tre dessin�s. Nous utiliserons alors les commandes suivantes.
x y r a b arc
ou x, y, r, a et b signifient les coordonn�es horizontales et verticales du centre de l'arc, r:
le rayon de l'arc, a est l'angle trigonom�trique correspondant � l'angle de l'arc � tracer.
Le sens est le sens des aiguilles d'une montre. Si le point de d�part de l'arc ne correspont pas � la position
actuelle du curseur, alors une ligne droite est ajout�e entre la position courante du curseur et le point de
d�part de l'arc.
Pour mieux comprendre cette situation, essayez le programme sample3.ps suivant.
3 setlinewidth
200 200 moveto
100 200 100 0 75 arc
stroke
300 300 moveto
400 500 200 20 50 arc
stroke
Nous devons par cons�quent faire attention et placer le curseur � la position de d�part de l'arc.
Toutefois, il y a une autre fa�on de s'affranchr de cet effet. Le point courant peut avoir des valeurs
vides. Il n'y a alors pas de position design�e pour le curseur. En d'autre termes, il n'a pas de valeurs de param�tre pour le
d�but du trac�. Une fois le trac� commenc�, le point de destination devient le point courant. Avec la commande
newpath PostScript efface les coordon�es du curseur et consid�re que le dessin commence � cet endroit du programme.
Par cons�quent, le programme ci-dessus peut �tre modifi� en rempla�ant la cinqui�me ligne avec une ligne qui ne contient
que la commande newpath. Avec ceci, le resultat du programme ci-dessus sera le m�me sans le segment de ligne
suppl�mentaire.
La commande arc peut aussi dessiner un cercle.
Pour cela il suffit de donner comme angle de d�part 0 et comme angle de fin 360.
Avec newpath on obtient un cercle complet. La commande arc
peut aussi �tre utilis�e pour tracer des ellipses. On les obtient en jouant sur les
propri�t�s d'echelles de PostScript. L'utilisateur peut changer ind�pendamment les unit�s des
�chelles horizontales et verticales avec la commande suivante:
x y scale
O� x et y sont respectivement le facteur horizontal
et vertical d'agrandissement.
Ceci veut dire que s'ils valent 1 cela n'aurait pas d'effet sur le dessin.
L'effet d'agrandissement persiste jusqu'� une autre commande scale.
La commande suivante de redimensionnement n'annule pas les effets de la pr�c�dente
mais les combine avec elle. Supposons que la commande d'�chelles pr�c�dente avait les coefficients
x1, y1 et que la nouvelle a des facteurs x2, y2 , les effets combin�s
de ces deux commandes seront les facteurs x1*x2, y1*y2. Ce fait doit �tre
gard� pr�sent � l'esprit afin d'�viter des effets ind�sirables lors de l'affichage tels
que des lignes qui sortent du papier. PostScript assume par d�faut la non existence de
facteurs d'�chelle. Le programme PostScript suivant, sauv� dans le fichier sample4.ps
illustre ces redimensionnements.
3 setlinewidth
200 200 100 0 360 arc
stroke
newpath
2 1 scale
200 300 50 0 360 arc
stroke
newpath
1 4 scale
100 150 40 0 360 arc
stroke
On peut noter que l'agrandissement affecte chacune des tailles y compris aussi la
largeur de ligne.
Les largeurs des lignes des ellipses et du cercle cr��s par le
programme ci-dessus sont la cons�quence de ce ph�nom�ne.
le langage PostScript a deux autres commandes pour dessiner des arcs.
Un d'elles, arcn, est principalement la m�me que arc � l'exception de la direction du
dessin.
arc de arcn dessine dans le sens des aiguilles d'une montre.
La commande du dessin du troisi�me arc dessine un arc circulaire qui
est tangent � deux lignes donn�es aux points extr�mes.
Elle peut �tre �cite comme suit.
x1 y1 x2 y2 r arcto xt1 yt1 xt2 yt2
o� xt1, yt1, xt2, yt2 repr�sentent les coordonn�es verticales et horizontales de l'arc
tandis que les lignes tangentes ont les valeurs x0, y0, x1, y1 et x1, y1, x2, y2
respectivement et r repr�sente le rayon de l'arc Si le trac� n'est pas neuf ou que le point
courant ne coincide pas avec le d�but de l'arc, alors une ligne joindra le points courant avec avec
le d�but de l'arc. A la fin du trac�, le point courant devient xt2,yt2. Bien que l'arc soit
circulaire malgr� l'utilisation de facteurs d'�chelles non uniformes (facteurs horizontaux et
verticaux diff�rents), il peut �tre convertit en arc d'ellipse.
Le langage PostScript poss�de aussi une commandes permettant de tracer des courbes de B�ziers qui sont efficaces pour
tracer des courbes d'interpolation ou d'extrapolation de points.
La commande PostScript est curveto et peut �tre utilis�e pour cr�er un courbe d'interpolation
ou d'extrapolation de points, son utilisation est la suivante:
x1 y1 x2 y2 x3 y3 curveto
o� la courbe commence au point courant dont les coordonn�es sont consid�r�es �tre
x0, y0. Elle est tangente � la ligne entre les points x0,y0 et x1, y1
au point de d�part. La courbe se termine au point x3, y3 et est tangente � la ligne
entre les points x2, y2 et x3, y3. Par d�faut cesw quatre points sont consid�r�s
comme diff�rents et ils d�terminent la forme de la figure.
the curve starts at the current point whose coordinates are assumed
to be x0, y0 . It is tangent to the line between the points x0,
y0 and x1, y1 at the beginning point. The curve ends at the
point x3, y3 and is tangent to the line between x2, y2 and
x3, y3 . By default all these four points are assumed to be different
and they determine the shape of the figure.
La possibilit� caligraphique de PostScript
PostScript a plusieurs fontes standards qui sont utilis�e pour la PAO. Il a aussi des possibilit�s de
cr�ation de fontes auxquelles on peut acc�der en d�finnissant des biblioth�ques. Le programme PostScript
suivant (sample5.ps) en illustre l'utilisation.
/Times-Roman findfont
15 scalefont
setfont
100 500 moveto
(I love PostScript!) show
/Times-Italic findfont
20 scalefont
setfont
100 450 moveto
(I love PostScript!) show
/Times-Bold findfont
25 scalefont
setfont
100 400 moveto
(I love PostScript!) show
/Helvetica findfont
30 scalefont
setfont
100 350 moveto
(I love PostScript!) show
/Courier findfont
35 scalefont
setfont
100 300 moveto
(I love PostScript!) show
/Helvetica-Bold findfont
40 scalefont
setfont
100 250 moveto
(I love PostScript!) show
showpage
Comme vous pouvez le voir dans ce programme la commande findfont permet de charger la fonte d�sir�e.
Le nom de la fonte avec / est donn� � la commande comme param�tre.
le nombre avant la commande scalefont est le facteur d'agrandissement, param�tre de cette commande.
Ensuite, la commande setfont charge la fonte qui est alors pr�te
pour sa future utilisation dans le programme.
Apr�s le positionnement du curseur gr�ce � la commande
movetoavec des param�tres appropri�s, le texte � afficher
est entre parenth�ses; ce dernier est le param�tre de la commande show.
La commande showpage finalise le travail en r�alisant l'affichage, ou impression.
Le programme ci-dessus montre l'utilisation de diverses fontes de types et tailles diff�rentes.
Le nombre de fontes disponible pour PostScript
peut �tre trouv� en recherchant les emplacements des fontes dans les r�pertoires linux par la commande locate.
Le texte peut suivre une ligne, une courbe ou tout autre trac�.
Ainsi tous les d�lires artistiques sont permis et m�me favoris�s.
La mise en couleur gr�ce � PostScript
Le langage PostScript a plusieurs commandes pour
peindre des figures ou cr�ez les images color�es.
Commen�ons par mentionner les commandes de coloriage.
Par d�faut, PostScript utilise le noir comme couleur de remplissage.
Par cons�quent la sortie des tous les programmes pr�c�dents �tait en noir et blanc
Pour utiliser la couleur avec PostScript, on a le choix entre
trois types de commandes diff�rentes.
Le premier est bas� sur le format rgb. Dans ce format on d�crit chaque couleur par sa composante
rouge, vert et bleu.
Les composantes de couleur peuvent prendre les valeurs 0 � 256.
Les intensit�s peuvent �tre des valeurs fractionnaires d�cimales jusqu' �
la pr�cision de trois chiffres comme par exemple 111,223.
La commande setrgbcolor doit �tre appel� comme suit.
x y z setrgbcolor
O� x, y, z sont les param�tres d'intensit� pour le rouge,
vert et bleus et setrgbcolor est la commande.
Dans cette convention 1 0 0 est la couleur rouge du setrgbcolor tandis que
0 1 0 setrgbcolor est le vert.
Le noir correspond au cas o� toutes les valeurs sont �gales � 1.
L'affectation d'une couleur au trac� par cette commande
perdurera jusqu' � la prochaine commande de changement de couleur.
Quand ceci se produit l'effet de la premi�re configuration dispara�t compl�tement
et la nouvelle configuration est utilis�e . Vous pouvez changer autant de fois la couleur
que vous voulez.
En utilisant finement les couleurs, vous pouvez
cr�ez vos images juste comme vous voulez.
Le deuxi�me type est bas� sur un format � quatre composantes.
Celui s'appelle le format cmyk.
Les quatre couleurs de base sont, alors, cyan, magenta, jaune et noir.
Chaques composantes contribuent � la couleur finale avec une intensit� allant
de 0 � 1. La commande correspondante au changement de couleur gr�ce au format cmyk est setcmykcolor.
w x y z setcmykcolor
O�w, x, y, z sont les param�tres d'intensit� pour la couleur :
composantes cyan, magenta, jaunes et noirs respectivement.
Les valeurs flottantes peuvent �galement �tre utilis�es pour des param�tres
d'intensit�.
Cette commande s'applique �galement jusqu'� l'�mission de la prochaine commande.
Quand ceci est fait les nouvelles couleurs changent le r�glage pr�c�dent.
Il n'y a pas de limitation de changement de couleur.
La Troisi�me commande peut �tre utilis� comme ceci :
x y z sethsbcolor
O�x, y, z correspondent aux intensit�s de trois
composantes de la couleur. Le Premier correspond � hue
qui d�termine l'emplacement de la couleur dans le spectre de la
lumi�re. Le second, saturation et le troisi�me, brightness
corresponds � la saturation et l'�clat de la couleur. Ce format est souvent
pr�f�r� quand l'emplacement de la couleur dans le spectre par l'interm�diaire
d'une boucle ou de l'�clat et/ou de la saturation deviennent les propri�t�s �
contr�ler.
Deux commandes importantes du langage PostScript pour le dessin sont fill et
closepath. L'exemple suivant (sample6.ps ) va vous
�clairer sur ces commandes de remplissage et de coloriage avec PostScript.
1 1 0 0 setcmykcolor
100 100 moveto
300 100 lineto
300 250 lineto
100 250 lineto
100 100 lineto
stroke
1 0.5 0.8 0 setcmykcolor
5 setlinewidth
200 200 moveto
400 300 lineto
300 300 lineto
closepath fill
stroke
1 0 0 setrgbcolor
3 setlinewidth
200 200 moveto
100 200 100 0 75 arc
stroke
%300 300 moveto
newpath
400 500 200 20 50 arc
stroke
0 0 1 0.2 setcmykcolor
3 setlinewidth
200 200 100 0 360 arc
stroke
1 0 0 setrgbcolor
newpath
2 1 scale
200 300 50 0 360 arc
fill
stroke
0 1 0 setrgbcolor
newpath
1 4 scale
100 150 40 0 360 arc
fill
stroke
O� la commande closepath ferme un chemin en joignant deux extr�mit�s par une ligne droite
tandis que fill sert � remplir l'int�rieur d'un chemin ferm� avec la couleur courante.
PostScript peut aussi cr�er les tonalit�s du gris.
Ceci peut �tre fait gr�ce a la commande
x setgray
o� x est l'intensit� du niveau de gris et sa valeur va de
de 0, qui correspond au noir, � 1 qui correspond au blanc.
Le programme suivant ( sample7.ps ) en fait la d�monstration.
0.2 setgray
10 setlinewidth
100 700 moveto
200 0 rlineto
stroke
newpath
0.3 setgray
10 setlinewidth
100 600 moveto
200 0 rlineto
stroke
newpath
0.4 setgray
10 setlinewidth
100 500 moveto
200 0 rlineto
stroke
newpath
0.5 setgray
10 setlinewidth
100 400 moveto
200 0 rlineto
stroke
newpath
0.6 setgray
10 setlinewidth
100 300 moveto
200 0 rlineto
stroke
newpath
0.7 setgray
10 setlinewidth
100 200 moveto
200 0 rlineto
stroke
newpath
0.8 setgray
10 setlinewidth
100 100 moveto
200 0 rlineto
stroke
Apr�s la lecture de cet article, vous pouvez �crire
des programmes compliqu�s et complets pour les utilisateurs qui
trouvent PostScript enthousiasmant.
Dans les prochains articles, nous traiterons plus � fond les
d�tails du langage PostScript.
Toutes les questions et recommandations sont les bienvenues.
|