B.2. Plik skin

Jak zostało powiedziane wcześniej, plik ten jest plikiem konfigurującym skórkę. Obsługuje różne rodzaje wierszy; komentarze zaczynają wiersz znakiem ';' (tylko spacje i znaki tabulacji są dopuszczone przed ';').

Plik podzielony jest na sekcje. Każda sekcja opisuje skórkę dla każdej aplikacji i ma następującą formę:

section = nazwa sekcji
.
.
.
end

Obecnie jest tylko jedna aplikacja, a więc potrzebujesz tylko jedną sekcję 'section' - jej nazwa to movieplayer.

Wewnątrz tej sekcji każde z okien jest opisane przez blok następującej postaci:

window = nazwa okna
.
.
.
end

gdzie nazwa okna może być jednym z poniższych łańcuchów:

(Bloki sub i menu są opcjonalne - nie musisz tworzyć menu czy elementów skórki dla okna ekranu)

Wewnątrz bloku 'window' możesz definiować każdy element okna, wpisując linijkę tej postaci:

item = parametr

Gdzie item jest łańcuchem, kóry identyfikuje typ elementu GUI, parametr jest wartością numeryczną lub tekstową (lub listą takich wartości oddzielonych od siebie znakiem przecinka).

Złożenie powyższych elementów razem tworzy plik, który wygląda mniej więcej tak:

section = movieplayer
  window = main
  ; ... elementy okna głównego ...
  end

  window = sub
  ; ... elementy okna ekranu ...
  end

  window = menu
  ; ... elementy menu skórki ...
  end

  window = playbar
  ; ... elementy panelu odtwarzania ...
  end
end

Nazwa pliku graficznego musi zostać podana bez żadnych nazw katalogów - obrazki są szukane w katalogu skins. Możesz (ale nie musisz) określić rozszerzenia tego pliku. Jeśli plik taki nie istnieje, MPlayer spróbuje wczytać plik <nazwa pliku>.<rozszerzenie>, gdzie png oraz PNG są brane jako <rozszerzenie> (w tej właśnie kolejności). Pierwszy pasujący plik będzie użyty.

Na koniec kilka słów na temat pozycjonowania. Okno główne oraz okno ekranu możesz umieścić w różnych narożnikach ekranu poprzez ustawienie współrzędnych X i Y. 0 to góra lub lewa strona, -1 to środek, -2 to strona prawa, lub dół, tak jak przedstawiono na poniższej ilustracji:

(0, 0)----(-1, 0)----(-2, 0)
  |          |          |
  |          |          |
(0,-1)----(-1,-1)----(-2,-1)
  |          |          |
  |          |          |
(0,-2)----(-1,-2)----(-2,-2)

Oto przykład wyjaśniający to lepiej. Przypuśćmy, że masz obrazek nazwany main.png, który został użyty dla okna głównego:

base = main, -1, -1

MPlayer spróbuje wczytać pliki main, main.png, main.PNG.

B.2.1. Okno główne i panel odtwarzania

Poniżej znajduje się lista wpisów, które mogą być użyte w blokach 'window = main'...'end' oraz 'window = playbar' ... 'end'.

base = obrazek, X, Y

Możesz określić obrazek tła, który będzie używany w oknie głównym. Okno będzie widoczne na ekranie na współrzędnych X, Y. Okno będzie wielkości tego obrazka.

Uwaga

Współrzędne te nie działają na razie dla okna ekranu.

Ostrzeżenie

Obszary przezroczystości obrazka (kolor #FF00FF) będą widoczne jako czarne pod X serwerami niemającymi rozszerzenia XShape. Szerokość obrazka musi być podzielna przez 8.

button = obrazek, X, Y, szerokość, wysokość, sygnał

Umieści przycisk o rozmiarze szerokość * wysokość na pozycji X, Y. Określony sygnał jest generowany podczas kliknięcia na przycisk. Obrazek ten opisany przez obrazek musi składać się z trzech części jedna pod drugą (stosownie do możliwych stanów przycisku), w ten oto sposób:

+---------------+
|  wciśnięty    |
+---------------+
|  zwolniony    |
+---------------+
| nieaktywny    |
+---------------+
decoration = enable|disable (włączona|wyłączona)

Włącza lub wyłącza dekorację menedżera okna w oknie głównym. Domyślnie jest wyłączona.

Uwaga

Nie działa to w oknie ekranu, gdyż nie ma takiej potrzeby.

hpotmeter = przycisk, szer_przycisku, wys_przycisku, faza, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał

vpotmeter = przycisk, szer_przycisku, wys_przycisku, fazy, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał

Umieszcza poziomo (hpotmeter) lub pionowo (vpotmeter) suwak o rozmiarze szerokość * wysokość i pozycji X,Y. Obrazek może być podzielony na różne części dla różnych faz suwaka (np. możesz mieć suwak głośności, który w zależności od położenia zmienia kolor z zielonego (minimum) na czerwony (maksimum)). hpotmeter może być przyciskiem umieszczonym poziomo. Jego parametry to:

  • przycisk - obrazek użyty do przycisku (musi posiadać trzy części jedna pod drugą tak, jak w przypadku przycisku)

  • szer_przycisku,wys_przycisku - wielkość przycisku

  • fazy - obrazek używany do określenie faz dla hpotmeter. Wartość specjalna NULL może być użyta, jeśli nie chcesz żadnego obrazka. Obrazek musi być podzielony w pionie na fragmenty poszczególnych faz tak, jak poniżej:

    +------------+
    |  faza #1   |
    +------------+
    |  faza #2   |
    +------------+
         ...
    +------------+
    |  faza #n   |
    +------------+
    
  • liczba_faz - liczba faz znajdująca się na obrazku z fazami

  • domyślny - domyślne ustawienie dla hpotmeter (zakres od 0 do 100)

  • X,Y - pozycja dla hpotmeter

  • szerokość,wysokość - szerokość i wysokość dla hpotmeter

  • sygnał - sygnał generowany podczas zmiany wartości hpotmeter

potmeter = fazy, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał

hpotmeter bez przycisku. (domyślam się, że chodzi o to, aby nim kręcić, ale reaguje on tylko na poziome przesuwanie). Opis parametrów znajdziesz w części o hpotmeter. Parametr fazy może mieć wartość NULL, ale jest to zupełnie bezużyteczne, gdyż nie widać wtedy położenia potencjometru.

font = plik_czcionek, id_czcionki

Definiuje czcionkę. plik_czcionek jest nazwą pliku opisu czcionki z rozszerzeniem .fnt (nie podawaj rozszerzenia w tym miejscu). id_czcionki jest używany do wskazywania konkretnej czcionki (zobacz dlabel oraz slabel). Można zdefiniować do 25 czcionek.

slabel = X, Y, id_czcionki, "tekst"

Umieszcza statyczną etykietę w pozycji X,Y. tekst jest wyświetlany za pomocą czcionki wskazywanych przez id_czcionki. Tekst jest po prostu zwykłym łańcuchem znaków (zmienne $x nie działają), któru musi być umieszczony pomiędzy podwójnym cudzysłowem (znak " nie może być częścią tekstu). Etykieta wyświetlana jest za pomocą czcionki, na którą wskazuje id_czcionki.

dlabel = X, Y, długość, wyrównanie, id_czcionki, "tekst"

Umieszcza dynamiczną etykietę w pozycji X,Y. Etykieta jest nazywana dynamiczną, ponieważ jej tekst jest cyklicznie odświeżany. Maksymalną długość etykiety określa parametr długość (jej wysokość określa wysokość czcionki). Jeśli tekst jest szerszy niż zdefiniowana długość, będzie on przewijany, w przeciwnym wypadku będzie wyrównany w miejscu określonym przez wartość parametru wyrównanie: 0 oznacza do prawej, 1 to wyśrodkowanie, 2 to wyrównanie do lewej.

Wyświetlany tekst jest określony przez zmienną tekst: musi być zawarty pomiędzy podwójnymi cudzysłowami (znak " nie może być częścią tekstu). Etykieta wyświetlana jest za pomocą czcionki, na którą wskazuje parametr id_czcionki. Możesz użyć następujących zmiennych w tekście:

ZmiennaZnaczenie
$1czas odtwarzania w formacie hh:mm:ss
$2czas odtwarzania w formacie mmmm:ss
$3czas odtwarzania w formacie (godziny) hh
$4czas odtwarzania w formacie (minuty) mm
$5czas odtwarzania w formacie (sekundy) ss
$6długość filmu w formacie hh:mm:ss
$7długość filmu w formacie mmmm:ss
$8długość filmu w formacieh:mm:ss
$vformat głośności w %xxx.xx
$Vformat głośności xxx.xx format
$bformat balansu w %xxx.xx
$Bformat balansu xxx.xx
$$znak $
$aoznaczenie zgodne z rodzajem typu pliku audio (nic: n, mono: m, stereo: t)
$tnumer ścieżki (na liście odtwarzania)
$onazwa pliku
$fnazwa pliku pisana małymi literami
$Fnazwa pliku pisana wielkimi literami
$Toznaczenie zgodne z rodzajem strumienia (plik: f, Video CD: v, DVD: d, URL: u)
$pznak p (gdy film jest odtwarzany i czcionka ma znak p)
$sznak s (gdy film jest zatrzymany i czcionka ma znak s)
$eznak e (gdy film jest wstrzymany (pauza) i czcionka ma znak e)
$xrozdzielczość filmu (szerokość)
$yrozdzielczość filmu (wysokość)
$Cnazwa używanego kodeka

Uwaga

Zmienne $a, $T, $p, $s oraz $e zwracają znaki, które powinny być wyświetlane jako znaki specjalne (na przykład e jest symbolem pauzy, która z reguły wygląda mniej więcej tak ||). Powinieneś mieć czcionkę dla zwykłych znaków oraz osobną czcionkę dla symboli. Zobacz sekcję na temat symboli, by dowiedzieć się więcej.

B.2.2. Okno ekranu

Poniższe wpisy mogą być użyte w bloku 'window = sub' . . . 'end' .

base = obrazek, X, Y, szerokość, wysokość

Wyświetla obrazek w oknie. Okno będzie widoczne na ekranie w miejscu oznaczonym przez współrzędne X, Y (0,0 to lewy górny narożnik). Możesz użyć -1 dla środka, -2 dla prawej strony (X) i dołu (Y). Okno będzie mieć wielkość obrazka. szerokość oraz wysokość oznaczają wielkość okna; są one opcjonalne (jeśli nie są określone, okno będzie wielkości takiej, jak obrazek).

background = R, G, B

Pozwala ustawić kolor tła. Jest to użyteczne jeśli obrazek jest mniejszy niż okno. R, G oraz B określają składniki kolorów czerwonego, zielonego i niebieskiego (każdy z nich jest reprezentowany przez liczbę dziesiętną w zakresie od 0 do 255).

B.2.3. Menu skórki

Jak wspomniano wcześniej, menu jest wyświetlane przy użyciu dwóch obrazków. Zwykłe obszary menu są pobierane z obrazka określonego przez element base, podczas gdy obszary zaznaczone są pobierane z obrazka wskazywanego przez element selected. Musisz zdefiniować pozycję i rozmiar każdego obszaru menu poprzez element menu.

Poniższe wpisy mogą być użyte w bloku: 'window = menu'. . .'end' .

base = obrazek

Obrazek dla zwykłych obszarów menu.

selected = obrazek

Obrazek pokazujący w menu wszystkie zaznaczone obszary.

menu = X, Y, szerokość, wysokość, sygnał

Definiuje pozycję i rozmiar obszarów menu na obrazku przy pomocy X,Y. sygnał to zdarzenie wygenerowane podczas zwolnienia przycisku myszy nad obszarem.