Nepotřebujete se na chvíli zastavit a popadnout dech? Ne? Pak tedy vzhůru na čtvrtou lekci – váš první Script-Fu skript!
Jedna z nejčastějších operací, kterou v Gimpu provádím, je vytvoření textu pro webovou stránku, logo nebo něco takového. V takovém případě ale nikdy nevím, jak velký obrázek mám vytvořit, protože nevím přesně, kolik místa text v požadovaném řezu písma a velikosti zabere.
Mistr Script-Fu (ale i nadaný student) si brzy uvědomí, že lze takový problém snadno a automaticky řešit pomocí Script-Fu.
Proto vytvoříme skript, který pojmenujeme Text Box a který vytvoří obrázek o velikosti přesně odpovídající zadanému textu. Uživatel bude mít možnost zvolit i řez písma, jeho velikost a barvu.
Do této chvíle jsme pracovali se Script-Fu konzolí. Od této chvíle však budeme pracovat s textovými soubory.
Kam skripty uložíte záleží jen na vás. Pokud máte přístup do výchozího adresáře Gimpu pro skripty, můžete uložit své skripty tam. Já nicméně raději ukládám své vlastní skripty do vlastního adresáře, abych je měl oddělené od skriptů dodávaných přímo s Gimpem.
V adresáři .gimp-2.2
, který GIMP vytvořil ve
vašem domovském adresáři, byste měli najít podadresář jménem
scripts
. GIMP tento adresář automaticky
prohledává a skripty, které v něm nalezne, přidává do Script-Fu
databáze. Nejjednodušší bude, pokud své skripty uložíte právě sem.
Každý Script-Fu skript definuje alespoň jednu funkci, hlavní funkci skriptu. Ta je zodpovědná za činnost skriptu.
Každý skript musí být navíc zaregistrován v databázi procedur, aby k němu mohlo být přistupováno z Gimpu.
Nejprve definujeme hlavní funkci:
(define (script-fu-text-box inText inFont inFontSize inTextColor))
Takto jsme definovali funkci jménem script-fu-text-box
se čtyřmi parametry, které se vztahují k textu, písmu, velikosti písma
a jeho barvě. Funkce je zatím prázdná a proto nic nedělá. Zatím nic
zajímavého ani složitého.
Konvence jazyka Scheme pro vytváření jmen upřednostňují malá písmena a
pomlčky, tak jako jsme učinili při výběru jména funkce. Při
pojmenovávání jejích parametrů jsme se však od konvence odchýlili.
Mám rád jména popisná, která o funkci nebo parametru hodně říkají,
proto jsme pro parametry použili předponu in
,
která naznačuje, že parametry obsahují hodnoty předávané skriptu,
nikoliv skriptem vytvořené. Pro proměnné vytvořené uvnitř skriptu
používám předponu the
.
V Gimpu je zvykem pojmenovávat všechny Script-Fu funkce podle vzoru script-fu-jmeno-funkce, protože v databázi procedur jsou pak všechny pěkně pohromadě a jsou snadno odlišitelné od zásuvných modulů.
Nyní je třeba funkci v Gimpu zaregistrovat. To se dělá voláním funkce
script-fu-register
. Při načítání skriptu GIMP tuto funkci
spustí, a tak je skript zaregistrován v databázi procedur. Tuto funkci
můžete ve skriptu umístit kamkoliv, ale obvykle se nachází úplně na
konci.
Zde je výpis naší registrační funkce (její parametry vzápětí vysvětlím):
(script-fu-register "script-fu-text-box" ;func name "Text Box" ;menu label "Creates a simple text box, sized to fit\ around the user's choice of text,\ font, font size, and color." ;description "Michael Terry" ;author "copyright 1997, Michael Terry" ;copyright notice "October 27, 1997" ;date created "" ;image type that the script works on SF-STRING "Text:" "Text Box" ;a string variable SF-FONT "Font:" "Charter" ;a font variable SF-ADJUSTMENT "Font size" '(50 1 1000 1 10 0 1) ;a spin-button SF-COLOR "Color:" '(0 0 0) ;color variable ) (script-fu-menu-register "script-fu-text-box" "<Toolbox>/Xtns/Script-Fu/Text")
Pokud tyto funkce zapíšete do souboru s příponou
.scm
, který uložíte do vašeho adresáře
pro skripty, a pak zvolíte z nabídky Panelu nástrojů
→ → ,
objeví se nový skript jako
→ → → .
Pokud ale skript spustíte, neudělá samozřejmě nic užitečného, ale uvidíte výzvy vytvořené při registraci skriptu (podrobnosti dále).
Pokud otevřete Prohlížeč procedur, volbou
→ ), zjistíte, že náš nový skript je skutečně uveden v databázi.
Aby byl náš skript v Gimpu zaregistrován, voláme funkci
script-fu-register
, zadáme sedm povinných parametrů,
parametry specifické pro náš skript, popis a implicitní hodnotu
každého parametru.
Povinné parametry
Jméno funkce, která se volá při spuštění skriptu (vstupní bod skriptu). Je to nutné, neboť v souboru skriptu může být definováno funkcí více. Gimpu musí být jasné, kterou z nich má zavolat. V našem příkladu jsme definovali funkci jedinou, text-box, kterou jsme také zaregistrovali.
Umístění v nabídce, kam bude skript vložen. Přesné umístění se určuje stejně jako cesta k souboru v unixovém systému; kořenovým adresářem je buď Panel nástrojů nebo kliknutí pravým tlačítkem myši.
Pokud skript nepracuje s již existujícím obrázkem (a vytváří tedy obrázek nový, tak jako náš skript Text Box), je třeba jej umístit do nabídky Panelu nástrojů, což je hlavní, vždy otevřené, okno Gimpu.
Pokud skript naopak pracuje s již existujícím otevřeným obrázkem, je třeba jej vložit do nabídky obrázku, která se zobrazuje po kliknutí pravým tlačítkem myši do obrázku, případně v horní liště okna obrázku. Zbytek cesty ukazuje na jednotlivé nabídky a podnabídky v cestě. Náš skript jsme zaregistrovali v podnabídce Text podnabídky Script-Fu nabídky Rozš. Panelu nástrojů ( (
→ → → ).Možná jste si všimli, že podnabídka Text před registrací skriptu vůbec neexistovala. GIMP automaticky vytvoří všechny chybějící nabídky.
Popis skriptu, který se zobrazuje v Prohlížeči procedur.
Vaše jméno (jméno autora skriptu).
Copyright, informace o autorských právech.
Datum, kdy byl skript napsán nebo naposledy revidován.
Typy obrázků, se kterými umí skript pracovat. Může to být kterýkoliv z následujících: RGB, RGBA, GRAY, GRAYA, INDEXED, INDEXEDA. Nemusí to však být typ žádný, jako v případě našeho skriptu, který vytváří nový obrázek a tudíž nepracuje s žádným stávajícím obrázkem.
Po uvedení obecných, povinných parametrů je třeba uvést parametry, které vyžaduje náš skript. V seznamu těchto parametrů je také třeba uvést jejich typ, což umožní správně zobrazit dialog, ve kterém uživatel parametry nastavuje. Také zadáme výchozí hodnoty těchto parametrů.
Tato část registračního procesu používá následující formát:
Typ parametru |
Popis |
Příklad |
---|---|---|
SF-VALUE |
Přijímá čísla a řetězce. Uvozovky ve výchozím textu je třeba eskapovat, je proto lepší použít SF-STRING. |
42 |
SF-STRING |
Přijímá řetězce. |
"Nějaký text" |
SF-COLOR |
Označuje parametr vyžadující barvu. |
'(0 102 255) |
SF-TOGGLE |
Přijímá booleovskou hodnotu (pravda či nepravda). V dialogu se zobrazuje jako zaškrtávací políčko, přepínač. |
TRUE nebo FALSE |
SF-IMAGE |
Pokud skript pracuje s otevřeným obrázkem, měl by toto být první parametr uvedený po povinných parametrech. GIMP v tomto parametru předá odkaz na obrázek. |
3 |
SF-DRAWABLE |
Pokud skript pracuje s otevřeným obrázkem, měl by tento parametr následovat ihned za parametrem SF-IMAGE. Odkazuje na aktivní vrstvu. GIMP na ni přes tento parametr předá odkaz. |
17 |