<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>C.2. Die skin-Datei</title><link rel="stylesheet" href="default.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"><link rel="start" href="index.html" title="MPlayer - Movie Player"><link rel="up" href="skin.html" title="Anhang C. MPlayers Skinformat"><link rel="prev" href="skin-overview.html" title="C.1. Überblick"><link rel="next" href="skin-fonts.html" title="C.3. Schriften"><link rel="preface" href="howtoread.html" title="Wie diese Dokumentation gelesen werden soll"><link rel="chapter" href="intro.html" title="Kapitel 1. Einführung"><link rel="chapter" href="install.html" title="Kapitel 2. Installation"><link rel="chapter" href="usage.html" title="Kapitel 3. Gebrauch"><link rel="chapter" href="cd-dvd.html" title="Kapitel 4. CD/DVD Nutzung"><link rel="chapter" href="faq.html" title="Kapitel 5. Häufig gestellte Fragen"><link rel="chapter" href="containers.html" title="Kapitel 6. Containerformate"><link rel="chapter" href="codecs.html" title="Kapitel 7. Codecs"><link rel="chapter" href="video.html" title="Kapitel 8. Videoausgabegeräte"><link rel="chapter" href="audio.html" title="Kapitel 9. Audioausgabegeräte"><link rel="chapter" href="tv.html" title="Kapitel 10. TV"><link rel="chapter" href="radio.html" title="Kapitel 11. Radio"><link rel="chapter" href="ports.html" title="Kapitel 12. Portierungen"><link rel="chapter" href="mencoder.html" title="Kapitel 13. Allgemeiner Gebrauch von MEncoder"><link rel="chapter" href="encoding-guide.html" title="Kapitel 14. Encodieren mit MEncoder"><link rel="appendix" href="bugreports.html" title="Anhang A. Wie Fehler (Bugs) berichtet werden"><link rel="appendix" href="bugs.html" title="Anhang B. Bekannte Fehler"><link rel="appendix" href="skin.html" title="Anhang C. MPlayers Skinformat"><link rel="appendix" href="history.html" title="Anhang D. Geschichte"><link rel="subsection" href="skin-file.html#skin-file-main" title="C.2.1. Hauptfenster und Abspielleiste"><link rel="subsection" href="skin-file.html#skin-file-subwindow" title="C.2.2. Unterfenster"><link rel="subsection" href="skin-file.html#skin-file-menu" title="C.2.3. Skin-Menü"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">C.2. Die skin-Datei</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="skin-overview.html">Zurück</a> </td><th width="60%" align="center">Anhang C. <span class="application">MPlayer</span>s Skinformat</th><td width="20%" align="right"> <a accesskey="n" href="skin-fonts.html">Weiter</a></td></tr></table><hr></div><div class="sect1" lang="de"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="skin-file"></a>C.2. Die skin-Datei</h2></div></div></div><p> Wie oben erwähnt, ist dies die skin-Konfigurationsdatei. Sie ist Zeilen-orientiert; Kommentarzeilen beginnen mit einem '<code class="literal">;</code>' Semikolon am Zeilenanfang (es sind nur Leer- und Tabulator-Zeichen vor dem '<code class="literal">;</code>' erlaubt). </p><p> Die Datei ist in Abschnitte unterteilt. Jeder Abschnitt beschreibt den Skin für eine Anwendung und besitzt folgende Form: </p><pre class="programlisting">section = <em class="replaceable"><code>Abschnittsname</code></em> . . . end </pre><p> </p><p> Zur Zeit gibt es nur eine Anwendung, somit brauchst du nur einen Abschnitt: Sein Name ist <span class="bold"><strong>movieplayer</strong></span>. </p><p> Innerhalb dieses Abschnitts wird jedes Fenster durch einen Block folgender Form beschrieben: </p><pre class="programlisting">window = <em class="replaceable"><code>Fenstername</code></em> . . . end </pre><p> </p><p> wobei <em class="replaceable"><code>Fenstername</code></em> einer dieser Zeichenketten sein kann: </p><div class="itemizedlist"><ul type="disc"><li><p><span class="bold"><strong>main</strong></span> - für das Hauptfenster</p></li><li><p><span class="bold"><strong>sub</strong></span> - für das Unterfenster</p></li><li><p><span class="bold"><strong>menu</strong></span> - für das Skin-Menü</p></li><li><p><span class="bold"><strong>playbar</strong></span> - Abspielleiste</p></li></ul></div><p> </p><p> (Die sub- und menu-Blöcke sind optional - du musst kein Menü erzeugen oder das Unterfenster dekorieren.) </p><p> Innerhalb des Fensterblocks kannst du jedes Element für das Fenster durch eine Zeile dieser Form definieren: </p><pre class="programlisting">Element = Parameter</pre><p> Wobei <code class="literal">Element</code> eine Zeichenkette ist, die den Typ des GUI-Elements identifiziert, <code class="literal">Parameter</code> ist ein numerischer oder textueller Wert (oder eine Liste Komma-getrennter Werte). </p><p> Fügt man nun das oben genannte zusammen, sieht die komplette Datei etwa so aus: </p><pre class="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 </pre><p> </p><p> Der Name einer Grafikdatei muss ohne führende Pfadangaben angegeben werden - Grafiken werden im Verzeichnis <tt class="filename">skins</tt> gesucht. Du kannst (musst aber nicht) die Erweiterung der Datei spezifizieren. Existiert die Datei nicht, versucht <span class="application">MPlayer</span> die Datei <tt class="filename"><Dateiname>.<ext></tt> zu laden, wobei <code class="literal">png</code> und <code class="literal">PNG</code> als <tt class="filename"><ext></tt> (Erweiterung) probiert werden (in dieser Reihenfolge). Die erste zutreffende Datei wird verwendet. </p><p> Zum Schluss einige Worte zur Positionierung. Hauptfenster und Unterfenster können in verschiedenen Ecken des Bilschirms über die <code class="literal">X</code>- und <code class="literal">Y</code>-Koordinaten platziert werden. <code class="literal">0</code> ist oben oder links, <code class="literal">-1</code> bedeutet zentriert und <code class="literal">-2</code> ist rechts oder unten, wie in dieser Illustration gezeigt: </p><div class="informalfigure"><pre class="screen">(0, 0)----(-1, 0)----(-2, 0) | | | | | | (0,-1)----(-1,-1)----(-2,-1) | | | | | | (0,-2)----(-1,-2)----(-2,-2) </pre></div><p> Hier ein Beispiel, um es zu verdeutlichen. Angenommen, du hast eine Grafik mit Namen <tt class="filename">main.png</tt>, die du für das Hauptfenster nutzt: </p><pre class="programlisting">base = main, -1, -1</pre><p> <span class="application">MPlayer</span> versucht, die Dateien <tt class="filename">main</tt>, <tt class="filename">main.png</tt>, <tt class="filename">main.PNG</tt> zu laden. </p><div class="sect2" lang="de"><div class="titlepage"><div><div><h3 class="title"><a name="skin-file-main"></a>C.2.1. Hauptfenster und Abspielleiste</h3></div></div></div><p> Unten steht eine Liste von Einträgen, die in den Blöcken '<code class="literal">window = main</code>' ... '<code class="literal">end</code>', und '<code class="literal">window = playbar</code>' ... '<code class="literal">end</code>' genutzt werden können. </p><div class="variablelist"><dl><dt><span class="term"> <code class="literal"> <a name="skin-main-base"></a>base = image, X, Y </code> </span></dt><dd><p> Lässt dich die Hintergrundgrafik fürs Hauptfenster spezifizieren. Das Fenster wird an der angegebenen Position <code class="literal">X,Y</code> auf dem Bildschirm erscheinen. Es wird die Größe der Grafik besitzen. </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Anmerkung</h3><p> Diese Koordinaten funktionieren im Moment nicht beim Anzeigefenster. </p></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warnung</h3><p> 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. </p></div></dd><dt><span class="term"> <code class="literal"> <a name="skin-button"></a>button = image, X, Y, width, height, message </code> </span></dt><dd><p> Platziere einen Button mit der Größe <code class="literal">width</code> * <code class="literal">height</code> an Position <code class="literal">X,Y</code>. Die angegebene <code class="literal">message</code> wird erzeugt, wenn der Button angeklickt wird. Die mittels <code class="literal">image</code> festgelegte Grafik muss drei untereinander liegende Teile aufweisen (entsprechend der möglichen Zustände des Buttons), etwa so: </p><div class="informalfigure"><pre class="screen"> +---------------+ | gedrückt | +---------------+ | losgelassen | +---------------+ | deaktiviert | +---------------+</pre></div></dd><dt><span class="term"> <code class="literal"> <a name="skin-decoration"></a>decoration = enable|disable </code> </span></dt><dd><p> Aktiviere oder deaktiviere die Fenstermanager-Dekoration des Hauptfensters. Standard ist <span class="bold"><strong>disable</strong></span>. </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Anmerkung</h3><p> Dies funktioniert nicht beim Anzeigefenster, dort braucht man es nicht. </p></div></dd><dt><span class="term"> <code class="literal"> <a name="skin-hpotmeter"></a>hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message </code> </span></dt><dd><p></p></dd><dt><span class="term"> <code class="literal"> <a name="skin-vpotmeter"></a>vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message </code> </span></dt><dd><p> Platziere einen horizontal (hpotmeter) oder vertikal (vpotmeter) Potentiometer mit der Größe <code class="literal">width</code> * <code class="literal">height</code> an Position <code class="literal">X,Y</code>. 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.). <code class="literal">hpotmeter</code> kann einen Button besitzen, der horizontal gezogen werden kann. Die Parameter sind: </p><div class="itemizedlist"><ul type="disc"><li><p> <code class="literal">button</code> - die für den Button zu verwendende Grafik (muss drei untereinander liegende Teile aufweisen, wie im Fall des <a class="link" href="skin-file.html#skin-button">Buttons</a>) </p></li><li><p> <code class="literal">bwidth</code>, <code class="literal">bheight</code> - Größe des Buttons </p></li><li><p> <code class="literal">phases</code> - die für die verschiedenen Phasen zu verwendende Grafik des hpotmeter. Ein spezieller Wert von <code class="literal">NULL</code> kann benutzt werden, wenn du keine solche Grafik anwenden willst. Die Grafik muss vertikal in <code class="literal">numphases</code> Teile wie folgt aufgeteilt werden: </p><div class="informalfigure"><pre class="screen"> +------------+ | phase #1 | +------------+ | phase #2 | +------------+ ... +------------+ | phase #n | +------------+</pre></div></li><li><p> <code class="literal">numphases</code> - Anzahl der Phasen, die in der <code class="literal">phases</code>-Grafik untergebracht sind </p></li><li><p> <code class="literal">default</code> - Standardwert für hpotmeter (im Bereich <code class="literal">0</code> bis <code class="literal">100</code>) </p></li><li><p> <code class="literal">X</code>, <code class="literal">Y</code> - Position fürs hpotmeter </p></li><li><p> <code class="literal">width</code>, <code class="literal">height</code> - Breite und Höhe des <code class="literal">hpotmeter</code> </p></li><li><p> <code class="literal">message</code> - die Meldung, die erzeugt werden soll, wenn der Wert des <code class="literal">hpotmeter</code> geändert wird </p></li></ul></div></dd><dt><span class="term"> <code class="literal"> <a name="skin-potmeter"></a>potmeter = phases, numphases, default, X, Y, width, height, message </code> </span></dt><dd><p> Ein <code class="literal">hpotmeter</code> 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 <a class="link" href="skin-file.html#skin-hpotmeter">hpotmeter</a>. <code class="literal">phases</code> können <code class="literal">NULL</code> sein, dies ist aber ziemlich sinnlos, da du nicht sehen kannst, wo das <code class="literal">Potentiometer</code> hingesetzt wurde. </p></dd><dt><span class="term"> <code class="literal"> <a name="skin-font"></a>font = fontfile, fontid </code> </span></dt><dd><p> Definiert eine Schrift. <code class="literal">fontfile</code> ist der Name der Schrift-Beschreibungsdatei mit der Erweiterung <tt class="filename">.fnt</tt> (gieb hier keine Erweiterung an). <code class="literal">fontid</code> wird verwendet, um auf die Schrift zu verweisen (siehe <a class="link" href="skin-file.html#skin-dlabel">dlabel</a> und <a class="link" href="skin-file.html#skin-slabel">slabel</a>). Bis zu 25 Schriften können definiert werden. </p></dd><dt><span class="term"> <code class="literal"> <a name="skin-slabel"></a>slabel = X, Y, fontid, "text" </code> </span></dt><dd><p> Platziere ein statisches Label an Position <code class="literal">X,Y</code>. <code class="literal">text</code> wird mittels der identifizierten <code class="literal">fontid</code> angezeigt. Der Text ist einfach ein eine Ausgangszeichenkette (<code class="literal">$x</code>-Variablen funktionieren nicht), eingeschlossen von doppelten Anführungszeichen (das "-Zeichen kann jedoch nicht Teil des Textes sein). Das Label wird mittels der über die <code class="literal">fontid</code> identifizierten Schrift angezeigt. </p></dd><dt><span class="term"> <code class="literal"> <a name="skin-dlabel"></a>dlabel = X, Y, length, align, fontid, "text" </code> </span></dt><dd><p> Platziere ein dynamisches Label an Position <code class="literal">X,Y</code>. Das Label wird als dynamisch bezeichnet, weil sein Text periodisch aktualisiert wird. Die Maximallänge des Labels wird mit dem Wert <code class="literal">length</code> 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 <code class="literal">align</code>-Parameter festgelegten Zwischenraums ausgerichtet: <code class="literal">0</code> steht für rechts, <code class="literal">1</code> steht für zentriert, <code class="literal">2</code> steht für links. </p><p> Der anzuzeigende Text wird mit <code class="literal">text</code> festgelegt: Er muss zwischen doppelten Anführungszeichen stehen (das "-Zeichen kann jedoch nicht Teil des Textes sein). Das Label wird mittels der über die <code class="literal">fontid</code> identifizierten Schrift angezeigt. Du kannst folgende Variablen im Text verwenden: </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Variable</th><th>Bedeutung</th></tr></thead><tbody><tr><td>$1</td><td>Abspieldauer im <span class="emphasis"><em>hh:mm:ss</em></span>-Format</td></tr><tr><td>$2</td><td>Abspieldauer im <span class="emphasis"><em>mmmm:ss</em></span>-Format</td></tr><tr><td>$3</td><td>Abspieldauer im <span class="emphasis"><em>hh</em></span>-Format (Stunden)</td></tr><tr><td>$4</td><td>Abspieldauer im <span class="emphasis"><em>mm</em></span>-Format (Minuten)</td></tr><tr><td>$5</td><td>Abspieldauer im <span class="emphasis"><em>ss</em></span>-Format (Sekunden)</td></tr><tr><td>$6</td><td>Filmlänge im <span class="emphasis"><em>hh:mm:ss</em></span>-Format</td></tr><tr><td>$7</td><td>Filmlänge im <span class="emphasis"><em>mmmm:ss</em></span>-Format</td></tr><tr><td>$8</td><td>Abspieldauer im <span class="emphasis"><em>h:mm:ss</em></span>-Format</td></tr><tr><td>$v</td><td>Lautstärke im <span class="emphasis"><em>xxx.xx</em></span>%-Format</td></tr><tr><td>$V</td><td>Lautstärke im <span class="emphasis"><em>xxx.xx</em></span>-Format</td></tr><tr><td>$b</td><td>Balance im <span class="emphasis"><em>xxx.xx</em></span>%-Format</td></tr><tr><td>$B</td><td>Balance in <span class="emphasis"><em>xxx.xx</em></span>-Format</td></tr><tr><td>$$</td><td>das $-Zeichen</td></tr><tr><td>$a</td><td> ein dem Audio-Typ entsprechendes Zeichen (Nichts: <code class="literal">n</code>, Mono: <code class="literal">m</code>, Stereo: <code class="literal">t</code>) </td></tr><tr><td>$t</td><td>Track-Nummer (in der Playliste)</td></tr><tr><td>$o</td><td>Dateiname</td></tr><tr><td>$f</td><td>Dateiname in kleinbuchstaben</td></tr><tr><td>$F</td><td>Dateiname in GROSSBUCHSTABEN</td></tr><tr><td>$T</td><td> Ein dem Streamtyp entsprechendes Zeichen (Datei: <code class="literal">f</code>, Video-CD: <code class="literal">v</code>, DVD: <code class="literal">d</code>, URL: <code class="literal">u</code>) </td></tr><tr><td>$p</td><td> Das <span class="keycap"><b>p</b></span>-Zeichen (wenn ein Film abgespielt wird und die Schrift das Zeichen <span class="keycap"><b>p</b></span> enthält) </td></tr><tr><td>$s</td><td> Das <span class="keycap"><b>s</b></span>-Zeichen (wenn ein Film angehalten wird und die Schrift das Zeichen <span class="keycap"><b>s</b></span> enthält) </td></tr><tr><td>$e</td><td> Das <span class="keycap"><b>e</b></span>-Zeichen (wenn ein Film pausiert wird und die Schrift das Zeichen <span class="keycap"><b>e</b></span> enthält) </td></tr><tr><td>$x</td><td>Filmbreite</td></tr><tr><td>$y</td><td>Filmhöhe</td></tr><tr><td>$C</td><td>Name des verwendeten Codecs</td></tr></tbody></table></div></dd></dl></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Anmerkung</h3><p> Die Variablen <code class="literal">$a, $T, $p, $s</code> und <code class="literal">$e</code> geben alle Zeichen zurück, die als spezielle Symbole angezeigt werden sollen (zum Beispiel steht <span class="keycap"><b>e</b></span> 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 <a class="link" href="skin-fonts.html#skin-fonts-symbols" title="C.3.1. Symbole">Symbole</a> für mehr Informationen. </p></div></div><div class="sect2" lang="de"><div class="titlepage"><div><div><h3 class="title"><a name="skin-file-subwindow"></a>C.2.2. Unterfenster</h3></div></div></div><p> Die folgenden Einträge können in diesem Block verwendet werden '<code class="literal">window = sub</code>' . . . '<code class="literal">end</code>'. </p><div class="variablelist"><dl><dt><span class="term"> <code class="literal"><a name="skin-sub-base"></a>base = image, X, Y, Breite, Hoehe</code> </span></dt><dd><p> Die im Fenster anzuzeigende Grafik. Das Fenster wird an der angegebenen Position <code class="literal">X,Y</code> auf dem Bildschirm erscheinen (<code class="literal">0,0</code> ist die obere linke Ecke). Du kannst <code class="literal">-1</code> für zentriert und <code class="literal">-2</code> für rechts (<code class="literal">X</code>) und unten (<code class="literal">Y</code>) festlegen. Das Fenster wird so groß sein wie die Grafik. <code class="literal">Breite</code> und <code class="literal">Höhe</code> kennzeichnen die Größe des Fensters; sie sind optional (wenn sie fehlen, hat das Fenster dieselbe Größe wie die Grafik). </p></dd><dt><span class="term"> <code class="literal"><a name="skin-background"></a>background = R, G, B</code> </span></dt><dd><p> Lässt dich die Hintergrundfarbe setzen. Dies ist von Nutzen, wenn die Grafik kleiner ist als das Fenster. <code class="literal">R</code>, <code class="literal">G</code> und <code class="literal">B</code> spezifizieren die Rot-, Grün- und Blau-Komponenten der Farbe (jede davon ist eine Dezimalzahl von 0 bis 255). </p></dd></dl></div></div><div class="sect2" lang="de"><div class="titlepage"><div><div><h3 class="title"><a name="skin-file-menu"></a>C.2.3. Skin-Menü</h3></div></div></div><p> 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 <code class="literal">base</code> festgelegt sind, während der aktuell gewählte Eintrag aus der Grafik entnommen wird, die durch das Element <code class="literal">selected</code> spezifiziert wurde. Du musst Position und Größe jedes Menüeintrags mittels des Elements <code class="literal">menu</code> definieren. </p><p> Die folgenden Einträge können im Block '<code class="literal">window = menu</code>'. . .'<code class="literal">end</code>' genutzt werden. </p><div class="variablelist"><dl><dt><span class="term"> <code class="literal"><a name="skin-menu-base"></a>base = image</code> </span></dt><dd><p> Die Grafik für normale Menüeinträge. </p></dd><dt><span class="term"> <code class="literal"> <a name="skin-selected"></a>selected = image </code> </span></dt><dd><p> Die Grafik, die das Menü mit allen gewählten Einträgen anzeigt. </p></dd><dt><span class="term"> <code class="literal"> <a name="skin-menu"></a>menu = X, Y, Breite, Höhe, Nachricht </code> </span></dt><dd><p> Definiert die Position <code class="literal">X,Y</code> und die Größe eines Menüeintrags innerhalb der Grafik. <code class="literal">Nachricht</code> ist die Meldung, die erzeugt werden soll, wenn die Maustaste über dem Eintrag losgelassen wird. </p></dd></dl></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="skin-overview.html">Zurück</a> </td><td width="20%" align="center"><a accesskey="u" href="skin.html">Nach oben</a></td><td width="40%" align="right"> <a accesskey="n" href="skin-fonts.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">C.1. Überblick </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> C.3. Schriften</td></tr></table></div></body></html>