Předcházející |  | Další

### 11.5. Vytvoření střev skriptu

Pokračujme ve výcviku a naučme náš skript vykonávat požadovanou činnost.

#### 11.5.1. Vytvoření nového obrázku

V předchozí lekci jsme vytvořili prázdnou funkci a zaregistrovali ji v Gimpu. V této lekci dodáme skriptu požadovanou funkcionalitu – chceme, aby vytvořil nový obrázek, přidal do něj uživatelem zadaný text a změnil velikost obrázku tak, aby textu přesně vyhovoval.

Jakmile umíte nastavit proměnné, definovat funkce a přistupovat k prvkům seznamů, je zbytek snadný – vše co potřebujete, je seznámit se s funkcemi dostupnými v databázi procedur Gimpu a pak tyto funkce přímo volat. Takže spusťme Prohlížeč procedur a začněme čarovat!

Začneme vytvořením nového obrázku. Vytvoříme proměnnou `theImage` nastavenou na výsledek volání vestavěné funkce Gimpu `gimp-image-new`.

Jak vidíte v prohlížeči procedur, funkce `gimp-image-new` vyžaduje tři parametry – šířku obrázku, výšku a jeho typ. Protože budeme velikost obrázku později měnit tak, aby odpovídala textu, vytvoříme například obrázek o velikosti 1O×10 pixelů, typu RGB. Šířku a výšku obrázku uložíme do proměnných, protože s nimi později budeme ve skriptu pracovat.

            (define (script-fu-text-box inText inFont inFontSize inTextColor)
            (let*
                  (
                     ; definovat lokální proměnné
                     ; vytvořit nový obrázek:
                     (theImageWidth  10)
                     (theImageHeight 10)
                     (theImage (car
                                    (gimp-image-new
                                     theImageWidth
                                     theImageHeight
                                     RGB
                                    )
                               )
                     )
                     (theText)     ;deklarace pro text
                                   ;který vytvoříme později

Poznámka: typ obrázku jsme nastavili hodnotou RGB. Stejného výsledku bychom dosáhli hodnotou 0, ale použití popisnějšího RGB činí kód čitelnějším.

Všimněte si také, že pracujeme s hlavičkou výsledku volání funkce. Může se to zdát podivné, neboť databáze jasně říká, že funkce vrací jedinou hodnotu – ID nově vytvořeného obrázku. Nicméně všechny funkce Gimpu vrací seznam, i když obsahuje jediný prvek. Proto je potřeba pracovat s halvičkou seznamu.

#### 11.5.2. přidání nové vrstvy do obrázku

Nyní, když máme obrázek, musíkme do něj přidat vrstvu. Zavoláme proto funkci `gimp-layer-new`, které předáme ID našeho obrázku. (Od této chvíle zde nebude vypisována kompletní funkce, ale pouze řádky, které do ní přidáme. Celý skript si můžete prohlédnout zde. ) Protože jsme již deklarovali všechny potřebné lokální proměnné, uzavřeme závorky označující deklarace proměnných:

            ;vytvoření nové vrstvy v obrázku:
               (theLayer
                         (car
                              (gimp-layer-new
                               theImage
                               theImageWidth
                               theImageHeight
                               RGB-IMAGE
                               "layer 1"
                               100
                               NORMAL
                              )
                          )
                )
             ) ;konec deklarací lokálních proměnných

Jakmile máme novou vrstvu, je třeba ji přidat k obrázku:

           (gimp-image-add-layer theImage theLayer 0)

Nyní, jen z legrace, si prohlédneme plody naší dosavadní práce a přidáme proto následující řádku pro zobrazení nového, prázdného obrázku:

            (gimp-display-new theImage)

Uložte práci a zvolte Rozš.->Script-Fu->Obnovit skripty, a spusťte skript. Měl by se objevit nový obrázek. Pravděpodobně bude obsahovat plno smetí (náhodných barev), neboť jsme obrázek nevymazali. Uděláme to za okamžik.

#### 11.5.3. Přidání textu

Nyní opět odstraňte řádek sloužící k zobrazení obrázku (nebo ho zakomentujte přidáním znaku `;` na začátek řádky).

Než text do obrázku přidáme, musíme nastavit barvu popředí a pozadí tak, aby se text objevil v uživatelem zadané barvě. použijeme k tomu funkce gimp-context-set-background/foreground:

            (gimp-context-set-background '(255 255 255) )
            (gimp-context-set-foreground inTextColor)

Barvy máme správně nastavedny, proto teď můžeme vyčistit nepořádek v obrázku vyplněním barvou pozadí:

            (gimp-drawable-fill theLayer BACKGROUND-FILL)

Do vyčištěného obrázku lze přidat text:

            (set! theText
                          (car
                               (gimp-text-fontname
                                theImage theLayer
                                0 0
                                inText
                                0
                                TRUE
                                inFontSize PIXELS
                                "Sans")
                           )
            )

Ačkoliv je volání funkce poměrně dlouhé, pokud se podíváte na popis funkce v prohlížeči procedur, je vše poměrně jasné. Tvoříme novou textovou vrstvu a přiřazujeme ji proměnné `theText`.

Nyní, když máme v obrázku text, můžeme zjistit jeho výšku a šířku a změnit podle něj velikost obrázku a vrstvy obrázku:

            (set! theImageWidth   (car (gimp-drawable-width  theText) ) )
            (set! theImageHeight  (car (gimp-drawable-height theText) ) )

            (gimp-image-resize theImage theImageWidth theImageHeight 0 0)

            (gimp-layer-resize theLayer theImageWidth theImageHeight 0 0)

Možná vám není jasný rozdíl mezi vrstvou a tímk, čemu se v Gimpu říká drawable. Pojem drawable se vztahuje na vše, na co lze kreslit, včetně vrstev, ale kromě nich také zahrnuje kanály, masky vrstev, výběry atd. Vrstva je specifickým typem objektu drawable. Ve většině případů se ale nemmusíte rozdíly zabývat.

Nyní můžeme připravený obrázek zobrazit:

            (gimp-display-new theImage)

Nyní uložte práci, obnovte databázi a vyzkoušejte si svůj nový skript!

#### 11.5.4. Odstranění příznaku nečistoty

Pokud se pokusíte skriptem vytvořený obrázek zavřít, aniž byste ho uložili, zeptá se vás Gimp, zda ho chcete nejprve uložit. Udělá to proto, že je obrázek označen jako nečistý (dirty), tzn. jako obsahující neuložené změny. V případě našeho skriptu je to ale spíš na obtíž, protože práce skriptu je snadno reprodukovatelná a obrázek je nově vytvořen, bez manuálního zásahu. Proto může být vhodné příznak nečistoty odstranit.

To lze snadno učinit po zobrazení obrázku následujícím způsobem:

            (gimp-image-clean-all theImage)

Tak se nastaví počítadlo nečistoty na nulu, což obrázek nastaví jako čistý, bez provedených změn, které by bylo nutno uložit.

Zda tuto řádku přidat nebo ne je otázkou vkusu. Já ji používám ve skriptech tvořících jednoduché nové obrázky, jako je například tento skript. Pokud je skript velmi složitý, nebo pokud pracuje s existujícím obrázkem, není tato funkce vhodná.

Předcházející | Nahoru | Další
| Domů |