Script-fu I. část - Úvod
autor: Ene dne 10. 04. 2003
Jednou z báječných věcí na GIMPu je to, že jakákoliv jeho funkce je dostupná pomocí jednoduchých skriptů. Pomocí skriptů lze v GIMPu vytvářet loga, deformovat či vylepšovat obrázky apod. V tomto seriálu si řekneme něco bližšího o jazyce jaký GIMP pro tyto skripty používá a jak toho můžeme využívat my :-).
Několik slov úvodem
V mém minulém tutorialu jsem slíbil, že se podíváme na zoubek představovanému skriptu. Rozhodl jsem se však, že lepší bude když na jeho princip přijdete sami, s mou pomocí samozřejmě :-) Proto vám dnes nepřináším popis skriptu jako takového, nýbrž si povíme něco o jazyce ve kterém je napsán. Ano bude řeč o Script-fu, jazyce který GIMP používá pro své skripty(pokud chcete makra, dávky etc…).
O jazyku
Na začátku každého seriálu se sluší představit hlavní protagonisty. Tak tedy, Script-fu je skriptovací jazyk založený na jazyce Scheme, což je varianta jazyka LISP(který používá například nejen-textový-editor EMACS). Informace o Script-fu lze naléz na http://www.xcf.berkeley.edu/~gimp/script-fu/script-fu.html.
Ještě jednu věc je třeba říci, pro GIMP lze napsat dva druhy skriptů, tzv. standalone, které je možné spustit v GIMPu kdekoliv a kdykoliv(zpravidla vytvoří nový obrázek a s ním manipulují) a skripty vázané na obrázek, které se aplikují na již připravený obrázek a samotné je nelze spustit.
Co k programování a spouštění skriptů potřebujeme?
V hlavní řadě je potřeba mít GIMP, vše co v tomto seriálu budu popisovat budu předvádět v GIMPu v1.2.3(ten najdete v sekci stažení). Pro psaní skriptů vám bude stačit váš oblíbený ASCII textový editor(Poznámkový blok, VI(M), Joe, Emacs etc…) a samozřejmě znalost syntaxe a příkazů jazyka.
Konvence při psaní článku
Než začnu s popisem jazyka samotného, uvedu několik zvyklostí které budu dodržovat v označování textu:
- proměnná- kurzívou budou označovány v textu proměnné.
- funkce(zápis kódu skriptu) - formát zápisu skriptů nebo funkcí v textu.
- <ENTER> - formát označující stisk určené klávesy
- cesta -> k -> příkazu – text určující cestu nebo postup k docílení požadovaného
To je pro začátek vše, můžeme přejít k vlastnímu jazyku.
Syntaxe jazyka Scheme
Základní syntaktická pravidla jsou tato:
- Každá funkce v jazyce Scheme musí být uzavřen do kulatých závorek “(” a “)”.
- Funkce nebo funkční operátor jsou vždy uvedeny jako první položka v závorkách a zbylé položky jsou parametry funkce.
- Matematické operátory jsou také brány jako funkce a tudíž se umisťují také na první pozici závorky(mezi tyto operátory platí +, -, * a / a mají svou obvyklou funkci).
- Mezi identifikátorem funkce a proměnnými musí být mezery.
Krom funkcí se do závorek umisťují i seznamy, ale o těch si něco řekneme až později.
Příklady:
- + 3 5 špatně - chybí závorky
- (+ 3 5) dobře, výsledek 8
- (+3 5) špatně - chybí mezera mezi operátorem a parametrem
- (* 3 (2 4) 5) špatně - chybí operátor ve vnitřní závorce
- (* 3 (+ 2 4) 5) dobře, výsledek 90
Aby jsme si vyzkoušeli tato syntaktická pravidla, spustíme si GIMP a v něm nástroj Script-fu console, ve které si můžeme vyzkoušet několik příkladů. Naleznete ji v Rozš. -> Script-Fu -> konzole a vypadá takto:
Teď je čas zapsat si těch několik horních příkladů do vstupního políčka Script-fu konzole a po stisknutí klávesy
Pokud už si myslíte, že všemu rozumíte, zkuste vytvořit zápis pro výpočet následující rovnice:
| 1. úkol: | |
| 2. úkol | ![]() |
Řešení je pro ty kdo pozorně četli velmi snadné, takže vám jej ještě nedám a hezky si počkám až co z vás vypadne. Napiště mi do komentářů vaše řešení a na kolikátý pokus se vám to podařilo správně “odladit”.
Pro dnešní, úvodní, díl si myslím, že by to mohlo být vše. Takže trénujte zápis funkcí a operandů a příště se podíváme na definice proměnných, seznamů a nakonec uživatelských funkcí.
cornelius


14.04.2003 19:40 at 19:40
Snad by bolo dobre v clanku uviest, ze pre priradenie premennych sa pouziva konstrulcia s let*, inac sa tie vzorce budu pisat dost tazko. Vo vseobecnosti sa pouziva (let* ( variables ) expressions ), kde cast variables je v pripade 1. ulohy napr. (a 1) (b 2) (c 3) a cast expressions (- (* b b) (* 4 a c)), dohromady teda:
(let* (( a 1) (b 2) (c 3) ) (- (* b b) (* 4 a c)) )
15.04.2003 10:49 at 10:49
Jsem rad, ze se alespon nekdo ozval :) Reseni je spravne :)
Jak jsem(myslim) napsal, bude definice promennych apod v dalsim dile, tohle je jen uvod a nastin tematiky.
Nejspis jsem mel v zadani ukolu rict, ze staci jen zapis vzorecku(tak jak je to v prikladech syntaxe) bez inicializace promennych. diky za upozorneni.