Mercurial > mplayer.hg
view DOCS/xml/de/skin.xml @ 26513:133c98f1c5a8
Only compile libmpcodecs/ve_qtvideo.c on Windows.
author | diego |
---|---|
date | Sat, 26 Apr 2008 10:53:32 +0000 (2008-04-26) |
parents | 94e084f0e8ea |
children | cc58a1e919d9 |
line wrap: on
line source
<?xml version="1.0" encoding="utf-8"?> <!-- in sync with r21612 --> <!-- missing cosmetic commit 21537 --> <appendix id="skin"> <title><application>MPlayer</application>s Skinformat</title> <sect1 id="skin-overview"> <title>�berblick</title> <para> Es hat nicht wirklich etwas mit dem Skinformat zu tun, aber du solltest wissen, dass <application>MPlayer</application> <emphasis role="bold">kein</emphasis> eingebautes Skin besitzt, also <emphasis role="bold">muss zumindest ein Skin installiert sein, damit das GUI verwendet werden kann.</emphasis> </para> <sect2 id="skin-overview-directories"> <title>Verzeichnisse</title> <para> Die nach Skins durchsuchten Verzeichnisse sind (der Reihe nach): <orderedlist> <listitem> <para> <filename class="directory">$(DATADIR)/skins/</filename> </para> </listitem> <listitem> <para> <filename class="directory">$(PREFIX)/share/mplayer/skins/</filename> </para> </listitem> <listitem> <para> <filename class="directory">~/.mplayer/skins/</filename> </para> </listitem> </orderedlist> </para> <para> Beachte, dass der erste Pfad je nach Art der <application>MPlayer</application>-Konfiguration variieren kann (siehe Argumente <option>--prefix</option> und <option>--datadir</option> des <command>configure</command>-Scripts). </para> <para> Jedes Skin wird in sein eigenes Verzeichnis unterhalb einem der oben aufgef端hrten Verzeichnisse installiert, zum Beispiel: <screen>$(PREFIX)/share/mplayer/skins/default/</screen> </para> </sect2> <sect2 id="skin-overview-formats"> <title>Bildformate</title> <para> Die Bilder m端ssen Truecolor-PNGs sein (24 oder 32 bpp). </para> <para> Im Hauptfenster und in der Abspielleiste (siehe unten) kannst du Bilder mit 'Transparenz' verwenden: Mit der Farbe #FF00FF (Magenta) gef端llte Bereiche sind beim Betrachten mit <application>MPlayer</application> voll transparent. Dies bedeutet, dass du sogar Formfenster haben kannst, wenn dein X-Server die XShape-Extension besitzt. </para> </sect2> <sect2 id="skin-overview-components"> <title>Skin-Komponenten</title> <para> Skins sind ziemlich frei im Format (im Unterschied zu den Skins mit festem Format von <application>Winamp</application>/<application>XMMS</application> zum Beispiel), somit liegt es an dir, einen tollen zu kreieren. </para> <para> Zur Zeit sind vier Fenster zu dekorieren: das <link linkend="skin-file-main">Hauptfenster</link>, das <link linkend="skin-file-subwindow">Unterfenster</link>, die <link linkend="skin-file-main">Abspielleitse</link> und das <link linkend="skin-file-menu">Skin-Men端</link> (das durch einen Rechtsklick aktiviert werden kann). <itemizedlist> <listitem> <para> Das <emphasis role="bold">Hauptfenster</emphasis> und/oder die <emphasis role="bold">Abspielleiste</emphasis> befindet sich dort, wo du <application>MPlayer</application> kontrollieren kannst. Der Hintergrund des Fensters ist eine Grafik. Ins Fenster k旦nnen (und m端ssen) diverse Elemente platziert werden: <emphasis>Buttons</emphasis>, <emphasis>Potentiometer</emphasis> (Schieberegler) und <emphasis>Labels</emphasis>. F端r jedes Element musst du dessen Position und Gr旦�e angeben. </para> <para> Ein <emphasis role="bold">Button</emphasis> besitzt drei Zust辰nde (gedr端ckt, losgelassen, deaktiviert), deshalb muss seine Grafik vertikal in drei Teile getrennt werden. Siehe Eintrag <link linkend="skin-button">Button</link> f端r mehr Details. </para> <para> Ein <emphasis role="bold">Potentiometer</emphasis> (haupts辰chlich f端r die Suchleiste und die Lautst辰rke-/Balance-Regler) kann durch die Aufteilung der Grafik in verschiedene untereinander liegende Teile eine beliebige Anzahl von Phasen haben. Siehe <link linkend="skin-hpotmeter">hpotmeter</link> und <link linkend="skin-potmeter">potmeter</link> f端r Details. </para> <para> <emphasis role="bold">Labels</emphasis> sind ein wenig speziell: Die Zeichen, die man zu ihrer Darstellung ben旦tigt, werden von einer Grafikdatei und die Zeichen in der Grafik durch eine <link linkend="skin-fonts">Schrift-Beschreibungsdatei</link> festgelegt. Letztere ist eine Volltextdatei, welche die x-,y-Position und Gr旦�e jedes Zeichens in der Grafik beschreibt (die Grafikdatei und ihre Schrift-Beschreibungsdatei bilden <emphasis>zusammen</emphasis> eine Schrift). Siehe <link linkend="skin-dlabel">dlabel</link> und <link linkend="skin-slabel">slabel</link> f端r Details. </para> <note> <para> Alle Grafiken k旦nnen wie im Abschnitt 端ber die <link linkend="skin-overview-formats">Grafikformate</link> erkl辰rt volle Transparenz besitzen. Wenn der X-Server keine XShape-Extension unterst端tzt, werden die als transparent markierten Teile schwarz. Wenn du dieses Feature gerne nutzen m旦chtest, muss die Breite der Hintergrundgrafik des Hauptfensters durch 8 teilbar sein. </para> </note> </listitem> <listitem> <para> Das <emphasis role="bold">Unterfenster</emphasis> ist dort, wo der Film erscheint. Es kann eine festgelegte Grafik anzeigen, wenn kein Film geladen ist (es ist ziemlich langweilig, ein leeres Fenster vor sich zu haben :-)) <emphasis role="bold">Beachte:</emphasis> Transparenz ist hier <emphasis role="bold">nicht erlaubt</emphasis>. </para> </listitem> <listitem> <para> Das <emphasis role="bold">Skin-Men端</emphasis> ist ganz einfach ein Weg, <application>MPlayer</application> mittels der Men端eintr辰ge zu kontrollieren. Zwei Grafiken sind f端r das Men端 erforderlich: eine davon ist die Basisgrafik, die den Normalzustand des Men端s darstellt, die andere wird zur Anzeige der gew辰hlten Eintr辰ge verwendet. Wenn du das Men端 aufklappst, wird die erste Grafik angezeigt. Bewegst du die Maus 端ber die Men端eintr辰ge, wird der aktuell gew辰hlte Eintrag aus der zweiten Grafik 端ber den Men端eintrag unterhalb des Mauszeigers kopiert (die zweite Grafik wird nie als ganzes angezeigt). </para> <para> Ein Men端eintrag wird definiert durch seine Position und Gr旦�e innerhalb der Grafik (sieh nach mehr Details im Abschnitt 端ber das <link linkend="skin-file-menu">Skin-Men端</link>). </para> </listitem> </itemizedlist> </para> <para> Eine wichtige Sache wurde noch nicht aufgef端hrt: Damit Buttons, Potentiometer und Men端eintr辰ge funktionieren, muss <application>MPlayer</application> wissen, was er machen soll, wenn sie angeklickt werden. Dies geschieht mittels <link linkend="skin-gui">Meldungen</link> (Ereignisse). F端r diese Elemente musst du die beim Klick auf sie zu generierenden Meldungen definieren. </para> </sect2> <sect2 id="skin-files"> <title>Dateien</title> <para> Du ben旦tigst folgende Dateien, um ein Skin zu bauen: <itemizedlist> <listitem> <para> Die Konfigurationsdatei genannt <link linkend="skin-file">skin</link> erz辰hlt <application>MPlayer</application>, wie unterschiedliche Teile des Skins zusammengef端gt werden und was er tun soll, wenn du irgendwo innerhalb des Fenster hinklickst. </para> </listitem> <listitem> <para> Die Hintergrundgrafik f端rs Hauptfenster. </para> </listitem> <listitem> <para> Grafiken f端r die Elemente im Hauptfenster (einschlie�lich einer oder mehrerer Schrift-Beschreibungsdateien zum Zeichnen der Labels). </para></listitem> <listitem> <para> Die Grafik, die im Unterfenster angezeigt werden soll (optional). </para> </listitem> <listitem> <para> Zwei Grafiken f端r das Skin-Men端 (sie werden nur gebraucht, wenn du ein Men端 erzeugen m旦chtest). </para> </listitem> </itemizedlist> Mit Ausnahme der skin-Konfigurationsdatei kannst du die anderen Dateien benennen, wie es dir beliebt (beachte aber, dass Schrift-Beschreibungsdateien eine <filename>.fnt</filename>-Erweiterung besitzen m端ssen). </para> </sect2> </sect1> <sect1 id="skin-file"> <title>Die skin-Datei</title> <para> Wie oben erw辰hnt, ist dies die skin-Konfigurationsdatei. Sie ist Zeilen-orientiert; Kommentarzeilen beginnen mit einem '<literal>;</literal>' Semikolon am Zeilenanfang (es sind nur Leer- und Tabulator-Zeichen vor dem '<literal>;</literal>' erlaubt). </para> <para> Die Datei ist in Abschnitte unterteilt. Jeder Abschnitt beschreibt den Skin f端r eine Anwendung und besitzt folgende Form: <programlisting><!-- -->section = <replaceable>Abschnittsname</replaceable> . . . end </programlisting> </para> <para> Zur Zeit gibt es nur eine Anwendung, somit brauchst du nur einen Abschnitt: Sein Name ist <emphasis role="bold">movieplayer</emphasis>. </para> <para> Innerhalb dieses Abschnitts wird jedes Fenster durch einen Block folgender Form beschrieben: <programlisting><!-- -->window = <replaceable>Fenstername</replaceable> . . . end </programlisting> </para> <para> wobei <replaceable>Fenstername</replaceable> einer dieser Zeichenketten sein kann: <itemizedlist> <listitem><para><emphasis role="bold">main</emphasis> - f端r das Hauptfenster</para></listitem> <listitem><para><emphasis role="bold">sub</emphasis> - f端r das Unterfenster</para></listitem> <listitem><para><emphasis role="bold">menu</emphasis> - f端r das Skin-Men端</para></listitem> <listitem><para><emphasis role="bold">playbar</emphasis> - Abspielleiste</para></listitem> </itemizedlist> </para> <para> (Die sub- und menu-Bl旦cke sind optional - du musst kein Men端 erzeugen oder das Unterfenster dekorieren.) </para> <para> Innerhalb des Fensterblocks kannst du jedes Element f端r das Fenster durch eine Zeile dieser Form definieren: <programlisting>Element = Parameter</programlisting> Wobei <literal>Element</literal> eine Zeichenkette ist, die den Typ des GUI-Elements identifiziert, <literal>Parameter</literal> ist ein numerischer oder textueller Wert (oder eine Liste Komma-getrennter Werte). </para> <para> F端gt man nun das oben genannte zusammen, sieht die komplette Datei etwa so aus: <programlisting><!-- -->section = movieplayer window = main ; ... Elemente f端r das Hauptfenster ... end window = sub ; ... Elemente f端r das Unterfenster ... end window = menu ; ... Elemente f端r das Men端 ... end window = playbar ; ... Elemente f端r die Abspielleiste ... end end </programlisting> </para> <para> Der Name einer Grafikdatei muss ohne f端hrende Pfadangaben angegeben werden - Grafiken werden im Verzeichnis <filename class="directory">skins</filename> gesucht. Du kannst (musst aber nicht) die Erweiterung der Datei spezifizieren. Existiert die Datei nicht, versucht <application>MPlayer</application> die Datei <filename><Dateiname>.<ext></filename> zu laden, wobei <literal>png</literal> und <literal>PNG</literal> als <filename><ext></filename> (Erweiterung) probiert werden (in dieser Reihenfolge). Die erste zutreffende Datei wird verwendet. </para> <para> Zum Schluss einige Worte zur Positionierung. Hauptfenster und Unterfenster k旦nnen in verschiedenen Ecken des Bilschirms 端ber die <literal>X</literal>- und <literal>Y</literal>-Koordinaten platziert werden. <literal>0</literal> ist oben oder links, <literal>-1</literal> bedeutet zentriert und <literal>-2</literal> ist rechts oder unten, wie in dieser Illustration gezeigt: </para> <informalfigure> <screen><!-- -->(0, 0)----(-1, 0)----(-2, 0) | | | | | | (0,-1)----(-1,-1)----(-2,-1) | | | | | | (0,-2)----(-1,-2)----(-2,-2)<!-- --> </screen> </informalfigure> <para> Hier ein Beispiel, um es zu verdeutlichen. Angenommen, du hast eine Grafik mit Namen <filename>main.png</filename>, die du f端r das Hauptfenster nutzt: <programlisting>base = main, -1, -1</programlisting> <application>MPlayer</application> versucht, die Dateien <filename>main</filename>, <filename>main.png</filename>, <filename>main.PNG</filename> zu laden. </para> <sect2 id="skin-file-main"> <title>Hauptfenster und Abspielleiste</title> <para> Unten steht eine Liste von Eintr辰gen, die in den Bl旦cken '<literal>window = main</literal>' ... '<literal>end</literal>', und '<literal>window = playbar</literal>' ... '<literal>end</literal>' genutzt werden k旦nnen. </para> <variablelist> <varlistentry> <term> <literal> <anchor id="skin-main-base"/>base = image, X, Y </literal> </term> <listitem> <para> L辰sst dich die Hintergrundgrafik f端rs Hauptfenster spezifizieren. Das Fenster wird an der angegebenen Position <literal>X,Y</literal> auf dem Bildschirm erscheinen. Es wird die Gr旦�e der Grafik besitzen. </para> <note> <para> Diese Koordinaten funktionieren im Moment nicht beim Anzeigefenster. </para> </note> <warning> <para> Transparente Bereiche innerhalb der Grafik (mit der Farbe #FF00FF) erscheinen auf X-Servern ohne die XShape-Extension schwarz. Die Breite der Grafik muss durch 8 teilbar sein. </para> </warning> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-button"/>button = image, X, Y, width, height, message </literal> </term> <listitem> <para> Platziere einen Button mit der Gr旦�e <literal>width</literal> * <literal>height</literal> an Position <literal>X,Y</literal>. Die angegebene <literal>message</literal> wird erzeugt, wenn der Button angeklickt wird. Die mittels <literal>image</literal> festgelegte Grafik muss drei untereinander liegende Teile aufweisen (entsprechend der m旦glichen Zust辰nde des Buttons), etwa so: </para> <informalfigure> <screen> +---------------+ | gedr端ckt | +---------------+ | losgelassen | +---------------+ | deaktiviert | +---------------+<!-- --></screen> </informalfigure> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-decoration"/>decoration = enable|disable </literal> </term> <listitem> <para> Aktiviere oder deaktiviere die Fenstermanager-Dekoration des Hauptfensters. Standard ist <emphasis role="bold">disable</emphasis>. </para> <note> <para> Dies funktioniert nicht beim Anzeigefenster, dort braucht man es nicht. </para> </note> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-hpotmeter"/>hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message </literal> </term> <listitem> <para></para> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-vpotmeter"/>vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message </literal> </term> <listitem> <para> Platziere einen horizontal (hpotmeter) oder vertikal (vpotmeter) Potentiometer mit der Gr旦�e <literal>width</literal> * <literal>height</literal> an Position <literal>X,Y</literal>. Die Grafik kann in unterschiedliche Teile f端r die verschiedenen Phasen des Potentiometers aufgeteilt werden (du kannst zum Beispiel eines f端r die Lautst辰rkeregelung haben, das von rot nach gr端n wechselt, w辰hrend sich sein Wert vom Minimum zum Maximum 辰ndert.). <literal>hpotmeter</literal> kann einen Button besitzen, der horizontal gezogen werden kann. Die Parameter sind: </para> <itemizedlist> <listitem> <para> <literal>button</literal> - die f端r den Button zu verwendende Grafik (muss drei untereinander liegende Teile aufweisen, wie im Fall des <link linkend="skin-button">Buttons</link>) </para> </listitem> <listitem> <para> <literal>bwidth</literal>, <literal>bheight</literal> - Gr旦�e des Buttons </para> </listitem> <listitem> <para> <literal>phases</literal> - die f端r die verschiedenen Phasen zu verwendende Grafik des hpotmeter. Ein spezieller Wert von <literal>NULL</literal> kann benutzt werden, wenn du keine solche Grafik anwenden willst. Die Grafik muss vertikal in <literal>numphases</literal> Teile wie folgt aufgeteilt werden: </para> <informalfigure> <screen> +------------+ | phase #1 | +------------+ | phase #2 | +------------+ ... +------------+ | phase #n | +------------+<!-- --></screen> </informalfigure> </listitem> <listitem> <para> <literal>numphases</literal> - Anzahl der Phasen, die in der <literal>phases</literal>-Grafik untergebracht sind </para> </listitem> <listitem> <para> <literal>default</literal> - Standardwert f端r hpotmeter (im Bereich <literal>0</literal> bis <literal>100</literal>) </para> </listitem> <listitem> <para> <literal>X</literal>, <literal>Y</literal> - Position f端rs hpotmeter </para> </listitem> <listitem> <para> <literal>width</literal>, <literal>height</literal> - Breite und H旦he des <literal>hpotmeter</literal> </para> </listitem> <listitem> <para> <literal>message</literal> - die Meldung, die erzeugt werden soll, wenn der Wert des <literal>hpotmeter</literal> ge辰ndert wird </para> </listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-potmeter"/>potmeter = phases, numphases, default, X, Y, width, height, message </literal> </term> <listitem> <para> Ein <literal>hpotmeter</literal> ohne einen Button. (ich sch辰tze, es ist dazu bestimmt, herumgedreht zu werden, reagiert aber nur auf horizontales Ziehen.) Eine Beschreibung der Parameter findest du unter <link linkend="skin-hpotmeter">hpotmeter</link>. <literal>phases</literal> k旦nnen <literal>NULL</literal> sein, dies ist aber ziemlich sinnlos, da du nicht sehen kannst, wo das <literal>Potentiometer</literal> hingesetzt wurde. </para> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-font"/>font = fontfile, fontid </literal> </term> <listitem> <para> Definiert eine Schrift. <literal>fontfile</literal> ist der Name der Schrift-Beschreibungsdatei mit der Erweiterung <filename>.fnt</filename> (gieb hier keine Erweiterung an). <literal>fontid</literal> wird verwendet, um auf die Schrift zu verweisen (siehe <link linkend="skin-dlabel">dlabel</link> und <link linkend="skin-slabel">slabel</link>). Bis zu 25 Schriften k旦nnen definiert werden. </para> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-slabel"/>slabel = X, Y, fontid, "text" </literal> </term> <listitem> <para> Platziere ein statisches Label an Position <literal>X,Y</literal>. <literal>text</literal> wird mittels der identifizierten <literal>fontid</literal> angezeigt. Der Text ist einfach ein eine Ausgangszeichenkette (<literal>$x</literal>-Variablen funktionieren nicht), eingeschlossen von doppelten Anf端hrungszeichen (das "-Zeichen kann jedoch nicht Teil des Textes sein). Das Label wird mittels der 端ber die <literal>fontid</literal> identifizierten Schrift angezeigt. </para> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-dlabel"/>dlabel = X, Y, length, align, fontid, "text" </literal> </term> <listitem> <para> Platziere ein dynamisches Label an Position <literal>X,Y</literal>. Das Label wird als dynamisch bezeichnet, weil sein Text periodisch aktualisiert wird. Die Maximall辰nge des Labels wird mit dem Wert <literal>length</literal> vorgegeben (seine H旦he ist die der Zeichen). Wird der anzuzeigende Text breiter als dieser Wert, wird er gescrollt, andernfalls wird er innerhalb des Mittels des Wertes des vom <literal>align</literal>-Parameter festgelegten Zwischenraums ausgerichtet: <literal>0</literal> steht f端r rechts, <literal>1</literal> steht f端r zentriert, <literal>2</literal> steht f端r links. </para> <para> Der anzuzeigende Text wird mit <literal>text</literal> festgelegt: Er muss zwischen doppelten Anf端hrungszeichen stehen (das "-Zeichen kann jedoch nicht Teil des Textes sein). Das Label wird mittels der 端ber die <literal>fontid</literal> identifizierten Schrift angezeigt. Du kannst folgende Variablen im Text verwenden: </para> <informaltable> <tgroup cols="2"> <thead> <row><entry>Variable</entry><entry>Bedeutung</entry></row> </thead> <tbody> <row> <entry>$1</entry> <entry>Abspieldauer im <emphasis>hh:mm:ss</emphasis>-Format</entry> </row> <row> <entry>$2</entry> <entry>Abspieldauer im <emphasis>mmmm:ss</emphasis>-Format</entry> </row> <row> <entry>$3</entry> <entry>Abspieldauer im <emphasis>hh</emphasis>-Format (Stunden)</entry> </row> <row> <entry>$4</entry> <entry>Abspieldauer im <emphasis>mm</emphasis>-Format (Minuten)</entry> </row> <row> <entry>$5</entry> <entry>Abspieldauer im <emphasis>ss</emphasis>-Format (Sekunden)</entry> </row> <row> <entry>$6</entry> <entry>Filml辰nge im <emphasis>hh:mm:ss</emphasis>-Format</entry> </row> <row> <entry>$7</entry> <entry>Filml辰nge im <emphasis>mmmm:ss</emphasis>-Format</entry> </row> <row> <entry>$8</entry> <entry>Abspieldauer im <emphasis>h:mm:ss</emphasis>-Format</entry> </row> <row> <entry>$v</entry> <entry>Lautst辰rke im <emphasis>xxx.xx</emphasis>%-Format</entry> </row> <row> <entry>$V</entry> <entry>Lautst辰rke im <emphasis>xxx.xx</emphasis>-Format</entry> </row> <row> <entry>$b</entry> <entry>Balance im <emphasis>xxx.xx</emphasis>%-Format</entry> </row> <row> <entry>$B</entry> <entry>Balance in <emphasis>xxx.xx</emphasis>-Format</entry> </row> <row> <entry>$$</entry> <entry>das $-Zeichen</entry> </row> <row> <entry>$a</entry> <entry> ein dem Audio-Typ entsprechendes Zeichen (Nichts: <literal>n</literal>, Mono: <literal>m</literal>, Stereo: <literal>t</literal>) </entry> </row> <row> <entry>$t</entry> <entry>Track-Nummer (in der Playliste)</entry> </row> <row> <entry>$o</entry> <entry>Dateiname</entry> </row> <row> <entry>$f</entry> <entry>Dateiname in kleinbuchstaben</entry> </row> <row> <entry>$F</entry> <entry>Dateiname in GROSSBUCHSTABEN</entry> </row> <row> <entry>$T</entry> <entry> Ein dem Streamtyp entsprechendes Zeichen (Datei: <literal>f</literal>, Video-CD: <literal>v</literal>, DVD: <literal>d</literal>, URL: <literal>u</literal>) </entry> </row> <row> <entry>$p</entry> <entry> Das <keycap>p</keycap>-Zeichen (wenn ein Film abgespielt wird und die Schrift das Zeichen <keycap>p</keycap> enth辰lt) </entry> </row> <row> <entry>$s</entry> <entry> Das <keycap>s</keycap>-Zeichen (wenn ein Film angehalten wird und die Schrift das Zeichen <keycap>s</keycap> enth辰lt) </entry> </row> <row> <entry>$e</entry> <entry> Das <keycap>e</keycap>-Zeichen (wenn ein Film pausiert wird und die Schrift das Zeichen <keycap>e</keycap> enth辰lt) </entry> </row> <row> <entry>$x</entry> <entry>Filmbreite</entry> </row> <row> <entry>$y</entry> <entry>Filmh旦he</entry> </row> <row> <entry>$C</entry> <entry>Name des verwendeten Codecs</entry> </row> </tbody> </tgroup> </informaltable> </listitem> </varlistentry> </variablelist> <note> <para> Die Variablen <literal>$a, $T, $p, $s</literal> und <literal>$e</literal> geben alle Zeichen zur端ck, die als spezielle Symbole angezeigt werden sollen (zum Beispiel steht <keycap>e</keycap> f端r das Pause-Symbol, welches gew旦hnlich etwa so || aussieht). Du solltest eine Schrift f端r normale Zeichen und eine weitere Schrift f端r Symbole haben. Schau in den Abschnitt 端ber <link linkend="skin-fonts-symbols">Symbole</link> f端r mehr Informationen. </para> </note> </sect2> <sect2 id="skin-file-subwindow"> <title>Unterfenster</title> <para> Die folgenden Eintr辰ge k旦nnen in diesem Block verwendet werden '<literal>window = sub</literal>' . . . '<literal>end</literal>'. </para> <variablelist> <varlistentry> <term> <literal><anchor id="skin-sub-base"/>base = image, X, Y, Breite, Hoehe</literal> </term> <listitem> <para> Die im Fenster anzuzeigende Grafik. Das Fenster wird an der angegebenen Position <literal>X,Y</literal> auf dem Bildschirm erscheinen (<literal>0,0</literal> ist die obere linke Ecke). Du kannst <literal>-1</literal> f端r zentriert und <literal>-2</literal> f端r rechts (<literal>X</literal>) und unten (<literal>Y</literal>) festlegen. Das Fenster wird so gro� sein wie die Grafik. <literal>Breite</literal> und <literal>H旦he</literal> kennzeichnen die Gr旦�e des Fensters; sie sind optional (wenn sie fehlen, hat das Fenster dieselbe Gr旦�e wie die Grafik). </para> </listitem> </varlistentry> <varlistentry> <term> <literal><anchor id="skin-background"/>background = R, G, B</literal> </term> <listitem> <para> L辰sst dich die Hintergrundfarbe setzen. Dies ist von Nutzen, wenn die Grafik kleiner ist als das Fenster. <literal>R</literal>, <literal>G</literal> und <literal>B</literal> spezifizieren die Rot-, Gr端n- und Blau-Komponenten der Farbe (jede davon ist eine Dezimalzahl von 0 bis 255). </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="skin-file-menu"> <title>Skin-Men端</title> <para> Wie bereits zuvor erw辰hnt, wird das Men端 mittels zweier Grafiken dargestellt. Normale Men端eintr辰ge werden aus der Grafik entnommen, die durch das Element <literal>base</literal> festgelegt sind, w辰hrend der aktuell gew辰hlte Eintrag aus der Grafik entnommen wird, die durch das Element <literal>selected</literal> spezifiziert wurde. Du musst Position und Gr旦�e jedes Men端eintrags mittels des Elements <literal>menu</literal> definieren. </para> <para> Die folgenden Eintr辰ge k旦nnen im Block '<literal>window = menu</literal>'. . .'<literal>end</literal>' genutzt werden. </para> <variablelist> <varlistentry> <term> <literal><anchor id="skin-menu-base"/>base = image</literal> </term> <listitem> <para> Die Grafik f端r normale Men端eintr辰ge. </para> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-selected"/>selected = image </literal> </term> <listitem> <para> Die Grafik, die das Men端 mit allen gew辰hlten Eintr辰gen anzeigt. </para> </listitem> </varlistentry> <varlistentry> <term> <literal> <anchor id="skin-menu"/>menu = X, Y, Breite, H旦he, Nachricht </literal> </term> <listitem> <para> Definiert die Position <literal>X,Y</literal> und die Gr旦�e eines Men端eintrags innerhalb der Grafik. <literal>Nachricht</literal> ist die Meldung, die erzeugt werden soll, wenn die Maustaste 端ber dem Eintrag losgelassen wird. </para> </listitem> </varlistentry> </variablelist> </sect2> </sect1> <sect1 id="skin-fonts"> <title>Schriften</title> <para> Wie im Abschnitt 端ber die Skin-Teile beschrieben, wird eine Schrift durch eine Grafik und eine Beschreibungsdatei definiert. Du kannst die Zeichen irgendwo innerhalb der Grafik platzieren, aber stell sicher, dass Position und Gr旦�e der Zeichen in der Beschreibungsdatei exakt angegeben sind. </para> <para> Die Schrift-Beschreibungsdatei (mit Erweiterung <filename>.fnt</filename>) kann mit '<literal>;</literal>' beginnende Kommentarzeilen enthalten. Die Datei muss eine Zeile in der Form enthalten <anchor id="skin-font-image"/> <programlisting>image = <replaceable>image</replaceable></programlisting> Wobei <literal><replaceable>image</replaceable></literal> der Name der f端r die Schrift anzuwendenden Grafikdatei ist (du musst keine Erweiterung angeben). <anchor id="skin-font-char"/> <programlisting>"char" = X, Y, width, hight</programlisting> Hier legen <literal>X</literal> und <literal>Y</literal> die Position des <literal>char</literal>-Zeichens innerhalb der Grafik fest (<literal>0,0</literal> steht f端r die obere linke Ecke). <literal>width</literal> und <literal>height</literal> sind die Ma�e der Zeichen in Pixel. </para> <para> Dieses Beispiel definiert die Zeichen A, B, C unter Anwendung von <filename>font.png</filename>. <programlisting> ; Kann eine "Schrift" anstatt "font.png" sein. image = font.png ; Drei Zeichen reichen zu Demonstrationszwecken :-) "A" = 0,0, 7,13 "B" = 7,0, 7,13 "C" = 14,0, 7,13<!-- --></programlisting> </para> <sect2 id="skin-fonts-symbols"> <title>Symbole</title> <para> Einige Zeichen haben spezielle Bedeutungen, wenn sie von bestimmten Variablen in <link linkend="skin-dlabel">dlabel</link> zur端ckgegeben werden. Diese Zeichen sind dazu gedacht, als Symbole angezeigt zu werden, so dass Dinge wie ein h端bsches DVD-Logo an Stelle des Zeichens '<literal>d</literal>' f端r einen DVD-Stream angezeigt werden k旦nnen. </para> <para> Die folgende Tabelle listet alle Zeichen auf, die zum Anzeigen von Symbolen genutzt werden k旦nnen (und daher eine andere Schrift ben旦tigen). </para> <informaltable> <tgroup cols="2"> <thead> <row><entry>Zeichen</entry><entry>Symbol</entry></row> </thead> <tbody> <row><entry><keycap>p</keycap></entry><entry>Play</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>Kein Sound</entry></row> <row><entry><keycap>m</keycap></entry><entry>Mono-Sound</entry></row> <row><entry><keycap>t</keycap></entry><entry>Stereo-Sound</entry></row> <row><entry><keycap>f</keycap></entry><entry>Stream ist eine Datei</entry></row> <row><entry><keycap>v</keycap></entry><entry>Stream ist eine Video-CD</entry></row> <row><entry><keycap>d</keycap></entry><entry>Stream ist eine DVD</entry></row> <row><entry><keycap>u</keycap></entry><entry>Stream ist eine URL</entry></row> </tbody> </tgroup> </informaltable> </sect2> </sect1> <sect1 id="skin-gui"> <title>GUI-Meldungen</title> <para> Dies sind die Meldungen, die von Buttons, Potentiometern und Men端eintr辰gen generiert werden k旦nnen. </para> <variablelist> <title>Playback-Kontrolle:</title> <varlistentry> <term><emphasis role="bold">evNext</emphasis></term> <listitem> <para>Springe zum n辰chsten Track in der Playliste.</para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evPause</emphasis></term> <listitem><para> Formt einen Schalter zusammen mit <literal>evPlaySwitchToPause</literal>. Sie k旦nnen dazu benutzt werden, einen gebr辰uchlichen Play/Pause-Button zu bekommen. Beide Meldungen sollten den Buttons zugewiesen werden, die an genau derselben Position innerhalb des Fensters dargestellt werden. Diese Meldung pausiert das Abspielen und die Grafik f端r den <literal>evPlaySwitchToPause</literal>-Button wird gezeigt (um anzudeuten, dass der Button zum Fortsetzen des Abspielens gedr端ckt werden kann). </para></listitem> </varlistentry> <varlistentry> <term> <emphasis role="bold">evPlay</emphasis> </term> <listitem> <para> Starte das Abspielen. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evPlaySwitchToPause</emphasis></term> <listitem> <para> Das Gegenteil von <literal>evPauseSwitchToPlay</literal>. Diese Meldung startet das Abspielen und die Grafik f端r den <literal>evPauseSwitchToPlay</literal>-Button wird angezeigt (um anzudeuten, dass der Button zum Pausieren des Abspielvorgangs gedr端ckt werden kann). </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evPrev</emphasis></term> <listitem> <para> Springe zum vorherigen Track in der Playliste. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evStop</emphasis></term> <listitem> <para>Stoppe das Abspielen.</para> </listitem> </varlistentry> </variablelist> <variablelist> <title>Springen:</title> <varlistentry> <term><emphasis role="bold">evBackward10sec</emphasis></term> <listitem> <para> Springe 10 Sekunden r端ckw辰rts. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evBackward1min</emphasis></term> <listitem> <para> Springe 1 Minute r端ckw辰rts. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evBackward10min</emphasis></term> <listitem><para> Springe 10 Minuten r端ckw辰rts. </para></listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evForward10sec</emphasis></term> <listitem> <para> Springe 10 Sekunden vorw辰rts. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evForward1min</emphasis></term> <listitem> <para> Springe 1 Minute vorw辰rts. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evForward10min</emphasis></term> <listitem> <para> Springe 10 Minuten vorw辰rts. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evSetMoviePosition</emphasis></term> <listitem> <para> Springe zu Position (kann von einem Potentiometer genutzt werden; mit dem relativen Wert (0-100%) des Potentiometers). </para> </listitem> </varlistentry> </variablelist> <variablelist> <title>Video-Kontrolle:</title> <varlistentry> <term><emphasis role="bold">evHalfSize</emphasis></term> <listitem> <para> Setze das Filmfenster auf halbe Gr旦�e. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evDoubleSize</emphasis></term> <listitem> <para> Setze das Filmfenster auf doppelte Gr旦�e. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evFullScreen</emphasis></term> <listitem> <para> Schalte Vollbildmodus an/aus. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evNormalSize</emphasis></term> <listitem> <para> Setze das Filmfenster auf normale Gr旦�e. </para> </listitem> </varlistentry> </variablelist> <variablelist> <title>Audio-Kontrolle:</title> <varlistentry> <term><emphasis role="bold">evDecAudioBufDelay</emphasis></term> <listitem> <para> Verringere die Verz旦gerung des Audiopuffers. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evDecBalance</emphasis></term> <listitem> <para> Verringere die Balance. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evDecVolume</emphasis></term> <listitem><para> Verringere die Lautst辰rke. </para></listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evIncAudioBufDelay</emphasis></term> <listitem> <para> Erh旦he die Verz旦gerung des Audiopuffers. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evIncBalance</emphasis></term> <listitem> <para> Erh旦he die Balance. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evIncVolume</emphasis></term> <listitem> <para> Erh旦he die Lautst辰rke. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evMute</emphasis></term> <listitem> <para> Schalte den Ton an/aus. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evSetBalance</emphasis></term> <listitem> <para> Setze die Balance (kann von einem Potentiometer genutzt werden; mit dem relativen Wert (0-100%) des Potentiometers). </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evSetVolume</emphasis></term> <listitem> <para> Setze die Lautst辰rke(kann von einem Potentiometer genutzt werden; mit dem relativen Wert (0-100%) des Potentiometers). </para> </listitem> </varlistentry> </variablelist> <variablelist> <title>Verschiedenes:</title> <varlistentry> <term><emphasis role="bold">evAbout</emphasis></term> <listitem> <para> �ffne das About-Fenster. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evDropSubtitle</emphasis></term> <listitem> <para> Deaktiviert den aktuell verwendeten Untertitel. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evEqualizer</emphasis></term> <listitem> <para> Schaltet den Equalizer an/aus. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evExit</emphasis></term> <listitem> <para> Schlie�e das Programm. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evIconify</emphasis></term> <listitem> <para> Minimiere das Fenster zu einem Symbol. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evLoad</emphasis></term> <listitem> <para> Lade eine Datei (durch �ffnen des Datei-Browser-Fensters, in dem du die Datei w辰hlen kannst). </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evLoadPlay</emphasis></term> <listitem> <para> Macht dasselbe wie <literal>evLoad</literal>, es startet jedoch das Abspielen nach dem Laden der Datei automatisch. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evLoadSubtitle</emphasis></term> <listitem> <para> L辰dt eine Untertiteldatei (mit dem Dateiw辰hler) </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evLoadAudioFile</emphasis></term> <listitem> <para> L辰dt eine Audio-Datei (mit dem Dateiw辰hler) </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evNone</emphasis></term> <listitem> <para> Leere Meldung, besitzt keinen Effekt (au�er vielleicht in Subversion-Versionen :-)). </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evPlaylist</emphasis></term> <listitem> <para> �ffne/schlie�e das Playlisten-Fenster. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evPlayDVD</emphasis></term> <listitem> <para> Versucht die DVD im angegebenen DVD-ROM-Laufwerk zu 旦ffnen. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evPlayVCD</emphasis></term> <listitem> <para> Versucht die VCD im angegebenen CD-ROM-Laufwerk zu 旦ffnen. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evPreferences</emphasis></term> <listitem> <para> �ffne das Einstellungsfenster. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evSetAspect</emphasis></term> <listitem> <para> Setzt das angezeigte Grafikseitenverh辰ltnis. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evSetURL</emphasis></term> <listitem> <para> Zeigt das URL-Dialog-Fenster. </para> </listitem> </varlistentry> <varlistentry> <term><emphasis role="bold">evSkinBrowser</emphasis></term> <listitem> <para> �ffne das Skin-Browser-Fenster. </para> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="skin-quality"> <title>Erstellen von qualitativen Skins</title> <para> Jetzt hast du dich 端ber das Herstellen eines Skins f端r das <application>MPlayer</application>-GUI informiert, in <application>Gimp</application> dein bestes gegeben und willst deinen Skin an uns schicken? Lies weiter, dann findest du einige Vorgaben daf端r, wie h辰ufige Irrt端mer vermieden und hochqualitative Skins erstellt werden k旦nnen. </para> <para> Wir wollen, dass Skins, die wir in unser Repository einf端gen, bestimmten Qualit辰tsstandards entsprechen. Du kannst auch vieles dazutun, uns das Leben leichter zu machen. </para> <para> Als ein Beispiel kannst du dir den <systemitem>Blue</systemitem>-Skin ansehen. Er gen端gt seit Version 1.5 allen unten aufgelisteten Kriterien. </para> <itemizedlist> <listitem> <para> Jeder Skin sollte mit einer <filename>README</filename>-Datei kommen, die Informationen 端ber dich, den Autor, Copyright- und Lizenzanmerkungen und alles, was du sonst noch anf端gen willst, enth辰lt. Willst du ein Changelog, ist diese Datei ein geeigneter Ort daf端r. </para> </listitem> <listitem> <para> Es sollte eine Datei namens <filename>VERSION</filename> mit nicht mehr als der Versionsnummer des Skins in einer einzigen Zeile geben (z.B. 1.0). </para> </listitem> <listitem> <para> Horizontale und vertikale Regler (wie die f端r Lautst辰rke oder Position) sollten die Mitte des Knaufs sauber in der Mitte des Reglers zentriert haben. Es sollte m旦glich sein, den Knauf an beide Enden des Reglers zu bewegen, jedoch nicht dar端ber hinaus. </para> </listitem> <listitem> <para> F端r Skin-Elemente sollten die richtigen Gr旦�en in der skin-Datei deklariert sein. Ist dies nicht der Fall, kannst du au�erhalb z.B. eines Buttons klicken und trotzdem einen Klick innerhalb seiner Fl辰che ausl旦sen und diesen dennoch nicht ausl旦sen. </para> </listitem> <listitem> <para> Die <filename>skin</filename>-Datei sollte sauber aussehen und keine Tabs enthalten. Mit sauber aussehen ist gemeint, dass die Zahlen ordentlich in Reihe stehen. </para> </listitem> </itemizedlist> </sect1> </appendix>