#!/usr/app/bin/perl eval 'exec /usr/app/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell use Gimp qw(:auto __ N_); use Gimp::Fu; N_"/Xtns/Render"; # dummy translation for i18n bugs sub stamps { my ($size, $hole, $paper, $diameter, $gap) = @_; gimp_palette_set_background($paper); $img = gimp_image_new($size, $size, RGB); $layer = gimp_layer_new($img, $size, $size, RGB_IMAGE, "Layer 1", 100, NORMAL_MODE); gimp_image_add_layer($layer, -1); gimp_palette_set_background($hole); $layer->gimp_edit_fill(BG_IMAGE_FILL); gimp_selection_none($img); my $ncircles = int(($size + $gap) / ($diameter + $gap)); $x = 0; for ($i=0; $i<$ncircles; $i++) { gimp_ellipse_select($img, $x, 0, $diameter, $diameter, ADD, 1, 0, 0); gimp_ellipse_select($img, 0, $x, $diameter, $diameter, ADD, 1, 0, 0); $x = $x + $diameter + $gap; } gimp_palette_set_background($paper); gimp_edit_fill($layer, BG_IMAGE_FILL); gimp_selection_none($img); # here, at last, comes the clever part! :-) $layer->channel_ops_offset(1, 0, -($diameter / 2), -($diameter / 2)); return $img; } register "stamps", "Creates a rectangular image with stamp-like perforations.", "Default values are not bad!", "Claes G Lindblad ", "Claes G Lindblad ", "990314", N_"/Xtns/Render/Stamps...", undef, [ [PF_INT32, "size", "img size", 90], [PF_COLOR, "paper", "paper color", [255, 255, 255]], [PF_COLOR, "hole", "hole color", [0, 0, 0]], [PF_INT32, "diameter", "diameter", 10], [PF_INT32, "gap", "gap", 5] ], \&stamps; exit main;