xenocara/app/xlockmore/docs/HACKERS.GUIDE.fr

287 lines
14 KiB
Plaintext
Raw Normal View History

2006-11-26 04:07:42 -07:00
I translate a part of the HACKER.DOC in french
first in text
second in html
bye
--
charles / \
vidal / ..|\
(_\ |_)cvidal@ivsweb.com
/ \@'
/ \ http://www.chez.com/vidalc
_ / ` |
\\/ \ | _\
\ /_ || \\
\____)|_) \_)
-----------------------------------------
LA DOC DU BIDOUILLEUR
INTRODUCTION
________________________________________________________________________________
Ce document est pour tous ceux qui veulent modifier xlock (more), ajouter de
nouveaux modes, debugger , etc....
xlock kesako ?
xlock est une application pour X-windows qui emp<6D>che l'acc<63>s d'un ou plusieurs
<EFBFBD>crans. Il peut <20>tre envoy<6F> manuellement ou plus commun<75>ment envoy<6F>
automatiquement par un d<>mon apr<70>s une p<>riodes d'inactivit<69>.
Xlock cr<63><72> une fen<65>tre couvrant enti<74>rement l'<27>cran, et capte tous <20>v<EFBFBD>nements
pr<EFBFBD>venant ainsi l'acc<63>s ext<78>rieur.
Quand une touche est press<73>e alors xlock affiche un message mais aussi le mode
dans une icone
(MODE_ICONIQUE) et demande votre mot de passe.
Lorsque l'<27>cran est lock<63> ( ferm<72> ), des images, des dessins, ou des animations
sont affich<63>es servant de screen-saver <20>vitant la d<>gradation du phosphore.
Xlock fut d<>velopp<70> 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
<EFBFBD>t<EFBFBD> ajout<75>, ainsi que la possibilit<69> d'afficher un mode dans une fen<65>tre et
aussi sur la root window.
________________________________________________________________________________
ORGANISATION GENERALE
xlock est organiser en deux partie.
1. le traitement de la ligne de commande, la cr<63>ation de fen<65>tre, le mot de
passe, etc ...
2 les modes: ils peuvent <20>tre coder de tel mani<6E>re qu'il n'y a pas besoin de
faire appel <20> X pour la taille de la fen<65>tre, les couleurs ...
Une API est comprise dans xlock pour avoir tout les renseignements en ce qui
concerne l'<27>cran.
C'est dans cette partie que vous allez pouvoir ajouter d'autres modes.
L'architecture logiciel d'un mode est structur<75> en 4 sortes de fonctions:
-init:
celle-ci devra <20>tre appelle pour pr<70>parer le d<>roulement d'un mode. Le mode
devra initialiser des tables de sinus
par exemple, allouer des ressources, m<>moire entre autre, <20>tablir l'<27>tat initial
par des variables etc. ...
Cette fonction peut <20>tre appel<65> plusieurs fois et la fen<65>tre ou l'<27>cran peuvent avoir des taille diff<66>rentes.
-callback:
C'est la principale fonction, c'est la que est implement<6E> le corps du mode.
Elle est appel<65> p<>riodiquement.
Cette fonction ne doit pas occuper beaucoup de temps a s'ex<65>cuter.
Cette fonction peut etre appele dans deux contextes diff<66>rents:
plein <20>cran ou en version icon. La fonction MI_IS_ICONIC vous dira dans
quelle contexte on se trouve.
-release:
Ici, cette fonction sera appel<65> si un autre mode est appel<65> ( 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.
-refresh:
Celle ci est appel<65> lorsque le dessin peut <20>tre abim<69>. Le mode doit repeindre
l'ensemble de la fen<65>tre.
-change: ???? <A FINIR>
________________________________________________________________________________
CONVERSION:
Le prototype de ces fonctions est d<>fini dans mode.h et ressemble <20>:
void typefonction _mode( ModeInfo *mode_info)
La structure mode_info est en lecture seule, et contient l'ensemble des
informations sur l'<27>cran.
Ne regardez pas les variables globales, n'<27>crasez pas ce pointeur.
Au lieu de faire des requetes pour conna<6E>tre le num<75>ro de la couleur blanche
etc... , il y a des fonctions propres a xlock: utilisez les.
________________________________________________________________________________
L'AJOUT D'UN NOUVEAU MODE:
Ajoutons un nouveau mode appel<65> fadeplot:
Pour ce faire il faut d'abords ajouter dans mode.h
<EFBFBD> extern ModeHook init_fadeplot;
extern ModeHook draw_fadeplot;
extern ModeHook release_fadeplot;
extern ModeHook refresh_fadeplot; <20>
les fonctions qui vont <20>tre cr<63><72>s.
<EFBFBD> extern ModeSpecOpt fadeplot_opts; <20>
une structure qui ne m'a pas r<>v<EFBFBD>l<EFBFBD> tous ces secrets.
mais aussi dans mode.c <20> cot<6F> des autres fonctions , dans ce que j'appelle la
tableau des modes:
{"fadeplot", init_fadeplot, draw_fadeplot, release_fadeplot,
refresh_fadeplot, init_fadeplot, NULL, &blank_opts, 17000, 1, 20, 1.0,
"fadeplot", 0, NULL},
On passe ensuite <20> l'impl<70>mentation des fonctions proprement dit dans un fichier
que l'on appellera fadeplot.c.
Il est <20>vident qu'il faudra modifier le Makefile ( Pour cela je vous laisse
faire :).
Dans ces fonctions, <20> partir de la structure ModeInfo, on va obtenir des
informations sur l'<27>cran qui sont indispensables pour la suite
MI_WIDTH(mi) et MI_HEIGHT(mi) vont nous donn<6E> la taille de l'<27>cran.
Display *display = MI_DISPLAY(mi); d<>livre le display
Window window = MI_WINDOW(mi); d<>livre l'identificateur de la fen<65>tre
GC gc = MI_GC(mi); donne le graphics context courant
XSetForeground(display, gc, MI_BLACK_PIXEL(mi));
Mettre la couleur du trac<61> en noir
XSetForeground(display, gc, MI_WHITE_PIXEL(mi));
Mettre la couleur du trac<61> en blanc
MI_IS_ICONIC(mi) permet de savoir si on est pass<73> en phase
password.
NUMCOLORS Donne le nombre de couleur
Oubliez pas apr<70>s avoir dessin<69> l'ensemble de faire Xflush(display),
ce qui permettra d'afficher r<>ellement votre graphisme sur l'<27>cran.
La cr<63>ation d'un nouveau mode s'<27>ffectue souvent en r<>cup<75>rant le squelette
d'un autre et de le modifier <20> sa volont<6E>.
N'h<>sitez pas a <20> regarder le code des autres modes, c'est souvent tr<74>s
instructifs.
Dernierement on peut utiliser la librairie mesa (la libraire GNU OpenGL de
silicon Graphics) dans xlock.
Voila j'espere que vous prendrez plaisir a ajouter des nouveaux modes <20> xlock,
un petit conseil le mainteneur de xlock est un fan de casse t<>te et compagnie.
Bon Xlock.
Charles VIDAL: cvidal@ivsweb.com
mode flag, fadeplot, circle
createur de xmxlock : GUI launcher de xlockmore.
------------------------------------------------------
<HTML>
<HEAD>
<TITLE>Xlock french hacker</TITLE>
</HEAD>
<BODY>
<Center><H1>XLOCK FRENCH HACKER</H1></Center>
<BR>
<H2>INTRODUCTION</H2>
<HR>
Ce document est pour tous ceux qui veulent modifier xlock (more), ajouter de nouveaux modes, debugger , etc....
<H2>xlock kesako ?</H2>
xlock est une application pour X-windows qui emp<6D>che l<>acc<63>s d<>un ou plusieurs <20>crans. Il peut <20>tre envoy<6F> manuellement ou plus commun<75>ment envoy<6F> automatiquement par un d<>mon apr<70>s une p<>riodes d<>inactivit<69>.
Xlock cr<63><72> une fen<65>tre couvrant enti<74>rement l<><6C>cran, et capte tous <20>v<EFBFBD>nements pr<70>venant ainsi l<>acc<63>s ext<78>rieur.
Quand une touche est press<73>e alors xlock affiche un message mais aussi le mode dans une icone (MODE_ICONIQUE) et demande votre mot de passe.<p>
Lorsque l<><6C>cran est lock<63> ( ferm<72> ), des images, des dessins, ou des animations sont affich<63>es servant de screen-saver <20>vitant la d<>gradation du phosphore.
Xlock fut d<>velopp<70> 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 <20>t<EFBFBD> ajout<75>, ainsi que la possibilit<69> d<>afficher un mode dans une fen<65>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>
Il 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.
<HR>
<H2>ORGANISATION GENERALE</H2>
xlock est organiser en deux partie.<p>
<OL>
<LI> le traitement de la ligne de commande, la cr<63>ation de fen<65>tre(s), le mot de passe, etc ...
<LI> les modes: ils peuvent <20>tre coder de tel mani<6E>re qu<71>il n<>y a pas besoin de faire appel <20> X pour la taille de la fen<65>tre, les couleurs ... Une API est comprise dans xlock pour avoir tout les renseignements en ce qui concerne l<><6C>cran.C<>est dans cette
</OL>
<HR>
<B>L<>architecture logiciel d<>un mode est structur<75> en 4 sortes de fonctions:</B>
<UL>
<LI><U><B>-init:</B></U>
celle-ci devra <20>tre appelle pour pr<70>parer le d<>roulement d<>un mode. Le mode devra initialiser des tables de sinus par exemple, allouer des ressources, m<>moire entre autre, <20>tablir l<><6C>tat initial par des variables etc. ...
Cette fonction peut <20>tre appel<65> plusieurs fois et la fen<65>tre ou l<><6C>cran peuvent avoir des taille diff<66>rentes.<p>
<LI><U><B>-callback:</B></U>
C<EFBFBD>est la principale fonction, c<>est la que est implement<6E> le corps du mode. Elle est appel<65> p<>riodiquement. Cette fonction ne doit pas occuper beaucoup de temps a s<>ex<65>cuter surtout si elle a plusieur ecran s<>occuper.
Cette fonction peut etre appele dans deux contextes diff<66>rents:
plein <20>cran ou en version icon. La fonction MI_IS_ICONIC vous dira dans quelle contexte on se trouve.
la fonction init_mode est toujours appelle avant la fonction callback.
On peut choisir de faire quelque chose a chaque appelle, ou de compter le nombre d<>appelle, et puis de modifier l<>ecran periodiquement.<p>
<LI><U><B>-release: </B></U>
Ici, cette fonction sera appel<65> si un autre mode est appel<65> ( 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.
<p>
<LI><U><B>-refresh:</B></U>
Celle ci est appel<65> lorsque le dessin peut <20>tre abim<69>. Le mode doit repeindre l<>ensemble de la fen<65>tre.
Aucun information sur la partie de l<>ecran endomage n<>est delivre.
<p>
<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
</UL>
<HR>
<H2>CONVENTION:</H2>
Le prototype de ces fonctions est d<>fini dans mode.h et ressemble <20>:<p>
<Center> void typefonction _mode( ModeInfo *mode_info)</Center>
La structure mode_info est en lecture seule, et contient l<>ensemble des informations sur l<><6C>cran. Ne regardez pas les variables globales, n<><6E>crasez pas ce pointeur. Au lieu de faire des requetes pour conna<6E>tre le num<75>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.
Le temps entre chaque appelle de fonctions est en milliseconde.
<HR>
<H2>L<>AJOUT D<>UN NOUVEAU MODE:</H2>
Ajoutons un nouveau mode appel<65> <A HREF="file:fadeplot.txt">fadeplot</A>:<p>
Pour ce faire il faut d<>abords ajouter dans mode.h<p>
<EFBFBD> extern ModeHook init_fadeplot;<p>
extern ModeHook draw_fadeplot;<p>
extern ModeHook release_fadeplot;<p>
extern ModeHook refresh_fadeplot; <20><p>
les fonctions qui vont <20>tre cr<63><72>s.
<p>
<EFBFBD> extern ModeSpecOpt fadeplot_opts; <20><p>
une structure qui ne m<>a pas r<>v<EFBFBD>l<EFBFBD> tous ces secrets.<p>
mais aussi dans mode.c <20> cot<6F> des autres fonctions , dans ce que j<>appelle le tableau des modes:<p>
{"fadeplot", init_fadeplot, draw_fadeplot, release_fadeplot,
refresh_fadeplot, init_fadeplot, NULL, &blank_opts, 17000, 1, 20, 1.0,
"fadeplot", 0, NULL},<p>
On passe ensuite <20> l<>impl<70>mentation des fonctions proprement dit dans un fichier que l<>on appellera fadeplot.c.<p>
Il est <20>vident qu<71>il faudra modifier le Makefile ( Pour cela je vous laisse faire :).<p>
Dans ces fonctions, <20> partir de la structure ModeInfo ( mode.h ) , on va obtenir des informations sur l<><6C>cran qui sont indispensables pour la suite.<p>
<TABLE Border=1>
<CAPTION><B>fonction</B></CAPTION>
<TR><TD>MI_WIDTH(mi) et MI_HEIGHT(mi)</TD> <TD>vont nous donn<6E> la taille de l<><6C>cran</TD></TR>.
<TR><TD>Display *display = MI_DISPLAY(mi);</TD> <TD>d<>livre le display</TD></TR>
<TR> <TD> MI_SCREEN </TD> <TD>d<>livre le screen</TD></TR>
<TR><TD>Window window = MI_WINDOW(mi)</TD>; <TD>d<>livre l<>identificateur de la fen<65>tre</TD></TR>
<TR><TD>GC gc = MI_GC(mi);</TD> <TD>donne le graphics context courant</TD></TR>
<TR> <TD>MI_DELAY</TD> <TD> donne le delai (microsec.) entre callbacks</TD></TR>
<TR> <TD>MI_CMAP</TD> <TD>donne la table des couleurs</TD></TR>
<TR><TD>XSetForeground(display, gc, MI_BLACK_PIXEL(mi));</TD> <TD>Mettre la couleur du trac<61> en noir</TD></TR>
<TR><TD>XSetForeground(display, gc, MI_WHITE_PIXEL(mi));</TD> <TD>Mettre la couleur du trac<61> en blanc</TD></TR>
<TR><TD>MI_IS_ICONIC(mi) </TD> <TD>permet de savoir si on est pass<73> en phase password. </TD></TR>
</TABLE>
<TABLE Border=1>
<CAPTION><B>variable</B></CAPTION>
<TR><TD>MI_IS_MONO </TD> <TD>l<>ecran est monochrome</TD></TR>
<TR><TD>MI_IS_INWINDOW</TD> <TD>le mode s<>affiche dans un fenetre reguliere</TD></TR>
<TR><TD>MI_IS_INROOT </TD> <TD>le mode s<>affiche sur la root windows</TD></TR>
<TR><TD>NUMCOLORS</TD> <TD>Donne le nombre de couleur</TD></TR>
</TABLE>
Oubliez pas apr<70>s avoir dessin<69> l<>ensemble de faire Xflush(display), ce qui permettra d<>afficher r<>ellement votre graphisme sur l<><6C>cran.
La cr<63>ation d<>un nouveau mode s<><73>ffectue souvent en r<>cup<75>rant le squelette d<>un autre et de le modifier <20> sa volont<6E>.
N<EFBFBD>h<EFBFBD>sitez pas a <20> regarder le code des autres modes, c<>est souvent tr<74>s instructifs.
<HR>
<H2>Perspective:</H2>
Dernierement on peut utiliser la librairie mesa (la libraire OpenGL de silicon GNU) dans xlock, quelqu<71>un s<>est propose de faire le screen-saver tube de Win NT.
Je pense qu<71>il serait interressant de joindre a xlock un langage simple ( genre logo un peu plus evolue).
<HR>
<H2>Reference: </H2>
HACKERS.GUIDE qui se trouve dans le repertoire docs ( j<>ai essaye de le traduire :)<p>
X_Window programmation avec les Xt-Intrinsics Douglas A YOUNG MASSON PARIS.<p>
<HR>
Voila j<>espere que vous prendrez plaisir a ajouter des nouveaux modes <20> 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.
Bon Xlock.
<p>
Charles VIDAL: cvidal@ivsweb.com<p>
mode flag, fadeplot, bubble<p>
createur de xmxlock : GUI launcher de xlockmore.<p>
</BODY>
</HTML>