<chapter id="technical-reference">
<chapterinfo>

<authorgroup>
<author
><firstname
>Eric</firstname
> <surname
>Bischoff</surname
> </author>
&traducteurBenoitCosandier; 
</authorgroup>
<date
>2002-04-10</date
> <releaseinfo
>0.03.02</releaseinfo
> <keywordset>
<keyword
>KDE</keyword>
<keyword
>KTuberling</keyword>
<keyword
>référence technique</keyword>
</keywordset>
</chapterinfo>

<title
>Référence technique</title>

<para
>&ktuberling; offre une agréable et gratifiante introduction à la personnalisation et à la programmation de &kde; Cette application peut être étendue. Par exemple vous pouvez ajouter un nouveau terrain de jeu, sans changer le code source, en changeant les fichiers graphiques. En ajoutant les fichiers de son adéquats, les traducteurs peuvent adapter les sons à leur langue d'origine. </para>

<para
>Si vous étendez ou ajoutez des choses au jeu, pensez à envoyer vos modifications au développeur <ulink url="mailto:e.bischoff@noos.fr"
>Éric Bischoff</ulink
> (en anglais) pour qu'elles soient inclues lors de la future version. </para>

<sect1 id="for-artists">
<title
>Pour les graphistes</title>

<para
>Les dimensions et la forme du terrain de jeu ainsi que le nombre d'objets peuvent être changés. De nouveaux terrains de jeu peuvent être ajoutés. Deux fichiers d'image par terrain de jeu seulement doivent être créés : un tableau de jeu et un masque. Il y a un maximum autorisé de 8 terrains de jeu, dont seulement 3 sont utilisés pour le moment. </para>

<para
>Six images sont utilisées par &ktuberling; : <filename
>potato-game.png</filename
>, <filename
>potato-mask.png</filename
>, <filename
>penguin-game.png</filename
>,.<filename
>penguin-mask.png</filename
>, <filename
>aquarium-game.png</filename
> et <filename
>aquarium-mask.png</filename
>. L'emplacement standard de ces fichiers est le dossier <filename class="directory"
>$KDEDIR/share/apps/ktuberling/pics/</filename
>. </para>

<para
>Le premier type d'images, <filename
>*-game.png</filename
> contient le terrain de jeu et les objets que l'utilisateur choisit. C'est le graphisme que voit l'utilisateur quand il joue au jeu. </para>

<para
>Le second type d'images, <filename
>*-mask.png</filename
>, contient seulement les masques des objets. Les masques sont utilisés pour délimiter les bords des objets et, dans certains cas, donner à l'objet une certaine transparence (par exemple, les lunettes). Il est obligatoire de placer les objets au même emplacement dans le terrain de jeu et dans le fichier de masques. </para>

<para
>Dans le même dossier, un fichier nommé <filename
>layout.xml</filename
> (<filename
>$KDEDIR/share/apps/ktuberling/pics/layout.xml</filename
>) indique quelles images utiliser et les relie aux éléments de menu. Il contient également les paramètres de position du terrain de jeu ainsi que des objets et des masques. Il affecte les sons aux objets et classe ces objets dans des groupes. Enfin, il déclare des langues sous forme d'ensembles de sons traduits. Ce fichier suit la syntaxe standard XML (pour plus de détails, <link linkend="layout-details"
>voir plus bas</link
>). </para>

<para
>Toujours dans ce dossier, un fichier nommé <filename
>layout.i18n</filename
> (<filename
>$KDEDIR/share/apps/ktuberling/pics/layout.xml</filename
>) récapitule les chaînes de <filename
>layout.xml</filename
> qui peuvent être traduites. <itemizedlist>
<listitem
><para
>Les éléments de menu qui permettent de choisir les terrains de jeu et la langue.</para
></listitem>
<listitem
><para
>Les noms des catégories d'objets</para
></listitem>
</itemizedlist>
</para>

<para
>Dans le dossier de niveau supérieur, un fichier nommé <filename
>ktuberlingui.rc</filename
> (<filename
>$KDEDIR/share/apps/ktuberling/ktuberlingui.rc</filename
>) est un second fichier XML décrivant les menus de &ktuberling;. Il devrait contenir une balise <markup
>&lt;action&gt;</markup
> par terrain de jeu et par langue. Le nom symbolique de cette action devrait être identique au nom symbolique de l'action dans <filename
>layout.xml</filename
>. </para>

</sect1>

<sect1 id="for-translators">
<title
>Traduction</title>

<para
>À coté de l'habituel mécanisme basé sur les fichiers <literal role="extension"
>.po</literal
> pour traduire les chaînes du programme, les sons peuvent être localisés également. </para>

<para
>Si les différents traducteurs ont l'opportunité d'enregistrer leur voix dans un fichier <literal role="extension"
>.wav</literal
>, ils peuvent placer ce fichier dans le sous-dossier propre au langage dans le dossier des sons. Le nom des fichiers son est alors traduit dans le fichier <filename
>layout.xml</filename
>. Par exemple, si le langage de destination est l'italien, les traducteurs peuvent enregistrer leur voix dans un fichier <literal role="extension"
>.wav</literal
> situé dans <filename
>$KDEDIR/share/apps/ktuberling/sounds/it</filename
>. Ils peuvent ensuite traduire le son nommé <quote
>hat</quote
> en des noms de fichiers comme <filename
>it/cappello.wav</filename
>. </para>

<para
>Dans une prochaine version, &ktuberling; utilisera le format de fichiers OGG Vorbis rc3 pour les sons. À ce moment, il sera possible de convertir les fichiers VAV en OGG Vorbis rc3 grâce à la commande suivante : <screen
><prompt
>$</prompt
> <userinput
>oggenc_rc3 -o <replaceable
>son.ogg</replaceable
> <replaceable
>son.wav</replaceable
></userinput
>
</screen>
</para>

<para
>Des informations sur la façon dont fonctionnent les mécanismes de traduction dans &kde; sont disponible à l'adresse <ulink url="http://i18n.kde.org/translation-howto/index.html"
>The KDE Translation HOWTO</ulink
> ou en français dans <ulink url="http://fr.i18n.kde.org/docs/howto/index.html"
>Le HOWTO de traduction de KDE</ulink
>. </para>

</sect1>

<sect1 id="for-programmers">

<title
>Pour les programmeurs</title>
<para
>&ktuberling; n'est pas réellement difficile à améliorer pour les programmeurs.</para>

<sect2 id="classes">
<title
>Classes C++</title>

<variablelist>
<varlistentry>
<term
><classname
>TopLevel</classname
></term>
<listitem>
<para
>Gestion du programme principal et de la fenêtre principale</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><classname
>PlayGround</classname
></term>
<listitem>
<para
>Description d'un des niveaux du jeu</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>ToDraw</classname
></term>
<listitem>
<para
>Description d'un des <quote
>objets</quote
> graphiques à dessiner</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>SoundFactory</classname
></term>
<listitem>
<para
>Description d'une des langues et de ses sons</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>Action</classname
></term>
<listitem>
<para
>Une des manipulations de l'utilisateur, rangée dans la pile annuler/refaire.</para
> </listitem>
</varlistentry>
</variablelist>

</sect2>

<sect2 id="files-structure">
<title
>Structure du fichier <literal role="extension"
>.tuberling</literal
> </title>

<para
>Un fichier <literal role="extension"
>.tuberling</literal
> contient toutes les données nécessaire pour redessiner une patate. il peut être édité avec un éditeur de texte ordinaire.</para>

<para
>La première ligne contient le numéro du terrain de jeu.</para>

<para
>Pour toutes les autres lignes, il y a un objet graphique par ligne, dans l'ordre dans lequel ils seront affichés. Chaque ligne contient 5 nombres : l'identifiant de l'objet, et le rectangle où il devra être dessiné (gauche, haut, droite, bas). Les nombres sont séparés par des espaces.</para>

</sect2>
</sect1>

<sect1 id="layout-details">
<title
>Structure du fichier de disposition (<filename
>layout.xml</filename
>)</title>

<para
>La balise de plus haut niveau est unique et est intitulée <markup
>&lt;ktuberling&gt;</markup
>. Elle contient plusieurs balises <markup
>&lt;playground&gt;</markup
>, une par terrain de jeu, ainsi que plusieurs balises <markup
>&lt;language&gt;</markup
>, une par langue. </para>

<para
>La balise <markup
>&lt;playground&gt;</markup
> a deux attributs : <markup
>gameboard</markup
> et <markup
>masks</markup
>. Ces attributs indiquent le nom des fichiers contenant les images. La balise <markup
>&lt;playground&gt;</markup
> contient également une balise <markup
>&lt;menuitem&gt;</markup
>, une balise <markup
>&lt;editablearea&gt;</markup
>, plusieurs balises <markup
>&lt;category&gt;</markup
> et plusieurs balises <markup
>&lt;object&gt;</markup
>. </para>

<para
>La balise <markup
>&lt;menuitem&gt;</markup
> décrit l'identificateur de l'action associée à l'élément de menu permettant de choisir la position de la zone où vous pouvez faire glisser des objets, ainsi que l'intitulé de cet élément de menu. Cet identificateur d'action doit être identique à celui dans <filename
>ktuberlingui.rc</filename
>. </para>

<para
>La balise <markup
>&lt;editablearea&gt;</markup
> décrit la position de la zone où vous pouvez faire glisser les objets, ainsi que le nom du son qui lui est associé. </para>

<para
>La balise <markup
>&lt;category&gt;</markup
> décrit la position et l'intitulé d'un groupe d'objets. Par exemple, il permet de décrire la position et l'intitulé du groupe d'<quote
>accessoires</quote
>. </para>

<para
>La balise <markup
>&lt;object&gt;</markup
> décrit la position (dans le plateau de jeu et dans les masques) d'un objet, ainsi que le nom du son qui lui est associé. </para>

<para
>La balise <markup
>&lt;language&gt;</markup
> a un attribut : <markup
>code</markup
>. Cet attribut indique le code des réglages locaux pour cette langue. La balise <markup
>&lt;language&gt;</markup
> contient également une balise <markup
>&lt;menuitem&gt;</markup
> et plusieurs balises <markup
>&lt;sound&gt;</markup
>. </para>

<para
>Les balises de plus bas niveau ne sont pas expliquées ici, car leur signification est relativement évidente. Si vous modifiez <filename
>layout.xml</filename
>, n'oubliez pas de modifier <filename
>layout.i18n</filename
> ainsi que <filename
>ktuberlingui.rc</filename
> en conséquence. </para>

</sect1>
</chapter>
