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

<authorgroup>
<author
><firstname
>Éric</firstname
> <surname
>Bischoff</surname
> </author>
&Freek.de.Kruijf; 
</authorgroup>

<date
>2016-05-11</date>
<releaseinfo
>1.0.0 (Applications 16.04)</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 onderhouder <ulink url="mailto:alex@eyeos.org"
>Alex Fiestas</ulink
> zodat ze in toekomstige versies kunnen worden bijgesloten. </para>

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

<para
>Om een nieuwe &ktuberling; speelveld aan te maken dient u: </para>

<itemizedlist>

<listitem>
    <para
>Het speelveld te tekenen in een een SVG-bestand, waarin u: <itemizedlist>
            <listitem
><para
>De plaats waar items naar toe gesleept worden "background" wordt genoemd.</para
></listitem>
            <listitem
><para
>Geef elk van de versleepbare items een unieke naam.</para
></listitem>
        </itemizedlist>
    </para>
</listitem>

<listitem>
    <para
>Maak een thema-bestand aan, met het volgende schema:</para>
    <programlisting
>&lt;playground gameboard="<replaceable
>uwSVGbestand</replaceable
>" name="<replaceable
>hetBureaubladBestand</replaceable
>"&gt;
    &lt;object name="<replaceable
>itemNaam</replaceable
>" sound="<replaceable
>geluidNaam</replaceable
>" scale="<replaceable
>eenWaarde</replaceable
>" /&gt;
    ...
    ...
    ...
    &lt;/playground&gt;
    </programlisting>
    <itemizedlist>
        <listitem
><para
><replaceable
>uwSVGbestand</replaceable
> is de naam van het svg-bestand dat de tekening bevat.</para
></listitem>
        <listitem
><para
><replaceable
>hetBureaubladBestand</replaceable
> is de naam van het bureaubladbestand dat de naam van het thema bevat.</para
></listitem>
        <listitem
><para
>Voor elk object hebt u een &lt;object&gt;-item nodig. <replaceable
>itemNaam</replaceable
> is de unieke naam die u gebruikt voor het SVG-bestand, <replaceable
>geluidNaam</replaceable
> is de naam van het geluid dat zal worden afgespeeld bij het slepen, zie "sound themes howto" voor meer informatie.</para
></listitem>
        <listitem
><para
>scale is optioneel en <replaceable
>eenWaarde</replaceable
> is de schaalfactor die zal worden gebruikt bij het tekenen van dit object buiten de opslagplaats, als deze niet is gespecificeerd dan is deze 1.</para
></listitem>
    </itemizedlist>
</listitem>

<listitem>
    <para
>Maak een .desktop-bestand aan, met dit schema</para>
    <programlisting
>[KTuberlingTheme]
    Name=<replaceable
>themaNaam</replaceable
>
    </programlisting>
    <itemizedlist>
        <listitem
><para
><replaceable
>themaNaam</replaceable
> is de naam die het thema identificeert en zal worden getoond in het menu Speelveld.</para
></listitem>
    </itemizedlist>
</listitem>

<listitem>
    <para
>Als u het thema toevoegt aan de &ktuberling;-repository, voeg dan .svg-, .theme-, .desktop-bestanden toe aan de sectie FILES van CMakeLists.txt in de map pics/ </para>
</listitem>

<listitem>
    <para
>Als u het wilt installeren voor uzelf, plaats .svg-, .theme- en .desktop-bestanden in <filename class="directory"
>ktuberling/pics</filename
> in <userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation</option
></userinput
> </para>
</listitem>

</itemizedlist>

</sect1>

<sect1 id="for-translators">
<title
>Voor vertalers</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
>Om een nieuw &ktuberling; geluid aan te maken dient u: </para>

<itemizedlist>

<listitem
><para
>Neem de geluiden op in OGG Vorbis rc3 bestandsformaat.</para
></listitem>

<listitem>
<para
>Maak een bestand <replaceable
>uwTaalTweeLetterCode</replaceable
>.soundtheme, het moet dit schema volgen:</para>
<programlisting
>&lt;language code="<replaceable
>uwTaalTweeLetterCode</replaceable
>"&gt;
&lt;sound name="<replaceable
>geluidsNaam</replaceable
>" file="<replaceable
>relatiefPad</replaceable
>" /&gt;
...
...
...
&lt;/language&gt;
</programlisting>
<itemizedlist>
<listitem
><para
><replaceable
>uwTaalTweeLetterCode</replaceable
> is de twee lettercode van uw taal, bijvoorbeeld nl voor Nederlands.</para
></listitem>
<listitem
><para
>Voor elke klank moet een &lt;sound&gt;-item. <replaceable
>geluidsNaam</replaceable
> overeenkomen met de geluidsNaam gespecificeerd in het playground-thema (zie thema's HOWTO). <replaceable
>relatievePad</replaceable
> zou het relatieve pad moeten zijn waar u het bestand met deze klank in gaat installeren, Dit is typisch eenUniekPad/geluidsNaam.format (eenUniekPad kan bijvoorbeeld uw twee-letterige taalcode zijn).</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Als u het geluidsthema toevoegt aan de &ktuberling; in uw taalmap:</para>
<itemizedlist>
<listitem
><para
>Voeg de klankbestanden en het .soundtheme-bestand toe aan de map data/kdegames/ktuberling van de vertalingen in uw taal.</para
></listitem>
<listitem
><para
>In diezelfde map hebt u een CMakeLists.txt nodig die beschrijft hoe de bestanden te instelleren, dit is typisch:</para>
<!--FIXME l10n-kf5/*/data/kdegames/ktuberling/CMakeLists.txt has DATA_INSTALL_DIR, has this to be changed?-->
<programlisting
>FILE( GLOB ogg-bestanden *.ogg)
install( FILES ${datafiles} DESTINATION ${DATA_INSTALL_DIR}/ktuberling/sounds/<replaceable
>uwTaalTweeLetterCode</replaceable
> )
install( FILES <replaceable
>uwTaalTweeLetterCode</replaceable
>.soundtheme DESTINATION ${DATA_INSTALL_DIR}/ktuberling/sounds/ )
</programlisting>
</listitem>
</itemizedlist>
</listitem>

<listitem>
<para
>Als u het wilt installeren voor uzelf:</para>
<itemizedlist>
<listitem
><para
>Plaats het bestand <replaceable
>uw_twee_letter_taalcode</replaceable
>.soundtheme in <filename class="directory"
>ktuberling/sounds</filename
> in <userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation </option
></userinput
></para
></listitem>
<listitem
><para
>Plaats uw_geluidsbestanden in <filename class="directory"
>ktuberling/sounds/someUniquePath</filename
> in<userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation </option
></userinput
></para
></listitem>
</itemizedlist>
</listitem>

</itemizedlist>

<para
>Informatie over hoe u gebruik kunt maken met de vertaalmechanismen van &kde; is beschikbaar in <ulink url="http://l10n.kde.org/docs/translation-howto/index.html"
>The &kde; HOWTO voor vertalen</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
>Actie</classname
></term>
<listitem>
<para
>Een van de gebruikers' manipulatie in de undo/redo stack</para
> </listitem>
</varlistentry>
</variablelist>

</sect2>

</sect1>
</chapter>
