summaryrefslogtreecommitdiff
path: root/SKINS.de
blob: 2e1cc8ecb4de5247ec3a4c85effca602745f0bb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259


DIESES DOKUMENT IST NICHT AUF DEM NEUESTEN STAND (sorry)


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