287 lines
14 KiB
Plaintext
287 lines
14 KiB
Plaintext
|
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>
|