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:

script-fu konzole
Script-Fu konzole

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 si prohlédnout výsledek. Jak z třetího příkladu vyplývá, je dobré dávat si pozor na to, kolik závorek do zpracovávaného výrazu umísťujete, lehce se pak stane, že skript nepracuje a vy nevíte čím to je :)

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: první úkol : (b^2 - 4 * a * c)
2. úkol druhý úkol : (((a+d/2)*e)-b) / (c+a)^2


Ř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

Příspěvek byl přidán dne 10. 04. 2003 v 16:24 a je zařazen do kategorií Nástroje.
Komentáře můžete sledovat pomocí RSS 2.0.

 

Počet komentářů: 2

  1. mpro:

    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)) )

  2. cornelius:

    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.

Zanechat komentář