23.04.2014 Aufrufe

Kompakte Notebooks Kompakte Notebooks - Wuala

Kompakte Notebooks Kompakte Notebooks - Wuala

Kompakte Notebooks Kompakte Notebooks - Wuala

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Praxis | Gimp-Skripte<br />

Gimp erstellt aus den Angaben im Kopfteil<br />

des Skripts einen einfachen Dialog zum<br />

Anpassen der Vorgabewerte.<br />

wurde und dessen bearbeitbaren Bildbereich.<br />

Ein DRAWABLE kann somit eine Ebene,<br />

ein Kanal, eine Auswahl oder eine Maske<br />

sein. Das Skript benötigt noch ein paar weitere<br />

Angaben, im Listing die Parameter SF-<br />

VALUE für Einzelwerte und SF-TOGGLE für<br />

Ja/Nein-Ankreuzkästchen.<br />

Als SF-VALUE müssen mehrere Informationen<br />

abgefragt werden: So sind die X- und Y-<br />

Koordinaten zum Setzen des Bildpunkts<br />

nötig, um den herum die Rotation (in Grad)<br />

stattfinden soll. Zusätzlich benötigt das<br />

Skript die Anzahl der Rotationsschritte, also<br />

die Anzahl Kopien der gewünschten Form.<br />

Vereinfacht gesagt: Von wo aus gesehen sollen<br />

in welchen Abständen wie viele Blütenblätter<br />

generiert werden? Der SF-TOGGLE-Knopf<br />

lässt den Nutzer entscheiden, ob alle Blütenblatt-Layer<br />

hinterher zu einer Ebene zusammengefasst<br />

werden sollen. Die im Skript<br />

eingetragenen Schritte, Winkel und der<br />

Mittelpunkt, um den herum rotiert werden<br />

soll, sind Vorgabewerte, die der Benutzer<br />

beim Aufruf des Skripts anpassen kann, denn<br />

Gimp erstellt aus all diesen Angaben automatisch<br />

einen passenden grafischen Dialog.<br />

Die Zeile nach dem Kopfteil sortiert das<br />

Blumen-Skript ins Menü Bild/Testing ein.<br />

Nach der Menüplatzierung folgt das Einlesen<br />

der Parameter aus dem Kopfteil in die Hauptfunktion<br />

script-fu-flower. Bei der Funktionsdefinition<br />

ist die Reihenfolge der Parameter aus<br />

der Registrierung wichtig – nicht deren<br />

Name. Der erste Parameter<br />

"SF-IMAGE" "Image" 0<br />

könnte in der Funktion script-fu-flower genauso<br />

gut schickesbild statt image heißen. Nach allgemeiner<br />

Konvention bezeichnen die meisten<br />

Gimp-Skripte jedoch SF-IMAGE ganz banal als<br />

image und SF-DRAWABLE als drawable oder manchmal<br />

auch layer.<br />

Die folgenden Parameter für die X- und Y-<br />

Koordinaten stecken in xcenter und ycenter. Typangaben<br />

wie int oder float sind in Scheme<br />

nicht notwendig. Der Rotationswinkel landet<br />

in angle, die Anzahl der Rotationsschritte in<br />

Auch die Auswahl von Farbe, Muster<br />

und Schriftart lässt sich mit wenigen<br />

Zeilen in ein Gimp-Skript einbinden.<br />

steps und für die letzte Nutzereingabe, eine<br />

Ja/Nein-Frage, wird die Variable merge-visiblelayers<br />

gesetzt. Damit sind die Parameter der<br />

Hauptfunktion bekanntgegeben – die Zuordnung<br />

erledigt Script-Fu automatisch. Dahinter<br />

folgen mit let definierte lokale Variablen:<br />

ein layer (Ebene) und eine floating-selection<br />

(schwebende Auswahl).<br />

Die drei Schritte Registrierung, Menüeintrag<br />

und Hauptfunktion enthält jedes<br />

Gimp-Skript; manchmal mit nur zwei bis drei<br />

Parametern, manchmal mit zehn und mehr<br />

Nutzerangaben, die das Skript berücksichtigt.<br />

Außer SF-VALUE und SF-TOGGLE gibt es zum<br />

Beispiel noch SF-COLOR für eine Farbauswahl,<br />

SF-FONT für die Schriftart, SF-PATTERN für Musterfüllungen<br />

und einige mehr.<br />

Innereien<br />

Ist das Grundgerüst eines Gimp-Skripts erstellt,<br />

müssen Sie sich überlegen, welche<br />

Schritte es in genau welcher Reihenfolge abarbeiten<br />

soll. Für das Erstellen und rotierte<br />

Platzieren von Blütenblättern benötigen Sie<br />

eine Grundform, die zum einen kopiert und<br />

dann um eine bestimmte Gradzahl rotiert<br />

wird. Dafür verwendet man die Script-Fu Prozedur<br />

gimp-drawable-transform-rotate, die auf dem<br />

aktuellen drawable arbeitet und eine „floating<br />

selection“ zurückliefert. Die schwebende<br />

Auswahl muss in eine neue Ebene umgewandelt<br />

werden, die dann zur aktiven gemacht<br />

und wieder kopiert wird. Das Ganze<br />

soll das Skript so oft wiederholen, bis ein<br />

Kreis in gleichmäßigen Abständen mit Blütenblättern<br />

gefüllt ist.<br />

Die Anzahl der Rotationsschritte festzulegen<br />

ist mit Hilfe einer Schleife ganz einfach:<br />

(while (> steps 0)<br />

(Anweisungen zum Rotieren)<br />

(set! steps (- steps 1))<br />

)<br />

Die Variable steps bezieht das Skript aus den<br />

Nutzerangaben im Dialog. Die Schleife läuft<br />

so lange, wie steps größer als 0 ist, wobei in<br />

jedem Durchlauf 1 vom Ausgangswert abgezogen<br />

wird. Innerhalb der Schleife platzieren<br />

Sie die Schritte zum Kopieren, Rotieren und<br />

Auswählen:<br />

(set! layer (car (gimp-image-get-active-layer image)))<br />

(gimp-edit-copy drawable)<br />

(gimp-edit-paste drawable FALSE)<br />

Zunächst wird die Variable layer auf den aktuell<br />

aktiven Layer im Bild gesetzt. Dabei ist<br />

es egal, ob die Form ausgewählt ist oder<br />

nicht. Weil gimp-drawable-transform-rotate die Rotationsfläche<br />

nimmt, rotiert und zu einer<br />

schwebenden Auswahl macht, muss man zunächst<br />

sicherstellen, dass die Grundform an<br />

ihrem Platz bleibt. Dazu genügt ein einfaches<br />

gimp-edit-copy und gimp-edit-paste. Das gimpedit-paste<br />

enthält den zusätzliche Parameter<br />

FALSE, der bedeutet, dass die Auswahl nicht<br />

ausgeschnitten, sondern an die gleiche Stelle<br />

zurückkopiert wird. Nachdem das Skript die<br />

Kopie erstellt hat, folgt die Rotation:<br />

(gimp-drawable-transform-rotate drawable<br />

angle<br />

FALSE<br />

xcenter ycenter<br />

TRANSFORM-FORWARD<br />

3<br />

FALSE<br />

3<br />

TRANSFORM-RESIZE-ADJUST)<br />

Wie einige andere Gimp-Prozeduren auch,<br />

erhält gimp-drawable-transform-rotate ziemlich viele<br />

Parameter, deren Bedeutung Sie im Script-<br />

Fu-Browser erklärt finden. Die Prozedur bekommt<br />

das aktive drawable mit der Gradzahl<br />

angle übergeben. Das Skript setzt mit xcenter<br />

und ycenter den Mittelpunkt der Rotation<br />

selbst, sodass Sie ein FALSE für den Parameter<br />

auto-center verwenden, der das Zentrum des<br />

drawable als Rotationsmitte benutzen würde.<br />

Danach folgt TRANSFORM-FORWARD – oder alternativ<br />

TRANSFORM-BACKWARD. Die nächsten drei<br />

Parameter 3, FALSE und nochmal 3 betreffen<br />

Interpolation, Supersampling und die Rekursionstiefe<br />

für Supersampling. Der letzte Parameter<br />

gibt an, dass die Rotation nur in der<br />

Größe angepasst werden soll. Danach entsteht<br />

automatisch eine schwebende Auswahl,<br />

die Sie in eine neue Ebene umwandeln:<br />

(set! floating-selection (car (gimp-image-get-floating-—<br />

sel image)))<br />

(gimp-floating-sel-to-layer floating-selection)<br />

Die schwebende Auswahl schnappen Sie<br />

sich mit der car-Anweisung und stecken sie in<br />

die Variable floating-selection. Danach ruft das<br />

Skript gimp-floating-sel-to-layer auf und wandelt<br />

damit die schwebende-Auswahl in eine eigene<br />

Ebene um. Danach müssen Sie nur noch<br />

die neue Ebene zur aktiven machen und zurechtschneiden,<br />

damit ihre Größe mit der Rotationsform<br />

zusammenpasst:<br />

(gimp-image-set-active-layer image layer)<br />

(plug-in-autocrop-layer 1 image layer)<br />

166 c’t 2009, Heft 2<br />

©<br />

Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!