# Skórki - Teoria

Jak wiadomo, wygląd zewnętrzny Light Alloy określany jest za pomocą skórek. Skórki pozwalają określić wygląd zewnętrzny takich elementów:

- główne okno z wyskakującymi podpowiedziami dla niego;
- menu kontekstowe;
- pełnoekranowe okna otwierania/dodawania plików/napisów.

## Format skórki

Skóra jest plikiem z rozszerzeniem LAS, znajduje się w folderze programu Light Alloy -> Skins. Faktycznie jest to plik archiwum ZIP ze zmienionym rozszerzeniem. Opis ten pozwali użytkownikowi uniknąć pytań o to, co zrobić z wypakowanym archiwum i gdzie umieścić wyodrębnione pliki.

Warto zauważyć, że w procesie rozbudowy używanie archiwum ZIP, również ze zmienioną nazwą, jest niewygodne. Dlatego Light Alloy ma możliwość pracy z różnymi rodzajami archiwów:

- archiwum z rozszerzeniem .zip;
- rozpakowana skórka.

Archiwum z rozszerzeniem .zip - to normalna skórka, u której zostało zachowane oryginalne rozszerzenie archiwum. Taki wariant skórki jest przydatny, gdy trzeba szybko wysłać komuś skórkę do analizy lub oceny.

Skórka rozpakowana - jest to po prostu folder z zawartością. Skórka w takim trybie idealnie nadaje się do aktywnej przy niej pracy, ponieważ istnieje szybki i bezpośredni dostęp do wszystkich plików skórki. Oprócz tego, obok plików można w folderze przechowywać również pliko źródłowe i próbki. W menu ustawień rozpakowane skórki można łatwo rozpoznać: ich nazwa znajduje się [w kwadratowych nawiasach].

## Skład pliku skórki

Wewnątrz skórki znajdują się następujące pliku:

- Preview.png
- SkinInfo.txt
- Interface.xml
- Skin.png (.bmp)

Przejdziemy się po tych plikach szczegółowo.

### Preview.png

Jest to plik podglądu. Służy on do wyświetlania obrazka w ustawieniach:

Parametry tego pliku:

- nazwa pliku: "Preview.png" (nie można zmieniać);
- rozmiary: 200х150 pikseli (wszelkie inne rozmiary będą dopasowane pod tę interpolację wg sąsiadujących pikseli);
- głębia kolorów: dowolna;
- wsparcie przezroczystości: pełne;
- parametry kompresji: dowolne.

Co jest przedstawiane w pliku podglądu? Ogólnie rzecz biorąc, zależy to tylko od autora, ale główny kierunek tego obrazku jest zazwyczaj taki:

1. Ten obrazek jest wizytówką i powinien przedstawiać podstawowy zamysł skórki.
2. Zazwyczaj gama kolorów podglądu jest odbiciem gamy kolorów okna odtwarzacza w tej skórce.
3. W większości przypadków w podglądzie przedstawiana jest stylizowana nazwa skórki.
4. Dość często przedstawiane jest stylizowane logo dla odtwarzacza.

UWAGA: nie ma sensu przedstawianie podglądu skórki, ponieważ podwójne kliknięcie na niej zmienia skórkę odtwarzacza. A w nim, co jest oczywiste, znacznie wygodniejszy i prostszy jest "podgląd" skórki.

### SkinInfo.txt

Ten plik pracuje w parze z poprzednik. Prezentuje on, razem z plikiem Preview.png, skórkę w ustawieniach - jej część tekstową.

Parametry tego pliku:

- nazwa pliku: "skinInfo.txt" (nie można zmieniać);
- kodowanie: UTF-8 with signature (również - UTF-8 BOM);
- używany język: zasadniczo angielski (przynajmniej angielskie litery).

Wewnątrz skinInfo.txt wygląda następująco:

SkinTitle=Dub SkinAuthor=Dvigok, Gilorn SkinVer=4.7.3 SkinWWW=http://www.light-alloy.ru/forum/skins/dub/ SkinCmt=Official skin SkinAudio=0

Uwaga: wartość jest natychmiast po znaku "=". Odstęp po "=" jest niedopuszczalny, gyż może on doprowadzić do błędnego wyświetlania informacji w odtwarzaczu. Ale wewnątrz wartości można korzystać z odstępów bez ograniczeń.

Parametr | Wartość
--- | ---
SkinTitle | Opisuje nazwę skórki. Zalecane jest nie używanie w nazwie [kwadratowych nawiasów], dlatego że takimi nawiasami oznaczane są rozpakowane skórki.
SkinAuthor | Wskazuje autora skórki lub kilku autorów. Tutaj nie ukazują się "konserwatorzy" skórki (nie stosuje się rozszerzonych portów i alternatywnych wersji skórki; w takich przypadkach postępuj wedle własnego uznania).
SkinVer | Ukazuje się wersja skórki. Teraz używane są dwie metody oznaczania wersji skórki:

1. niezależna:

- standardowe oznaczenia, jak w programie:
- pierwsza wersja finalna - v1.0.0
- poprawa błędów - v1.0.1
- małe/średnie dodatki i zmiany - v1.1.0
- duże/globalne zmiany - v2.0.0

2. zależna:

- powiązana z wersjami Light Alloy:
- pierwsza finalna wersja posiada numer wersji, analogiczny z tą wersją Light Alloy, na której skórka poprawnie będzie pracować, na przykład - v4.7.0.1
- jeśli zachodzą zmiany w skórce bez używania dodatkowych funkcji - v4.7.0.2
- jeśli zachodzą zmiany w skórce z użyciem dodatkowych funkcji - na przykład; doprecyzowanie krawędzi w zgodzie z wprowadzonymi innowacjami w Light Alloy 4.7.3 - v4.7.3.1

Tylko autor skórki określa, która metoda jest lepiej dostosowana do jego upodobań.
SkinWWW | Adres skórki lub adres autora. W większości przypadków podawany jest tutaj adres skórki na forum Light Alloy. Aby się nie pomylić, można najpierw stworzyć wątek na forum, a dopiero później wpisać adres forum, spakować ją i opublikować w tym samym temacie. Taka metoda zajmuje nie więcej niż kilka minut, więc większość użytkowników nie zauważy dwukrotnych zmian w temacie.
SkinCmt | Dowolna dodatkowa informacja o skórce. Pamiętaj: w oknie ustawień dla niej przypisana jest tylko jedna linia. Weź to pod uwagę. Nawiasem mówiąc, można tutaj określić nazwę (lub pseudonim) "konserwatora" skórki.
SkinAudio | Linia, zgodnie z którą skórka jest uważana za normalną (jeśli "0") lub skórkę audio (jeśli "1"). W zależności od tego skórka jest wyświetlana na liscie ogólnej lub na liście skórek audio.

### Interface.xml

Jest to plik znaczników rozmieszczenia. On tak jakby objaśnia, skąd dokładnie pobierać elementy graficzne i gdzie dokładnie je wpisać.

Parametry tego pliku:

- nazwa pliku: "Interface.xml" (nie można zmieniać);
- kodowanie: UTF-8 with signature (również - UTF-8 BOM);
- używany język: dla komentarzy - dowolny.

Interface.xml składa się z trzech części:

- Wywołanie - wywoływanie nazw fragmentów obrazka (pojedynczy element jest nazywany "stałą"). Na przykład:

<IMAGE id="Hint" file="main.bmp"> <AREA id="Lclick" pos="0,235" size="22,22"/> <AREA id="Rclick" pos="23,235" size="22,22"/> </IMAGE>

- Intrpretacja - "rozpoznawanie" czcionek graficznych; tyczy się tylko ich (pojedynczy element jest nazywany "czcionką" lub "czcionką graficzną"). Na przykład:

<FONT id="Digits" img="FT.Digits" chars="0123456789: &lt;&gt;_"/>

- Zastosowanie - tworzenie przycisków i innych elementów sterowania za pomocą stałych i funkcji (pojedynczy element jest nazywany "kontrolką"). Na przykład:

<CONTROL type="Panel" bg="Ft.PosBG" pos="145,38" size="130,18"> <CONTROL type="Text" pos="3,1" size="69,14" font="Digits" text=" {POS}_&gt;_"/> <CONTROL type="Text" pos="72,1" size="51,14" font="Digits_dur" text="{DUR}"/> </CONTROL>

Bloki z każdego z trzech rodzajów może być kilka. Niektóre z bloków mają stałe nazwy, a niektóre - nie.

Informacje o pracy z "Interface.xml" opisano w części praktycznej.

### Skin.png (.bmp)

To podstawowe źródło obrazków dla skórki. Może być w jednym pliku lub w kliku. Próbka reprezentatywna:

Pliki obrazków - jedyne pliki w skórce, których obecność jest wymagana (format pliku: BMP lub PNG). Jednakże należy pamiętać, że im większe rozmiary tego pliku, tym więcej będzie odtwarzacz zużywał pamięci.

Proszę zwrócić uwagę: w tym przypadku w formacie PNG nie jest obsługiwana przejrzystość - jest ona przechowywana w nieprzezroczystym wyglądzie za pomocą białego podłoża.

## Ograniczenia skórek dla Light Alloy

Mimo aktywnego rozwoju odtwarzacza, możliwości skórek mają ograniczenia. Związane jest to z wiekiem silnika skórek i niuansami jego opracowań. Oto najważniejsze ograniczenia:

- brak wsparcia dla przejrzystości (z wyjątkiem kilku grup elementów: obrazki dla menu kontekstowego i zakładki w liście odtwarzania);
- menu kontekstowe posiada ramkę, której nie można się pozbyć;
- pionowy pasek przewijania w liście odtwarzania zawsze wyświetlany jest jak systemowy (poziomy nie).