Titelblatt Lektion 1 Lektion 2 Lektion 3 Lektion 4 Lektion 5 Lektion 6 Referenzen
  Erster Anlauf Variable und Funktionen Immer wieder Listen Das erste Gerippe Etwas mehr Fleisch Noch etwas Salz an die Suppe  

Lektion 4:     Das erste Gerippe


Na? Frisch erholt und gestärkt? Kräftig in die Hände gespuckt. Wir wollen uns jetzt an Script-Fu wagen.

Ein Script zum Generieren einer Text-Box

Eine der häufigsten Operationen in GIMP ist sicherlich die Generierung eines Textes, zum Beispiel für eine Web-Seite oder ein Logo oder weiß der Pinguin was. Meistens weiß man jedoch nicht, wie groß die Anfangsgröße gewählt werden soll. Oder wieviel Platz um den Text herum benötigt wird. Man entwickelt erst im Laufe der Zeit das entsprechende Gefühl, welcher Font oder welche Schriftgröße die geeignete Wahl ist.

Als Meister aller Klassen in Sachen Script-Fu, oder auch als Anwärter darauf, kann dies problemlos und relativ schnell mit Hilfe von Script-Fu umgesetzt werden.

Wir werden deshalb als praktisches Beispiel ein Script entwickeln, welches ein Bild mit einem Text erzeugt und dem Anwender genügend Freiheiten läßt bei der Wahl des Fonts, der Schriftgröße, der Text-Farbe und den freizuhaltenden Platz, der den Text umgibt.

Los geht's

Bearbeiten und Speichern des Scriptes

Bis zu diesem Zeitpunkt haben wir immer im Fenster der Script-Fu-Console gearbeitet. Jetzt wird es Zeit auf das Editieren des Script-Fu-Programms außerhalb umzuschalten.

Wohin das Script-Fu-Programm abgelegt werden soll, ist eine Frage des Geschmacks oder auch nicht. Falls Sie Zugriff zum Standard-Verzeichnis von GIMP besitzen, können Sie das Script dort plazieren. Ich bevorzuge jedoch meine persönlichen Scripte auch in meinem eigenen Verzeichnis abzulegen, und zwar abseits vom Standard-Systemverzeichnisses des Programms.

Unter Linux ist es im Speziellen das Verzeichnis ".gimp" in meinem HOME-Verzeichnis. Darin sollte sich ein Verzeichnis mit dem Namen "scripts" befinden. GIMP schaut automatisch in diesem Verzeichnis nach Scripten, um diese beim Start in die Script-Fu-Datenbasis einzubauen. Und dieses Verzeichnis ist deshalb wirklich zu empfehlen.

Erst einmal das Notwendigste

Jeder Script-Fu-Text besteht mindestens aus einer Funktion, welches die Hauptfunktion des Scriptes darstellt.

Jedes Script-Fu-Programm muß in der prozeduralen Datenbasis registriert werden, um innerhalb von GIMP damit zu arbeiten.

Also definieren wir unsere Hauptfunktion für unsere Text-Box zuerst:

(define (script-fu-text-box inText inFont inFontSize inTextColor) )

Mit Hilfe unsere bisherigen Kenntnisse in Sachen Scheme können wir sehr schnell diese Definition analysieren. Wir haben eine neue Funktion mit dem Namen "script-fu-text-box" definiert. Sie enthält vier Paramter, die später mit einem Text, einem Font, einer Schriftgröße und einer Text-Farbe korrespondieren. Die Funktion hat zur Zeit keine weiteren Anweisungen, ist also leer. So weit, so gut - nichts Neues und schon gar nichts Aufregendes.

Noch etwas zu den Namenskonventionen

Die Namenskonventionen von Scheme scheinen Namen zu bevorzugen, die aus kleinen Buchstaben und Trennzeichen bestehen. Ich (Michael Terry und auch der Autor dieser Übersetzung) weichen bei der Namensvergabe bei den Parametern und Variablen von diesem Prinzip ab. Ich bevorzuge mehr beschreibende Namen und optisch trennende Groß- und Kleinschreibung. Der englischsprachige Autor bevorzugt außerdem den Präfix "in" für alle Eingabeparameterm und den Präfix "the" für Variable innerhalb des Scriptes. Es gibt keinen Grund, daß wir nicht auch so verfahren.

Es ist außerdem eine vernünftige Namenskonvention innerhalb der GIMP-Datenbasis, die Script-Fu-Texte mit "script-fu-" beginnen zu lassen. Das hat den Vorteil, daß man diese Texte schnell innerhalb aller Einträge finden kann und sie sich von den anderen Plug-ins unterscheiden, wenn sie aufgelistet werden.

Registration der Funktion

Nun wollen wir unsere Funktion in GIMP registrieren lassen. In der Registrationsphase von GIMP sucht GIMP nach diesem Part, um die entsprechenden Vermerke in der Datenbasis vorzunehmen. Diese Zeilen folgen nach der Definition der Funktion.

(script-fu-register
  "script-fu-text-box"
  "<Toolbox>/Xtns/Script-Fu/Test/Text Box..."
  "Creates a simple text box, sized to fit around the user's choice of text, font, font size, and color."
  "Michael Terry"
  "copyright 1997, Michael Terry"
  "October 27, 1997"
  ""
  SF-STRING "Text:"        "Text Box"
  SF-FONT   "Font:"        "-*-Roostheavy-*-r-*-*-24-*-*-*-p-*-*-*"
  SF-VALUE  "Font size:"   "45"
  SF-COLOR  "Color:"       '(0 0 0)
)

Parameterbeschreibung der Script-Registration

Um einen eigenen Script-Fu-Text im GIMP registrieren zu lassen, rufen wird die Funktion "script-fu-register" auf. Diese Funktion hat sieben unterschiedliche Parameter:

  1. Die erste Parameterzeile beschreibt den Namen der Funktion, die zuerst in unserem Script aufgerufen werden soll. Diese Funktion wird als Eingangspunkt unseres Scripts bezeichnet. In unserem Fall ist unsere Funktion die einzige Funktion im Script und damit gleichzeitig auch die Eingangsfunktion.
  2. Die zweite Parameterzeile beschreibt die Lage in der GIMP-Menüstruktur, in der unser Script-Aufruf erfolgen soll. In unserem Fall ist es die Menüleiste der GIMP-Toolbox. Und dort unter den Punkten "Xtns/Script-Fu/Test". Sollte eine Verzeichnisebene noch nicht vorhanden sein, wird diese Menüebene automatisch von GIMP angelegt. Die 3 Punkte hinter "Text Box..." sollen andeuten. daß sich eine Dialogbox öffnet.
  3. Die dritte Parameterzeile beschreibt das Script-Fu-Programm. Sie erscheint wenn die "About"-Schaltfläche (oder "Überr") im Fenster des aufgerufenen Programms gedrückt wird. (Vielen Dank an Kai Kürschner für diesen Hinweis).
  4. Hier kommt der Name des Script-Autors.
  5. Es schließt sich die Copyright-Information an.
  6. An dieser Position folgt das Erstellungs- oder das letzte Revisionsdatum.
  7. Ab dieser Zeile folgt der Parameterblock, der die Parameter enthält, die unsere Funktion benötigt. Diese Parameterzeilen haben folgende Struktur:

    Param-Typ "Prompt-Text" "Standardwert"

Hier ist eine Tabelle mit den möglichen Parametern:

Param-Typ Kurzbeschreibung Beispiele

SF-VALUE

Beschreibt eine numerische Eingabe

SF-VALUE "Blur Radius:" "5"

SF-STRING

Beschreibt eine Text-Eingabe

SF-TEXT "Text:" "The GIMP"

SF-FONT

Beschreibt eine Font-Auswahl. Es erscheint eine Schaltfläche, die das Schrift-Auswahl-Fenster von GIMP aktiviert. Die Font-Notation erfolgt nach den üblichen Regeln der Font-Beschreibung unter X11. Eine wertvolle Hilfe zur Ermittlung einer korrekten Font-Syntax ist das Programm "xfontsel".

SF-FONT "Font:" "-*-baskerville-*-*-*-*-30-*-*-*-*-*-*-*"

SF-ADJUSTMENT

 

SF-ADJUSTMENT "Font Size (pixels):" '(22 2 100 1 1 0 1)

SF-COLOR

Zeigt an, daß eine Farbeingabe an dieser Stelle notwendig ist. Es erscheint eine Schaltfläche zur Farbwahl.

SF-COLOR "Color:" '(0 0 0)

SF-TOGGLE

Beschreibt einen logischen Parameter, der durch eine Toggle-Box angezeigt wird.

SF-TOGGLE "Resize?" TRUE

SF-IMAGE

Falls das Script ein bereits geöffnetes Bild benötigt, ist dieser Parameter zu vereinbaren. Dabei ist zu beachten, das dieser Parameter als erster Parameter in der Parameterliste der Funktion steht. GIMP trägt automatisch alle aktiven Bilder ein.

SF-IMAGE "The image" 0

SF-DRAWABLE

Arbeitet das Script mit bereits geöffneten Scripten (SF-IMAGE), ist zusätzlich dieser Parameter anzugeben. Er beschreibt den Namen einer Ebene (layer). GIMP reicht ihn als Referenz weiter.

SF-DRAWABLE "The layer" 0

SF-FILENAME

Eingabe eines Dateinamens

SF-FILENAME "Filename:" "afile"

SF-PATTERN

Eingabe eines Musters (Pattern)

SF-PATTERN "Pattern:" "Wood"

SF-GRADIENT

Eingabe eines Verlaufes (Gradient)

SF-GRADIENT "Blend:" "German_flag_smooth"

Dieses Script speichern wir im Verzeichnis ".gimp/scripts" als eine Textdatei mit dem Suffix ".scm" ab. Dieses Script muß sowohl die "define"- als auch die "register"-Anweisung enthalten. Ist dies geschehen, wählen wir in GIMP die Menüpunkte "Xtns->Script-Fu->Refresh" an.

script-fu refresh Danach sollte sich unser Script-Gerippe bereits aufrufen lassen script-fu test textbox

Nach dem Aufruf sollte folgendes GIMP-Fenster erscheinen:

dialog textbox


Allerdings können wir noch nicht viel damit anfangen. Es ist nur ein Script-Gerippe. Ein Aufruf ist wenig erfolgreich, da die eigentliche Bearbeitungsfunktion von uns noch nicht kodiert wurde. Wir sehen uns aber noch den Eintrag in der GIMP-Datenbasis an.

menu db browser Es sollte folgender Eintrag sichtbar gemacht werden können. dialog db browser

Wenn das keine geballte Ladung an Information war. Legen wir eine Verschnaufpause ein. Wir treffen uns nach der Pause. Also bis bald.

Titelblatt Lektion 1 Lektion 2 Lektion 3 Lektion 4 Lektion 5 Lektion 6 Referenzen
  Erster Anlauf Variable und Funktionen Immer wieder Listen Das erste Gerippe Etwas mehr Fleisch Noch etwas Salz an die Suppe  

Valid XHTML 1.0!