#!/opt/bin/perl use Gimp; use Gimp::Fu; use Gimp::Util; # Diese beiden sehr kurzen "Plugins" entstanden ursprünglich, weil zwei # häufig benötige Arbeitsschritte - eine Ebene auf die Größe des Bildes # skalieren bzw. eine Ebene im Bild zentrieren - nicht als Menüpunkte # verfügbar waren. # # Abhilfe konnte kurzfristig mit diesen Plugins geschaffen werden. # Registriere die Funktion "layer_to_image_size". Ursprünglich Teil # des "Ebenen"-Menüs, wurde die Funktionalität dieses Plugins im # Gimp-Kern integriert. Da jedoch keine Funktion "layer_to_image_size" # existiert, blieb das Plugin erhalten, erhielt jedoch den Menüpfad # , so daß es nicht im Menü auftaucht. Andere Plugins können # diese Funktion jedoch nutzen. # # Die register-Funktion ist sehr "gequetscht", der Autor wollte wohl # für eine einzeilige Funktion nicht 10 Zeilen "register"-Aufruf # schreiben ;-) register "layer_to_image_size", "Layer2ImageSize", "Expands layer to image size", "Seth Burgess", "Seth Burgess ", "1.0", "", "*", [ ], sub { ($img, $layer) = @_; # Das Plugin selbst besteht eigentlich nur aus dieser Zeile, # die die Ebene auf die Größe des Bildes skaliert. Das # einzig Schwierige ist der Aufruf der offsets-Methode, # die genau die richtigen Werte zurückliefert, um die Ebene # in die linke obere Bildecke zu verschieben. $layer->resize($img->width, $img->height, $layer->offsets); (); }; # "center_layer" zentriert eine Ebene im Bild. Das Plugin ist # immer noch im Ebenen-Menü registriert. register "center_layer", "Center Layer", "Centers the current layer on the image", "Seth Burgess", "Seth Burgess ", "1.0", N_"/Layers/Center Layer", "*", [], sub { ($img, $layer) = @_; # Das eigentliche Plugin ist noch einfacher als das vorhergehende: # Es wird lediglich die linke obere Ecke der Ebene soweit von der # linken oberen Ecke des Bildes entfernt befestigt, daß die "Bänder" # an beiden Seiten zusammen jeweils die Hälfte des Breiten- oder # Höhenunterschiedes zwischen Bild und Ebene einnehmen. Dies klappt # auch mit Ebenen, die größer als das Bild sind - in diesem Fall # ist der Offset negativ und die Ebene ragt gleichmäßig über die # Bildkanten hinaus. $layer->set_offsets(($img->width - $layer->width )/2, ($img->height - $layer->height)/2); (); }; exit main;