Text2skin-Skin Referenz
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
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