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

<authorgroup>
<author
><firstname
>Eric</firstname
> <surname
>Bischoff</surname
> </author>
&Niels.Reedijk; 
</authorgroup>
<date
>2002-04-10</date
> <releaseinfo
>0.03.02</releaseinfo
> <keywordset>
<keyword
>KDE</keyword>
<keyword
>KTuberling</keyword>
<keyword
>technische referentie</keyword>
</keywordset>
</chapterinfo>

<title
>Technische referentie</title>

<para
>&ktuberling; biedt een elegante en belonende inleiding in het programmeren voor en aanpassen van &kde;. Het programma kan worden uitgebreid. Bijvoorbeeld, zonder dat u hoeft te programmaren kunt u nieuwe speelvelden toevoegen door de grafische bestanden te wijzigen. Door de juiste geluidsbestanden kunnen vertalers de geluiden aanpassen aan hun eigen taal! </para>

<para
>Als u het spel uitbreidt, overweeg dan om uw toevoegingen te sturen aan de ontwikkelaar <ulink url="mailto:e.bischoff@noos.fr"
>Eric Bischoff</ulink
> zodat ze in toekomstige versies kunnen worden bijgesloten. </para>

<sect1 id="for-artists">
<title
>Voor artiesten</title>

<para
>De grootte en vorm van het speelveld en het aantal objecten kan worden gewijzigd. Nieuwe speelvelden kunnen worden toegevoegd. U hoeft slechts twee afbeeldingsbestanden te maken voor elk speelveld: een spelbord en een masker. Er zijn maximaal 8 speelvelden mogelijk, waarvan momenteel slechts 3 worden gebruikt. </para>

<para
>Er worden zes afbeeldingen gebruikt in &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
> en <filename
>aquarium-mask.png</filename
>. De standaardlocatie voor deze bestanden is de map <filename class="directory"
>$KDEDIR/share/apps/ktuberling/pics/</filename
>. </para>

<para
>Het eerste type afbeeldingen, <filename
>*-game.png</filename
> bevatten het speelveld en de objecten die de gebruiker selecteert. Het is de illustratie die de gebruiker ziet tijdens het spelen van het spel. </para>

<para
>Het tweede type afbeeldingen, <filename
>*-mask.png</filename
> bevat alleen de masker van de objecten. De maskers worden gebruikt om de randen van de objecten te bepalen, en, in sommige gevallen, het object enige transparantie te geven (bijv. de brillenglazen). Het is vereist dat de objecten op dezelfde positie in het spelbord-bestand en maskerbestand worden geplaatst. </para>

<para
>In dezelfde map is een bestand genaamd <filename
>layout.xml</filename
> te vinden (<filename
>$KDEDIR/share/apps/ktuberling/pics/layout.xml</filename
>). Dit bestand vertelt welke afbeeldingen gebruikt dienen te worden en koppelt ze aan menuopties. Het bevat ook de positieparameters van het speelveld en de objecten in het spelbord en in de maskers. Het koppelt de geluiden aan objecten en plaatst de objecten in groepen. Tot slot declareert het talen als sets vertaalde geluiden. Het volgt de standaard XML-syntaxis (<link linkend="layout-details"
>zie hieronder voor meer details</link
>). </para>

<para
>In dezelfde map bevindt zich ook een bestand genaamd <filename
>layout.i18n</filename
> (<filename
>$KDEDIR/share/apps/ktuberling/pics/layout.i18n</filename
>). Deze bevat de tekenreeksen uit <filename
>layout.xml</filename
> die kunnen worden vertaald: <itemizedlist>
<listitem
><para
>De menuopties die gebruikt worden om het speelveld en de taal te selecteren</para
></listitem>
<listitem
><para
>De namen van de objectcategorieën</para
></listitem>
</itemizedlist>
</para>

<para
>Een map hoger bevindt zich een bestand genaamd <filename
>ktuberlingui.rc</filename
> (<filename
>$KDEDIR/share/apps/ktuberling/ktuberlingui.rc</filename
>). Dit is een XML-bestand dat de menu's van &ktuberling; beschrijft. Dit bestand dient één <markup
>&lt;action&gt;</markup
>-tag per speelveld en taal te bevatten. De symbolische naam van de actie in dit bestand dient identiek te zijn aan de symbolische naam van de actie in <filename
>layout.xml</filename
>. </para>

</sect1>

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

<para
>Naast de gebruikelijke mechanisme met <literal role="extension"
>.po</literal
>-bestanden voor het vertalen van programmateksten en documentatie kunnen ook de geluiden worden overgezet naar andere talen. </para>

<para
>Als vertalers hun stem kunnen opnemen als  <literal role="extension"
>.ogg</literal
> of <literal role="extension"
>.wav</literal
>-bestand dan kunnen ze deze opslaan in de taalspecifieke submap van de geluidenmap. (<literal role="extension"
>.wav</literal
>-bestanden dient u eerst om te zetten naar <literal role="extension"
>.ogg</literal
>, lees verderop in de documentatie hoe u dat doet.) De naam van het geluid dient dan te worden toegewezen aan een bestand in het bestand <filename
>layout.xml</filename
>. Bijvoorbeeld, als de doeltaal Italiaans is, dan kunnen de vertalers hun stem opnemen in <literal role="extension"
>.ogg</literal
>-bestanden in de map <filename
>$KDEDIR/share/apps/ktuberling/sounds/it</filename
>. Vervolgens kunnen ze het geluid genaamd <quote
>hat</quote
> toewijzen aan de bestandsnaam <filename
>it/cappello.ogg</filename
>. </para>

<para
>De huidige versies van &ktuberling; maken gebruik van het bestandsformaat OGG Vorbis rc3 voor de geluiden. U kunt uw WAV-bestanden omzetten naar OGG Vorbis rc3 door middel van het volgende commando: <screen
><prompt
>$</prompt
> <userinput
>oggenc_rc3 -o <replaceable
>geluid.ogg</replaceable
> <replaceable
>geluid.wav</replaceable
></userinput
>
</screen>
</para>

<para
>Informatie over hoe u gebruik kunt maken met de vertaalmechanismen van &kde; is beschikbaar in <ulink url="http://i18n.kde.org/translation-howto/index.html"
>The KDE Translation HOWTO</ulink
>. Kijk ook op de vertalerswebsite van het <ulink url="http://www.kde.nl/helpen/vertaling.html"
>Nederlandse KDE-team</ulink
>. </para>

</sect1>

<sect1 id="for-programmers">

<title
>Voor programmeurs</title>
<para
>&ktuberling; is voor programmeurs niet moeilijk om uit te breiden.</para>

<sect2 id="classes">
<title
>C++-klassen</title>

<variablelist>
<varlistentry>
<term
><classname
>TopLevel</classname
></term>
<listitem>
<para
>TopLevel window en basic program management</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><classname
>PlayGround</classname
></term>
<listitem>
<para
>Beschrijving van een van de spelniveaus</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>ToDraw</classname
></term>
<listitem>
<para
>Beschrijving van een van de grafische <quote
>objecten</quote
> om te tekenen</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>SoundFactory</classname
></term>
<listitem>
<para
>Beschrijving van een van de talen en diens geluiden</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>Action</classname
></term>
<listitem>
<para
>Een van de gebruikers' manipulatie in de undo/redo stack</para
> </listitem>
</varlistentry>
</variablelist>

</sect2>

<sect2 id="files-structure">
<title
>Bestandsstructuur van <literal role="extension"
>.tuberling</literal
></title>

<para
>Een <literal role="extension"
>.tuberling</literal
>-bestand bevat alle nodige gegevens om een tuberling te hertekenen. Het kan worden bewerkt met een doorsnee teksteditor.</para>

<para
>De eerste regel bevat het nummer van het speelveld.</para>

<para
>Op alle andere regels is er een grafisch object per regel, in de volgorde die is gebruikt om ze te tekenen. Elke regel bevat 5 getallen: de identifier van het object en de rechthoek waar het getekend dient te worden (links, boven, rechts, onder). De getallen worden van elkaar gescheiden met witruimtes.</para>

</sect2>
</sect1>

<sect1 id="layout-details">
<title
>De structuur van het layout-bestand (<filename
>layout.xml</filename
>)</title>

<para
>De tag top-level is uniek en heet <markup
>&lt;ktuberling&gt;</markup
>. Het bevat enkele <markup
>&lt;playground&gt;</markup
>-tags, een per speelveld, en enkele <markup
>&lt;language&gt;</markup
>-tags, een per taal. </para>

<para
>De tag <markup
>&lt;playground&gt;</markup
> heeft twee attributen: <markup
>gameboard</markup
> en <markup
>masks</markup
>. Deze attributen geven de naam van de bestanden die de afbeeldingen bevatten. De tag <markup
>&lt;playground&gt;</markup
> bevat ook een <markup
>&lt;menuitem&gt;</markup
>-tag, een <markup
>&lt;editablearea&gt;</markup
>-tag, meerdere <markup
>&lt;category&gt;</markup
>-tags en enkele <markup
>&lt;object&gt;</markup
>-tags. </para>

<para
>De tag <markup
>&lt;menuitem&gt;</markup
> beschrijft de action identifier van de menuoptie voor het selecteren van de positie ban het gebied waar u objecten kan plaatsen, en het label voor deze menuoptie. Deze action identifier dient identiek te zijn aan degene in <filename
>ktuberlingui.rc</filename
>. </para>

<para
>De tag <markup
>&lt;editablearea&gt;</markup
> beschrijft de positie van het gebied waar u objecten kunt plaatsen, en de naam van het geluid dat er mee is geassocieerd. </para>

<para
>De tag <markup
>&lt;category&gt;</markup
> beschrijft de positie en het label van een tekst die een groep objecten beschrijft. Bijvoorbeeld, het kan de positie en de tekst van de groep met <quote
>hebbedingetjes</quote
> beschrijven. </para>

<para
>De tag <markup
>&lt;object&gt;</markup
> beschrijft de positie (in het spelbord en in de maskers) van een object en de naam van het bijhorende geluid. </para>

<para
>De tag <markup
>&lt;language&gt;</markup
> bevat één attribuut: <markup
>code</markup
>. Dit attribuut geeft de code van de taal. De tag <markup
>&lt;language&gt;</markup
> bevat een <markup
>&lt;menuitem&gt;</markup
>-tag en enkele <markup
>&lt;sound&gt;</markup
>-tags. </para>

<para
>De tags op een lager niveau worden hier niet uitgelegd, aangezien hun betekenis voor zich spreekt. Als u <filename
>layout.xml</filename
> bewerkt, vergeet dan niet om ook <filename
>layout.i18n</filename
> en <filename
>ktuberlingui.rc</filename
> te wijzigen. </para>

</sect1>
</chapter>
