C.2. A skin fájl
Előző | C. függelék - MPlayer skin formátum | Következő

## C.2. A skin fájl

Amint fentebb már említettem, ez a skin konfigurációs fájl. Sor-orientált; a megjegyzést tartalmazó sorok egy '`;`' karakterrel kezdődnek (csak szóközök és tab-ok lehetnek a '`;`' előtt).

A fájl szekciókból áll. Minden szekció a skin egy alkalmazását írja le a következő formában:

    section = szekció neve
    .
    .
    .
    end

Jelenleg csak egy alkalmazás van, vagyis csak egy szekciót kell készítened: a neve movieplayer.

Ebben a szekcióban minden ablakot egy blokk ír le a következő formában:

    window = ablak neve
    .
    .
    .
    end

Ahol az `ablak neve` ezen karakterláncok valamelyike lehet:

- main - a főablak esetében

- sub - az alablak esetében

- menu - a skin menü esetében

- playbar - a playbar esetében

(Az alablak és menü blokkok opcionálisak - nem kötelező menüt készítened vagy kidekorálni az alablakot.)

Egy ablak blokkon belül az ablak minden elemét definiálhatod, egyet egy sorban, ebbe a formában:

    item = parameter

Ahol az `item` egy karakterlánc, ami azonosítja az adott típusú GUI elemet, a `parameter` pedig egy numerikus vagy szöveges érték (vagy értékek listája vesszővel elválasztva).

A fentieket összerakva a teljes fájl valahogy így néz ki:

    section = movieplayer
      window = main
      ; ... főablak elemei ...
      end

      window = sub
      ; ... alablak elemei ...
      end

      window = menu
      ; ... menü elemei ...
      end

      window = playbar
      ; ... playbar elemei ...
      end
    end

Egy kép fájl nevét a hozzá vezető útvonal nélkül kell megadni - a képeknek a `skins` könyvtárban kell lenniük. A fájl kiterjesztését megadhatod (de nem kötelező). Ha a fájl nem létezik, az MPlayer megpróbálja betölteni a `<filename>.<ext>` fájlt, ahol `png` és `PNG` kerül az `<ext>` helyére (ebben a sorrendben). Az első megtalált fájlt fogja használni.

Egy példa a tisztánlátáshoz. Tegyük fel, hogy van egy `main.png` nevű fájlod, amit a fő ablakhoz használsz:

    base = main, -1, -1

Az MPlayer megpróbálja betölteni a `main`, `main.png`, `main.PNG` fájlokat.

Végül pár szó a pozícionálásról. A fő ablak és az alablak a képernyő különböző sarkaiba helyezhető az `X` és `Y` koordináták megadásával. A `0` fent vagy bal oldalt van, a `-1` középen és a `-2` jobb oldalt vagy lent, ahogy az itt is látható:

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

### C.2.1. Fő ablak és a playbar

A következő bejegyzések használhatóak a '`window = main`' ... '`end`', és a '`window = playbar`' ... '`end`' blokkokban.

`base = image, X, Y`

  Megadhatod vele a fő ablakban használt háttérképet. Az ablak a megadott `X, Y` pozícióban fog megjelenni a képernyőn. Az ablak mérete a kép méretével lesz azonos.

  ### Megjegyzés

  Ezek a koordináták jelenleg nem működnek a megjelenítő ablak esetében.

  ### Figyelem

  A kép transzparens részei (#FF00FF színű) feketeként jelenik meg az XShape kiterjesztés nélküli X szerverek esetében. A kép szélességének 8-cal oszthatónak kell lennie.

`button = image, X, Y, width, height, message`

  Egy `width` * `height` méretű gomb megjelenítése az `X, Y` pozícióban. A megadott `message` üzenet akkor generálódik, amikor a gombot megnyomják. Az `image` által megadott képnek három részt kell tartalmaznia egymás alatt (a gomb állapotainak megfelelően), így:

      +-------------+
      |  benyomott  |
      +-------------+
      | felengedett |
      +-------------+
      |  letiltott  |
      +-------------+

`decoration = enable|disable`

  Engedélyezi vagy letiltja a főablakban az ablakkezelő dekorációját. Alapértelmezetten disable.

  ### Megjegyzés

  Ez nem működik a megjelenítő ablakban, nincs rá szükség.

`hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message`

`vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message`

  Egy vízszintes (hpotmeter) vagy függőleges (vpotmeter) potméter megjelenítése `width` * `height` méretben az `X, Y` pozícióban. A kép több különböző részre osztható a potméter különböző fázisainak megfelelően (például lehet egy pot-od a hangerő szabályozásához, ami zöldből pirosba vált, ahogy az értéke változik a minimumtól a maximumig). A `hpotmeter`-nek lehet egy gombja is, amit vízszintesen lehet húzni. A paraméterek:

  - `button` - a gombként használt kép (három részt kell tartalmaznia egymás alatt, mint a gomb esetében)

  - `bwidth`, `bheight` - a gomb mérete

  - `phases` - a hpotmeter különböző fázisaiban használt kép neve. Speciális értékként a `NULL` is használható, ha nem akarsz ilyen képet. A képet függőlegesen `numphases` részre kell felosztani így:

        +------------+
        |  1. fázis  |
        +------------+
        |  2. fázis  |
        +------------+
             ...
        +------------+
        |  n. fázis  |
        +------------+

  - `numphases` - a `phases` képen lévő fázisok száma

  - `default` - a hpotmeter alapértelmezett értéke (`0` és `100` között)

  - `X`, `Y` - a hpotmeter pozíciója

  - `width`, `height` - a `hpotmeter` szélessége és magassága

  - `message` - az üzenet, ami a `hpotmeter` értékének megváltozásakor generálódik

`potmeter = phases, numphases, default, X, Y, width, height, message`

  Egy `hpotmeter` gomb nélkül. (Gondolom a megfordítása volt az eredeti cél, de csak a vízszintes vonszolásra reagál.) A paraméterek leírását lásd a hpotmeter-nél. A `phases` lehet `NULL`, de ez eléggé haszontalan, mivel akkor nem látod, hogy a `potmeter` hova van állítva.

`font = fontfile, fontid`

  Egy betűt definiál. A `fontfile` a betű leíró fájl neve egy `.fnt` kiterjesztéssel (a kiterjesztést ne add meg itt). A `fontid`-t a betűre történő hivatkozásokhoz lehet használni (lásd dlabel és slabel). 25 betűt lehet definiálni.

`slabel = X, Y, fontid, "text"`

  Egy statikus címkét tesz ki az `X, Y` pozícióba. A `text` szöveget jeleníti meg a `fontid`-vel azonosított betűtípussal. A szöveg egyszerű karakterlánc (az `$x` változók nem működnek) amit dupla idézőjelek közé kell írni (de a " karakter nem lehet a szöveg része). A címke a `fontid`-vel azonosított betűtípussal jelenik meg.

`dlabel = X, Y, length, align, fontid, "text"`

  Egy dinamikus címkét tesz ki az `X, Y` pozícióba. A címke azért dinamikus, mert a szövege periódikusan frissül. A címke maximum hosszát a `length` szabályozza (a magassága egy karakter magasságával egyezik meg). Ha a megjelenítendő szöveg szélesebb ennél, scrollozva lesz, különben az `align` paraméter által megadott módon pozícionálódik: `0` jobbra, `1` középre, `2` balra igazítva.

  A megjelenítendő szöveget a `text` adja meg: dupla idézőjelek közé kell írni (de a " karakter nem lehet része a szövegnek). A címke a `fontid` által meghatározott betűtípussal jelenik meg. A szövegben a következő változókat használhatod:

  Változó | Jelentés
  --- | ---
  $1 | lejátszási idő hh:mm:ss formátumban
  $2 | lejátszási idő mmmm:ss formátumban
  $3 | lejátszási idő hh formátumban (órák)
  $4 | lejátszási idő mm formátumban (percek)
  $5 | lejátszási idő ss formátumban (másodpercek)
  $6 | film hossza hh:mm:ss formátumban
  $7 | film hossza mmmm:ss formátumban
  $8 | film hossza h:mm:ss formátumban
  $v | hangerő xxx.xx% formátumban
  $V | hangerő xxx.xx formátumban
  $b | balansz xxx.xx% formátumban
  $B | balansz xxx.xx formátumban
  $$ | az $ karakter
  $a | egy karakter az audió típusnak megfelelően (nincs: `n`, mono: `m`, sztereo: `t`)
  $t | sáv száma (a lejátszási listában)
  $o | fájlnév
  $f | fájlnév kisbetűsen
  $F | fájlnév nagybetűsen
  $T | egy karakter a folyam típusnak megfelelően (file: `f`, Video CD: `v`, DVD: `d`, URL: `u`)
  $p | a p karakter (ha a film lejátszás alatt van és a betűtípusban van p karakter)
  $s | az s karakter (ha a film meg van állítva movie és a betűtípusban van s karakter)
  $e | az e karakter (ha a lejátszás szünetel és a betűtípusban van e karakter)
  $x | film szélessége
  $y | film magassága
  $C | használt codec neve

  ### Megjegyzés

  Az `$a, $T, $p, $s` és `$e` változók mind karakterekkel térnek vissza, amiket speciális szimbólumként kell megjeleníteni (például az e a pillanatállj szimbóluma, ami általában valami ilyesmi: ||). Szükséged lesz egy normál karaktereket tartalmazó betűtípusra és egy másikra a szimbólumokhoz. Lásd a szimbólumokról szóló részt a további információkért.

### C.2.2. Alablak

A következő bejegyzések használhatóak a '`window = sub`' . . . '`end`' blokkban.

`base = image, X, Y, width, height`

  Az ablakban megjelenítendő kép. Az ablak a megadott `X, Y` pozícióban jelenik meg a képernyőn (`0,0` a bal felső sarok). A `-1` a középre, a `-2` a jobbra (`X`) és le (`Y`) igazítást jelenti. Az ablak akkora lesz, amekkora a kép. A `width` és a `height` az ablak méretét írják elő, opcionálisak (ha hiányoznak, az ablak ugyan akkora méretű lesz, mint a kép).

`background = R, G, B`

  Beállíthatod vele a háttér színét. Hasznos, ha a kép kisebb, mint az ablak mérete. Az `R`, `G` és `B` a szín vörös, zöld és kék komponensét adja meg (mindegyik decimális szám 0-tól 255-ig).

### C.2.3. Skin menü

Amint korábban már említettem, a menü két kép segítségével kerül megjelenítésre. A normál menü bejegyzések a `base` elemmel megadott képen láthatóak, míg az épp aktuálisan kiválasztott elem megjelenítése a `selected` elemről történik. Meg kell adnod minden egyes menüpont pozícióját és méretét.

A következő bejegyzések használhatóak a '`window = menu`'. . .'`end`' blokkban.

`base = image`

  A normál menüpontokat tartalmazó kép.

`selected = image`

  Az összes menüpontot kiválasztva ábrázoló kép.

`menu = X, Y, width, height, message`

  Megadja egy menüelem `X, Y` pozícióját és a méretét a képen. A `message` egy üzenet, ami az egérgomb menüponton történő felengedésekor generálódik.

Előző | Fel | Következő
C.1. Áttekintés | Tartalom | C.3. Betűk