Formát skinů MPlayeruPřehled
Nemá to sice nic společného s formátem skinu, ale měli byste vědět, že
MPlayernemá
vestavěný skin, takže si musíte alespoň jeden skin
nainstalovat, chcete-li používat GUI.Adresáře
Adresáře prohledávané na skiny jsou (v tomto pořadí):
$(DATADIR)/skins/$(PREFIX)/share/mplayer/skins/~/.mplayer/skins/
Poznamenejme, že první z cest se může lišit podle toho, jak je
MPlayer zkonfigurován (viz volby configure skriptu
a ).
Každý skin je instalován do vlastního adresáře v některém z výše uvedených.
Například:
$(PREFIX)/share/mplayer/skins/default/Formáty obrázkůObrázky musí být truecolor (24 nebo 32 bpp) PNG.
V hlavním okně a v přehrávači (viz níž) můžete použít obrázky s 'průhledností':
Oblasti vyplněné barvou #FF00FF (magenta) jsou plně průhledné, pokud jsou
zobrazovány MPlayerem. To znamená, že můžete mít
tvarovaná okna, pokud má váš X server XShape rozšíření.
Součásti skinu
Skiny mají poměrně volný formát (narozdíl například od pevného formátu skinů
Winampu/XMMS),
takže je jen na vás, zda vytvoříte něco skvělého.
V současnosti jsou zde čtyři okna, která můžete dekorovat:
hlavní okno,
podokno,
ovládací panel a
nabidka (tu lze aktivovat
pravým myšítkem).
MPlayer je ovládán v
hlavním okně a/nebo v
ovládacím panelu. Pozadím okna je obrázek.
Následující součásti mohou (a musí) být umístěny v okně:
tlačítka, potenciometry (šoupátka)
a popisky.
Každé součásti musíte nastavit pozici a velikost.
A tlačítko má tři stavy (stisknuto, puštěno a
zakázáno), proto musí být jeho obraz svisle rozdělen do tří částí.
Detaily viz součást tlačítko.
A potenciometr (hlavně používaný pro
lištu převíjení a ovládání hlasitosti/stereováhy) může mít libovolný počet
fází dělících jeho obraz na jednotlivé části pod sebou. Detaily viz
hpotenciometr a
potenciometr.
Popisky jsou poněkud zvláštní: Znaky potřebné
pro jejich vykreslení jsou brány z obrazového souboru a znaky v obrázku jsou
popsány souborem popisu fontu.
Tento (druhý) soubor je prostý textový soubor, který popisuje pozici x,y a
velikost každého znaku v obrázku (obrázkový soubor a soubor popisu fontu
spolu tvoří font). Detaily viz
dlabel.
Všechny obrázky mohou mít plnou průhlednost, jak je popsána v sekci
o formátech obrázků. Pokud X
server nepodporuje rozšíření XShape, budou průhledné části černé. Pokud byste
chtěli využít tuto vlastnost, musí být šířka pozadí hlavního okna celočíselně
dělitelná 8.
Podokno je to okno, kde se zobrazuje film.
Může v něm být zobrazen určený obrázek, pokud není načten žádný film (je
docela únavné, pokud zde není nic :-)).
Poznámka: průhlednost zde
is není povolena.
Nabídka je jen způsob, jak ovládat
MPlayer položkami menu. Vyžadovány jsou dva
obrázky: jeden z nich jako menu v normálním stavu a druhý se zvýrazněnými
položkami. Když pak vyvoláte menu, je zobrazen první obrázek. Při pohybu myší
přes položky, je zkopírována aktuálně vybraná položka z druhého obrázku přes
ten první pod kursorem (druhý obrázek není nikdy zobrazen celý).
Položka menu je definována svou pozicí a velikostí v obrázku (detaily viz
sekce nabídka).
Jednu důležitou věc jsme ještě nezmínili: Mají-li tlačítka,
potenciometry a položky menu pracovat, musí MPlayer
vědět, co má udělat, pokud je na ně kliknuto. To je zajištěno pomocí
zpráv (událostí). Pro tyto členy tedy musíte
definovat zprávy, které budou při kliku generovány.
Soubory
Pro výrobu skinu budete potřebovat následující:
Konfigurační soubor jménem skin řekne
MPlayeru, jak má dát jednotlivé části skinu
dohromady a co udělat, kliknete-li někde v okně.
Obrázek pozadí hlavního okna.
Obrázky položek hlavního okna (včetně jednoho nebo více souborů s popisem
fontu pro vykreslování popisek).
Obrázek pro zobrazení v podokně (volitelný).
Dva obrázky pro nabídku (ty jsou potřeba pouze pokud chcete vytvořit menu).
S výjimkou konfiguračního souboru skinu si můžete pojmenovat ostatní soubory
jak chcete (s tím, že vaše soubory s popisem fontu budou mít příponu
.fnt).
Soubor skin
Jak jsme již řekli, je to konfigurační soubor skinu. Soubor je řádkově
orientován; řádky s komentářem začínají znakem ';' (před ním
jsou povoleny jen mezery a tabulátory).
Soubor je složen ze sekcí. Každá sekce popisuje skin pro aplikaci a má
následující formu:
section = název cekce
.
.
.
end
Zatím máme jen jednu aplikaci, takže potřebujete jen jednu sekci: její název je
movieplayer.
Uvnitř sekce je každé okno posáno blokem, který má následující formu:
window = název okna
.
.
.
end
kde název okna může být jeden z těchto řetězců:
main - pro hlavní oknosub - pro podoknomenu - pro nabídkuplaybar - ovládací panel
(Bloky sub a menu jsou volitelné - nemusíte vytvářet nabídku nebo vyzdobit
podokno.)
Uvnitř window bloku můžete definovat každou položku okna řádkem v tomto tvaru:
položka = parametr
Kde položka je řetězec označující typ položky GUI a
parametr je číselná nebo textová hodnota (nebo seznam hodnot
oddělených čárkami).
Dáte-li to všechno dohromady, celý soubor vypadá asi takto:
section = movieplayer
window = main
; ... položky hlavního okna ...
end
window = sub
; ... položky podokna ...
end
window = menu
; ... položky menu ...
end
window = playbar
; ... položky ovládacího panelu ...
end
end
Jméno souboru s obrázkem musí být zadáno bez úvodních adresářů - obrázky jsou
vyhledávány v adresáři skins.
Měli byste (ale nemusíte) zadat příponu souboru. Pokud soubor neexistuje,
zkouší MPlayer načíst soubor
<jméno>.<příp>, kdy jsou za
<příp> zkoušeny přípony png
a PNG (v tomto pořadí). Použitý bude první vyhovující soubor.
Nakonec ještě pár slov k umísťování. Hlavní okno a podokno mohou být umístěny
v různých rozích obrazovky zadáním souřadnic X a
Y. 0 je nahoře nebo vlevo,
-1 je střed a -2 je vpravo nebo dole, jak
je vidět na obrázku:
(0, 0)----(-1, 0)----(-2, 0)
| | |
| | |
(0,-1)----(-1,-1)----(-2,-1)
| | |
| | |
(0,-2)----(-1,-2)----(-2,-2)
Aby bylo vše jasné, uvádíme příklad. Řekněme, že máte obrázek jménem
main.png, který použijete pro hlavní okno:
base = main, -1, -1MPlayer zkusí načíst soubory main,
main.png, main.PNG.
Hlavní okno a ovládací panel
Níže uvádíme seznam položek, které mohou být použity v blocích
'window = main' ... 'end',
a 'window = playbar' ... 'end'.
base = obrázek, X, Y
Umožňuje nastavit obrázek pozadí hlavního okna. Okno bude vykresleno na
zadaných souřadnicích X,Y na obrazovce a bude mít velikost
obrázku.
Tyto koordináty zatím nefungují pro okno display.Průhledné oblasti v obrázku (obarvené #FF00FF) budou černé
na X serverech bez XShape rozšíření. Šířka obrázku musí být celočíselně
dělitelná 8.button = obrázek, X, Y, šířka, výška, zpráva
Umístí tlačítko rozměru šířka * výška
na pozici X,Y. Zadaná zpráva je
generována při kliku na tlačítko. Zadaný obrázek musí
mít tři části pod sebou (odpovídající možným stavům tlačítka) takto:
+------------+
| stisknuto |
+------------+
| uvolněno |
+------------+
| zakázáno |
+------------+
decoration = enable|disable
Zapne (enable) nebo vypne (disable) dekoraci hlavního okna, produkovanou
okenním manažerem. Výchozí je disable.
V okně display to nefunguje, není to potřeba.hpotmeter = tlačítko, tšířka, tvýška, fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva
vpotmeter = tlačítko, tšířka, tvýška, fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva
Umístí vodorovný (hpotmeter) nebo svislý (vpotmeter) potenciometr velikosti
šířka * výška na pozici
X,Y. Obrázek může být rozdělen do různých částí pro různé
fáze potenciometru (Například můžete mít potenciometr pro nastavení hlasitosti,
jehož dráha se barví ze zelené na červenou, jak se jeho hodnota mění od nejmenší
do největší.). hpotmeter může mít táhlo, které může být
vodorovně taženo. Význam parametrů:
tlačítko - obrázek, ktrý se použije pro
tlačítko (musí mít tři části pod sebou, stejně jako v případě tohoto
tlačítka)
tšířka, tvýška -
velikost tlačítka
fáze - obrázek použitý pro různé fáze
hpotmetru. Pokud žádný obrázek nechcete, můžete použít speciální hodnotu
NULL. Obrázek musí být rozdělen svisle na
počet_fází částí takto:
+------------+
| fáze #1 |
+------------+
| fáze #2 |
+------------+
...
+------------+
| fáze #n |
+------------+
počet_fází - počet fází uložených v
obrázku fázevýchozí - výchozí hodnota pro hpotmeter
(v rozsahu 0 až 100)
X, Y - pozice pro hpotmeter
šířka, výška - šířka a výška
hpotmeteru
zpráva - zpráva generovaná při změně
hodnoty hpotmeteru
potmeter = fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva
hpotmeter bez tlačítka. (soudil bych, že byl míněn jako
otočný, ale reaguje pouze na horizontální tažení.) Popis parametrů je stejný
jako v hpotmeter.
fáze mohou být NULL, ale je to vcelku
k ničemu, jelikož nemůžete vidět, jak je nastaven potmeter.
font = soubor_fontu, id_fontu
Definuje font. soubor_fontu je jméno souboru popisu fontu
s příponou .fnt (zde příponu nezadávejte).
id_fontu je použit jako ukazatel na font
(viz dlabel
a slabel). Definováno může být více než 25 fontů.
slabel = X, Y, id_fontu, "text"
Umístí statický popisek na pozici X,Y. text
je zobrazen fontem identifikovaným pomocí id_fontu. Text je
surový řetězec ($x proměnné nefungují), který musí být uzavřen
ve dvojitých uvozovkách (ale znak " nesmí být součástí textu).
Popisek je zobrazen fontem identifikovaným pomocí id_fontu.
dlabel = X, Y, délka, zarovnání, id_fontu, "text"
Umístí dynamický popisek na pozici X,Y. Popisek je
dynamický proto, že je jeho text periodicky obnovován. Maximální délka
popisku je nastavena na délka (jeho výškou je výška znaku).
Pokud je zobrazovaný text širší, pak bude rolován,
jinak bude zarovnán do určeného prostoru podle hodnoty parametru
zarovnání: 0 je zarovnání vpravo,
1 na střed, 2 vlevo.
Text k zobrazení je zadán parametrem text: Musí být uzavřen
do dvojitých uvozovek (ale znak " nesmí být součástí textu).
Popisek je zobrazen fontem identifikovaným pomocí id_fontu.
V textu můžete použít tyto proměnné:
ProměnnáVýznam$1čas přehrávání ve formátu hh:mm:ss$2čas přehrávání ve formátu mmmm:ss$3čas přehrávání ve formátu hh (hodiny)$4čas přehrávání ve formátu mm (minuty)$5čas přehrávání ve formátu ss (sekundy)$6délka filmu ve formátu hh:mm:ss$7délka filmu ve formátu mmmm:ss$8čas přehrávání ve formátu h:mm:ss$vhlasitost ve formátu xxx.xx%$Vhlasitost ve formátu xxx.xx$bstereováha ve formátu xxx.xx%$Bstereováha ve formátu xxx.xx$$znak $$aznak podle typu audia (žádné: n,
mono: m, stereo: t)$tčíslo stopy (v playlistu)$onázev souboru$fnázev souboru malými písmeny$Fnázev souboru velkými písmeny$Tznak podle typu datového proudu (soubor: f,
Video CD: v, DVD: d, URL: u)$pznak p (pokud přehráváte soubor a font obsahuje
znak p)$sznak s character (pokud přehráváte soubor a font obsahuje
znak s)$eznak e (pokud je přehrávání pozastaveno a font obsahuje
znak e)$xšířka filmu$yvýška filmu$Cnázev použitého kodeku
Proměnné $a, $T, $p, $s a $e
vracejí znaky, které by se měly zobrazit jako speciální symboly (například
e je symbol pro pauzu, který obvykle vypadá asi takto
||). Měli byste mít font pro normální znaky a jiný font pro
symboly. Pro více informací viz sekci
symboly.
Ovládací panel
Následující vstupy mohou být použity v bloku
'window = sub' . . . 'end'.
base = obrázek, X, Y, šířka, výška
Obrázek, který bude zobrazen v okně. Okno se zobrazí na pozici zadané
souřadnicemi X,Y na obrazovce (0,0 je
levý horní roh). Můžete nastavit -1 pro střed a -2
pro vpravo (X) a dole (Y). Okno bude
stejně velké jako obrázek. šířka a výška
udávají velikost okna; jsou volitelné (pokud chybí, má okno rozměry shodné
s obrázkem).
background = R, G, B
Umožňuje nastavit barvu pozadí. To je užitečné, pokud je obrázek menší než
okno. R, G a B
označují červenou, zelenou a modrou složku barvy (každá z nich je dekadická
hodnota 0 až 255).
Nabídka
Jak již bylo dříve řečeno, nabídka je zobrazena pomocí dvou obrázků. Normální
položky nabídky jsou brány z obrázku určeného položkou base,
zatímco aktuálně zvolený vstup je brán z obrázku určeného položkou
selected. Musíte definovat pozici a rozměr každé položky
nabídky.
Následující vstupy mohou být použity v bloku
'window = menu'. . .'end'.
base = obrázek
Obrázek normálních položek nabídky.
selected = obrázek
Obrázek nabídky kde jsou všechny položky vybrány.
menu = X, Y, šířka, výška, zpráva
Definuje pozici X,Y a rozměr položky nabídky v obrázku.
zpráva je zpráva, generovaná jakmile je uvolněno tlačítko
myši nad položkou.
Fonty
Jak jsme již zmínili v sekci o částech skinu, font je definován obrázkem a
souborem popisu. Můžete rozmístit znaky v obrázku libovolně, ale ujistěte se, že
je jejich velikost a pozice je uvedena v souboru popisu přesně.
Soubor popisu fontu (s příponou .fnt) může obsahovat
řádky s komentářem začínající ';'. Soubor musí obsahovat
řádek ve formě
image = obrázek
Kde obrázek je název obrázku
použitého pro font (nemusíte zadávat příponu).
"char" = X, Y, šířka, výška
Zde X a Y udávají pozici
char znaku v obrázku (0,0 je levý
horní roh). šířka a výška jsou
rozměry znaku v pixelech.
Tento příklad definuje znaky A, B, C s použítím font.png.
; Zde může být jen "font" místo "font.png".
image = font.png
; Tři znaky pro ilustraci stačí :-)
"A" = 0,0, 7,13
"B" = 7,0, 7,13
"C" = 14,0, 7,13
Symboly
Některé znaky mají speciální význam, jsou-li vráceny některou z proměnných
použitých v dlabel. Tyto znaky mají být
zobrazovány jako symboly, takže mohou být zobrazeny věci jako pěkné DVD logo
místo znaku 'd' pro DVD datový proud.
Následující tabulka obsahuje znaky, které mohou být použity k zobrazení
symbolů (a tudíž vyžadují odlišný font).
ZnakSymbolpplaysstopepausenbez zvukummono zvuktstereo zvukfdatový proud je souborvdatový proud je Video CDddatový proud je DVDudatový proud je URLGUI zprávy
Tyto zprávy mohou být generovány tlačítky, potenciometry a položkami
nabídky.
Některé zpráva nemusí pracovat podle očekávání (nebo vůbec).
Jak víte, GUI je ve vývoji.
Ovládání přehrávání:evNext
Skočí na následující stopu v playlistu.
evPause
Tvoří přepínač společně s evPlaySwitchToPause. Ty mohou
být použity k vytvoření tradičního play/pauza tlačítka. Obě zprávy by měly
být přiřazeny tlačítkům umístěným na stejné pozici. Tato zpráva pozastaví
přehrávání a zobrazen bude obrázek pro evPlaySwitchToPause
talčítko (pro indikaci, že tlačítko může být stisknuto pro obnovení přehrávání).
evPlay
Zahájí přehrávání.
evPlaySwitchToPause
Protiklad evPauseSwitchToPlay. Tato zpráva zahájí přehrávání
a zobrazí obrázek pro tlačítko evPauseSwitchToPlay
(pro indikaci, že tlačítko může být stisknuto pro pozastavení přehrávání).
evPrev
Skočí na předchozí stopu v playlistu.
evStop
Zastaví přehrávání.
Převíjení:evBackward10sec
Převine zpět o 10 sekund.
evBackward1min
Převine zpět o 1 minutu.
evBackward10min
Převine zpět o 10 minut.
evForward10sec
Převine vpřed o 10 sekund.
evForward1min
Převine vpřed o 1 minutu.
evForward10min
Převine vpřed o 10 minut.
evSetMoviePosition
Převine na danou pozici (může být přiřazeno potenciometru; použije se
relativní hodnota (0-100%) potenciometru).
Ovládání videa:evHalfSize
Nastaví velikost okna filmu na poloviční velikost.
evDoubleSize
Nastaví velikost okna filmu na dvojnásobnou velikost.
evFullScreen
Přepíná do celoobrazovkového režimu a zpět.
evNormalSize
Nastaví velikost okna na normální velikost.
Ovládání zvuku:evDecAudioBufDelay
Sníží zpoždění vyrovnávací paměti zvuku.
evDecBalance
Sníží hodnotu stereováhy.
evDecVolume
Sníží hlasitost.
evIncAudioBufDelay
Zvýší zpoždění vyrovnávací paměti zvuku.
evIncBalance
Zvýší hodnotu stereováhy.
evIncVolume
Zvýší hlasitost.
evMute
Vypne/zapne zvuk.
evSetBalance
Nastaví stereováhu (může být sdruženo s potenciometrem; použije se
relativní hodnota potenciometru (0-100%)).
evSetVolume
Nastaví hlasitost (může být sdruženo s potenciometrem; použije se
relativní hodnota potenciometru (0-100%)).
Různé:evAbout
Otevře okno o aplikaci.
evDropSubtitle
Vypne aktuálně použité titulky.
evEqualizer
Zapne/vypne ekvalizér.
evExit
Ukončí program.
evIconify
Minimalizuje okno.
evLoad
Otevře soubor (otevřením okna prohlížeče souborů, kde si soubor vyberete).
evLoadPlay
Stejné jako evLoad, ale navíc se okamžitě spustí přehrávání
otevřeného souboru.
evLoadSubtitle
Otevře soubor s titulky (pomocí prohlížeče souborů)
evLoadAudioFile
Otevře soubor se zvukem (pomocí prohlížeče souborů)
evNone
Prázdná zpráva, nemá žádný efekt (možná s výjimkou CVS verzí :-)).
evPlaylist
Otevře/zavře okno playlistu.
evPlayDVD
Zkusí otevřít disk v zadané DVD-ROM mechanice.
evPlayVCD
Zkusí otevřít disk v zadané CD-ROM mechanice.
evPreferences
Otevře okno předvoleb.
evSetAspect
Nastaví poměr stran zobrazovaného obrázku.
evSetURL
Zobrazí dialogové okno pro volbu URL.
evSkinBrowser
Otevře okno voliče skinů.
Tvorba kvalitních skinů
Co když jste si přečetli o skinech pro GUI
MPlayeru, odvedli to nejlepší s
Gimpem a chcete nám poslat svůj skin?
Přečtěte si pár návodů, abyste se vyhnuli běžným omylům a vytvořili
vysoce kvalitní skin.
Chceme, aby skiny, které přidáme do našeho repozitáře odpovídaly
určitým standardům kvality. Je zde také mnoho věcí, které můžete
udělat, abyste nám ulehčili práci.
Za příklad si vemte skin Blue.
Ten splňuje všechna kritéria od verze 1.5.
Ke každému skinu by měl být soubor
README, obsahující informace o vás jako autorovi,
o copyrightu a licenci a vše ostatní, co chcete dodat.
Chcete-li mít changelog, tento soubor je dobrým místem.
Mel by tu být soubor VERSION
neobsahující nic jiného, než číslo verze na jediném řádku (např. 1.0).
Horizontální a vertikální ovládání (posuvníky jako hlasitost
nebo pozice) by měly mít střed knoflíku správně zarovnán na stred posuvníku.
Mělo by být možné posouvat knoflík na oba konce posuvníku, ale ne za ně.
Jednotlivé součásti skinu by měly mít správné rozměry
deklarované v souboru skin. Pokud to tak není, můžete kliknout mimo např.
tlačítko a to se stejně stiskne, nebo kliknout na jeho plochu a nestisknout
jej.
Soubor skin by měl být srovnán na znaky
a neobsahovat tabulátory. Srovnán na znaky znamená, že se čísla budou rovnat
do úhledných sloupců.