mpv/DOCS/French/skin.html

804 lines
30 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Cr<EFBFBD>ation de skins - MPlayer - Le lecteur vid<69>o pour Linux</title>
<link rel="stylesheet" type="text/css" href="default.css">
<style type="text/css">
em.note {color: green;
font-style: normal;}
em.warn {color: red;
font-style: normal;}
</style>
</head>
<body>
<h1 align="center">Appendice D - Format de skins MPlayer</h1>
<p>L'objectif de ce document est de d<>crire le format de skins de MPlayer.
Les informations pr<70>sent<6E>es ici peuvent s'av<61>rer fausses, du fait que</p>
<ol type="a">
<li>Ce n'est pas moi qui ait <20>crit la GUI.</li>
<li>Cette GUI n'est pas termin<69>e,</li>
<li>Je peux me tromper.</li>
</ol>
<p>Ne soyez donc pas surpris si quelque chose ne correspond pas <20> cette description.</p>
<p>Merci <20> <em>Zolt&aacute;n Ponekker</em> pour son aide.</p>
<p><em>Andr&aacute;s Mohari &lt;mayday@freemail.hu&gt;</em></P>
<h2><a name="overview">D.1 Aper<65>u</a></h2>
<p>Ce n'est pas en rapport direct avec le format des skins, mais vous devez savoir que
MPlayer n'a <b>pas</b> de skin par d<>faut, donc <b>une skin au moins doit
<EFBFBD>tre install<6C>e pour pouvoir utiliser la GUI.</b></p>
<h3><a name="dirs">D.1.1 R<>pertoires</a></h3>
<p>MPlayer cherche des skins dans ces r<>pertoires (dans cet ordre):</p>
<pre>
$(DATADIR)/Skin/
/usr/local/share/mplayer/Skin/
~/.mplayer/Skin/
</pre>
<p>Notez que le premier r<>pertoire peut varier suivant la fa<66>on dont MPlayer
a <20>t<EFBFBD> configur<75> (c.f. les arguments <code>--prefix</code> et
<code>--datadir</code> du script <code>configure</code>).</p>
<p>Chaque skin est install<6C>e dans son propre r<>pertoire sous l'un des r<>pertoires
list<73>s ci-dessus, par exemple:</p>
<pre>
$(PREFIX)/share/mplayer/Skin/default/
</pre>
<h3><a name="images">D.1.2 Format d'images</a></h3>
<p>Les images doivent <20>tre en truecolor (24 ou 32 bpp) et enregistr<74>es
au format PNG.</p>
<p>Dans la fen<65>tre principale et la barre de lecture (c.f. ci-dessous) vous pouvez utiliser des images
dot<EFBFBD>es de r<>gions "transparentes" : les r<>gions remplies avec la
couleur #FF00FF (<font color="#FF00FF">magenta</font>) deviennent transparentes dans
MPlayer. De m<>me, vous pouvez obtenir des formes particuli<6C>res pour vos
fen<EFBFBD>tres si votre serveur X poss<73>de l'extension XShape.</p>
<h3><a name="components">D.1.3 Composants d'une skin</a></h3>
<p>Les skins sont d'un format plut<75>t libre (contrairement aux formats fixes de
Winamp/XMMS, par exemple), donc il ne tient qu'a vous de cr<63>er quelque chose
de bien.</p>
<p>Actuellement, trois fen<65>tres doivent <20>tre d<>cor<6F>es : la
<a href="#mainwin">fen<EFBFBD>tre principale</a>, la
<a href="#subwindow">sous-fen<65>tre</a>, la <a href="#mainwin">barre de lecture</a>,
et le <a href="#skinmenu">menu</a> (activable par un clic droit).</p>
<ul>
<li><p>Vous controlez MPlayer par la <b>fen<EFBFBD>tre principale</b> et/ou la barre de lecture.
L'arri<72>re plan est une image. Divers objets doivent venir se placer dans cette fen<65>tre :
<em>boutons</em>, <em>podom<EFBFBD>tres</em> (ou des sliders si vous pr<70>ferez)
et des <em>labels</em>. Pour chaque objet, vous devez sp<73>cifier sa taille et
sa position.</p>
<p>Un <b>bouton</b> comprend trois <20>tats (press<73>, relach<63>,
d<>sactiv<69>), donc l'image doit se diviser en trois parties, verticalement.
c.f. l'objet <a href="#main.button">bouton</a> pour plus de d<>tails.</p>
<p>Un <b>podom<EFBFBD>tre</b> (principalement utilis<69> pour la barre d'avancement
et le contr<74>le du volume/balance) peut poss<73>der n'importe quel nombre
d'<27>tats en empilant ces images, verticalement.
C.f. <a href="#main.hpotmeter">hpotmeter</a> et
<a href="#main.potmeter">potmeter</a> pour plus de d<>tails.</p>
<p>Les <b>labels</b> sont un peut particuliers : les caract<63>res n<>cessaires
pour les dessiner sont r<>cup<75>r<EFBFBD>s depuis un fichier image,
d<>crit par un <a href="#fonts">fichier de description de polices</a>.
Ce dernier est un fichier texte brut sp<73>cifiant la position x,y ainsi que la taille de chaque caract<63>re dans l'image. (donc le fichier image et son descripteur forment une police <em>ensemble</em>.)
C.f. <a href="#main.dlabel">dlabel</a> et <a href="#main.slabel">slabel</a>
pour plus de d<>tails.</p>
<p><em class=note><b>Note:</b> toutes les images diposent de la couleur de transparence d<>crite dans
la section <a href="#images">formats d'images</a>. Si le serveur X ne supporte pas
l'extension Xshape, les parties transparantes seront noires. Si vous voulez utiliser
cette fonction, la largeur de l'image de la fen<65>tre principale devra <20>tre divisible par 8.</em></p>
</li>
<li>La <b>sous-fen<65>tre</b> contient la vid<69>o en elle m<>me. Elle peut
affichier une image si aucun film n'est charg<72> (ce n'est jamais plaisant
d'avoir une fen<65>tre vide :-)) <em class=note><b>Note:</b> la couleur de transparence n'est <b>pas
autoris<69>e</b> ici.</em>
</li>
<li><p>Le <b>menu</b> est simplement un moyen de controler MPlayer par des entr<74>es
graphiques. Deux images sont n<>cessaires pour le menu : l'une d'elle, l'image
de base, affiche le menu dans son <20>t<EFBFBD> normal, l'autre est utilis<69>e
pour afficher les entr<74>es s<>lectionn<6E>es. Quand vous faites
appara<72>tre le menu, la premi<6D>re image s'affiche. Si vous passez la souris sur
les entr<74>es du menu, l'entr<74>e s<>lectionn<6E>e est copi<70>e
depuis la seconde image, et uniquement la partie concern<72>e par cette
s<>lection (Donc la seconde image ne s'affiche jamais compl<70>tement.)</p>
<p>Une entr<74>e de menu se d<>finit par sa position et sa taille dans l'image
(c.f. la section <a href="#skinmenu">menu</a> pour plus de d<>tails).</p>
</li>
</ul>
<p>Une chose essentielle n'a pas encore <20>t<EFBFBD> mentionn<6E>e : pour que
les boutons podom<6F>tres et entr<74>es du menu fonctionnent, MPlayer doit
savoir quoi en faire. Ceci d<>pend des <a href="#guimsg">messages</a> (events)
envoy<6F>s. Pour chacun de ces objets vous devez d<>finir le message <20> afficher quand
on clique dessus.</p>
<h3><a name="files">D.1.4 Fichiers</a></h3>
<p>Vous aurez besoin des fichiers suivants pour construire une skin:</p>
<ul>
<li>Le fichier de configuration nomm<6D> <a href="#skin">skin</a> indique <20> MPlayer
comment assembler les diff<66>rentes images et comment interpr<70>ter les clics de
souris sur l'interface.</li>
<li>L'image de fond de la fen<65>tre principale.</li>
<li>Les images correspondant aux objets de la fen<65>tre principale (y compris une
ou plusieurs polices et descripteurs n<>cessaires <20> l'affichage des
textes).</li>
<li>L'image affich<63>e dans la sous-fen<65>tre (optionnel).</li>
<li>Deux images pour le menu (n<>cessaires uniquement si vous voulez cr<63>er
un menu).</li>
</ul>
<p>A l'exception du fichier de configuration, vous pouvez nommer les fichiers comme bon
vous semble (mais notez que les descripteurs de polices doivent avoir une extension
<code>.fnt</code>).</p>
<h2><a name="skinfile">D.2 Le fichier skin</h2>
<p>Comme mentionn<6E> plus haut, c'est le fichier de configuration de la skin.
Il est lu ligne par ligne; les lignes de commentaire d<>marrent par le
caract<EFBFBD>re '<code>;</code>' en d<>but de ligne (seuls les espaces et
tabulations sont autoris<69>es avant ce signe).</p>
<p>Les fichiers se composent de sections. Chaque section d<>crit la skin pour une
application et s'<27>crit sous la forme :</p>
<table border=1 width="100%">
<tr bgcolor=silver>
<td>
<pre>
section = <i>nom de la section</i>
.
.
.
end
</pre>
</td>
</tr>
</table>
<p>Actuellement il n'existe qu'une application, donc vous n'aurez besoin que d'une section:
dont le nom est <b>movieplayer</b>.</p>
<p>Dans cette section chaque fen<65>tre est d<>crite par un bloc de la forme
suivante:</p>
<table border=1 width="100%">
<tr bgcolor=silver>
<td>
<pre>
window = <i>nom de la fen<65>tre</i>
.
.
.
end
</pre>
</tr>
</td>
</table>
<p>o<EFBFBD> <i>nom de la fen<65>tre</i> peut-<2D>tre l'un des types suivants :</p>
<ul>
<li><b>main</b> - pour la fen<65>tre principale</li>
<li><b>sub</b> - pour la sous-fen<65>tre</li>
<li><b>menu</b> - pour le menu</li>
<li><b>playbar</b> - barre de lecture</li>
</ul>
<p>(Les blocs sub et menu sont optionnels - vous n'avez pas d'obligation de
d<EFBFBD>corer le menu et la sous-fen<65>tre.)</p>
<p>Dans un bloc window, vous pouvez d<>finir chaque objet sous la forme :</p>
<dl>
<dt><b><code>item = parametre</code></b></dt>
<dd>ou <code>item</code> est une ligne identifiant le type d'objet de la GUI,
<code>parametre</code> est une valeur num<75>rique ou textuelle (ou une liste
de valeurs s<>par<61>es par des virgules).</dd>
</dl>
<p>Le fichier final doit donc ressembler <20> ceci :</p>
<table border=1 width="100%">
<tr bgcolor=silver>
<td>
<pre>
section = movieplayer
window = main
; ... objets de la fen<65>tre principale ...
end
window = sub
; ... objets de la sous-fen<65>tre ...
end
window = menu
; ... objets du menu ...
end
end
</pre>
</tr>
</td>
</table>
<p>Le nom d'un fichier image doit <20>tre donn<6E> sans distinction de
r<EFBFBD>pertoire - les images seront cherch<63>es dans le
r<EFBFBD>pertoire <code>Skin</code>. Vous pouvez (mais ce n'est pas
obligatoire) sp<73>cifier l'extension du fichier. Si le fichier n'existe pas,
MPlayer essaie de charger le fichier <code>&lt;filename&gt;.&lt;ext&gt;</code>,
ou <code>&lt;ext&gt;</code> sera respectivement <code>png</code> et <code>PNG</code>
dans cet ordre. La premi<6D>re correspondance trouv<75>e sera utilis<69>e.</p>
<p>Pour finir quelques mots sur le positionnement. La fen<65>tre principale et la sous-fen<65>tre
peuvent <20>tre plac<61>es dans des coins diff<66>rents de l'<27>cran en donnant les coordonn<6E>es
<code>X</code> et <code>Y</code>. <code>0</code> pour haut ou gauche, <code>-1</code>
pour centre et <code>-2</code> pour droite ou bas, comme montr<74> sur cette illustration:</p>
<pre>
(0, 0)----(-1, 0)----(-2, 0)
| | |
| | |
(0,-1)----(-1,-1)----(-2,-1)
| | |
| | |
(0,-2)----(-1,-2)----(-2,-2)
</pre>
<table border=1 cellpadding=5 width="100%">
<tr bgcolor="#ffffcc">
<td>Un exemple. Supposons que vous avez cr<63>e une image
<i>main.png</i> que vous voulez utiliser pour la fen<65>tre principale:
<blockquote>
<pre>
base = main, -1, -1
</pre>
</blockquote>
MPlayer essaie de charger les fichiers <code>main</code>, <code>main.png</code>,
<code>main.PNG</code>.<br>
</td>
</tr>
</table>
<h3><a name="mainwindow">D.2.1 Fen<65>tre principale et barre de lecture</a></h3>
<p>Vous trouverez ci-dessous la liste des objets utilisables dans les blocs
'<code>window = main</code>' .&nbsp;.&nbsp;. '<code>end</code>' et
'<code>window = playbar</code>' &nbsp;.&nbsp;. '<code>end</code>'.</p>
<dl>
<dt><a name="main.base"><b>base = <code>image, X, Y</code></b></a></dt>
<dd>Vous sp<73>cifiez ici l'image de fond utilis<69>e dans la fen<65>tre principale.
La fen<65>tre apparaitra a la position <code>X,Y</code> sur l'<27>cran. La fen<65>tre a la
taille de l'image.
<div><em class="warn"><b>Note:</b> Ces coordon<6F>es ne fonctionnent actuellement
pas pour la fen<65>tre d'affichage.</em><br>
<em class="warn"><b>Attention :</b> les r<>gions transparentes (couleur #FF00FF) apparaitront en noir
sur les serveurs X n'ayant pas l'extension XShape. La largeur de l'image doit <20>tre
divisible par 8.</em>
</div>
</dd>
<dt><a name="main.button"><b><code>button = image, X, Y, largeur, hauteur,
message</code></b></a></dt>
<dd>Place un bouton de taille <code>largeur</code> * <code>hauteur</code> a la
position <code>X</code>,<code>Y</code>. Le <code>message</code> sera
g<>n<EFBFBD>r<EFBFBD> au clic sur ce bouton. L'image appell<6C>e par <code>image</code> doit
avoir trois <20>tats empil<69>s verticalement (pour les trois <20>tats du bouton),
comme ceci:
<pre>
+---------------+
| press<73> |
+---------------+
| relach<63> |
+---------------+
| d<>sactiv<69> |
+---------------+
</pre>
</dd>
<dt><a name="main.decoration"><b><code>decoration = enable|disable</code></b>
</a></dt>
<dd>Active (<code>enable</code>) ou d<>sactive (<code>disable</code>) la
d<>coration du gestionnaire de fen<65>tre pour la fen<65>tre principale.
<b>D<EFBFBD>sactiv<EFBFBD></b> par d<>faut.<br><br>
<em class="warn"><b>Note:</b> Cela ne fonctionne pas pour la fen<65>tre d'affichage,
il n'y en a pas besoin.</em><br>
</dd>
<dt><a name="main.hpotmeter"><b><code>hpotmeter = button, blargeur, bhauteur,
phases, numphases, default, X, Y, largeur, hauteur, message</code><br>
<code>vpotmeter = button, blargeur, bhauteur, phases, numphases, default, X, Y,
largeur, hauteur, message</code></b></a></dt>
<dd>Place un podom<6F>tre horizontal (hpotmeter) ou vertical (vpotmeter) de taille
<code>largeur</code> * <code>hauteur</code> a la position <code>X</code>,<code>Y</code>.
L'image peut <20>tre divis<69>e en diff<66>rentes parties pour les diff<66>rentes phases du podom<6F>tre
(par exemple, vous pouvez en avoir un pour le contr<74>le du volume qui passe du vert
au rouge quand sa valeur passe du minimum au maximum.). <code>hpotmeter</code> peut poss<73>der un
bouton qui sera gliss<73> horizontalement.
<div>Les param<61>tres sont :</div>
<ul>
<li><code>button</code> - l'image utilis<69>e pour le bouton
(doit avoir trois <20>tats superpos<6F>s, comme pour les
<a href="#main.button">boutons</a>)</li>
<li><code>blargeur</code>, <code>bhauteur</code> - taille du bouton</li>
<li><code>phases</code> - L'image utilis<69>e pour les diff<66>rentes phases du
podom<6F>tre. Une valeur <code>NULL</code> sp<73>ciale peut-<2D>tre utilis<69>e
si vous ne voulez pas d'image. L'image doit <20>tre divis<69>e en
<code>numphases</code> parties verticalement comme ceci:
<pre>
+------------+
| phase #1 |
+------------+
| phase #2 |
+------------+
...
+------------+
| phase #n |
+------------+
</pre>
</li>
<li><code>numphases</code> - nombre d'<27>tats plac<61>s dans l'image.</li>
<li><code>default</code> - valeur par d<>faut du podom<6F>tre (dans un
intervalle de 0 a 100)</li>
<li><code>X</code>, <code>y</code> - position pour le podom<6F>tre</li>
<li><code>largeur</code>, <code>hauteur</code> - largeur et hauteur du podom<6F>tre</li>
<li><code>message</code> - le message g<>n<EFBFBD>r<EFBFBD> lors des changements
d'<27>tat de <code>hpotmeter</code></li>
</ul>
</dd>
<dt><a name="main.potmeter"><b><code>potmeter = phases, numphases, default, X, Y,
largeur, hauteur, message</code></b></a></dt>
<dd>Un <code>hpotmeter</code> sans boutons. (je suppose qu'il est cens<6E> tourner
en rond, mais il r<>agit uniquement aux tractions horizontales.)
Pour une descritpion de ses param<61>tres lisez
<a href="#main.hpotmeter">hpotmeter</a>. Ses <code><EFBFBD>tats</code> peuvent <20>tre
<code>NULL</code>, mais ce n'est pas vraiment utile, puisque vous ne pouvez pas voir
son niveau.</dd>
<dt><a name="main.font"><b>font = <code>fontfile, fontid</code></b></a></dt>
<dd>D<EFBFBD>finit une police. <code>fontfile</code> est le nom du descripteur de police
avec l'extension <code>.fnt</code> (<b>inutile</b> de pr<70>ciser son extension ici).
<code>fontid</code> r<>f<EFBFBD>re <20> la police
(c.f. <a href="#main.dlabel">dlabel</a> et <a href="#main.slabel">slabel</a>).
Plus de 25 polices peuvent <20>tre d<>finies.</dd>
<dt><a name="main.slabel"><b><code>slabel = X, Y, fontid, &quot;texte&quot;</code></b>
</a></dt>
<dd>Place un label statique <20> the position <code>X</code>,<code>Y</code>.
<code>text</code> est affich<63> en utilisant la police identifi<66>e par <code>fontid</code>.
Le texte est juste une chaine brute (les variables <code>$x</code> ne fonctionnent pas)
qui doit <20>tre mise entre doubles quotes (mais le caract<63>re <code>&quot;</code> ne peut pas
faire partie du texte). Le label est affich<63> en utilisant la police identifi<66>e par
<code>fontid</code>.</dd>
<dt><a name="main.dlabel"><b>dlabel = <code>X, Y, longueur, align, fontid,
&quot;texte&quot;</code></b></a></dt>
<dd>Place un label statique <20> la position <code>X</code>,<code>Y</code>. Le label est
appel<65> dynamique parce que sont texte est rafraichi p<>ridiquement.
La longeur maximum du label est d<>finie par <code>longueur</code> (sa
hauteur d<>pend de la hauteur des caract<63>res). Si le texte a afficher
d<>passe cette longeur il sera scroll<6C>, au bien align<67> dans l'espace
sp<73>cifi<66> par la valeur du param<61>tre <code>align</code> :
<code>0</code> pour droite, <code>1</code> pour centr<74>, <code>2</code> pour gauche.<br>
Le texte a afficher est donn<6E> par <code>texte</code>: il doit <20>tre <20>crit entre doubles quotes
(mais le caract<63>re <code>&quot;</code> ne peut pas faire partie du texte).
Le texte s'affiche en utilisant la police sp<73>cifi<66>e par <code>fontid</code>.
Vous pouvez utiliser les variables suivantes dans le texte :
<table valign=top border=1>
<tr align=center><th>Variable</th><th align=left>Signification</th></tr>
<tr><td align=center><kbd>$1</kbd></td>
<td>temps de lecture en <em>hh:mm:ss</em></td></tr>
<tr><td align=center><kbd>$2</kbd></td>
<td>temps de lecture en <em>mmmm:ss</em></td></tr>
<tr><td align=center><kbd>$3</kbd></td>
<td>temps de lecture en <em>hh</em>(heures)</td></tr>
<tr><td align=center><kbd>$4</kbd></td>
<td>temps de lecture en <em>mm</em>(minutes)</td></tr>
<tr><td align=center><kbd>$5</kbd></td>
<td>temps de lecture en <em>ss</em>(secondes)</td></tr>
<tr><td align=center><kbd>$6</kbd></td>
<td>longeur du film en <em>hh:mm:ss</em></td></tr>
<tr><td align=center><kbd>$7</kbd></td>
<td>longeur du film en <em>mmmm:ss</em></td></tr>
<tr><td align=center><kbd>$8</kbd></td>
<td>temps de lecture en <em>h:mm:ss</em></td></tr>
<tr><td align=center><kbd>$v</kbd></td>
<td>volume en <em>xxx.xx%</em></td></tr>
<tr><td align=center><kbd>$V</kbd></td>
<td>volume en <em>xxx.x</em></td></tr>
<tr><td align=center><kbd>$b</kbd></td>
<td>balance en <em>xxx.xx%</em></td></tr>
<tr><td align=center><kbd>$B</kbd></td>
<td>balance en <em>xxx.x</em></td></tr>
<tr><td align=center><kbd>$$</kbd></td>
<td>le caract<63>re <kbd>$</kbd></td></tr>
<tr><td align=center><kbd>$a</kbd></td>
<td>un caract<63>re d<>pendant du type audio (aucun: <code>n</code>,
mono: <code>m</code>, stereo: <code>t</code>)</td></tr>
<tr><td align=center><kbd>$t</kbd></td>
<td>num<EFBFBD>ro de piste (dans la playlist)</td></tr>
<tr><td align=center><kbd>$o</kbd></td>
<td>nom du fichier</td></tr>
<tr><td align=center><kbd>$f</kbd></td>
<td>nom du fichier en minuscule</td></tr>
<tr><td align=center><kbd>$F</kbd></td>
<td>nom du fichier en majuscule</td></tr>
<tr><td align=center><kbd>$T</kbd></td>
<td>un caract<63>re d<>pendant du type de flux (fichier: <code>f</code>,
Video CD: <code>v</code>, DVD: <code>d</code>, URL: <code>u</code>)
</td></tr>
<tr><td align=center><kbd>$p</kbd></td>
<td>le caract<63>re "p" (si une vid<69>o est en lecture et que la police a le
caract<63>re "p")</td></tr>
<tr><td align=center><kbd>$s</kbd></td>
<td>le caract<63>re "s" (si une vid<69>o est stopp<70>e et que la police a le caract<63>re "s")
</td></tr>
<tr><td align=center><kbd>$e</kbd></td>
<td>le caract<63>re "e" (si une vid<69>o est en pause et que la police a le caract<63>re "e")
</td></tr>
<tr><td align="center"><kbd>$x</kbd></td>
<td>largeur du film</td></tr>
<tr><td align="center"><kbd>$y</kbd></td>
<td>hauteur du film</td></tr>
<tr><td align="center"><kbd>$C</kbd></td>
<td>nom du codec utilis<69></td></tr>
</table>
<em class="note"><b>Note:</b> les variables <kbd>$a</kbd>, <kbd>$T</kbd>,
<kbd>$p</kbd>, <kbd>$s</kbd> et <kbd>$e</kbd> retournent toutes des
caract<63>res pouvant s'afficher comme des symboles sp<73>ciaux (par exemple,
"e" est le symbole de pause qui ressemble g<>n<EFBFBD>ralement <20> <code>||</code>).
Vous pouvez avoir une police pour les caract<63>res normaux et une autre pour
les symboles. Lisez la section sur les <a href="#symbols">symboles</a> pour
plus d'informations.</em>
</dd>
</dl>
<h3><a name="subwindow">D.2.2 Sous-fen<65>tre</a></h3>
<p>Vous trouverez ci-dessous la liste des objets utilisables dans le bloc
'<code>window = sub</code>' .&nbsp;.&nbsp;. '<code>end</code>'.</p>
<dl>
<dt><a name="sub.base"><b>base = <code>image, x, y, largeur, hauteur</code></b>
</a></dt>
<dd>L'image qui s'affichera dans la fen<65>tre.
La fen<65>tre appara<72>tra <20> la position <code>x</code>,<code>y</code>
sur l'<27>cran (<code>0,0</code> est le coin sup<75>rieur gauche). Vous pouvez sp<73>cifier
<code>-1</code> pour centre et <code>-2</code> pour droite. La fen<65>tre prendra
la taille de l'image. <code>largeur</code> et <code>hauteur</code> donnent la taille de la fen<65>tre; ces
param<61>tres sont optionnels (si ils sont absents, le fen<65>tre prend la taille
de l'image).</dd>
<dt><a name="sub.background"><b><code>background = R, G, B</code></b></a></dt>
<dd>Vous permet de d<>finir la couleur de fond. Utile si l'image est plus petite
que la fen<65>tre. <code>R</code>, <code>G</code> et <code>B</code> sp<73>cifient
les composantes rouge, verte et bleue de la couleur (d'un interval entre 0
et 255).</dd>
</dl>
<h3><a name="skinmenu">D.2.3 Menu</a></h3>
<p>Comme mentionn<6E> pr<70>c<EFBFBD>demment, le menu s'affiche en utilisant deux images.
Les entr<74>es normales du menu sont extraitres de l'image sp<73>cifi<66>e par
l'objet <code>base</code>, tandis que l'entr<74>e actuellement s<>lectionn<6E>e
est extraite de l'image sp<73>cifi<66>e par l'objet <code>selected</code>. Vous
devez d<>finir la taille et la position de chaque entr<74>e du menu par l'objet
<code>menu</code>.</p>
<p>Ils correspondent aux objets utilis<69>s dans le bloc '<code>window = menu</code>'
.&nbsp;.&nbsp;. '<code>end</code>'.</p>
<dl>
<dt><a name="menu.base"><b><code>base = image</code></b></a></dt>
<dd>L'image utilis<69>e pour les entr<74>es normales.</dd>
<dt><a name="menu.selected"><b><code>selected = image</code></b></a></dt>
<dd>L'image utilis<69>e pour les entr<74>es selectionn<6E>es.</dd>
<dt><a name="menu.menu"><b>menu = <code>x, y, largeur, hauteur, message</code></b>
</a></dt>
<dd>D<EFBFBD>finit la position <code>X</code>,<code>Y</code> et la taille des entr<74>es du
menu dans les images. <code>message</code> est le message g<>n<EFBFBD>r<EFBFBD>
quand le bouton de la souris est relach<63>.</dd>
</dl>
<h2><a name="fonts">D.3 Polices</a></h2>
<p>Comme mentionn<6E> dans la section sur les parties de la skin, une police est
d<>finie par une image et un fichier de description. Vous pouvez placer les
caract<63>res n'importe ou sur l'image, mais vous devez vous assurer que leur
position et taille correspondent pr<70>cis<69>ment au fichier de description.</p>
<p>Les fichier descriptif des polices (avec l'extension <code>.fnt</code>) peut
avoir des lignes de commentaires commen<65>ant par '<code>;</code>'.
Le fichier doit avoir une ligne du type</p>
<dl>
<dt><a name="font.image"><b><code>image = image</code></b></a></dt>
<dd>o&ugrave; <code>image</code> est le nom de l'image qui sera utilis<69>e
pour la police (vous n'avez pas <20> d<>finir d'extension).</dd>
<dt><a name="font.char"><b><code>"char" = X, Y, largeur, hauteur</code></b></a></dt>
<dd>Ici <code>X</code> et <code>Y</code> pr<70>cisent la position du caract<63>re
<code>char</code> dans l'image (0,0 est le coin sup<75>rieur gauche).
<code>largeur</code> et <code>hauteur</code> sont la largeur et la hauteur du caract<63>re
en pixels.</dd>
</dl>
<p>Voici un exemple d<>finissant les caract<63>res A, B, C utilisant la police
<code>font.png</code>.</p>
<table width="100%" border=1>
<tr bgcolor=silver>
<td>
<pre>
; peut <20>tre "font" au lieu de "font.png"
image = font.png
; Trois caract<63>res suffisent pour une d<>monstration. :-)
&quot;A&quot; = 0,0, 7,13
&quot;B&quot; = 7,0, 7,13
&quot;C&quot; = 14,0, 7,13
</pre>
</td>
</tr>
</table>
<h3><a name="symbols">D.3.1 Symboles</a></h3>
<p>Certains caract<63>res ont une sugnifaction sp<73>ciale quand retourn<72>s
par des variables utilis<69>es dans <a href="#main.dlabel">dlabel</a>; ces
caract<63>res sont cens<6E>s s'afficher comme des symboles. (par exemple, dans
le cas d'une lecture DVD, vous pouvez afficher un beau logo DVD a la place du
caract<63>re 'd').</p>
<p>La table ci-dessous liste les caract<63>res pouvant s'afficher comme des symboles
(et n<>cessitent donc une police diff<66>rente).</p>
<table align="center" border="1">
<tr><th align=center>Caract<EFBFBD>re</th><th align=left>Symbole</th></tr>
<tr><td align=center><kbd>p</kbd></td>
<td align=left>lecture</td></tr>
<tr><td align=center><kbd>s</kbd></td>
<td align=left>stop</td></tr>
<tr><td align=center><kbd>e</kbd></td>
<td align=left>pause</td></tr>
<tr><td align=center><kbd>n</kbd></td>
<td align=left>pas de son</td></tr>
<tr><td align=center><kbd>m</kbd></td>
<td align=left>son mono</td></tr>
<tr><td align=center><kbd>t</kbd></td>
<td align=left>son stereo</td></tr>
<tr><td align=center><kbd>f</kbd></td>
<td align=left>lecture depuis un fichier</td></tr>
<tr><td align=center><kbd>v</kbd></td>
<td align=left>lecture depuis un video CD</td></tr>
<tr><td align=center><kbd>d</kbd></td>
<td align=left>lecture depuis un DVD</td></tr>
<tr><td align=center><kbd>u</kbd></td>
<td align=left>lecture depuis une URL</td></tr>
</table>
<h2><a name="guimsg">D.4 Messages de la GUI</a></h2>
<p>Ce sont les messages qui peuvent <20>tre g<>n<EFBFBD>r<EFBFBD>s par les boutons,
podom<EFBFBD>tres et entr<74>es du menu.</p>
<p><em class="note"><b>Note:</b> certains messages peuvent ne pas fonctionner
comme pr<70>vu (ou ne pas fonctionner du tout). Comme vous le savez, la GUI est
en cours de d<>veloppement.</em></p>
<h3>Contr<EFBFBD>le de lecture :</h3>
<blockquote>
<dl>
<dt><b>evNext</b></dt>
<dd>Saute <20> la prochaine piste dans la playlist.</dd>
<dt><b>evPause</b></dt>
<dd>Pause.</dd>
<dt><b>evPauseSwitchToPlay</b></dt>
<dd>Associ<EFBFBD> <20> la commande <code>evPlaySwitchToPause</code>. Ils s'utilisent
pour avoir un bouton play/pause commun. Les deux messages peuvent <20>tre
assign<67>s aux boutons affiches exactement <20> la m<>me position dans la
fen<65>tre. Ces message mettent la lecture en pause et le bouton
<code>evPlaySwitchToPause</code> s'affiche (pour indiquer que le bouton peut <20>tre
press<73> pour continuer la lecture).</dd>
<dt><b>evPlay</b></dt>
<dd>Commence la lecture.</dd>
<dt><b>evPlaySwitchToPause</b></dt>
<dd>Le contraire de <code>evPauseSwitchToPlay</code>. Ce message d<>marre la lecture
et l'image associ<63>e au bouton <code>evPauseSwitchToPlay</code> s'affiche (pour
indiquer que le bouton peut <20>tre press<73> pour mettre en pause la lecture).</dd>
<dt><b>evPrev</b></dt>
<dd>Saute <20> la piste pr<70>cedente dans la playlist.</dd>
<dt><b>evStop</b></dt>
<dd>Stoppe la lecture.</dd>
</dl>
</blockquote>
<h3>Avanc<EFBFBD>e dans le flux:</h3>
<blockquote>
<dl>
<dt><b>evBackward10sec</b></dt>
<dt><b>evBackward1min</b></dt>
<dt><b>evBackward10min</b></dt>
<dd>Recule de 10 secondes / 1 minute / 10 minutes.</dd>
<dt><b>evForward10sec</b></dt>
<dt><b>evForward1min</b></dt>
<dt><b>evForward10min</b></dt>
<dd>Avance de 10 secondes / 1 minute / 10 minutes.</dd>
<dt><b>evSetMoviePosition</b></dt>
<dd>Se place <20> la position (utilisable avec un podom<6F>tre; utilise la
valeur relative (0-100%) du podom<6F>tre).</dd>
</dl>
</blockquote>
<h3>Contr<EFBFBD>le vid<69>o :</h3>
<blockquote>
<dl>
<dt><b>evDoubleSize</b></dt>
<dd>Double la taille de la fen<65>tre vid<69>o.</dd>
<dt><b>evFullScreen</b></dt>
<dd>Passe en mode plein <20>cran.</dd>
<dt><b>evNormalSize</b></dt>
<dd>Met la vid<69>o <20> sa taille r<>elle.</dd>
</dl>
</blockquote>
<h3>Cont<EFBFBD>le audio :</h3>
<blockquote>
<dl>
<dt><b>evDecAudioBufDelay</b></dt>
<dd>Diminue le d<>lai du buffer audio.</dd>
<dt><b>evDecBalance</b></dt>
<dd>Diminue la balance.</dd>
<dt><b>evDecVolume</b></dt>
<dd>Diminue le volume.</dd>
<dt><b>evIncAudioBufDelay</b></dt>
<dd>Augmente le d<>lai du buffer audio.</dd>
<dt><b>evIncBalance</b></dt>
<dd>Augmente la balance.</dd>
<dt><b>evIncVolume</b></dt>
<dd>Augmente le volume.</dd>
<dt><b>evMute</b></dt>
<dd>Active/d<>sactive le son.</dd>
<dt><b>evSetBalance</b></dt>
<dd>Fixe la balance (utilisable avec un podom<6F>tre; utilise la valeur relative
(0-100%) du podom<6F>tre).</dd>
<dt><b>evSetVolume</b></dt>
<dd>Fixe le volume (utilisable avec un podom<6F>tre; utilise la valeur relative
(0-100%) du podom<6F>tre).</dd>
</dl>
</blockquote>
<h3>Divers :</h3>
<blockquote>
<dl>
<dt><b>evAbout</b></dt>
<dd>Ouvre la fen<65>tre 'A Propos'.</dd>
<dt><b>evDropSubtitle</b></dt>
<dd>D<EFBFBD>sactive le sous-titre actuellement utilis<69>.</dd>
<dt><b>evEqualizer</b></dt>
<dd>Active/d<>sactive l'equalizer.</dd>
<dt><b>evExit</b></dt>
<dd>Quite le programme.</dd>
<dt><b>evIconify</b></dt>
<dd>Iconifie la fen<65>tre.</dd>
<dt><b>evLoad</b></dt>
<dd>Charge un fichier (en ouvrant un mini navigateur de fichiers, o&ugrave; vous pouvez
choisir un fichier).</dd>
<dt><b>evLoadPlay</b></dt>
<dd>Fait la m<>me chose que <code>evLoad</code>,mais d<>marre la lecture
automatiquement apr<70>s le chargement du fichier.</dd>
<dt><b>evLoadSubtitle</b></dt>
<dd>Charge un fichier de sous-titres (avec un selectionneur de fichier)</dd>
<dt><b>evLoadAudioFile</b></dt>
<dd>Charge un fichier audio (avec un selectionneur de fichier)</dd>
<dt><b>evNone</b></dt>
<dd>Message vide, sans effet. (A part peut-<2D>tre dans les versions CVS :-)).</dd>
<dt><b>evPlayList</b></dt>
<dd>Ouvre/ferme la playlist.</dd>
<dt><b>evPlayDVD</b></dt>
<dd>Essaie d'ouvrir le disque dans le lecteur DVDROM indiqu<71>.</dd>
<dt><b>evPlayVCD</b></dt>
<dd>Essaie d'ouvrir le disque dans le lecteur CDROM indiqu<71>.</dd>
<dt><b>evPreferences</b></dt>
<dd>Ouvre la fen<65>tre de preferences.</dd>
<dt><b>evSetAspect</b></dt>
<dd>Fixe l'aspect de l'image.</dd>
<dt><b>evSetURL</b></dt>
<dd>Ouvre la fen<65>tre de saisie d'URL.</dd>
<dt><b>evSkinBrowser</b></dt>
<dd>Ouvre le navigateur de rev<65>tements.</dd>
</dl>
</blockquote>
</body>
</html>