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