Added upstream from http://ftp.icm.edu.pl/pub/loglan/
[loglan.git] / HTML / xiiuwgr.htm
1 <html>\r
2 <head>\r
3 <TITLE>Xiiuwgraf</TITLE>\r
4 </head>\r
5 \r
6 \r
7 <BODY>\r
8 <H1> XIIUWGRAF</H1>\r
9 \r
10 <H5><I>Une classe Loglan predefinie  <BR>\r
11 pour la gestion de graphismes en multifen&ecirc;trage <BR>\r
12 sous XWindows.</I></H5>\r
13                 \r
14 <P>\r
15 \r
16 \r
17 <H3>            Auteurs et realisateurs:        </H3>\r
18 <H2>                            Eric BECOURT &amp;\r
19                         Jer&ocirc;me LARRIEU </H2>\r
20 \r
21 \r
22 \r
23 \r
24 \r
25 \r
26 \r
27 \r
28 \r
29 \r
30 \r
31 \r
32 \r
33 \r
34 \r
35 \r
36 \r
37 \r
38 \r
39 \r
40 \r
41 \r
42 \r
43 \r
44 \r
45 \r
46 LITA Pau        1993    <P>\r
47 <HR>\r
48 Table de mati&egrave;res</B> ou \r
49 <A NAME="tresc">tresc</A>  <BR>\r
50 \r
51 <UL>\r
52 <LI>1: <A HREF = "#diff">Diff&eacute;rences essentielles avec \r
53 la librairie graphique IIUWGRAPH</A><P>\r
54 \r
55 \r
56 <LI>2: <A HREF = "#Ouvrir">Ouvrir et fermer une fen&ecirc;tre avec XIIUWGRAF</A><P>\r
57               <UL>\r
58                 <LI>2.1  :  <A HREF = "#HPAGE">Proc&eacute;dure HPAGE</A><P>\r
59                 <LI>2.2   : <A HREF = "#GRON">Proc&eacute;dure GRON</A><P>\r
60                 <LI>2.3    : <A HREF = "#GROFF">Proc&eacute;dure GROFF</A><P>\r
61                </UL>\r
62 \r
63 <LI>3 :    <A HREF = "#Description">Description des diverses commandes </A> d&eacute;di&eacute;es aux graphismes \r
64 utilisables par l'interpr&ecirc;teur LOGLAN<P>\r
65           <UL>\r
66                 <LI>3.1    : <A HREF = "#COLOR">Proc&eacute;dure COLOR</A><P>\r
67                 <LI>3.2   : <A HREF = "#BORDER">Proc&eacute;dure BORDER</A><P>\r
68                 <LI>3.3     : <A HREF = "#MOVE">Proc&eacute;dure MOVE</A><P>\r
69                 <LI>3.4    : <A HREF = "#CLS"> Fonction  CLS</A><P>\r
70                 <LI>3.5     : <A HREF = "#POINT">Proc&eacute;dure POINT</A><P>\r
71                 <LI>3.6  :    <A HREF = "#DRAW">Proc&eacute;dure DRAW</A><P>\r
72                 <LI>3.7  :   <A HREF = "#CIRB"> Proc&eacute;dure CIRB</A><P>\r
73                 <LI>3.8  :   <A HREF = "#HFILL">Proc&eacute;dure HFILL</A><P>\r
74                 <LI>3.9  :   <A HREF = "#VFILL">Proc&eacute;dure VFILL</A><P>\r
75                 <LI>3.10 :   <A HREF = "#INXPOS">Fonction  INXPOS</A><P>\r
76                 <LI>3.11 :   <A HREF = "#INYPOS"> Fonction  INYPOS</A><P>\r
77                 <LI>3.12 : <A HREF = "#saisie">: Commandes de saisie et de restition d'une partie d'une fen&ecirc;tre</A><P>\r
78                         <UL>\r
79                         <LI>3.12.1 :  <A HREF = "#GETMAP"> Fonction  GETMAP</A><P>\r
80                         <LI>3.12.2 :  <A HREF = "#PUTMAP"> Proc&eacute;dure PUTMAP</A><P>\r
81                         <LI>3.12.3 :  <A HREF = "#ORMAP">Proc&eacute;dure ORMAP</A><P>\r
82                         <LI>3.12.4 :  <A HREF = "#XORMAP">Proc&eacute;dure XORMAP</A><P>\r
83                         </UL>\r
84 <P>             <LI>3.13 :  <A HREF = "#INPIX">Proc&eacute;dure INPIX</A><P>\r
85                 <LI>3.14 :  <A HREF = "#STYLE"> Proc&eacute;dure STYLE</A><P>\r
86                 <LI>3.15 :  <A HREF = "#caractères">Commandes de saisie et d'affichage de caract&egravec;res</A><P>\r
87                         <UL>\r
88                         <LI>3.15.1 : <A HREF = "#INKEY">Fonction  INKEY</A><P>\r
89                         <LI>3.15.2 : <A HREF = "#HASCII"> Proc&eacute;dure HASCII</A><P>\r
90                         <LI>3.15.3 : <A HREF = "#OUTSTRING"> Proc&eacute;dure OUTSTRING</A><P>\r
91                         </UL>\r
92 <P>             <LI>3.16 :  <A HREF = "#PUSHXY">Proc&eacute;dure PUSHXY</A><P>\r
93                 <LI>3.17 :  <A HREF = "#POPXY">Proc&eacute;dure POPXY</A><P>\r
94 </UL>\r
95 \r
96 <LI>4 : Description des commandes de gestion de la souris<P>\r
97      <UL>\r
98                 <LI>4.1 :  <A HREF = "#STATUS"> Proc&eacute;dure STATUS</A><P>\r
99                 <LI>4.2 :  <A HREF = "#GETPRESS">Proc&eacute;dure GETPRESS</A><P>\r
100                 <LI>4.3 :  <A HREF = "#GETRELEASE"> Proc&eacute;dure GETRELEASE</A><P>\r
101                 <LI>4.4 :  <A HREF = "#GETMOVEMENT"> Proc&eacute;dure GETMOVEMENT</A><P>\r
102      </UL>\r
103 </UL>\r
104 <HR><HR>\r
105 <H2>\r
106 1: <A NAME="diff">  \r
107 Diff</A>&eacute;rences essentielles entre XIIUWGRAF et IIUWGRAPH</H2>\r
108 \r
109 \r
110         Ce paragraphe a pour objet de donner certaines particularit&eacute;s de XIIUWGRAF, ceci afin de comprendre son fonctionnement g&eacute;n&eacute;ral.<P>\r
111 \r
112         Tout d'abord il est important de signaler qu'à la diff&eacute;rence de IIUWGRAPH, XIIUWGRAF est un programme à part enti&egravec;re (plus exactement un processus cr&eacute;e par l'interpr&ecirc;teur LOGLAN).C'est pour cela qu'il est d&eacute;conseill&eacute; (sauf cas de force majeure) de faire CONTROL-C pour terminer un programme : en effet, ceci a pour effet de terminer l'ex&eacute;cution de l'interpr&ecirc;teur sans terminer XIIUWGRAF (cr&eacute;ation d'un processus zombie). Pour terminer une session graphique, il faudra donc automatiquement taper dans le programme en LOGLAN la commande GROFF car elle va terminer l'ex&eacute;cution de XIIUWGRAF.<P>\r
113 \r
114         Certaines commandes de IIUWGRAPH n'ont pas &eacute;t&eacute; impl&eacute;ment&eacute;es (par exemple HIDECURSOR, SHOWCURSOR, PALLET, ...), soit parce qu'elles seraient d'un int&eacute;r&ecirc;t tr&egravec;s faible dans la gestion de XWindows, soit parce qu'elles seraient difficilement r&eacute;alisables, soit parce que les programmeurs ont &eacute;t&eacute; atteints de fain&eacute;antise chronique.<P>\r
115 \r
116         Enfin, dans vos programmes il faudra imp&eacute;rativement que vos unit&eacute;s g&eacute;rant le graphisme h&eacute;ritent de la classe IIUWGRAPH sous peine d'erreurs à la compilation .<P>\r
117 \r
118 ATTENTION: appelez Xint au lieu de int<P>\r
119 \r
120 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
121 <H2>2: <A NAME="Ouvrir">Ouvrir</A>   et fermer une fen&ecirc;tre avec XIIUWGRAF</H2>\r
122 \r
123 \r
124         XIIUWGRAF permet à l'utilisateur d'ouvrir jusqu'à seize fen&ecirc;tres à l'&eacute;cran. Ces fen&ecirc;tres sont s&eacute;lectionnables dans le programme en LOGLAN par la commande GRON d&eacute;crite plus loin.<P>\r
125 \r
126 <H3>2.1: La proc&eacute;dure <A NAME="HPAGE">HPAGE</A>  . </H3>\r
127 \r
128         <PRE>unit HPAGE: procedure(numerofenetre,x,y: INTEGER);</PRE><P>\r
129 \r
130         Cette proc&eacute;dure a pour rôle de donner la position à laquelle sera affich&eacute;e la fen&ecirc;tre dans l'&eacute;cran, de donner la taille de cette fen&ecirc;tre et de l'effacer quand le besoin s'en fait sentir. Cette proc&eacute;dure devra &ecirc;tre appel&eacute;e <B>deux fois</B> pour ouvrir <B>une</B> fen&ecirc;tre.<P>\r
131 \r
132         HPAGE reçoit trois param&ecirc;tres : le premier est le num&eacute;ro de la fen&ecirc;tre (un entier compris entre 0 et 15), les deux suivants sont soit les coordonn&eacute;es de la fen&ecirc;tre à l'&eacute;cran, soit la taille de cette fen&ecirc;tre. Un troisi&egravec;me appel de HPAGE avec l'un des deux derniers param&ecirc;tres nuls aura pour effet de l'effacer.<P>\r
133 \r
134         Exemple :\r
135 <Pre>\r
136               CALL HPAGE(0, posx, posy);<P>\r
137               CALL HPAGE(0, longueur, hauteur);<P>\r
138 </Pre>\r
139         Le coin en haut à gauche de la fen&ecirc;tre 0 sera aux coordonn&eacute;es (posx,posy) et la fen&ecirc;tre aura une taille de longueur X hauteur.<P>\r
140 \r
141                 CALL HPAGE(0, 0, valeur)<P>\r
142         ou      CALL HPAGE(0, valeur, 0)<P>\r
143         ou      CALL HPAGE(0, 0, 0)<P>\r
144 \r
145               La fen&ecirc;tre 0 est effac&eacute;e.<P>\r
146 \r
147 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
148 \r
149 \r
150 \r
151 <H3>2.2: La proc&eacute;dure <A NAME="GRON">GRON</A>  . </H3>\r
152 \r
153         <PRE>unit GRON: procedure(numerofenetre: INTEGER);</PRE><P>\r
154 \r
155         La proc&eacute;dure GRON affiche la fen&ecirc;tre de num&eacute;ro numerofenetre à l'&eacute;cran. Ensuite pour s&eacute;lectionner la fen&ecirc;tre dans laquelle on veut travailler, on refait un deuxi&egravec;me appel de cette commande.<P>\r
156 Exemple :\r
157 <Pre>\r
158                              CALL HPAGE(0,0,0);<P>\r
159                         CALL HPAGE(1,150,0);<P>\r
160                         CALL HPAGE(0,100,100);<P>\r
161                         CALL HPAGE(1,200,150);<P>\r
162                         CALL GRON(0);   (* Affichage de la fen&ecirc;tre 0 *)<P>\r
163                         CALL GRON(1);   (* Affichage de la fen&ecirc;tre 1 *)<P>\r
164                         ...<P>\r
165                         CALL GRON(0);   (* S&eacute;lection de la fen&ecirc;tre 1 *)<P>\r
166                         ...<P>\r
167 </Pre>    \r
168 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
169 \r
170 <H3>            <B>2.3 : La proc&eacute;dure <A NAME="GROFF">GROFF</A>  . </B><P></H3>\r
171 \r
172         <PRE>unit GROFF: procedure;</PRE><P>\r
173 \r
174         L'appel à cette commande a pour cons&eacute;quence l'effaçage de toutes les fen&ecirc;tres et la fin d'ex&eacute;cution du processus XIIUWGRAF.<P>\r
175 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
176 \r
177 \r
178 <H2>3: <A NAME="Description">Description</A>  .  des diff&eacute;rentes \r
179 commandes graphiques</H2>\r
180 \r
181 \r
182 <H3>3.1: Proc&eacute;dure <A NAME="COLOR">COLOR</A>  . </H3>\r
183 \r
184         <PRE>unit COLOR: procedure(couleur: INTEGER);</PRE><P>\r
185 \r
186         Permet de d&eacute;terminer la couleur d'avant plan (0 pour noir et une valeur sup&eacute;rieure ou &eacute;gale à 1 pour blanc). Cette commande a une action locale à la fen&ecirc;tre s&eacute;lectionn&eacute;e par GRON.<P>\r
187 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
188 \r
189 <H3>3.2: Proc&eacute;dure <A NAME="BORDER">BORDER</A>  . </H3>\r
190 \r
191         <PRE>unit BORDER: procedure(couleur: INTEGER);</PRE><P>\r
192 \r
193         Commande qui s&eacute;lectionne la couleur de fond.<P>\r
194 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
195 \r
196 <H3>3.3: Proc&eacute;dure <A NAME="MOVE">MOVE</A>  . </H3>\r
197 \r
198         <PRE>unit MOVE: procedure(posx, posy: INTEGER);</PRE><P>\r
199 \r
200         posx et posy deviennent les coordonn&eacute;es courantes dans la fen&ecirc;tre. Comme COLOR, MOVE n'agit que sur la fen&ecirc;tre s&eacute;lectionn&eacute;e.<P>\r
201 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
202 \r
203 <H3>3.4: Proc&eacute;dure <A NAME="CLS">CLS</A>  . </H3>\r
204 \r
205         <PRE>unit CLS: procedure;</PRE><P>\r
206 \r
207         Efface la fen&ecirc;tre en blanc par d&eacute;faut ou de la couleur sp&eacute;cifi&eacute;e par la commande BORDER.<P>\r
208 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
209 \r
210 <H3>: Proc&eacute;dure <A NAME="POINT">POINT</A>  . </H3>\r
211 \r
212         <PRE><B>unit</B> POINT: <B>procedure</B>(x,y: INTEGER);</PRE><P>\r
213         Affiche un point aux coordonn&eacute;es (x,y) de la couleur sp&eacute;cifi&eacute;e par la commande COLOR ou noir par d&eacute;faut. La position courante dans la fen&ecirc;tre devient (x,y).<P>\r
214 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
215 \r
216 <H3>: Proc&eacute;dure <A NAME="DRAW">DRAW</A>  . </H3>\r
217 \r
218         <PRE><B>unit</B> DRAW: <B>procedure</B>(x,y: INTEGER);</PRE><P>\r
219 \r
220         Affiche une ligne qui part de la position courante dans la fen&ecirc;tre vers la position (x,y). La position courante dans la fen&ecirc;tre devient (x,y). Elle est affich&eacute;e avec la couleur courante (s&eacute;lectionn&eacute;e avec COLOR) et avec le style de trac&eacute; courant (s&eacute;lectionn&eacute;e par la commande STYLE d&eacute;crite plus loin);<P>\r
221 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
222 \r
223 <H3>: Proc&eacute;dure <A NAME="CIRB">CIRB</A>  . </H3>\r
224 \r
225         <PRE><B>unit</B> CIRB: <B>procedure</B>(posx,posy,rayon:INTEGER,alpha,beta:REAL,cbord,style,p,q:INTEGER);</PRE><P>\r
226 \r
227         Si style a pour valeur 0, CIRB affiche un arc de centre (posx,posy), de rayon rayon. alpha et beta sont les angles de d&eacute;part et d'arriv&eacute;e de l'arc en question. Si alpha=beta alors un cercle (ou une ellipse) est dessin&eacute;. Si p=q alors on obtient un cercle, si p&gt q une ellipse allong&eacute;e dans le sens vertical est obtenue, sinon si p&gt q on a pour r&eacute;sultat une ellipse allong&eacute;e dans le sens horizontal. Cet affichage est fait avec la couleur d'avant plan courante et le style de trac&eacute; courant.<P>\r
228 \r
229         Si style vaut 1, CIRB affiche un arc rempli ressemblant à une portion de camenbert avec la couleur d'avant plan courante.<P>\r
230 \r
231         Si style vaut 2, l'int&eacute;rieur de l'arc d&eacute;limit&eacute; par sa courbure et la corde joignant ses deux extr&ecirc;mit&eacute;s est rempli avec la couleur d'avant plan courante.<P>\r
232 \r
233         Si l'on choisi pour style une valeur &lt 0 ou &gt 3, la valeur 0 est prise.<P>\r
234 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
235 \r
236 <H3>: Proc&eacute;dure <A NAME="HFILL">HFILL</A>  . </H3>\r
237 \r
238         <PRE><B>unit</B> HFILL: <B>procedure</B>(y: INTEGER);</PRE><P>\r
239 \r
240         Trace une ligne horizontale de la position courante (posx,posy) vers les coordonn&eacute;es (posx,y) avec la couleur d'avant plan courante et le style de trac&eacute; courant. La position courante dans la fen&ecirc;tre devient (posx,y).<P>\r
241 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
242 \r
243 <H3>: Proc&eacute;dure <A NAME="VFILL">VFILL</A>  . </H3>\r
244 \r
245         <PRE><B>unit</B> VFILL: <B>procedure</B>(y: INTEGER);</PRE><P>\r
246 \r
247         Trace une ligne verticale de la position courante (posx,posy) vers les coordonn&eacute;es (x,posy) avec la couleur d'avant plan courante et le style de trac&eacute; courant. La position courante dans la fen&ecirc;tre devient (x,posy).<P>\r
248 \r
249 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
250 \r
251 <H3>:  Fonction <A NAME="INXPOS">INXPOS</A>  . </H3>\r
252 \r
253         <PRE><B>unit</B> INXPOS: <B>function</B>: INTEGER;</PRE><P>\r
254 \r
255         Retourne la position courante sur l'axe des abscisses de la fen&ecirc;tre courante.<P>\r
256 \r
257 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
258                 <P>\r
259 <H3>:  Fonction <A NAME="INYPOS">INYPOS</A>  . </H3>\r
260 \r
261         <PRE><B>unit</B> INYPOS: <B>function</B>: INTEGER;</PRE><P>\r
262 \r
263         Retourne la position courante sur l'axe des ordonn&eacute;es de la fen&ecirc;tre courante.<P>\r
264 \r
265 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
266                 <P>\r
267 <H3>: Commandes de <A NAME="saisie">saisie</A>  .  et de restitution d'une partie d'une fen&ecirc;tre.</H3>\r
268 \r
269 <H4>: Fonction <A NAME="GETMAP">GETMAP</A>  . </H4>\r
270         \r
271 <P>     <PRE><B>unit</B> GETMAP: <B>function</B>(x,y: INTEGER): <B>arrayof</B>  INTEGER;</PRE><P>\r
272 \r
273         Sauve dans le tableau tab une partie rectanguraire de la fen&ecirc;tre courante, le coin en haut à gauche &eacute;tant la position courante dans la fen&ecirc;tre et le coin en bas à droite &eacute;tant la position (x,y).<P>\r
274         Le tableau devrait avoir une taille minimum de: 4 + (nbrelignes * (3 + nbrecol div 8)) octets<P>\r
275         En sachant qu'en LOGLAN un entier tient sur 4 octets(en UNIX seulement), il ne vous reste plus qu' à faire votre cuisine.<P>\r
276 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
277 \r
278 <H4>: Proc&eacute;dure <A NAME="PUTMAP">PUTMAP</A>  . </H4>\r
279 \r
280         <PRE><B>unit</B> PUTMAP: <B>procedure</B>(tab: <B>arrayof</B> INTEGER);</PRE><P>\r
281 \r
282         Affiche la portion d'image sauv&eacute;e dans tab à la position courante dans la fen&ecirc;tre. Ce qu'il y avait à cette m&ecirc;me position avant l'affichage est totalement effaç&eacute;.<P>\r
283 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
284 \r
285 <H4>: Proc&eacute;dure <A NAME="ORMAP">ORMAP</A>  .</H4>\r
286 \r
287         unit ORMAP: procedure(tab: arrayof INTEGER);<P>\r
288 \r
289         Lors de l'affichage, une op&eacute;ration OR est faite avec la portion d'image sauv&eacute;e dans tab et celle à la position courante dans la fen&egravec;tre: l'image est donc affich&eacute;e en "transparence".<P>\r
290 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
291 \r
292 <H4>: Proc&eacute;dure <A NAME="XORMAP">XORMAP</A>  .</H4>\r
293 \r
294         <PRE><B>unit</B> XORMAP: <B>procedure</B>(tab: <B>arrayof</B> INTEGER);</PRE><P>\r
295 \r
296         M&ecirc;me chose qu' avec ORMAP à la diff&eacute;rence qu'une op&eacute;ration XOR est faite avec l'image sauv&eacute;e dans tab et celle à la position courante dans la fen&ecirc;tre.<P>\r
297 \r
298 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
299 \r
300 <H3>: Proc&eacute;dure <A NAME="STYLE">STYLE</A>  .</H3>\r
301 \r
302         <PRE><B>unit</B> STYLE: <B>procedure</B>(styl: INTEGER);</PRE><P>\r
303 \r
304         D&eacute;finit le style de trac&eacute; dans la fen&ecirc;tre courante.<P>\r
305 \r
306         Si style vaut 0, le trac&eacute; sera fait avec la couleur de fond.<P>\r
307         Si style vaut 1, le trac&eacute; sera fait avec la couleur d'avant plan.<P>\r
308         Si style vaut 2,3,4 ou 5, le trac&eacute; sera fait avec les motif suivant :<P>\r
309 \r
310         <PRE>2 : ******...******...******<P>\r
311         3 : ****......****......****<P>\r
312         4 : **...**...**...**<P>\r
313         5 : **.........**.........**    </PRE>          où      * : couleur d'avant plan<P>\r
314                                                          . : couleur de fond<P>\r
315 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
316 \r
317 <H3>: Fonction <A NAME="INPIX">INPIX</A>  .</H3>\r
318 \r
319         <PRE><B>unit</B> INPIX: <B>function</B>(x,y: INTEGER);</PRE><P>\r
320 \r
321         Cette fonction met la postion courante dans la fen&ecirc;tre à (x,y) et renvoie la couleur du point de la fen&ecirc;tre à cette position(0 pour noir et 1 pour blanc).<P>\r
322 \r
323                 <P>\r
324 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
325 \r
326 <H3>: Commandes de saisie et d'affichage de <A NAME="caract&egravec;res">caract&egravec;res</A>  .</H3>\r
327 \r
328 <H4>: Fonction <A NAME="INKEY">INKEY</A>  .</H4>\r
329 \r
330         <PRE><B>unit</B> INKEY: <B>function</B>: INTEGER;</PRE><P>\r
331 \r
332         Retourne le code ascii de la touche tap&eacute;e au clavier ou la valeur 0 sinon. L'appui sur les touches sp&eacute;ciales (comme SHIFT, les touche F1, F2, ..., CONTROL, ...) renvoient des valeurs n&eacute;gatives. Vous verrez bien par vous-m&ecirc;me quelles sont ces valeurs en faisant un petit programme test.<P>\r
333 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
334 \r
335 <H4>: Proc&eacute;dure <A NAME="HASCII">HASCII</A>  .</H4>\r
336 \r
337         <PRE><B>unit</B> HASCII: <B>procedure</B>(code_char: INTEGER);</PRE><P>\r
338 \r
339         Affiche le caract&egravec;re de code ascii code_char avec le coin en haut à gauche du caract&egravec;re à la position courante (posx,posy) dans la fen&ecirc;tre. La position courante devient (posx+largeur,posy).<P>\r
340         Si code_char=0, une partie rectangulaire de largeur*hauteur est affich&eacute;e avec la couleur de fond de la fen&ecirc;tre courante et position courante dans la fen&ecirc;tre reste inchang&eacute;e.<P>\r
341         En g&eacute;n&eacute;ral la fonte par d&eacute;faut qui est utilis&eacute;e sous XWindows a une hauteur de dix points et une largeur de six points.<P>\r
342 \r
343 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
344 \r
345 <H3>: Proc&eacute;dure <A NAME="OUTSTRING">OUTSTRING</A>  .</H3>\r
346 \r
347         <PRE><B>unit</B> OUTSTRING: <B>procedure</B>(tab: <B>arrayof</B>  CHAR);</PRE><P>\r
348 \r
349         Affiche la chaine de caract&egravec;re tab à la position courante (posx,posy) de la fen&ecirc;tre. La position courante devient (posx+largeur*longueur_chaine,posy) où largeur est la largeur de la fonte utilis&eacute;e.<P>\r
350 \r
351                 <P>\r
352 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
353 \r
354 <H3>: Proc&eacute;dure <A NAME="PUSHXY">PUSHXY</A>  .</H3>\r
355 \r
356         <PRE><B>unit</B> PUSHXY: <B>procedure</B>;</PRE><P>\r
357 \r
358         Sauvegarde le contexte graphique dans une pile, c'est à dire la position courante dans la fen&ecirc;tre,les couleurs de fond et d'avant plan et le style de trac&eacute; s&eacute;lectionn&eacute; pour cette fen&ecirc;tre.<P>\r
359 \r
360         Chaque Fen&ecirc;tre est dot&eacute;e de sa pile de sauvegarde qui lui est propre et chaque pile a une profondeur maximale de 16.<P>\r
361 \r
362 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
363 \r
364 <H3>: Proc&eacute;dure <A NAME="POPXY">POPXY</A>  .</H3>\r
365 \r
366         <PRE><B>unit</B> POPXY: <B>procedure</B>;</PRE><P>\r
367 \r
368         Restore dans la fen&ecirc;tre courante le contexte graphique situ&eacute; en haut de la pile de sauvegarde et ce contexte est enlev&eacute; de la pile.<P>\r
369 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
370 \r
371 <H2>: Description des commandes de gestion de la <A NAME="souris">souris</A>  .</H2>\r
372 \r
373 \r
374 \r
375 <H3>: Proc&eacute;dure <A NAME="STATUS">STATUS</A>  .</H3>\r
376         \r
377 <P>     <PRE><B>unit</B> STATUS: <B>procedure</B>(h, v: INTEGER, l, r, c: BOOLEAN);</PRE><P>\r
378 \r
379         Cette proc&eacute;dure renvoie la position courante (h,v) du pointeur de la souris ainsi que l'&eacute;tat des boutons de la souris. l,r,c sont respectivement les boutons gauche, droit et du centre de la souris.<P>\r
380 \r
381         Ces valeurs bool&eacute;ennes ont la valeur TRUE si le bouton correspondant est appuy&eacute;.<P>\r
382 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
383 \r
384 <H3>: Proc&eacute;dure <A NAME="GETPRESS">GETPRESS</A>  .</H3>\r
385 \r
386         <PRE><B>unit</B> GETPRESS: <B>procedure</B>(b: INTEGER; OUTPUT h,v,p : INTEGER, l,r,c : BOOLEAN);</PRE><P>\r
387 \r
388         Cette proc&eacute;dure renvoie le nombre p de fois où le bouton s&eacute;lectionn&eacute; a &eacute;t&eacute; appuy&eacute; depuis le dernier appel à cette commande, ainsi que la position (h,v) du curseur la derni&egravec;re fois que le bouton consid&eacute;r&eacute; a &eacute;t&eacute; appuy&eacute;.<P>\r
389 \r
390         Le param&ecirc;tre b permet de s&eacute;lectionner le bouton à tester :<P>\r
391                 - 0 : bouton gauche<P>\r
392                 - 1 : bouton droit<P>\r
393                 - 2 : bouton du milieu<P>\r
394 \r
395         En sus, la proc&eacute;dure renvoie l'&eacute;tat courant des trois boutons l,r,c.<P>\r
396 \r
397 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
398 \r
399 <H3>: Proc&eacute;dure <A NAME="GETRELEASE">GETRELEASE</A>  .</H3>\r
400 \r
401            <PRE><B>unit</B> GETRELEASE: <B>procedure</B>(b: INTEGER; <B>OUTPUT</B> h,v,p : INTEGER, l,r,c : BOOLEAN);</PRE><P>\r
402 \r
403         Cette proc&eacute;dure a la m&ecirc;me fonction que GETPRESS à la diff&eacute;rence qu'elle teste le nombre de relâchementss du bouton s&eacute;lectionn&eacute; et non l'appui.<P>\r
404 \r
405                 <P>\r
406 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
407 \r
408 <H3>: Proc&eacute;dure <A NAME="GETMOVEMENT">GETMOVEMENT</A>  .</H3>\r
409 \r
410         <PRE><B>unit</B> GETMOVEMENT: <B>procedure</B>(h,v: INTEGER);</PRE><P>\r
411 \r
412         Cette proc&eacute;dure renvoie le mouvement relatif (h,v) du curseur de la souris depuis son dernier appel.<P>\r
413 \r
414 \r
415 \r
416                         <P>\r
417 \r
418 <p align=right>   : <A HREF = "#tresc">vers Tableau de Matieres</A></p>\r
419 \r
420 \r
421 \r
422 <HR>\r
423 \r
424 \r
425 <Address>   : <A HREF = "http://www.univ-pau.fr/~salwicki/GMyAS">GMyAS</A> à Pau, le 25 Octobre 1993    <P></ Address> \r
426 </BODY>\r
427 </html>\r
428 \r
429 \r
430 \r