Text2skin-Skin Referenz

Aus VDR Wiki
Wechseln zu: Navigation, Suche
Hinweis
Hinweis

Diese Dokumentation gilt für die "1.0" Version des text2skin-plugins.


Dies ist eine Kurzreferenz des auf XML-basierenden Skin-Formates des text2skin Plugins.

Inhaltsverzeichnis

Elemente

<skin>

Dies ist das Wurzelelement des Skins. Alle weiteren Elemente liegen verschachtelt in diesem.

Attribut Wert Beschreibung
version VERSION Version des Skin-Formates (fester Wert, aktuell "1.0")
name NAME Name der im VDR-OSD erscheinen soll
screenBase
  • relative
  • absolute
Kennzeichnet, ob das Skin relativ (relative) zum VDR-Setup oder absolut (absolute) auf einer Fläche von 720x576 zeichnen soll
Beispiel
<?xml version="1.0"?>
<skin version="1.0" name="brushed Aluminium" screenBase="relative">
  .
  .
  .
</skin>

<display>

Das OSD von VDR hat mehrere "Darstellungen". Die wichtigsten wären das Hauptmenu und die Kanalinfo-Anzeige. Für jeden Bereich, der mit dem Skin gestaltet werden soll muss ein <display> Container erstellt werden.

Attribut Wert Beschreibung
id
  • channelInfo
  • channelSmall
  • volume
  • message
  • replayInfo
  • replaySmall
  • menu
Bezeichnet den Typ der OSD-Darstellung
Beispiel
<?xml version="1.0"?>
<skin version="1.0" name="brushed Aluminium" screenBase="relative">
  <display id="replayInfo">
   .
   .
   .
  </display>
</skin>

<window>

Jeder Display-Container beginnt mit der Vorgabe von Zeichenflächen, auf denen dann die Elemente plaziert werden können.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
x2 ZAHL Position der rechten Kante
y2 ZAHL Position der unteren Kante
bpp ZAHL Farbtiefe des Zeichenfläche
Beispiel
<?xml version="1.0"?>
<skin version="1.0" name="brushed Aluminium" screenBase="relative">
  <display id="replayInfo">
    <window x1="0" x2="619" y1="-113" y2="-84" bpp="4" />
    <window x1="20" x2="99" y1="-83" y2="-44" bpp="4" />
     .
     .
     .
  </display>
</skin>

<rectangle>

Zeichnet ein gefülltes Rechteck.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
x2 ZAHL Position der rechten Kante
y2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Farbe des Rechtecks
Beispiel
<rectangle x1="20" x2="99" y1="-83" y2="-44" color="#00000000" />

<ellipse>

Zeichnet einen (Teil-)Kreis, oder eine Ellipse.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Farbe der Ellipse
arc ZAHL Kreisbogen
Beispiel
<ellipse x1="5" y1="7" x2="14" y2="15" color="GraphLight" condition="{IsMenuCurrent}"/>

<slope>

Eine Kurve.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Farbe der Kurve
arc ZAHL Richtung
Beispiel
;-(

<image>

Anzeige eines Bildes

Attribut Wert Beschreibung
x ZAHL Position der linken Kante (keine Skalierung)
y ZAHL Position der oberen Kante (keine Skalierung)
x1 ZAHL Position der linken Kante (wenn skaliert werden soll)
y1 ZAHL Position der oberen Kante (wenn skaliert werden soll)
x2 ZAHL Position der rechten Kante (wenn skaliert werden soll)
y2 ZAHL Position der unteren Kante (wenn skaliert werden soll)
condition FUNKTION/TOKEN Komplexe Bedingung
alpha ZAHL Überlagerte Transparenz von 0-255
colors ZAHL Maximale Anzahl der Farben im Ergebnisbild (wenn skaliert werden soll)
color STRING Austauschfarbe für Farbe 1 des Bildes
bgColor STRING Austauschfarbe für Farbe 0 des Bildes
path STRING/TOKEN Pfad zur Bilddatei
Beispiel
<image x="0" y="-70" path="Aluminium_volumebar.png" />
<image x="585" y="138" condition="{CanScrollUp}" path="symbols/arrowup.xpm" color="#AFFFFF00" />

<text>

Ein statischer oder zusammengesetzter Text.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Textfarbe
align
  • center
  • right
  • left
Ausrichtung des Textes (Zentriert, Rechtsbündig, Linksbündig)
font STRING Name des Fonts
Beispiel
<text x1="42" x2="571" y1="-113" y2="-86" color="#FF000000" font="Osd">{ReplayTitle}</text>

<marquee>

Alternative zu <text>. Scrollt überlange Texte hin und her.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Textfarbe
delay ZAHL Verzögerung des Scrollens in ms (Laufgeschwindigkeit)
align
  • center
  • right
  • left
Ausrichtung des Textes (Zentriert, Rechtsbündig, Linksbündig)
font STRING Name des Fonts
Beispiel
<marquee x1="130" x2="480" y1="423" y2="445" color="Text" font="Sml">{ReplayTitle}</marquee>

<blink>

Alternative zu <text>. Stellt Text blinkend dar.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Textfarbe
blinkColor STRING Highlightfarbe
delay ZAHL Pause zwischen Umschalten
align
  • center
  • right
  • left
Ausrichtung des Textes (Zentriert, Rechtsbündig, Linksbündig)
font STRING Name des Fonts
Beispiel
;-(

<scrolltext>

Ein mehrzeiliger Text.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Farbe des Textes
align
  • center
  • right
  • left
Ausrichtung des Textes (Zentriert, Rechtsbündig, Linksbündig)
font STRING Name des Fonts
Beispiel
<scrolltext x1="24" y1="138" y2="-72" x2="583" font="helmetr.ttf:20" color="#AFFFFF00">
{PresentShortText}
{PresentDescription}
</scrolltext>

<scrollbar>

Eine Scrollleiste.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Farbe des Balkens
bgColor STRING Farbe des Hintergrunds
Beispiel
<scrollbar x1="585" x2="608" y1="162" y2="-110" color="#AFFFFF00" bgColor="#8F2B1B9E" />

<progress>

Eine Fortschrittsanzeige

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung
color STRING Farbe des Balkens
bgColor STRING Farbe des Hintergrunds
mark STRING Farbe der Schnittmarkierungen
active STRING Farbe des aktiven Bereiches
keep STRING Farbe des Bereiches der nicht herausgeschnitten wird
current ZAHL/TOKEN Aktueller Indexwert
total ZAHL/TOKEN Maximaler Indexwert
Beispiel
<progress x1="19" x2="556" y1="-17" y2="-7" color="#AF000000" current="{VolumeCurrent}" total="{VolumeTotal}" />
<progress x1="129" x2="478" y1="487" y2="502" color="#FFCE7B00" bgColor="Blue" mark="Black" active="Black" keep="Black" current="{ReplayPositionIndex}"  total="{ReplayDurationIndex}"/>

<block>

Ein <block></block> fasst mehrere Objekte zusammen (nicht rekursiv möglich!)

Attribut Wert Beschreibung
condition FUNKTION Komplexe Bedingung
Beispiel
<block condition="file('logos/{ChannelName}.mng')"> 
 <rectangle x1="4" x2="67" y1="4" y2="51" color="#AF000000" />
 <image x="0" y="0" path="logos/{ChannelName}.mng" />
</block>

<list>

Definiert die Liste im Menü.

Attribut Wert Beschreibung
x1 ZAHL Position der linken Kante
y1 ZAHL Position der oberen Kante
y2 ZAHL Position der rechten Kante
x2 ZAHL Position der unteren Kante
condition FUNKTION/TOKEN Komplexe Bedingung (möglich, macht aber wenig Sinn)
Beispiel
<list x1="24" y1="62" x2="569" y2="-82">
  <item height="28"/>
  <text x1="25" x2="569" y1="3" y2="27" color="#AF00FFFF" font="Sml">{MenuGroup}</text>
  <text x1="25" x2="569" y1="3" y2="27" color="#AFFFFFFF" font="Sml">{MenuItem}</text>
  <rectangle x1="0" x2="579" y1="0" y2="27" color="#FF2B1B9E" condition="{IsMenuCurrent}" />
  <text x1="22" x2="569" y1="0" y2="27" color="#AFFFFFFF" font="Osd">{MenuCurrent}</text>
  <text x1="0" x2="25" y1="0" y2="27" color="#AFFFFFFF" font="Osd">-></text>
</list>

<item>

Definiert ein Item der Liste.

Attribut Wert Beschreibung
condition FUNKTION/TOKEN Komplexe Bedingung (möglich, macht aber wenig Sinn)
height ZAHL Höhe eines Listeneintrags
Beispiel
<list x1="24" y1="62" x2="569" y2="-82">
  <item height="28" />
  <text x1="25" x2="569" y1="3" y2="27" color="#AF00FFFF" font="Sml">{MenuGroup}</text>
  <text x1="25" x2="569" y1="3" y2="27" color="#AFFFFFFF" font="Sml">{MenuItem}</text>
  <rectangle x1="0" x2="579" y1="0" y2="27" color="#FF2B1B9E" condition="{IsMenuCurrent}" />
  <text x1="22" x2="569" y1="0" y2="27" color="#AFFFFFFF" font="Osd">{MenuCurrent}</text>
  <text x1="0" x2="25" y1="0" y2="27" color="#AFFFFFFF" font="Osd">-></text>
</list>

Token

Allgemein

Token Bemerkung Beschreibung
DateTime (s.h. "man strftime") Aktuelles Datum/Uhrzeit
CurrentRecording Liefert im Zwei-Sekunden-Takt alle aktuell laufenden Aufnahmen
Attribut: Zahl, um n-te laufende Aufnahme zu wählen
FreeDiskSpace Aktueller Restspeicherplatz als Zahl in MB
Attribut: Rückgabe als formatierte Zeit
AudioTrack Bezeichnung des aktuell eingestellten Audio-Track
AudioChannel Bezeichnung des geschalteten Kanals ("stereo", "left" oder "right")

Channel Display

Token Bemerkung Beschreibung
ChannelNumber Kanalnummer ("Kanalnummer-" wenn gerade eine Eingabe stattfindet)
ChannelName Kanalname oder Gruppenname
ChannelShortName Kurzname des Kanals, wenn vorhanden
ChannelBouquet Provider/Bouquetname, wenn vorhanden
ChannelPortal Portalname, wenn vorhanden
ChannelSource Signalquelle (z.B. "S19.2E")
PresentStartDateTime (* auch in #Menu Display) Startzeit des aktuellen Titels
PresentVPSDateTime (* auch in #Menu Display) VPS-Startzeit des aktuellen Titels, wenn vorhanden
PresentEndDateTime (* auch in #Menu Display) Ende-Zeit des aktuellen Titels
PresentDuration (* auch in #Menu Display) Dauer des aktuellen Titels
PresentProgress (* auch in #Menu Display) Bisherige Laufzeit des aktuellen Titels
PresentRemaining (* auch in #Menu Display) Restzeit des aktuellen Titels
PresentTitle (* auch in #Menu Display) Titel/Überschrift des aktuellen Titels
PresentShortText (* auch in #Menu Display) Kurztext/Episode des aktuellen Titels
PresentDescription (* auch in #Menu Display) Beschreibung des aktuellen Titels
FollowingStartDateTime Startzeit des folgenden Titels
FollowingVPSDateTime VPS-Startzeit des folgenden Titels, wenn vorhanden
FollowingEndDateTime Ende-Zeit des folgenden Titels
FollowingDuration Dauer des folgenden Titels
FollowingTitle Titel/Überschrift des folgenden Titels
FollowingShortText Kurztext/Episode des folgenden Titels
FollowingDescription Beschreibung des folgenden Titels
ButtonRed (* auch in #Menu Display, #Replay Display) Beschriftung des roten Buttons, wenn vorhanden
ButtonGreen (* auch in #Menu Display, #Replay Display) Beschriftung des grünen Buttons, wenn vorhanden
ButtonYellow (* auch in #Menu Display, #Replay Display) Beschriftung des gelben Buttons, wenn vorhanden
ButtonBlue (* auch in #Menu Display, #Replay Display) Beschriftung des blauen Buttons, wenn vorhanden
Language Sprache (noch nur "Audio 1", "Audio 2" oder "Digital Audio")
HasTeletext Wahr wenn der Sender Videotext ausstrahlt
HasMultilang Wahr wenn der Sender mehrere Tonspuren ausstrahlt
HasDolby Wahr wenn der Sender Mehrkanal-Digitalton ausstrahlt
IsEncrypted Wahr wenn der Sender verschlüsselt ist
IsRadio Wahr wenn der Sender ein Radiosender ist
IsRecording Wahr wenn eine Aufzeichnung stattfindet
HasVPS (* auch in #Menu Display) Wahr wenn der Sender VPS ausstrahlen kann
HasTimer (* auch in #Menu Display) Wahr wenn der aktuelle Titel von einem Timer erfasst wird
IsRunning (* auch in #Menu Display) Wahr wenn der aktuelle Titel den Status "running" hat
CurrentRecording (* auch in allen anderen Displays) Liefert im Zwei-Sekunden-Takt alle aktuell laufenden Aufnahmen

Volume Display

Token Bemerkung Beschreibung
VolumeCurrent Aktueller Lautstärkewert (0-VolumeTotal) (numerisch)
VolumeTotal Maximaler Lautstärkewert
IsMute Wahr wenn Stummschaltung aktiv ist

Message Display

Token Bemerkung Beschreibung
Message (* auch in allen anderen Displays) Text der aktuellen Nachricht (Typ egal), wenn vorhanden
MessageStatus (* auch in allen anderen Displays) Text der aktuellen Nachricht, wenn vorhanden und vom Typ Statusnachricht
MessageInfo (* auch in allen anderen Displays) Text der aktuellen Nachricht, wenn vorhanden und vom Typ Information
MessageWarning (* auch in allen anderen Displays) Text der aktuellen Nachricht, wenn vorhanden und vom Typ Warnung
MessageError (* auch in allen anderen Displays) Text der aktuellen Nachricht, wenn vorhanden und vom Typ Fehler

Replay Display

Token Bemerkung Beschreibung
ReplayTitle Titel der aktuell laufenden Wiedergabe
ReplayPositionIndex Position in der Wiedergabe (numerisch, analog zu PresentProgress)
ReplayDurationIndex Dauer der Wiedergabe (numerisch, analog zu PresentDuration)
ReplayRemaining Restzeit der Wiedergabe (numerisch, analog zu PresentRemaining)
ReplayPrompt Eingabeaufforderung, wenn vorhanden (z.B. "Springen: --:--")
IsPlaying Wahr wenn die Wiedergabe normal abläuft
IsFastForward Wahr wenn schneller Vorlauf aktiv ist
IsFastRewind Wahr wenn schneller Rücklauf aktiv ist
IsSlowForward Wahr wenn Vorwärts-Zeitlupe aktiv ist
IsSlowRewind Wahr wenn Rückwärts-Zeitlupe aktiv ist
IsPausing Wahr wenn die Wiedergabe pausiert ist
ReplayPosition Position in der Wiedergabe, fertig formatiert, mit Frames auf Schnittmarken, sonst ohne Frames
ReplayDuration Dauer der Wiedergabe, fertig formatiert
ReplayMode Art der Wiedergabe (z.B. "dvd", "vcd", "normal", ...)
ButtonRed (* auch in #Channel Display, #Menu Display) Text des roten Button, wenn vorhanden
ButtonGreen (* auch in #Channel Display, #Menu Display) Text des grünen Button, wenn vorhanden
ButtonYellow (* auch in #Channel Display, #Menu Display) Text des gelben Button, wenn vorhanden
ButtonBlue (* auch in #Channel Display, #Menu Display) Text des blauen Button, wenn vorhanden

Menu Display

Token Bemerkung Beschreibung
MenuTitle Attribut: "clean" Titelzeile der Menüseite oder gefilterter Titel mit "clean"
MenuGroup Text des aktuellen Listeneintrags, wenn es sich um eine Gruppe/Trenner handelt
IsMenuGroup Wahr wenn aktuell gezeichneter Eintrag eine Gruppe/Trenner ist
MenuItem Text des aktuellen Listeneintrags, wenn es sich um einen normalen Eintrag handelt
IsMenuItem Wahr wenn der aktuell gezeichnete Eintrag ein normaler Eintrag ist
MenuCurrent Attribut: "clean" Text des aktuellen Listeneintrags, wenn es sich um den ausgewählten Eintrag handelt
IsMenuCurrent Wahr wenn der aktuell gezeichnete Eintrag der zur Zeit ausgewählte ist
MenuText Textseite, die statt der Liste angezeigt werden soll (z.B. Ausgabe im Befehle-Menü)
ButtonRed (* auch in #Channel Display, #Replay Display)
ButtonGreen (* auch in #Channel Display, #Replay Display)
ButtonYellow (* auch in #Channel Display, #Replay Display)
ButtonBlue (* auch in #Channel Display, #Replay Display)
CanScrollUp Wahr wenn ein Scrolltext angezeigt wird, der aktuell nach oben gescrollt werden kann
CanScrollDown Wahr wenn ein Scrolltext angezeigt wird, der aktuell nach unten gescrollt werden kann
PresentStartDateTime (* auch in #Channel Display)
PresentVPSDateTime (* auch in #Channel Display)
PresentEndDateTime (* auch in #Channel Display)
PresentDuration (* auch in #Channel Display)
PresentProgress (* auch in #Channel Display)
PresentRemaining (* auch in #Channel Display)
PresentTitle (* auch in #Channel Display)
PresentShortText (* auch in #Channel Display)
PresentDescription (* auch in #Channel Display)
HasVPS (* auch in #Channel Display)
HasTimer (* auch in #Channel Display)
IsRunning (* auch in #Channel Display)

Funktionen

not

Negierung einer Funktion.

not(equal({PresentStartDateTime},{PresentVPSDateTime}))

and

Wahr, wenn alle Parameter wahr sind.

and({CanScrollUp},{CanScrollDown})

or

Wahr, wenn mindestens ein Parameter wahr ist.

or({CanScrollUp},{CanScrollDown})

equal

Wahr, wenn beide Parameter gleich sind.

equal('Kanäle', trans('Channels'))

file

Liefert den Parameter zurück, wenn die dort angegebene Datei existiert.

file('logos/{ChannelName}.png')

trans

Liefert die Übersetzung (nach i18n) des Parameters; falsch, wenn keine Übersetzung gefunden wurde.

equal('Kanäle', trans('Channels'))

Attribute

arc

Attribut Wert Bedeutung
arc 0 Bei ellipse: volle Ellipse Bei slope: horizontal, steigend, unten
1 Bei ellipse: erster Quadrant Bei slope: horizontal, steigend, oben
2 Bei ellipse: zweiter Quadrant Bei slope: horizontal, fallend, unten
3 Bei ellipse: dritter Quadrant Bei slope: horizontal, fallend, oben
4 Bei ellipse: vierter Quadrant Bei slope: vertikal, steigend, rechts
5 Bei ellipse: rechte Hälfte Bei slope: vertikal, steigend, links
6 Bei ellipse: obere Hälfte Bei slope: vertikal, fallend, rechts
7 Bei ellipse: linke Hälfte Bei slope: vertikal, fallend, links
8 Bei ellipse: untere Hälfte
-1..-8 Bei ellipse: s.o., invertiert

color

Betrifft auch: bgColor, blinkColor, mark, active, keep

Farben werden im RGB-Format mit Transparenz angegeben. Also etwa

color="#AARRGGBB"

Farben können auch als symbolischer Wert angegeben werden, welcher in der .colors-Datei des Skins aufgelöst wird. Z.B.

color="MenuTextFg"
  • A = Alphawert (eigentlich Deckkraft, oft auch Transparenz)
  • R = Rotwert
  • G = Grünwert
  • B = Blauwert

Ein paar Beispiele

        AARRGGBB
color="#00000000" = Schwarz, voll transparent (durchsichtig)
color="#FF000000" = Schwarz, volle Deckkraft
color="#7F000000" = Schwarz, halb durchscheinend
color="#7FFFFFFF" = Weiß, halb durchscheinend

und natürlich alle möglichen Zwischentöne und Transparenzen.

font

Es gibt drei vorgegebene Fonts

  • Osd
  • Fix
  • Sml

Wenn man die Freetype-Bibliothek installiert hat und beim compilieren aktiviert hat, lässt sich zusätzlich jeder TrueType-Font verwenden, der unter

  • /etc/vdr/plugins/text2skin/fonts/

oder

  • /etc/vdr/plugins/text2skin/SkinName/

installiert ist.

In der Skindatei gibt man den Fontnamen,

font="Osd"

oder, bei Truetype-Fonts, den Font-Dateinamen und die gewünschte Größe und Breite (optional)

font="helmetr.ttf:Größe[,Breite]"

an