3. Zasvěcení do Script-Fu

V této části vás provedeme základy jazyka Scheme, potřebnými pro zvládnutí umění Script-Fu, a napíšeme společně šikovný skript, který se může stát vaším platným pomocníkem při práci s Gimpem. Náš skript si vyžádá zadání textu a vytvoří nový obrázek s tímto textem, o rozměrech, které textu přesně odpovídají. Pak skript vylepšíme o možnost nastavení prázdných okrajů okolo textu. Nakonec vám poradíme, jak své znalosti Script-Fu nadále prohlubovat.

[Poznámka] Poznámka

Tato část vychází z průvodce, který pro GIMP 1 napsal Mike Terry.

3.1. První krůčky s jazykem Scheme

3.1.1. Základy Scheme

Jako první je nutno pochopit, že:

Všechny výroky jsou ve scheme uzavřeny v kulatých závorkách ().

Druhým důležitým pravidlem je:

Jméno funkce či operátor je v závorkách vždy na prvním místě, zbylé položky jsou parametry funkce.

Nicméně, ne vše uzavřené v závorkách je funkce; závorky mohou obsahovat také seznam položek – k tomu se dostaneme později. Tomuto typu zápisu se říká prefixová notace, protože funkce předchází všemu ostatnímu. Pokud jste zvyklí na postfixovou notaci (například obrácenou polskou notaci kalkulaček HP), neměl by vám způsob zápisu ve Scheme činit potíže.

Třetí důležitá věc je:

Matematické operátory jsou rovněž považovány za funkce, a proto jsou v matematických výrazech uváděny na začátku.

Je to logický důsledek zmíněné prefixové notace.

3.1.2. Příklad prefixové, infixové a postfixové notace

Sčítání jedničky a trojky v prefixové, infixové a postfixové notaci:

  • Prefixová notace: + 1 3 (tento způsob zápisu vyžaduje Scheme)

  • Infixová notace: 1 + 3 (tento způsob zápisu běžně používají lidé)

  • Postfixová notace: 1 3 + (tento způsob zápisu používají kalkulačky HP)

3.1.3. Procvičování Scheme

Nyní si procvičte, co jste se naučili. Spusťte GIMP, pokud jste tak již neučinili, a z nabídky panelu nástrojů zvolte Rozš.Skript-fuKonzola skript-fu. Otevře se okno Konzole skript-fu, která umožňuje interaktivní práci ve Scheme.

3.1.4. Okno Script-Fu konzole

V dolní části je vstupní pole označené jako Aktuální příkaz. Lze využít k interaktivnímu testování příkazů. Začněme jednoduše, sčítáním:

(+ 3 5)

Zapsáním tohoto příkazu a stisknutím klávesy Enter získáte v hlavním poli konzoly očekávaný výsledek 8.

Co když chcete sečíst více než jedno číslo? Funkce „+“ může mít dva nebo více argumentů, takže není nic snazšího:

(+ 3 5 6)

Tak získáme očekávaný výsledek 14.

Zatím to bylo snadné. Zapíšeme výraz ve Scheme, a ten je v konzoli okamžitě vyhodnocen. Ale pozor…

3.1.5. Dávejte pozor na nadbytečné závorky

Pokud jste jako já, jste zvyklí, že můžete kdykoliv používat závorky pro zpřehlednění zápisu, např. při zápisu složité matematické rovnice. Ve Scheme si však na závorky musíte dávat pozor. Pokud chcete například sečíst 3; součet 5 + 6; a 7:

3 + (5 + 6) + 7 = ?

Protože operátor + může sčítat seznam čísel, můžete vás napadnout zkusit následující:

(+ 3 (5 6) 7)

To je ovšem špatně, protože každý výrok ve Scheme začíná a končí kulatou závorkou. Interpretr Scheme se tak domnívá, že se ve vnořených závorkách snažíte volat funkci „5“ s argumentem „6“, nikoliv sečíst tato dvě čísla před jejich sečtením s číslem 3 a 7.

Správný zápis výroku by měl proto vypadat takto:

(+ 3 (+ 5 6) 7)

3.1.6. Ujistěte se, že používáte správně mezery

Pokud znáte jiné programovací jazyky, jako C/C++, Perl nebo Javu, víte, že okolo operátorů nemusíte psát tzv. bílé znaky (mezery), aby byl výraz správně zapsán:

            3+5, 3 +5, 3+ 5
          

Tyto zápisy jsou v případě C/C++, Perlu i Javy zcela správné. Nikoli však ve Scheme. Ve Scheme musí být za matematickým operátorem (nebo za jakýmkoliv jiným jménem funkce či operátorem) mezera, jinak by došlo k nesprávné interpretaci.

Zkoušejte si ve Script-Fu konzoli jednoduché matematické výrazy, dokud výše popsaná pravidla nebudete mít dokonale v krvi.