#!/opt/bin/perl # Lade das Gimp-Modul. Die Funktionen "__" und "N_" dienen der # Internationalisierung (Übersetzung) von Strings. use Gimp qw(:auto __ N_); # Das Gimp::Fu-Modul exportiert die "register"-Funktion und erzeugt # die Dialogbox, die das Look & Feel vieler Perl-Plugins ausmacht. use Gimp::Fu; # Plugins registrieren eine oder mehrere Funktionen mit Hilfe der # register-Funktion, so daß sie im Menü erscheinen. Die register-Funktion # hat unheimlich viele Argumente, so daß man meistens ein bestehendes Skript # kopiert und modifiziert, wenn man ein neues Plugin schreiben möchte. register "center_guide", "Creates h- & v-guides at the center of the image.", "Physical center = width/2 and height/2; Optical center = the Golden Mean.", "Claes G Lindblad ", "Claes G Lindblad", "990323", N_"/Guides/Center Guide...", "*", [ # Als einziger Parameter erwartet dieses Plugin einen Radio-Button, # mit dem man zwischen dem "physikalischen" Mittelpunkt (die Bildmitte) # und dem "optischen" Mittelpunkt (goldener Schnitt) wählen kann. [PF_RADIO, "center", "center", 0, [Physical => 0, Optical => 1] ] ], sub { # Zusätzlich zum oben definierten Argument wird bei Plugins # das Bild und die ausgewählte Ebene übergeben. my ($img, $layer, $center) = @_; # Speichere die Breite und Höhe in $w und $h: my $w = $img->width; my $h = $img->height; # Berechne die Bildmitte my $hc = int ($h/2 + 0.5); my $vc = int ($w/2 + 0.5); # Wenn der optische Mittelpunkt gewünscht wird, wird $hc # entsprechend berechnet. if ($center) { $hc = int (($h / 2.6179) + 0.5); } # Füge die beiden Hilfslinien ins Bild ein. Horizontale # Hilfslinien benötigen den Abstand zur oberen Kante, # vertikale den Abstand zur linken Bildkante. $img->add_hguide($hc); $img->add_vguide($vc); # Damit Gimp die Bildfenster neu zeichnet, muß noch die # update-Methode der Ebene aufgerufen werden. Dieser muß # ein Rechteck (linke, obere Kante, Breite, Höhe) übergeben # werden, der Einfachheit halber hier das ganze Bild. # Ohne diesen Aufruf werden die Hilfslinien möglicherweise # nicht richtig oder zu spät gezeichnet. $layer->update (0, 0, $w, $h); # Dieses Skript liefert explizit "nichts" zurück, da # Rückgabewerte von Skripten in Gimp-Perl besonders # behandelt werden. (); }; # Diese Zeile darf bei keinem Gimp-Plugin fehlen. Da Plugins mehrmals zu # unterschiedlichen Zwecken aufgerufen werden, darf das Skript außer # "register" und "main" keine weiteren Funktionen direkt aufrufen. exit main;