mirror of https://github.com/mpv-player/mpv
1122 lines
36 KiB
XML
1122 lines
36 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- synced with 1.4 -->
|
|
<appendix id="skin">
|
|
<title>Format de skins MPlayer</title>
|
|
<para>
|
|
L'objectif de ce document est de décrire le format de skins de MPlayer. Les
|
|
informations présentées ici peuvent s'avérer fausses, du fait que
|
|
<orderedlist>
|
|
<listitem><para>Ce n'est pas moi qui ait écrit la GUI.</para></listitem>
|
|
<listitem><para>Cette GUI n'est pas terminée.</para></listitem>
|
|
<listitem><para>Je peux me tromper.</para></listitem>
|
|
</orderedlist>
|
|
Ne soyez donc pas surpris si quelque chose ne correspond pas à cette description.
|
|
</para>
|
|
|
|
<para>Merci à <emphasis>Zoltán Ponekker</emphasis> pour son aide.</para>
|
|
|
|
<para><emphasis>András Mohari <mayday@freemail.hu></emphasis></para>
|
|
|
|
<sect1 id="skin-overview">
|
|
<title>Aperçu</title>
|
|
<para>
|
|
Ce n'est pas en rapport direct avec le format des skins, mais vous devez savoir
|
|
que MPlayer n'a <emphasis role="bold">pas</emphasis> de skin par défaut, donc
|
|
<emphasis role="bold">au moins une skin doit être installée pour pouvoir utiliser
|
|
la GUI.</emphasis>
|
|
</para>
|
|
|
|
<sect2 id="skin-overview-directories">
|
|
<title>Répertoires</title>
|
|
<para>
|
|
MPlayer cherche des skins dans ces répertoires (dans cet ordre):
|
|
<orderedlist>
|
|
<listitem><para>
|
|
<filename class="directory">$(DATADIR)/Skin/</filename>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<filename class="directory">$(PREFIX)/share/mplayer/Skin/</filename>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<filename class="directory">~/.mplayer/Skin/</filename>
|
|
</para></listitem>
|
|
</orderedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Notez que le premier répertoire peut varier suivant la façon dont MPlayer a été
|
|
configuré (c.f. les arguments <option>--prefix</option> et <option>--datadir</option>
|
|
du script <command>configure</command>).
|
|
</para>
|
|
|
|
<para>
|
|
Chaque skin est installée dans son propre répertoire sous l'un des répertoires
|
|
listés ci-dessus, par exemple:
|
|
<screen>$(PREFIX)/share/mplayer/Skin/default/</screen>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="skin-overview-formats">
|
|
<title>Format d'images</title>
|
|
<para>Les images doivent être en truecolor (24 ou 32 bpp) et enregistrées au
|
|
format PNG.</para>
|
|
<para>
|
|
Dans la fenêtre principale et la barre de lecture (c.f. ci-dessous) vous pouvez
|
|
utiliser des images dotées de régions "transparentes": les régions
|
|
remplies avec la couleur #FF00FF (magenta) deviennent transparentes dans MPlayer.
|
|
De même, vous pouvez obtenir des formes particulières pour vos fenêtres si votre
|
|
serveur X possède l'extension XShape.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="skin-overview-components">
|
|
<title>Composants d'une skin</title>
|
|
<para>
|
|
Les skins sont d'un format plutôt libre (contrairement aux formats fixes de
|
|
Winamp/XMMS, par exemple), donc il ne tient qu'a vous de créer quelque chose de
|
|
bien.
|
|
</para>
|
|
|
|
<para>
|
|
Actuellement, trois fenêtres doivent être décorées: la
|
|
<link linkend="skin-file-main">fenêtre principale</link>, la
|
|
<link linkend="skin-file-subwindow">sous-fenêtre</link>, la
|
|
<link linkend="skin-file-main">barre de lecture</link>, et le
|
|
<link linkend="skin-file-menu">menu</link> (activable par un clic droit).
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
Vous contrôlez MPlayer par la <emphasis role="bold">fenêtre principale</emphasis>
|
|
et/ou la <emphasis role="bold">barre de lecture</emphasis>. L'arrière plan est
|
|
une image. Divers objets peuvent (et doivent) venir se placer dans cette fenêtre:
|
|
<emphasis>boutons</emphasis>, <emphasis>podomètres</emphasis>
|
|
(sliders) et <emphasis>labels</emphasis>. Pour chaque objet, vous devez
|
|
spécifier sa taille et sa position.
|
|
</para><para>
|
|
Un <emphasis role="bold">bouton</emphasis> comprend trois états (pressé, relâché,
|
|
désactivé), donc l'image doit se diviser en trois parties, verticalement. Voir
|
|
l'objet <link linkend="skin-button">bouton</link> pour plus de détails.
|
|
</para><para>
|
|
Un <emphasis role="bold">podomètre</emphasis> (principalement utilisé pour la
|
|
barre d'avancement et le contrôle du volume/balance) peut posséder n'importe quel
|
|
nombre d'états en empilant ces images, verticalement. Voir
|
|
<link linkend="skin-hpotmeter">hpotmeter</link> et
|
|
<link linkend="skin-potmeter">potmeter</link> pour plus de détails.
|
|
</para><para>
|
|
Les <emphasis role="bold">labels</emphasis> sont un peu particuliers : les
|
|
caractères nécessaires pour les dessiner sont récupérés depuis un fichier image,
|
|
décrit par un <link linkend="skin-fonts">fichier de description de polices</link>.
|
|
Ce dernier est un fichier texte brut spécifiant la position x,y ainsi que la
|
|
taille de chaque caractère dans l'image (le fichier image et son descripteur
|
|
forment une police <emphasis>ensemble</emphasis>). Voir <link linkend="skin-dlabel">dlabel</link>
|
|
et <link linkend="skin-slabel">slabel</link> pour plus de détails.
|
|
</para>
|
|
<note><para>
|
|
Toutes les images disposent de la couleur de transparence décrite dans la section
|
|
<link linkend="skin-overview-formats">formats d'images</link>. Si le serveur X ne
|
|
supporte pas l'extension Xshape, les parties transparentes seront noires. Si vous
|
|
voulez utiliser cette fonction, la largeur de l'image de la fenêtre principale
|
|
devra être divisible par 8.
|
|
</para></note>
|
|
</listitem>
|
|
|
|
<listitem><para>
|
|
La <emphasis role="bold">sous-fenêtre</emphasis> contient la vidéo en elle même.
|
|
Elle peut afficher une image si aucun film n'est chargé (ce n'est jamais plaisant
|
|
d'avoir une fenêtre vide :-)) <emphasis role="bold">Note:</emphasis> la couleur
|
|
de transparence n'est <emphasis role="bold">pas autorisée</emphasis> ici.
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
Le <emphasis role="bold">menu</emphasis> est simplement un moyen de contrôler
|
|
MPlayer par des entrées graphiques. Deux images sont nécessaires pour le menu:
|
|
l'une d'elle, l'image de base, affiche le menu dans son été normal, l'autre est
|
|
utilisée pour afficher les entrées sélectionnées. Quand vous faites apparaître le
|
|
menu, la première image s'affiche. Si vous passez la souris sur les entrées du
|
|
menu, l'entrée sélectionnée est copiée depuis la seconde image, et uniquement la
|
|
partie concernée par cette sélection (la seconde image ne s'affiche jamais
|
|
complètement.)
|
|
</para><para>
|
|
Une entrée de menu se définit par sa position et sa taille dans l'image (c.f. la
|
|
section <link linkend="skin-file-menu">menu</link> pour plus de détails).
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Une chose essentielle n'a pas encore été mentionnée : pour que les boutons,
|
|
podomètres et entrées du menu fonctionnent, MPlayer doit savoir quoi en faire.
|
|
Ceci dépend des <link linkend="skin-gui">messages</link> (events) envoyés. Pour
|
|
chacun de ces objets vous devez définir le message à afficher quand on clique
|
|
dessus.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="skin-files">
|
|
<title>Fichiers</title>
|
|
<para>
|
|
Vous aurez besoin des fichiers suivants pour construire une skin:
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
Le fichier de configuration nommé <link linkend="skin-file">skin</link> indique
|
|
à MPlayer comment assembler les différentes images et comment interpréter les
|
|
clics de souris sur l'interface.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
L'image de fond de la fenêtre principale.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Les images correspondant aux objets de la fenêtre principale (y compris une ou
|
|
plusieurs polices et descripteurs nécessaires à l'affichage des textes).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
L'image affichée dans la sous-fenêtre (optionnel).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Deux images pour le menu (nécessaires uniquement si vous voulez créer un menu).
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
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 <filename>.fnt</filename>).
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="skin-file">
|
|
<title>Le fichier skin</title>
|
|
<para>
|
|
Comme mentionné 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ère
|
|
'<literal>;</literal>' en début de ligne (seuls les espaces et tabulations sont
|
|
autorisées avant ce signe).
|
|
</para>
|
|
|
|
<para>
|
|
Les fichiers se composent de sections. Chaque section décrit la skin pour une
|
|
application et s'écrit sous la forme:
|
|
<programlisting>
|
|
section = <replaceable>nom de la section</replaceable>
|
|
.
|
|
.
|
|
.
|
|
end
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Actuellement il n'existe qu'une application, donc vous n'aurez besoin que d'une
|
|
section: dont le nom est <emphasis role="bold">movieplayer</emphasis>.
|
|
</para>
|
|
|
|
<para>
|
|
Dans cette section chaque fenêtre est décrite par un bloc de la forme suivante:
|
|
<programlisting>
|
|
window = <replaceable>nom de la fenêtre</replaceable>
|
|
.
|
|
.
|
|
.
|
|
end
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Où <replaceable></replaceable> peut-être l'un des types suivants:
|
|
<itemizedlist>
|
|
<listitem><para><emphasis role="bold">main</emphasis> - pour la fenêtre principale</para></listitem>
|
|
<listitem><para><emphasis role="bold">sub</emphasis> - pour la sous-fenêtre</para></listitem>
|
|
<listitem><para><emphasis role="bold">menu</emphasis> - pour le menu</para></listitem>
|
|
<listitem><para><emphasis role="bold">playbar</emphasis> - barre de lecture</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
(Les blocs sub et menu sont optionnels - vous n'avez pas l'obligation de décorer
|
|
le menu et la sous-fenêtre.)
|
|
</para>
|
|
|
|
<para>
|
|
Dans un bloc window, vous pouvez définir chaque objet sous la forme:
|
|
<programlisting>objet = paramètre</programlisting>
|
|
Où <literal>objet</literal> est une ligne identifiant le type d'objet de la GUI,
|
|
<literal>paramètre</literal> est une valeur numérique ou textuelle (ou une liste
|
|
de valeurs séparées par des virgules).
|
|
</para>
|
|
|
|
<para>
|
|
Le fichier final doit donc ressembler à ceci:
|
|
<programlisting>
|
|
section = movieplayer
|
|
window = main
|
|
; ... objets de la fenêtre principale ...
|
|
end
|
|
|
|
window = sub
|
|
; ... objets de la sous-fenêtre ...
|
|
end
|
|
|
|
window = menu
|
|
; ... objets du menu ...
|
|
end
|
|
|
|
window = playbar
|
|
; ... objets de la la barre de lecture ...
|
|
end
|
|
end
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Le nom d'un fichier image doit être donné sans distinction de répertoire - les
|
|
images seront cherchées dans le répertoire <filename class="directory">Skin</filename>.
|
|
Vous pouvez (mais ce n'est pas obligatoire) spécifier l'extension du fichier. Si
|
|
le fichier n'existe pas, MPlayer essaie de charger le fichier
|
|
<filename><nomfichier>.<ext></filename>, où <literal>png</literal>
|
|
et <literal>PNG</literal> sera respectivement <filename><ext></filename>
|
|
(dans cet ordre). La première correspondance trouvée sera utilisée.
|
|
</para>
|
|
|
|
<para>
|
|
Pour finir quelques mots sur le positionnement. La fenêtre principale et la
|
|
sous-fenêtre peuvent être placées dans des coins différents de l'écran en donnant
|
|
les coordonnées <literal>X</literal> et <literal>Y</literal>. <literal>0</literal>
|
|
pour haut ou gauche, <literal>-1</literal> pour centre et <literal>-2</literal>
|
|
pour droite ou bas, comme montré sur cette illustration:
|
|
</para>
|
|
<informalfigure>
|
|
<screen>
|
|
(0, 0)----(-1, 0)----(-2, 0)
|
|
| | |
|
|
| | |
|
|
(0,-1)----(-1,-1)----(-2,-1)
|
|
| | |
|
|
| | |
|
|
(0,-2)----(-1,-2)----(-2,-2)
|
|
</screen>
|
|
</informalfigure>
|
|
|
|
<para>
|
|
|
|
Un exemple. Supposons que vous avez crée une image <filename>main.png</filename>
|
|
que vous voulez utiliser pour la fenêtre principale:
|
|
<programlisting>base = main, -1, -1</programlisting>
|
|
MPlayer essaie de charger les fichiers <filename>main</filename>,
|
|
<filename>main.png</filename>, <filename>main.PNG</filename>.
|
|
</para>
|
|
|
|
|
|
<sect2 id="skin-file-main">
|
|
<title>Fenêtre principale et barre de lecture</title>
|
|
<para>
|
|
Vous trouverez ci-dessous la liste des objets utilisables dans les blocs
|
|
'<literal>window = main</literal>' . . . '<literal>end</literal>',
|
|
et '<literal>window = playbar</literal>' . . . '<literal>end</literal>'.
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-main-base"/>base = image, X, Y
|
|
</literal></term>
|
|
<listitem><para>
|
|
Vous spécifiez ici l'image de fond utilisée dans la fenêtre principale. La
|
|
fenêtre apparaîtra a la position <literal>X,Y</literal> sur l'écran. La fenêtre
|
|
aura la taille de l'image.
|
|
</para>
|
|
<note><para>Ces coordonnées ne fonctionnent actuellement pas pour la fenêtre
|
|
d'affichage.</para></note>
|
|
<warning><para>Les régions transparentes (couleur #FF00FF) apparaîtront en noir
|
|
sur les serveurs X n'ayant pas l'extension XShape. La largeur de l'image doit
|
|
être divisible par 8.</para></warning>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-button"/>button = image, X, Y, largeur, hauteur, message
|
|
</literal></term>
|
|
<listitem><para>
|
|
Place un bouton de taille <literal>largeur</literal> * <literal>hauteur</literal>
|
|
a la position <literal>X,Y</literal>. Le <literal>message</literal> sera généré
|
|
au clic sur ce bouton. L'image appelée par <literal>image</literal> doit avoir
|
|
trois états empilés verticalement (pour les trois états du bouton), comme ceci:
|
|
|
|
</para>
|
|
<informalfigure>
|
|
<screen>
|
|
+------------+
|
|
| pressé |
|
|
+------------+
|
|
| relâché |
|
|
+------------+
|
|
| désactivé |
|
|
+------------+
|
|
</screen>
|
|
</informalfigure>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-decoration"/>decoration = enable|disable
|
|
</literal></term>
|
|
<listitem><para>
|
|
Active (enable) ou désactive (disable) la décoration du gestionnaire de fenêtre
|
|
pour la fenêtre principale. <emphasis role="bold">disable</emphasis> par défaut.
|
|
</para>
|
|
<note><para>Cela ne fonctionne pas pour la fenêtre d'affichage, il n'y en a pas
|
|
besoin.</para></note>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-hpotmeter"/>hpotmeter = button, blargeur, bhauteur, phases, numphases, default, X, Y, largeur, hauteur, message
|
|
</literal></term>
|
|
<listitem><para>
|
|
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-vpotmeter"/>vpotmeter = button, blargeur, bhauteur, phases, numphases, default, X, Y, largeur, hauteur, message
|
|
</literal></term>
|
|
<listitem><para>
|
|
|
|
Place un podomètre horizontal (hpotmeter) ou vertical (vpotmeter) de taille
|
|
<literal>largeur</literal> * <literal>hauteur</literal> à la position
|
|
<literal>X,Y</literal>. L'image peut être divisée en différentes parties pour les
|
|
différentes phases du podomètre (par exemple, vous pouvez en avoir un pour le
|
|
contrôle du volume qui passe du vert au rouge quand sa valeur passe du minimum au
|
|
maximum). <literal>hpotmeter</literal> peut posséder un bouton qui sera glissé
|
|
horizontalement.
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem><para><literal>button</literal> - l'image utilisée pour le bouton (doit
|
|
avoir trois états superposés, comme pour les
|
|
<link linkend="skin-button">boutons</link>)
|
|
</para></listitem>
|
|
<listitem><para><literal>blargeur</literal>,<literal>bhauteur</literal> - taille
|
|
du bouton
|
|
</para></listitem>
|
|
<listitem><para><literal>phases</literal> - l'image utilisée pour les différentes
|
|
phases du podomètre. Une valeur <literal>NULL</literal> spéciale peut-être
|
|
utilisée si vous ne voulez pas d'image. L'image doit être divisée en
|
|
<literal>numphasesparts</literal> verticalement comme ceci:
|
|
</para>
|
|
<informalfigure>
|
|
<screen>
|
|
+------------+
|
|
| phase #1 |
|
|
+------------+
|
|
| phase #2 |
|
|
+------------+
|
|
...
|
|
+------------+
|
|
| phase #n |
|
|
+------------+
|
|
</screen>
|
|
</informalfigure>
|
|
</listitem>
|
|
<listitem><para><literal>numphases</literal> - nombre d'états placés dans l'image <literal>phases</literal>.
|
|
</para></listitem>
|
|
<listitem><para><literal>default</literal> - valeur par défaut du podomètre (dans
|
|
un intervalle de <literal>0</literal> à <literal>100</literal>)
|
|
</para></listitem>
|
|
<listitem><para><literal>X</literal>,<literal>Y</literal> - position du hpotmeter
|
|
</para></listitem>
|
|
<listitem><para><literal>largeur</literal>,<literal>hauteur</literal> -
|
|
largeur et hauteur du <literal>hpotmeter</literal>
|
|
</para></listitem>
|
|
<listitem><para><literal>message</literal> - le message généré lors des
|
|
changements d'état de <literal>hpotmeter</literal>
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-potmeter"/>potmeter = phases, numphases, default, X, Y, largeur, hauteur, message
|
|
</literal></term>
|
|
<listitem><para>
|
|
Un <literal>hpotmeter</literal> sans boutons. (je suppose qu'il est censé tourner
|
|
en rond, mais il réagit uniquement aux tractions horizontales.) Pour une
|
|
description de ses paramètres lisez <link linkend="skin-hpotmeter">hpotmeter</link>.
|
|
Ses <literal>phases</literal> peuvent être fixés à <literal>NULL</literal>, mais ce n'est
|
|
pas vraiment utile, puisque vous ne pouvez pas voir son niveau.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-font"/>font = fontfile, fontid
|
|
</literal></term>
|
|
<listitem><para>
|
|
Définit une police. <literal>fontfile</literal> est le nom du descripteur de
|
|
police avec l'extension <filename>.fnt</filename> (inutile de préciser son
|
|
extension ici). <literal>fontid</literal> réfère à la police (c.f.
|
|
<link linkend="skin-dlabel">dlabel</link> et <link linkend="skin-slabel">slabel</link>).
|
|
Jusqu'à 25 polices peuvent être définies.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-slabel"/>slabel = X, Y, fontid, "texte"
|
|
</literal></term>
|
|
<listitem><para>
|
|
Place un label dynamique à la position <literal>X,Y</literal>. <literal>texte</literal>
|
|
est affiché en utilisant la police identifiée par <literal>fontid</literal>. Le
|
|
texte est juste une chaîne brute (les variables <literal>$x</literal> ne
|
|
fonctionnent pas) qui doit être mise entre doubles quotes (mais le caractère
|
|
" ne peut pas faire partie du texte). Le label est affiché en utilisant la
|
|
police identifiée par <literal>fontid</literal>.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-dlabel"/>dlabel = X, Y, longueur, align, fontid, "texte"
|
|
</literal></term>
|
|
<listitem>
|
|
<para>
|
|
Place un label statique à la position <literal>X,Y</literal>. Le label est appelé
|
|
dynamique parce que son texte est rafraîchi périodiquement. La longueur maximum du
|
|
label est définie par <literal>longueur</literal> (sa hauteur dépend de la hauteur
|
|
des caractères). Si le texte a afficher dépasse cette longueur il sera scrollé, ou
|
|
bien aligné dans l'espace spécifié par la valeur du paramètre
|
|
<literal>align</literal>: <literal>0</literal> pour droite,
|
|
<literal>1</literal> pour centre, et <literal>2</literal> pour gauche.
|
|
</para>
|
|
<para>
|
|
Le texte à afficher est donné par <literal>texte</literal>: il doit être écrit
|
|
entre doubles quotes (mais le caractère " ne peut pas faire partie du texte).
|
|
Le texte s'affiche en utilisant la police spécifiée par <literal>fontid</literal>.
|
|
Vous pouvez utiliser les variables suivantes dans le texte:
|
|
</para>
|
|
|
|
<informaltable>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row><entry>Variable</entry><entry>Signification</entry></row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>$1</entry>
|
|
<entry>temps de lecture au format <emphasis>hh:mm:ss</emphasis></entry>
|
|
</row>
|
|
<row>
|
|
<entry>$2</entry>
|
|
<entry>temps de lecture au format <emphasis>mmmm:ss</emphasis></entry>
|
|
</row>
|
|
<row>
|
|
<entry>$3</entry>
|
|
<entry>temps de lecture au format <emphasis>hh</emphasis> (heures)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$4</entry>
|
|
<entry>temps de lecture au format <emphasis>mm</emphasis> (minutes)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$5</entry>
|
|
<entry>temps de lecture au format <emphasis>ss</emphasis> (secondes)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$6</entry>
|
|
<entry>longueur du film au format <emphasis>hh:mm:ss</emphasis></entry>
|
|
</row>
|
|
<row>
|
|
<entry>$7</entry>
|
|
<entry>longueur du film au format <emphasis>mmmm:ss</emphasis></entry>
|
|
</row>
|
|
<row>
|
|
<entry>$8</entry>
|
|
<entry>temps de lecture au format <emphasis>h:mm:ss</emphasis></entry>
|
|
</row>
|
|
<row>
|
|
<entry>$v</entry>
|
|
<entry>volume au format <emphasis>xxx.xx</emphasis>%</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$V</entry>
|
|
<entry>volume au format <emphasis>xxx.xx</emphasis></entry>
|
|
</row>
|
|
<row>
|
|
<entry>$b</entry>
|
|
<entry>balance au format <emphasis>xxx.xx</emphasis>%</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$B</entry>
|
|
<entry>balance au format <emphasis>xxx.xx</emphasis></entry>
|
|
</row>
|
|
<row>
|
|
<entry>$$</entry>
|
|
<entry>le caractère $</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$a</entry>
|
|
<entry>un caractère dépendant du type audio (aucun: <literal>n</literal>,
|
|
mono: <literal>m</literal>, stéréo: <literal>t</literal>)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$t</entry>
|
|
<entry>numéro de piste (dans la playlist)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$o</entry>
|
|
<entry>nom du fichier</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$f</entry>
|
|
<entry>nom du fichier en minuscule</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$F</entry>
|
|
<entry>nom du fichier en majuscule</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$T</entry>
|
|
<entry>un caractère dépendant du type de flux (fichier: <literal>f</literal>,
|
|
Video CD: <literal>v</literal>, DVD: <literal>d</literal>, URL: <literal>u</literal>)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$p</entry>
|
|
<entry>le caractère <keycap>p</keycap> (si une vidéo est en lecture et que la
|
|
police a le caractère <keycap>p</keycap>)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$s</entry>
|
|
<entry>le caractère <keycap>s</keycap> (si une vidéo est stoppée et que la police
|
|
a le caractère <keycap>s</keycap>)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$e</entry>
|
|
<entry>le caractère <keycap>e</keycap> (si une vidéo est en pause et que la police
|
|
a le caractère <keycap>e</keycap>)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$x</entry>
|
|
<entry>largeur du film</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$y</entry>
|
|
<entry>hauteur du film</entry>
|
|
</row>
|
|
<row>
|
|
<entry>$C</entry>
|
|
<entry>nom du codec utilisé</entry>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<note><para>
|
|
Les variables <literal>$a, $T, $p, $s</literal> et <literal>$e</literal>
|
|
<keycap>e</keycap> retournent toutes des caractères pouvant s'afficher comme des
|
|
symboles spéciaux (par exemple, "e" est le symbole de pause qui
|
|
ressemble généralement à ||). Vous pouvez avoir une police pour les caractères
|
|
normaux et une autre pour les symboles. Lisez la section sur les
|
|
<link linkend="skin-fonts-symbols">symboles</link> pour plus d'informations.
|
|
</para></note>
|
|
</sect2>
|
|
|
|
<sect2 id="skin-file-subwindow">
|
|
<title>Sous-fenêtre</title>
|
|
<para>
|
|
Vous trouverez ci-dessous la liste des objets utilisables dans le bloc
|
|
'<literal>window = sub</literal>' . . . '<literal>end</literal>'.
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-sub-base"/>base = image, X, Y, largeur, hauteur
|
|
</literal></term>
|
|
<listitem><para>
|
|
L'image qui s'affichera dans la fenêtre. La fenêtre apparaîtra à la position
|
|
<literal>X,Y</literal> sur l'écran (<literal>0,0</literal> est le coin supérieur
|
|
gauche). Vous pouvez spécifier <literal>-1</literal> pour centre et <literal>-2</literal>
|
|
pour droite (<literal>X</literal>) et bas (<literal>Y</literal>). La fenêtre prendra
|
|
la taille de l'image. <literal>largeur</literal> et <literal>hauteur</literal>
|
|
donnent la taille de la fenêtre; ces paramètres sont optionnels (si ils sont
|
|
absents, le fenêtre prend la taille de l'image).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-background"/>background = R, V, B
|
|
</literal></term>
|
|
<listitem><para>
|
|
Vous permet de définir la couleur de fond. Utile si l'image est plus petite que la
|
|
fenêtre. <literal>R</literal>, <literal>V</literal> et <literal>B</literal>
|
|
spécifient les composantes rouge, verte et bleue de la couleur (d'un intervalle
|
|
entre 0 et 255).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="skin-file-menu">
|
|
<title>Menu</title>
|
|
<para>
|
|
Comme mentionné précédemment, le menu s'affiche en utilisant deux images. Les
|
|
entrées normales du menu sont extraite de l'image spécifiée par l'objet
|
|
<literal>base</literal>, tandis que l'entrée actuellement sélectionnée est
|
|
extraite de l'image spécifiée par l'objet <literal>selected</literal>. Vous devez
|
|
définir la taille et la position de chaque entrée du menu par l'objet
|
|
<literal>menu</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
Ils correspondent aux objets utilisés dans le bloc
|
|
'<literal>window = menu</literal>'. . .'<literal>end</literal>'.
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-menu-base"/>base = image
|
|
</literal></term>
|
|
<listitem><para>
|
|
L'image utilisée pour les entrées normales.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-selected"/>selected = image
|
|
</literal></term>
|
|
<listitem><para>
|
|
L'image utilisée pour les entrées sélectionnées.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>
|
|
<anchor id="skin-menu"/>menu = X, Y, largeur, hauteur, message
|
|
</literal></term>
|
|
<listitem><para>
|
|
Définit la position <literal>X,Y</literal> et la taille des entrées du menu dans
|
|
les images. <literal>message</literal> est le message généré quand le bouton de la
|
|
souris est relâché.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="skin-fonts">
|
|
<title>Polices</title>
|
|
<para>
|
|
Comme mentionné 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ères
|
|
n'importe ou sur l'image, mais vous devez vous assurer que leur position et taille
|
|
correspondent précisément au fichier de description.
|
|
</para>
|
|
|
|
<para>
|
|
Le fichier descriptif des polices (avec l'extension <filename>.fnt</filename>)
|
|
peut avoir des lignes de commentaires commençant par '<literal>;</literal>'.
|
|
Le fichier doit avoir une ligne du type
|
|
<anchor id="skin-font-image"/>
|
|
<programlisting>image = <replaceable>image</replaceable></programlisting>
|
|
Où <literal><replaceable>image</replaceable></literal> est le nom de l'image qui
|
|
sera utilisée pour la police (vous n'avez pas à définir d'extension).
|
|
<anchor id="skin-font-char"/>
|
|
<programlisting>"char" = X, Y, largeur, hauteur</programlisting>
|
|
Ici <literal>X</literal> et <literal>Y</literal> précisent la position du caractère
|
|
<literal>char</literal> dans l'image (<literal>0,0</literal> est le coin supérieur
|
|
gauche). <literal>largeur</literal> et <literal>hauteur</literal> sont les
|
|
dimensions du caractère en pixels.
|
|
</para>
|
|
|
|
<para>
|
|
Voici un exemple définissant les caractères A, B, C utilisant la police <filename>font.png</filename>.
|
|
<programlisting>
|
|
; Peut être "font" au lieu de "font.png".
|
|
image = font.png
|
|
|
|
; Trois caractères suffisent pour une démonstration. :-)
|
|
"A" = 0,0, 7,13
|
|
"B" = 7,0, 7,13
|
|
"C" = 14,0, 7,13
|
|
</programlisting>
|
|
</para>
|
|
|
|
<sect2 id="skin-fonts-symbols">
|
|
<title>Symboles</title>
|
|
<para>
|
|
Certains caractères ont une signification spéciale quand ils sont retournés par des
|
|
variables utilisées dans <link linkend="skin-dlabel">dlabel</link>. Ces caractères
|
|
sont censé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ère '<literal>d</literal>').
|
|
</para>
|
|
<para>
|
|
La table ci-dessous liste les caractères pouvant s'afficher comme des symboles (et
|
|
nécessitent donc une police différente).
|
|
</para>
|
|
|
|
<informaltable>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row><entry>Caractère</entry><entry>Symbole</entry></row>
|
|
</thead>
|
|
<tbody>
|
|
<row><entry><keycap>p</keycap></entry><entry>lecture</entry></row>
|
|
<row><entry><keycap>s</keycap></entry><entry>stop</entry></row>
|
|
<row><entry><keycap>e</keycap></entry><entry>pause</entry></row>
|
|
<row><entry><keycap>n</keycap></entry><entry>pas de son</entry></row>
|
|
<row><entry><keycap>m</keycap></entry><entry>son mono</entry></row>
|
|
<row><entry><keycap>t</keycap></entry><entry>son stéréo</entry></row>
|
|
<row><entry><keycap>f</keycap></entry><entry>lecture depuis un fichier</entry></row>
|
|
<row><entry><keycap>v</keycap></entry><entry>lecture depuis un Video CD</entry></row>
|
|
<row><entry><keycap>d</keycap></entry><entry>lecture depuis un DVD</entry></row>
|
|
<row><entry><keycap>u</keycap></entry><entry>lecture depuis une URL</entry></row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="skin-gui">
|
|
<title>Messages de la GUI</title>
|
|
<para>
|
|
Ce sont les messages qui peuvent être générés par les boutons, podomètres et
|
|
entrées du menu.
|
|
</para>
|
|
<note><para>
|
|
Certains messages peuvent ne pas fonctionner comme prévu (ou ne pas fonctionner du
|
|
tout). Comme vous le savez, la GUI est en cours de développement.
|
|
</para></note>
|
|
|
|
<variablelist>
|
|
<title>Contrôle de lecture:</title>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evNext</emphasis></term>
|
|
<listitem><para>
|
|
Saute à la prochaine piste dans la playlist.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evPause</emphasis></term>
|
|
<listitem><para>
|
|
Associé à la commande <literal>evPlaySwitchToPause</literal>. Ils s'utilisent pour
|
|
avoir un bouton play/pause commun. Les deux messages peuvent être assignés aux
|
|
boutons affiches exactement à la même position dans la fenêtre. Ces message mettent
|
|
la lecture en pause et le bouton <literal>evPlaySwitchToPause</literal> s'affiche
|
|
(pour indiquer que le bouton peut être pressé pour continuer la lecture).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evPlay</emphasis></term>
|
|
<listitem><para>
|
|
Commence la lecture.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evPlaySwitchToPause</emphasis></term>
|
|
<listitem><para>
|
|
Le contraire de <literal>evPauseSwitchToPlay</literal>. Ce message démarre la
|
|
lecture et l'image associée au bouton <literal>evPauseSwitchToPlay</literal>
|
|
s'affiche (pour indiquer que le bouton peut être pressé pour mettre en pause la lecture).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evPrev</emphasis></term>
|
|
<listitem><para>
|
|
Saute à la piste précédente dans la playlist.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evStop</emphasis></term>
|
|
<listitem><para>
|
|
Stoppe la lecture.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<variablelist>
|
|
<title>Avancée dans le flux:</title>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evBackward10sec</emphasis></term>
|
|
<listitem><para>
|
|
Recule de 10 secondes
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evBackward1min</emphasis></term>
|
|
<listitem><para>
|
|
Recule de 1 minute.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evBackward10min</emphasis></term>
|
|
<listitem><para>
|
|
Recule de 10 minutes.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evForward10sec</emphasis></term>
|
|
<listitem><para>
|
|
Avance de 10 secondes
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evForward1min</emphasis></term>
|
|
<listitem><para>
|
|
Avance de 1 minute.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evForward10min</emphasis></term>
|
|
<listitem><para>
|
|
Avance de 10 minutes.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evSetMoviePosition</emphasis></term>
|
|
<listitem><para>
|
|
Se place à la position (utilisable avec un podomètre; utilise la valeur relative
|
|
(0-100%) du podomètre).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<variablelist>
|
|
<title>Contrôle vidéo:</title>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evDoubleSize</emphasis></term>
|
|
<listitem><para>
|
|
Double la taille de la fenêtre vidéo.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evFullScreen</emphasis></term>
|
|
<listitem><para>
|
|
Passe en mode plein écran.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evNormalSize</emphasis></term>
|
|
<listitem><para>
|
|
Met la vidéo à sa taille réelle.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<variablelist>
|
|
<title>Contrôle audio:</title>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evDecAudioBufDelay</emphasis></term>
|
|
<listitem><para>
|
|
Diminue le délai du tampon audio.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evDecBalance</emphasis></term>
|
|
<listitem><para>
|
|
Diminue la balance.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evDecVolume</emphasis></term>
|
|
<listitem><para>
|
|
Diminue le volume.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evIncAudioBufDelay</emphasis></term>
|
|
<listitem><para>
|
|
Augmente le délai du tampon audio.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evIncBalance</emphasis></term>
|
|
<listitem><para>
|
|
Augmente la balance.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evIncVolume</emphasis></term>
|
|
<listitem><para>
|
|
Augmente le volume.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evMute</emphasis></term>
|
|
<listitem><para>
|
|
Active/désactive le son.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evSetBalance</emphasis></term>
|
|
<listitem><para>
|
|
Fixe la balance (utilisable avec un podomètre; utilise la valeur relative (0-100%)
|
|
du podomètre).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evSetVolume</emphasis></term>
|
|
<listitem><para>
|
|
Fixe le volume (utilisable avec un podomètre; utilise la valeur relative (0-100%)
|
|
du podomètre).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<variablelist>
|
|
<title>Divers:</title>
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evAbout</emphasis></term>
|
|
<listitem><para>
|
|
Ouvre la fenêtre 'A Propos'.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evDropSubtitle</emphasis></term>
|
|
<listitem><para>
|
|
Désactive le sous-titre actuellement utilisé.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evEqualizer</emphasis></term>
|
|
<listitem><para>
|
|
Active/désactive l'équalizer.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evExit</emphasis></term>
|
|
<listitem><para>
|
|
Quitte le programme.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evIconify</emphasis></term>
|
|
<listitem><para>
|
|
Iconifie la fenêtre.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evLoad</emphasis></term>
|
|
<listitem><para>
|
|
Charge un fichier (en ouvrant un mini navigateur de fichiers, où vous pouvez
|
|
choisir un fichier).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evLoadPlay</emphasis></term>
|
|
<listitem><para>
|
|
Fait la même chose que <literal>evLoad</literal>, mais démarre la lecture
|
|
automatiquement après le chargement du fichier.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evLoadSubtitle</emphasis></term>
|
|
<listitem><para>
|
|
Charge un fichier de sous-titres (avec un sélecteur de fichier)
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evLoadAudioFile</emphasis></term>
|
|
<listitem><para>
|
|
Charge un fichier audio (avec un sélecteur de fichier)
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evNone</emphasis></term>
|
|
<listitem><para>
|
|
Message vide, sans effet. (à part peut-être dans les versions CVS :-)).
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evPlayList</emphasis></term>
|
|
<listitem><para>
|
|
Ouvre/ferme la playlist.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evPlayDVD</emphasis></term>
|
|
<listitem><para>
|
|
Essaie d'ouvrir le disque dans le lecteur DVD-ROM indiqué.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evPlayVCD</emphasis></term>
|
|
<listitem><para>
|
|
Essaie d'ouvrir le disque dans le lecteur CD-ROM indiqué.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evPreferences</emphasis></term>
|
|
<listitem><para>
|
|
Ouvre la fenêtre de préférences.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evSetAspect</emphasis></term>
|
|
<listitem><para>
|
|
Fixe l'aspect de l'image.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evSetURL</emphasis></term>
|
|
<listitem><para>
|
|
Ouvre la fenêtre de saisie d'URL.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><emphasis role="bold">evSkinBrowser</emphasis></term>
|
|
<listitem><para>
|
|
Ouvre le navigateur de skins.
|
|
</para></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</sect1>
|
|
|
|
</appendix>
|