1I translate a part of the HACKER.DOC in french
2first in text
3second in html
4bye
5--
6charles /  \
7vidal  / ..|\
8      (_\  |_)cvidal@ivsweb.com
9      /  \@'
10     /     \  http://www.chez.com/vidalc
11 _  /  `   |
12\\/  \  | _\
13 \   /_ || \\
14  \____)|_) \_)
15-----------------------------------------
16LA DOC DU BIDOUILLEUR
17
18INTRODUCTION
19________________________________________________________________________________
20
21Ce document est pour tous ceux qui veulent modifier xlock (more), ajouter de
22nouveaux modes, debugger , etc....
23
24xlock kesako ?
25
26xlock est une application pour X-windows qui emp�che l'acc�s d'un ou plusieurs
27�crans. Il peut �tre envoy� manuellement ou plus commun�ment envoy�
28automatiquement par un d�mon apr�s une p�riodes d'inactivit�.
29Xlock cr�� une fen�tre couvrant enti�rement l'�cran, et capte tous �v�nements
30pr�venant ainsi l'acc�s ext�rieur.
31Quand une touche est press�e alors xlock affiche un message mais aussi le mode
32dans une icone
33(MODE_ICONIQUE) et demande votre mot de passe.
34Lorsque l'�cran est lock� ( ferm� ), des images, des dessins, ou des animations
35sont affich�es servant de screen-saver �vitant la d�gradation du phosphore.
36Xlock fut d�velopp� chez Sun Micro System par Pack J Naughton.David Bagley l'a
37repris et maintenu sous le nom de Xlockmore dans lequel d'innombrable mode ont
38�t� ajout�, ainsi que la possibilit� d'afficher un mode dans une fen�tre et
39aussi sur la root window.
40
41________________________________________________________________________________
42ORGANISATION GENERALE
43
44xlock est organiser en deux partie.
45
461. le traitement de la ligne de commande, la cr�ation de fen�tre, le mot de
47passe, etc ...
48
492 les modes: ils peuvent �tre coder de tel mani�re qu'il n'y a pas besoin de
50faire appel � X pour la taille de la fen�tre, les couleurs ...
51Une API est comprise dans xlock pour avoir tout les renseignements en ce qui
52concerne l'�cran.
53C'est dans cette partie que vous allez pouvoir ajouter d'autres modes.
54
55L'architecture logiciel d'un mode est structur� en 4 sortes de fonctions:
56
57-init:
58celle-ci devra �tre appelle pour pr�parer le d�roulement d'un mode. Le mode
59devra initialiser des tables de sinus
60par exemple, allouer des ressources, m�moire entre autre, �tablir l'�tat initial
61par des variables etc. ...
62Cette fonction peut �tre appel� plusieurs fois et la fen�tre ou l'�cran peuvent avoir des taille diff�rentes.
63
64-callback:
65C'est la principale fonction, c'est la que est implement� le corps du mode.
66 Elle est appel� p�riodiquement.
67 Cette fonction ne doit pas occuper beaucoup de temps a s'ex�cuter.
68Cette fonction peut etre appele dans deux contextes diff�rents:
69 plein �cran ou en version icon. La fonction MI_IS_ICONIC vous dira dans
70quelle contexte on se trouve.
71
72-release:
73Ici, cette fonction sera appel� si un autre mode est appel� ( random , et bouton
74droit ), ou si xlock se termine.
75Dans cette fonction, il faut d�sallouer la m�moire, X ressource, Pixmaps et
76graphics context.
77
78-refresh:
79 Celle ci est appel� lorsque le dessin peut �tre abim�. Le mode doit repeindre
80l'ensemble de la fen�tre.
81
82-change: ???? <A FINIR>
83
84
85
86________________________________________________________________________________
87CONVERSION:
88Le prototype de ces fonctions est d�fini dans mode.h et ressemble �:
89	void typefonction _mode( ModeInfo *mode_info)
90La structure mode_info est en lecture seule, et contient l'ensemble des
91informations sur l'�cran.
92Ne regardez pas les variables globales, n'�crasez pas ce pointeur.
93Au lieu de faire des requetes pour conna�tre le num�ro de la couleur blanche
94etc... , il y a des fonctions propres a xlock: utilisez les.
95
96
97
98
99________________________________________________________________________________
100L'AJOUT D'UN NOUVEAU MODE:
101
102Ajoutons un nouveau mode appel� fadeplot:
103Pour ce faire il faut d'abords ajouter dans mode.h
104� extern ModeHook init_fadeplot;
105extern ModeHook draw_fadeplot;
106extern ModeHook release_fadeplot;
107extern ModeHook refresh_fadeplot; �
108les fonctions qui vont �tre cr��s.
109
110� extern ModeSpecOpt fadeplot_opts; �
111une structure qui ne m'a pas r�v�l� tous ces secrets.
112
113mais aussi dans mode.c � cot� des autres fonctions , dans ce que j'appelle la
114 tableau des modes:
115 {"fadeplot", init_fadeplot, draw_fadeplot, release_fadeplot,
116 refresh_fadeplot, init_fadeplot, NULL, &blank_opts, 17000, 1, 20, 1.0,
117  "fadeplot", 0, NULL},
118
119On passe ensuite � l'impl�mentation des fonctions proprement dit dans un fichier
120que l'on appellera fadeplot.c.
121Il est �vident qu'il faudra modifier le Makefile ( Pour cela je vous laisse
122faire :).
123
124Dans ces fonctions, � partir de la structure ModeInfo, on va obtenir des
125informations sur l'�cran qui sont indispensables pour la suite
126
127MI_WIDTH(mi) et MI_HEIGHT(mi) 	vont nous donn� la taille de l'�cran.
128Display    *display    = MI_DISPLAY(mi);	d�livre le display
129Window      window = MI_WINDOW(mi);	  d�livre l'identificateur de la fen�tre
130GC          gc               = MI_GC(mi);    donne le graphics context courant
131XSetForeground(display, gc, MI_BLACK_PIXEL(mi));
132				Mettre la couleur du trac� en noir
133XSetForeground(display, gc, MI_WHITE_PIXEL(mi));
134				 Mettre la couleur du trac� en blanc
135
136MI_IS_ICONIC(mi)		permet de savoir si on est pass� en phase
137								password.
138NUMCOLORS			Donne le nombre de couleur
139
140
141Oubliez pas apr�s avoir dessin� l'ensemble de faire Xflush(display),
142ce qui permettra d'afficher r�ellement votre graphisme sur l'�cran.
143La cr�ation d'un nouveau mode s'�ffectue souvent en r�cup�rant le squelette
144d'un autre et de le modifier � sa volont�.
145N'h�sitez pas a � regarder le code des autres modes, c'est souvent tr�s
146instructifs.
147Dernierement on peut utiliser la librairie mesa (la libraire GNU OpenGL de
148silicon Graphics) dans xlock.
149Voila j'espere que vous prendrez plaisir a ajouter des nouveaux modes � xlock,
150 un petit conseil le mainteneur de xlock est un fan de casse t�te et compagnie.
151Bon Xlock.
152
153Charles VIDAL: cvidal@ivsweb.com
154mode flag, fadeplot, circle
155createur de xmxlock : GUI launcher de xlockmore.
156
157------------------------------------------------------
158
159<HTML>
160<HEAD>
161<TITLE>Xlock french hacker</TITLE>
162</HEAD>
163<BODY>
164<Center><H1>XLOCK FRENCH HACKER</H1></Center>
165<BR>
166<H2>INTRODUCTION</H2>
167<HR>
168Ce document est pour tous ceux qui veulent modifier xlock (more), ajouter de nouveaux modes, debugger , etc....
169
170<H2>xlock kesako ?</H2>
171
172xlock est une application pour X-windows qui emp�che l�acc�s d�un ou plusieurs �crans. Il peut �tre envoy� manuellement ou plus commun�ment envoy� automatiquement par un d�mon apr�s une p�riodes d�inactivit�.
173 Xlock cr�� une fen�tre couvrant enti�rement l��cran, et capte tous �v�nements pr�venant ainsi l�acc�s ext�rieur.
174Quand une touche est press�e alors xlock affiche un message mais aussi le mode dans une icone (MODE_ICONIQUE) et demande votre mot de passe.<p>
175Lorsque l��cran est lock� ( ferm� ), des images, des dessins, ou des animations sont affich�es servant de screen-saver �vitant la d�gradation du phosphore.
176Xlock fut d�velopp� chez Sun Micro System par Pack J Naughton.David Bagley l�a repris et maintenu sous le nom de Xlockmore dans lequel d�innombrable mode ont �t� ajout�, ainsi que la possibilit� d�afficher un mode dans une fen�tre et aussi sur la root window ou d�afficher sequentiellement plusieur mode par l�option random et par l�appuis du bouton du millieu.<p>
177Il existe des terminaux X avec plusieur ecrans gere par un seul terminal, alors le m�me mode s�affichera sur plusieur ecran. On peut toutefois faire des effets, comme une balle passant de lui a l�autre.
178
179<HR>
180<H2>ORGANISATION GENERALE</H2>
181
182xlock est organiser en deux partie.<p>
183
184<OL>
185<LI> le traitement de la ligne de commande, la cr�ation de fen�tre(s), le mot de passe, etc ...
186<LI> les modes: ils peuvent �tre coder de tel mani�re qu�il n�y a pas besoin de faire appel � X pour la taille de la fen�tre, les couleurs ... Une API est comprise dans xlock pour avoir tout les renseignements en ce qui concerne l��cran.C�est dans cette
187</OL>
188<HR>
189<B>L�architecture logiciel d�un mode est structur� en 4 sortes de fonctions:</B>
190<UL>
191<LI><U><B>-init:</B></U>
192celle-ci devra �tre appelle pour pr�parer le d�roulement d�un mode. Le mode devra initialiser des tables de sinus par exemple, allouer des ressources, m�moire entre autre, �tablir l��tat initial par des variables etc. ...
193Cette fonction peut �tre appel� plusieurs fois et la fen�tre ou l��cran peuvent avoir des taille diff�rentes.<p>
194
195<LI><U><B>-callback:</B></U>
196C�est la principale fonction, c�est la que est implement� le corps du mode. Elle est appel� p�riodiquement. Cette fonction ne doit pas occuper beaucoup de temps a s�ex�cuter surtout si elle a plusieur ecran s�occuper.
197Cette fonction peut etre appele dans deux contextes diff�rents:
198 plein �cran ou en version icon. La fonction MI_IS_ICONIC vous dira dans quelle contexte on se trouve.
199la fonction init_mode est toujours appelle avant la fonction callback.
200On peut choisir de faire quelque chose a chaque appelle, ou de compter le nombre d�appelle, et puis de modifier l�ecran periodiquement.<p>
201
202<LI><U><B>-release: </B></U>
203Ici, cette fonction sera appel� si un autre mode est appel� ( random , et bouton droit ), ou si xlock se termine. Dans cette fonction, il faut d�sallouer la m�moire, X ressource, Pixmaps et graphics context.
204<p>
205<LI><U><B>-refresh:</B></U>
206 Celle ci est appel� lorsque le dessin peut �tre abim�. Le mode doit repeindre l�ensemble de la fen�tre.
207Aucun information sur la partie de l�ecran endomage n�est delivre.
208<p>
209<LI><U><B>-change:</B></U> Dans la version courante, seule le mode random utilise cette fonctionnalite. Cet fonction est appele lorsque que l�on change de mode par l�appuie du boutton du millieu. Il est laisse a l�imagination de chacun en ce qui conserne
210</UL>
211
212
213<HR>
214<H2>CONVENTION:</H2>
215Le prototype de ces fonctions est d�fini dans mode.h et ressemble �:<p>
216<Center>	void typefonction _mode( ModeInfo *mode_info)</Center>
217La structure mode_info est en lecture seule, et contient l�ensemble des informations sur l��cran. Ne regardez pas les variables globales, n��crasez pas ce pointeur. Au lieu de faire des requetes pour conna�tre le num�ro de la couleur blanche etc... , il y a des fonctions propres a xlock: utilisez les. Si vous utilisez les informations passe en parametre des fonctions du modes ( voir ci dessus ), votre code sera toujours correcte.
218Le temps entre chaque appelle  de fonctions est en milliseconde.
219
220<HR>
221<H2>L�AJOUT D�UN NOUVEAU MODE:</H2>
222
223Ajoutons un nouveau mode appel� <A HREF="file:fadeplot.txt">fadeplot</A>:<p>
224Pour ce faire il faut d�abords ajouter dans mode.h<p>
225� extern ModeHook init_fadeplot;<p>
226extern ModeHook draw_fadeplot;<p>
227extern ModeHook release_fadeplot;<p>
228extern ModeHook refresh_fadeplot; �<p>
229les fonctions qui vont �tre cr��s.
230<p>
231� extern ModeSpecOpt fadeplot_opts; �<p>
232une structure qui ne m�a pas r�v�l� tous ces secrets.<p>
233
234mais aussi dans mode.c � cot� des autres fonctions , dans ce que j�appelle le tableau des modes:<p>
235 {"fadeplot", init_fadeplot, draw_fadeplot, release_fadeplot,
236 refresh_fadeplot, init_fadeplot, NULL, &blank_opts, 17000, 1, 20, 1.0,
237  "fadeplot", 0, NULL},<p>
238
239On passe ensuite � l�impl�mentation des fonctions proprement dit dans un fichier que l�on appellera fadeplot.c.<p>
240Il est �vident qu�il faudra modifier le Makefile ( Pour cela je vous laisse faire :).<p>
241Dans ces fonctions, � partir de la structure ModeInfo ( mode.h ) , on va obtenir des informations sur l��cran qui sont indispensables pour la suite.<p>
242
243<TABLE Border=1>
244<CAPTION><B>fonction</B></CAPTION>
245<TR><TD>MI_WIDTH(mi) et MI_HEIGHT(mi)</TD> 	<TD>vont nous donn� la taille de l��cran</TD></TR>.
246<TR><TD>Display    *display    = MI_DISPLAY(mi);</TD>	<TD>d�livre le display</TD></TR>
247<TR>	<TD>	         MI_SCREEN	</TD>	<TD>d�livre le screen</TD></TR>
248<TR><TD>Window      window = MI_WINDOW(mi)</TD>;	<TD>d�livre l�identificateur de la fen�tre</TD></TR>
249<TR><TD>GC          gc               = MI_GC(mi);</TD>	<TD>donne le graphics context courant</TD></TR>
250<TR>	        <TD>MI_DELAY</TD>		<TD>    donne le delai (microsec.) entre callbacks</TD></TR>
251<TR>        <TD>MI_CMAP</TD>		<TD>donne la table des couleurs</TD></TR>
252<TR><TD>XSetForeground(display, gc, MI_BLACK_PIXEL(mi));</TD> 	<TD>Mettre la couleur du trac� en noir</TD></TR>
253<TR><TD>XSetForeground(display, gc, MI_WHITE_PIXEL(mi));</TD> <TD>Mettre la couleur du trac� en blanc</TD></TR>
254<TR><TD>MI_IS_ICONIC(mi)	</TD>	<TD>permet de savoir si on est pass� en phase password. </TD></TR>
255</TABLE>
256
257<TABLE Border=1>
258<CAPTION><B>variable</B></CAPTION>
259<TR><TD>MI_IS_MONO	</TD>		<TD>l�ecran est monochrome</TD></TR>
260<TR><TD>MI_IS_INWINDOW</TD>		<TD>le mode s�affiche dans un fenetre reguliere</TD></TR>
261<TR><TD>MI_IS_INROOT	</TD>		<TD>le mode s�affiche sur la root windows</TD></TR>
262<TR><TD>NUMCOLORS</TD>			<TD>Donne le nombre de couleur</TD></TR>
263</TABLE>
264
265
266Oubliez pas apr�s avoir dessin� l�ensemble de faire Xflush(display), ce qui permettra d�afficher r�ellement votre graphisme sur l��cran.
267La cr�ation d�un nouveau mode s��ffectue souvent en r�cup�rant le squelette d�un autre et de le modifier � sa volont�.
268N�h�sitez pas a � regarder le code des autres modes, c�est souvent tr�s instructifs.
269<HR>
270<H2>Perspective:</H2>
271Dernierement on peut utiliser la librairie mesa (la libraire OpenGL de silicon GNU) dans xlock, quelqu�un s�est propose de faire le screen-saver tube de Win NT.
272Je pense qu�il serait interressant de joindre a xlock un langage simple ( genre logo un peu plus evolue).
273<HR>
274<H2>Reference: </H2>
275HACKERS.GUIDE qui se trouve dans le repertoire docs ( j�ai essaye de le traduire :)<p>
276	    X_Window programmation avec les Xt-Intrinsics Douglas A YOUNG MASSON PARIS.<p>
277<HR>
278Voila j�espere que vous prendrez plaisir a ajouter des nouveaux modes � xlock; c�est une maniere de programmer facilement des graphismes sous X11. Un petit conseil le mainteneur de xlock est un fan de casse t�te et compagnie.
279Bon Xlock.
280<p>
281Charles VIDAL: cvidal@ivsweb.com<p>
282mode flag, fadeplot, bubble<p>
283createur de xmxlock : GUI launcher de xlockmore.<p>
284
285</BODY>
286</HTML>
287