niedziela, 15 stycznia 2012

silnik generujący theme vs statyczna grafika

Theme gtk2 ma to do siebie, że jest proste i klarowne do zrozumienia, nawet dla laika. Takie jest moje zdanie na ten temat.
Ale i tak potrafi ono przysporzyć problemów z ogarnięciem wyglądu początkującym, którzy chcieli by: zmodyfikować obecne theme, które im się znudziło, trochę je zmienić, trochę je upiększyć.

Warto pamiętać, że wiele theme gtk2 bazuje nie na silnikach generujących theme, ale na grafikach. Inaczej mówiąc, to co widzimy to nie jest rysowane przez silnik gtk2, ale jest to graficzny plik, który ładuj się nam w odpowiednim miejscu imitując lub zastępując oryginalne przyciski, panel z ikonkami, panel w mate lub lxde/xfce, suwak, pasek postępu itd.

W gtkrc lub odpowiednich odnośnikach do odpowiednich elementów rozbitych na cząstkowe elementy theme np. panel, menu, przyciski, pasek postępu itd. mamy linijki, które odpowiadają przypisanym do tego grafikom, a nie kod theme, który określa krzywą, cień itd dla danego elementu.

Dlaczego autorzy theme decydują się na to, dlaczego robi się takie rzeczy?
Ponieważ gtk2 nie jest już nowością i to co się dało z niego wycisnąć - już zostało wyciśnięte. Od kilku lat nikt nie modernizuje silników generujących grafikę gtk2, ponieważ gtk2 na to nie pozwala lub ma ku temu ograniczenia.

I na dobrą sprawę, bez możliwości zastąpienia pewnych elementów lub wszystkich elementów theme graficznymi odpowiednikami zamiast kodu theme staje się nie opcją ale obowiązkiem. Ponieważ silnik gtk2 nie jest wstanie stworzyć, obrysować, wygenerować dane coś co chcieli by lub widzieli by to twórcy lub twórca danego theme.

Dobrym przykładem jest tutaj theme do lubuntu (ozone3) w nadchodzącym wydaniu 12.04, gdzie prawie całe theme opiera się na grafikach, a nie na silniku gtk2, który otrzymuje informacje nie: co ma wygenerować i dla jakiego elementu ale... Jaką grafikę ma w danym miejscu umiejscowić.

Gdzie w tym tkwi haczyk?
Każdy z was może podmienić grafiki jakie posiada takowe (nie musi to być theme lubuntu, może to być każde inne theme gtk2, które jest oparte na grafikach/plikach graficznych png) theme na inne, albo co lepsze że każdy z was może podmienić pliki graficzne danego theme, między sobą.
Co to daje? A no to, że theme nabiera całkiem innego wyglądu, całkiem innych walorów wizualnych, nawet jeśli wykonamy podmianę np. elementy, które są podpisane dla panelu zostaną użyte do określenia przycisków, a te do przycisków aby określały wygląd panelu. W takim momencie zmienia się cały wygląd theme i jego odbiór, a przecież wykonaliśmy tą jedną (no może dwie) czynność/ci.
Co wystarczyło zrobić?
Podmienić nazwy, tak tylko nazwy, które określają dany element - do czego on ma być. I mamy nowe theme. Nie, nie pomyliłem się. Wszystko przez to, że theme gtk2 oparte o grafiki to grafiki. Jeśli je podmienimy na swoje, albo zrobimy miszmasz miksując, tak jak to opisałem powyżej, grafiki dla panelu damy jako przyciski, przyciski jaki panel, pasek postępu jako menu, a menu jako pasek postępu - otrzymujemy całkiem inne theme gtk2.
A wszystko przez to, że całe theme nie opiera się na silniku gtk2, silniku który to organizuje, kreśli i narzuca dane ograniczenia, parametry i wyznacza, jak dany element będzie wyglądał.
Taka uwaga, nie opisuje tutaj kodu odnośnie grafik, ponieważ za jego pomocą silnik gtk2 zastępuje dany element danym plikiem .png.
Podpowiedź: zazwyczaj stosuje się różne określenie danej grafiki (w gtkrc), kiedy ona ma być pokazywana np. przycisk: widoczny normalnie, po najechaniu, po naciśnięciu, nieaktywny. I do tego jeszcze dochodzi cień, ale nie zawsze.
Tym samym, nie musimy się silić nad znajomością kodu gtk2, ale tylko wiedzieć: jaki element do czego ma być - tyle. A więc, edycja theme odbywa się tylko na plikach, a nie na kodzie theme. Co mówi samo przez siebie, że w takim wypadku nie potrzebna jest nam znajomości kodu gtk2, ale tylko obeznanie z tym: co gdzie ma być, pokazać się lub coś emitować. Ponieważ kod gtk2 odnośnie grafiki png, nie określa żadnych parametrów sprawdzających: czy dany plik jest tym który ma być, czy nie. A więc, jeśli dana grafika jest mniejsza lub większa niż oryginał - wtedy zostanie albo rozciągnięta, albo zbita.

Jak napisałem, silniki gtk2 mają swoje ograniczenia, które muszą być maskowane właśnie przez zastępowanie ich graficznymi plikami, które nadają inny ton theme.

Problem w tym, że silniki gtk2 mają własne ograniczenia jeśli idzie o pokazywanie elementów theme. Oznacza to, że modyfikując theme oparte na clearlooks, nie otrzymamy tego samego co ma murrine. Co więcej, clearlooks posiada kilka odmian, które sprawiają że theme wygląda inaczej, ma inne paski postępu i inaczej rysują przyciski.

W theme gtk2 wyróżnia się jednak właśnie te dwa silniki: clearlooks i murrine, na których to podstawie buduje się całe theme gtk2.
Oba silniki różnią się strukturą i budową, jedne określenia nie działają w drugim, ten sam efekt uzyskuje się przez inne polecenie, które ma narzucić np. zaokrąglenie przycisków, określenie cienia pod przyciskiem, czy określenia cienia wewnątrz przycisku.

I myślę sobie, że w następnym wpisie opiszemy sobie powyższe silniki (engine theme gtk2), które jak napisałem: mają odmienną strukturę i theme w przypadku jednego i drugiego prezentuje się inaczej i bazuje na innych określeniach wyświetlania danego elementu.

Brak komentarzy:

Prześlij komentarz