Text2skin-Skin Referenz

Aus VDR Wiki
Wechseln zu: Navigation, Suche
Hinweis
Hinweis

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


Warnung
Warnung

Dies ist nur eine erste Fassung. Sie ist weder vollständig noch Fehlerfrei! --Monroe 13:27, 13. Dez 2004 (CET)


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 Bild-datei
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

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

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 Text der aktuellen Nachricht (Typ egal), wenn vorhanden
MessageStatus Text der aktuellen Nachricht, wenn vorhanden und vom Typ Statusnachricht
MessageInfo Text der aktuellen Nachricht, wenn vorhanden und vom Typ Information
MessageWarning Text der aktuellen Nachricht, wenn vorhanden und vom Typ Warnung
MessageError Text der aktuellen Nachricht, wenn vorhanden und von Typ Fehler

Replay Display

Token Bemerkung Beschreibung
ReplayTitle
ReplayPositionIndex
ReplayDurationIndex
ReplayPrompt
IsPlaying
IsFastForward
IsFastRewind
IsSlowForward
IsSlowRewind
IsPausing
ReplayPosition
ReplayDuration
ReplayRemaining
ReplayMode
ButtonRed (* auch in #Channel Display, #Menu Display)
ButtonGreen (* auch in #Channel Display, #Menu Display)
ButtonYellow (* auch in #Channel Display, #Menu Display)
ButtonBlue (* auch in #Channel Display, #Menu Display)

Menu Display

Token Bemerkung Beschreibung
MenuTitle Attribut: "clean"
MenuGroup
IsMenuGroup
MenuItem
IsMenuItem
MenuCurrent
IsMenuCurrent
MenuText Attribut: "clean"
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
CanScrollDown
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