Wie man textbasierte Skins erstellt ----------------------------------- Das Skin selbst findet in einem Unterverzeichnis "text2skin" innerhalb des "plugins" Verzeichnisses ihres Konfigurationsordners. Das ist normalerweise das Videoverzeichnis, wenn beim VDR-Start -c nicht angegeben wurde, sonst eben das dort angegebene. Jedes Skin hat dort ein eigenes Verzeichnis, welches die Beschreibungsdatei und Bilder enthält. Die Beschreibungsdatei muss den gleichen Namen wie das Skin tragen, mit der Dateiendung ".skin". Beispiel (das Skin heisst myskin): /video0/plugins/text2skin/ /video0/plugins/text2skin/myskin/ /video0/plugins/text2skin/myskin/myskin.skin /video0/plugins/text2skin/myskin/channeldisplay.png Es ist wichtig, dass sie die Limitierungen des OSD Speichers verstehen. Wenn zuviele Objekte mit zuvielen Farben definiert werden, dann wird VDR einen Fehler ins Log schreiben und einige Bereiche werden nicht angezeigt werden. Bei anderen Ausgabegeräten mag es sein, dass diese Limitierungen nicht zutreffen, wenn Sie also ein Skin für ein anderes Gerät schreiben möchten, benutzen Sie ruhig ein paar mehr Farben, aber denken Sie daran, dass VDR generell maximal 256 Farben pro Objekt verwalten kann. Ein Objekt ist als ein bestimmter Bereich definiert, der eine bestimmte Farbpalette und Farbtiefe verwendet. Diese Objekte werden im Verlauf dieses Dokuments "Backgrounds" genannt. Berechnen sie die Dimensionen dieser Bereiche weise, denn überlappende oder übergroße Backgrounds führen zu einem Fehler. Zusätzlich muss die Breite und Höhe jedes Backgrounds durch vier teilbar sein. Die Erstellung eines Bildes --------------------------- Ich habe mit gimp einige Beispielbilder erstellt, die Dinge auf dem Bildschirm anzeigen, obwohl ich mit Grafik eigentlich recht wenig am Hut habe. Um einige Hinweise zu geben, werde ich erklären wie ich diese Bilder erzeugt habe. Ich habe eine Vorlage für ein Kanaldisplay von einem Community-Mitglied erhalten, dieses in drei Bereiche zerlegt, die jeweils komplett vom Hintergrund gefüllt wurden. Nun habe ich das Bild so vergrößert, dass Breite und Höhe durch vier teilbar sind. Um im mittleren Bereich etwas Transparenz zu erzeugen, habe ich die Deckkraft der Bildebene auf 50% reduziert. Anschliessend habe ich alle Bilder auf 14 Farben reduziert (Bild->Modus->Indiziert) (natürlich darf das Bild nicht zu aufwändig sein, aber mit 14 Farben bekommt man schon schöne Übergänge hin. Dann bleiben zwei Farben für Text und Symbole übrig, und das ganze passt in einen 16-farb (4-bit) Background. Reduzieren sie die Azahl der Farben entsprechend, wenn Sie beabsichtigen, mehr Vordergrundobjekte zu zeichnen. Das Ergebnis habe ich als PNG gespeichert und in das Skin kopiert. Wenn sie beabsichtigen, xpm's zu nutzen, achten sie darauf dass VDR keine benannten Farben beherrscht, es könnte also sein dass Bilder die gimp erzeugt nicht sofort nutzbar sind. Die einzige benannte Farbe, die VDR beherrscht, ist "None". Das Format der Beschreibungsdatei --------------------------------- Die Datei ist eine einfache Konfigurationsdatei, die aus Sektionen und Objekten besteht. Kommentarzeilen können mit einem '#' eingeleitet werden. Leerzeilen werden ignoriert. Eine Sektion ist von eckigen '[]' Klammern eingeschlossen. Ein Objekt beginnt mit dem Text "Item=", gefolgt von der Art des Objekts. Dahinter folgen Parameter für das Objekt, mit Komma getrennt. Die Zeile wird durch ein Semikolon ';' abgeschlossen. Beispiel: Item=Skin,name=Test,version=0.0.1; [Channel] Item=Background,path=channeltop.xpm,x=42,y=350,width=540,height=32,bg=#00FFFFFF; Item=Background,path=channel.png,x=48,y=382,width=528,height=84; Item=ChannelNumberName,x=50,y=355,fg=#FFFFFFFF,bg=#FF1965FF,font=Sml; Item=PresentTime,x=52,y=387,fg=#FFFFFFFF,bg=#7F002254,font=Osd; [Volume] Item=Background,x=10,y=10,width=10,height=100; Item=Volumebar,x=10,y=10,width=10,height=100,bg=#FF000000,fg=#FFFFFFFF; Bekannte Sektionen ------------------ Sektion: [ChannelSmall] Die Kanalanzeige, die nur aktuellen Kanalnamen und -nummer anzeigt. Sektion: [Channel] Beschreibung: Die Kanalanzeige. Sie zeigt aktuellen Kanalnamen und -nummer, gemeinsam mit dem aktuellen Programm und möglicherweise eine Zeitleiste und ein Kanallogo (noch nicht implementiert). Sektion: [Volume] Beschreibung: Die Lautstärkeanzeige. Zeigt die Lautstärkeleiste und möglicherweise ein Mute-Symbol und etwas Dekoration. Sektion: [ReplayMode] Beschreibung: Die Wiedergabeanzeige. Wird angezeigt wenn nur der Wiedergabemodus gezeigt werden soll. Sektion: [Replay] Beschreibung: [ TODO ] Die große Wiedergabeanzeige Sektion: [Message] Beschreibung: [ TODO ] Anzeige einer Nachricht Sektion: [Menu] Beschreibung: [ TODO ] Vollständiges Menü Bekannte Objekte ---------------- Objekt: Item=Skin Beschreibung: Dieses Objekt identifiziert ein Skin und fügt eine Beschreibung hinzu. Parameter: name, version Objekt: Item=Background Parameter: x, y, width, height, bpp, path, bg, fg Objekt: Item=Text Parameter: x, y, text, width, height, fg, font, align Objekt: Item=DateTime Parameter: x, y, width, height, fg, font, align Objekt: Item=Date Parameter: x, y, width, height, fg, font, align Objekt: Item=Time Parameter: x, y, width, height, fg, font, align Objekt: Item=ChannelNumberName Parameter: x, y, width, height, fg, font, align Objekt: Item=ChannelNumber Parameter: x, y, width, height, fg, font, align Objekt: Item=ChannelName Parameter: x, y, width, height, fg, font, align Objekt: Item=Rectangle Parameter: x, y, width, height, fg Objekt: Item=Ellipse Parameter: x, y, width, height, fg Objekt: Item=Timebar Parameter: x, y, width, height, fg, bg Objekt: Item=PresentTime Parameter: x, y, width, height, fg, font, align Objekt: Item=PresentTitle Parameter: x, y, width, height, fg, font, align Objekt: Item=PresentShortText Parameter: x, y, width, height, fg, font, align Objekt: Item=FollowingTime Parameter: x, y, width, height, fg, font, align Objekt: Item=FollowingTitle Parameter: x, y, width, height, fg, font, align Objekt: Item=FollowingShortText Parameter: x, y, width, height, fg, font, align Objekt: Item=SymbolTeletext Parameter: x, y, width, height, path, altpath, fg, bg Objekt: Item=SymbolAudio Parameter: x, y, width, height, path, altpath, fg, bg Objekt: Item=SymbolDolby Parameter: x, y, width, height, path, altpath, fg, bg Objekt: Item=SymbolEncrypted Parameter: x, y, width, height, path, altpath, fg, bg Objekt: Item=Volumebar Parameter: x, y, width, height, fg, bg Objekt: Item=Mute Parameter: x, y, width, height, fg, bg, text, font, align, path Objekt: Item=Progressbar Parameter: x, y, width, height, fg, bg Objekt: Item=ReplayTitle Parameter: x, y, width, height, fg, font, align Objekt: Item=ReplayCurrent Parameter: x, y, width, height, fg, font, align Objekt: Item=ReplayTotal Parameter: x, y, width, height, fg, font, align Objekt: Item=ReplayJump Parameter: x, y, width, height, fg, font, align Objekt: Item=MessageStatus Parameter: x, y, width, height, fg, font, align Objekt: Item=MessageInfo Parameter: x, y, width, height, fg, font, align Objekt: Item=MessageWarning Parameter: x, y, width, height, fg, font, align Objekt: Item=MessageError Parameter: x, y, width, height, fg, font, align Bekannte Parameters ---------------- Parameter: x Standard: PFLICHT Parameter: y Standard: PFLICHT Parameter: width Standard: nicht gesetzt (sometimes mandatory) Parameter: height Standard: nicht gesetzt (sometimes mandatory) Parameter: bpp Standard: 4 (16 Farbem) Parameter: fg Standard: nicht gesetzt Beispiel: #ff000000 Parameter: bg Standard: nicht gesetzt Parameter: font Standard: Osd Parameter: path Standard: nicht gesetzt Parameter: altpath Standard: nicht gesetzt Parameter: text Standard: nicht gesetzt Parameter: align Standard: 0