diff --git a/ChangeLog b/ChangeLog index 9ea206a24c..e27915231c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Dec 25 04:14:03 CET 1999 Marc Lehmann + + * gimp1_1_splash.ppm: Crappy it is, but at least temporary! Feel + free to enhance or replace, but please do not revert it back to + the previous version ;) + 1999-12-24 Shirasaki Yasuhiro * plug-ins/common/exchange.c @@ -99,7 +105,6 @@ Mon Dec 20 18:42:51 EST 1999 Gregory McLean * gimp.spec: Slightly more upto date spec file. Work in progress. ->>>>>>> 1.1949 Mon Dec 20 17:58:59 GMT 1999 Adam D. Moss * app/edit_selection.c: Remove old movement code and unused diff --git a/gimp1_1_splash.ppm b/gimp1_1_splash.ppm index 62cfb77eff..5c4d30a1bf 100644 Binary files a/gimp1_1_splash.ppm and b/gimp1_1_splash.ppm differ diff --git a/plug-ins/perl/examples/alpha2color.pl b/plug-ins/perl/examples/alpha2color.pl deleted file mode 100755 index 04bc88afe4..0000000000 --- a/plug-ins/perl/examples/alpha2color.pl +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/perl - -use Gimp qw( :auto N_ ); -use Gimp::Fu; - -# alpha2color.pl -# by Seth Burgess -# Version 0.02 -# Oct 16th, 1998 -# -# This script simply changes the current alpha channel to a given color -# instead. I'm writing it primarily for use with the displace plugin, -# but I imagine it'll have other uses. - -# TODO: Selection is currently ignored. It'd be better if it remembered -# what the previous selection was. -# Also, it needs to find a happier home than in the Filters/Misc menu. - -# Gimp::set_trace(TRACE_ALL); - -# Revision History -# v0.02 - fixed up @color (should be $color) and undef; (should be return();) - -sub save_layers_state ($) { - $img = shift; - my @layers = $img->get_layers; - $i = 0; - foreach $lay (@layers) { - if ($lay->get_visible){ - $arr[$i] = 1; - } - else { - $arr[$i] = 0; - } - $i++; - } - return @arr; - } - -sub restore_layers_state($@) { - $img = shift; - @arr = @_; - my @layers = $img->get_layers; - $i = 0; - foreach $lay (@layers) { - $lay->set_visible($arr[$i]); - $i++; - } - } - - - -sub alpha2col { - my ($img, $drawable, $color) = @_; - - my $oldcolor = gimp_palette_get_background(); - - my @layers = gimp_image_get_layers($img); - -# if there's not enough layers, abort. - if ($#layers < 0) { - gimp_message("You need at least 1 layer to perform alpha2color!"); - print "Only ", scalar(@layers), " layers found!(", $layers[0],")\n"; - return 0; - } - -# Hide the bottom layer, so it doesn't get into the merge visible later. - - @layer_visibilities = save_layers_state ($img); - # foreach $visible (@layer_visibilities) { - # print $visible, "\n"; - # } - $target_layer = gimp_image_get_active_layer($img); - @offsets=$target_layer->offsets; - # print $target_layer, "\n"; - foreach $eachlay (@layers) { - $eachlay->set_visible(0); - } - $target_layer->set_visible(1); - gimp_palette_set_background($color); - $newlay = $target_layer->copy(1); - $img->add_layer($newlay, 0); - $newlay->set_offsets(@offsets); - $target_layer->set_active_layer; - - $img->selection_all; - $target_layer->edit_fill; - $img->selection_none; - - $foreground = gimp_image_merge_visible_layers($img,0); - - restore_layers_state($img, @layer_visibilities); - - gimp_palette_set_background($oldcolor); - gimp_displays_flush(); - return(); - } - -register - "plug_in_alpha2color", - "Alpha 2 Color", - "Change the current alpha to a selected color.", - "Seth Burgess", - "Seth Burgess", - "2-15-98", - N_"/Image/Colors/Alpha2Color", - "RGBA", - [ - [PF_COLOR, "color", "Color for current alpha", [127,127,127]] - ], - \&alpha2col; - -exit main; - diff --git a/plug-ins/perl/examples/blowinout.pl b/plug-ins/perl/examples/blowinout.pl deleted file mode 100755 index 2fd1f5a289..0000000000 --- a/plug-ins/perl/examples/blowinout.pl +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/perl - -# Blow In/Out -# John Pitney - -use Gimp 1.06; -use Gimp::Fu; - -# print "hello there\n"; - -# Gimp::set_trace(TRACE_CALL); - - -sub blowinout { - my ($img, $drawable, $angle, $nsteps, $distance, $inmode, $arithmode) = @_; - # bail out if $drawable isn't a layer -# print "Starting\n"; - if( gimp_selection_is_empty($img) == 0) { return }; -# if ($nsteps == 0) return; - eval { $img->undo_push_group_start }; - # save the background color for later restoration - my $oldbg = gimp_palette_get_background(); - #get the drawable dimensions - my $xsize = gimp_drawable_width($drawable); - my $ysize = gimp_drawable_height($drawable); - - # Set background color to 128, for clearing dm - gimp_palette_set_background([128,128,128]); - - # Create a grayscale workspace image for displacement map - my $dm = gimp_image_new($xsize, $ysize, 1); - eval { $dm->undo_push_group_start }; - # It needs to have 2 layers - my $dmlayer = gimp_layer_new($dm, $xsize, $ysize, GRAY_IMAGE, "newlayer", - 100, NORMAL_MODE); - gimp_image_add_layer($dm, $dmlayer, 0); - - # Create the layers, one-by-one - my $i = 1; - my $xdist = ($arithmode) ? - $i * $distance / $nsteps * -cos($angle * 3.14159 / 180) : - $distance ** ($i/$nsteps) * -cos($angle * 3.14159 / 180); - my $ydist = ($arithmode) ? - $i * $distance / $nsteps * sin($angle * 3.14159 / 180) : - $distance ** ($i/$nsteps) * sin($angle * 3.14159 / 180); - gimp_edit_clear($dmlayer); - plug_in_noisify(1, $dm, $dmlayer, 0, 255, 255, 255, 0); - gimp_levels($dmlayer, 0, 0, 255, 1.0, 128, 255); - $drawable = gimp_layer_copy($drawable, 0); - gimp_image_add_layer($img, $drawable, -1); - plug_in_displace(1, $img, $drawable, $xdist, $ydist, 1, 1, $dmlayer, - $dmlayer, 1); - if ( $inmode == 1 ) - { - gimp_image_lower_layer($img, $drawable); - }; - for ( $i = 2; $i <= $nsteps; $i++ ) { - $xdist = ($arithmode) ? - $i * $distance / $nsteps * -cos($angle * 3.14159 / 180) : - $distance ** ($i/$nsteps) * -cos($angle * 3.14159 / 180); - $ydist = ($arithmode) ? - $i * $distance / $nsteps * sin($angle * 3.14159 / 180) : - $distance ** ($i/$nsteps) * sin($angle * 3.14159 / 180); - gimp_edit_clear($dmlayer); - plug_in_noisify(1, $dm, $dmlayer, 0, 255, 255, 255, 0); - gimp_levels($dmlayer, 0, 0, 255, 1.0, 128, 255); - $drawable = gimp_layer_copy($drawable, 0); - gimp_image_add_layer($img, $drawable, -1); - plug_in_displace(1, $img, $drawable, $xdist, $ydist, 1, 1, $dmlayer, - $dmlayer, 1); - if ( $inmode == 1 ) - { - gimp_image_lower_layer($img, $drawable); - }; - } - - eval { $dm->undo_push_group_end }; -# gimp_image_remove_layer($dm, $dmlayer); -# gimp_image_delete ($dm); - gimp_palette_set_background($oldbg); - eval { $img->undo_push_group_end }; -# gimp_displays_flush(); unneccessary (and dangerous ;) - - (); # I like smileys ;) -} - -register - "blowinout", - "Blow selected layer inout", - "Generates an animation thats blows the selected layer in or out", - "John Pitney", - "John Pitney ", - "1999-03-15", - N_"/Filters/Distorts/BlowInOut", - "*", - [ - [PF_INT32, "angle", "Wind Angle, 0 is left", 120], - [PF_INT32, "steps", "Number of Steps/Layers", 5], - [PF_VALUE, "distance", "How far to blow",30], -# What I really need here are radio buttons! Maybe they even exist... -# You wanted them... - [PF_RADIO, "direction", "Blow direction", 0, [In => 1, Out => 0]], - [PF_RADIO, "series", "Kind of series", 1, [Arithmetic => 1, Geometric => 0]] - ], - [], - \&blowinout; - -exit main; - diff --git a/plug-ins/perl/examples/border.pl b/plug-ins/perl/examples/border.pl deleted file mode 100755 index 8285dade68..0000000000 --- a/plug-ins/perl/examples/border.pl +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/perl - -#BEGIN {$^W=1}; - -use Gimp::Feature qw(pdl); -use Gimp; -use Gimp::Fu; -use PDL::LiteF; - -# Gimp::set_trace(TRACE_ALL); - -register "border_average", - "calculates the average border colour", - "calulcates the average border colour", - "Marc Lehmann", - "Marc Lehmann", - "0.2.2", - N_"/Filters/Misc/Border Average", - "RGB", - [ - [PF_INT32, "thickness", "Border size to take in count", 10], - [PF_INT32, "bucket_exponent", "Bits for bucket size (default=4: 16 Levels)", 4], - ], - [ - [PF_COLOUR, "border_colour", "Average Border Colour"], - ], - sub { # es folgt das eigentliche Skript... - my($image,$drawable,$thickness,$exponent)=@_; - - ($empty,@bounds)=$drawable->mask_bounds(); - return () if $empty; - - my $rexpo = 8-$exponent; - my $bucket_num = 1<<$exponent; - - # ideally, we'd use a three-dimensional array, but index3 isn't - # implemented yet, so we do it flat (Still its nicer than C). - my $cube = zeroes long,$bucket_num**3; - - my $width = $drawable->width; - my $height = $drawable->height; - - $thickness=$width if $thickness>$width; - $thickness=$height if $thickness>$height; - - local *add_new_colour = sub($) { - # linearize and quantize pixels (same as original, slightly wrong) - my $pixels = $_[0] >> $rexpo; - - # intead of something like - # $cube->index3d($pixels)++; - # we have to first flatten the rgb triples into indexes and use index instead - - my $flatten = long([$bucket_num**2,$bucket_num**1,$bucket_num**0]); - my $subcube = $cube->index(inner($pixels,$flatten)->clump(2)); - - $subcube++; - }; - - Gimp->progress_init("Border Average", 0); - add_new_colour ($drawable->pixel_rgn ($bounds[0] ,$bounds[1] , $thickness,$height, 0, 0) - ->get_rect(0,0, $thickness,$height)); - add_new_colour ($drawable->pixel_rgn ($bounds[2]-$thickness,$bounds[1] , $thickness,$height, 0, 0) - ->get_rect(0,0, $thickness,$height)); - add_new_colour ($drawable->pixel_rgn ($bounds[0] ,$bounds[1] , $width ,$thickness, 0, 0) - ->get_rect(0,0, $width, $thickness)); - add_new_colour ($drawable->pixel_rgn ($bounds[0] ,$bounds[3]-$thickness, $width ,$thickness, 0, 0) - ->get_rect(0,0, $width, $thickness)); - - # now find the colour - my $max = $cube->maximum_ind; - my $b = $max % $bucket_num << $rexpo; - my $g = ($max >>= $exponent) % $bucket_num << $rexpo; - my $r = ($max >>= $exponent) % $bucket_num << $rexpo; - - if ($Gimp::Fu::run_mode != RUN_NONINTERACTIVE) - { - my $layer = new Layer ($image, width $image, height $image, RGB_IMAGE, "bordercolour", 100, NORMAL_MODE); - add_layer $image $layer,0; - Palette->set_background([$r,$g,$b]); - $layer->edit_fill; - Gimp->message("Added layer with border colour ($r,$g,$b) on top"); - } - - [$r,$g,$b]; -}; - -exit main; - diff --git a/plug-ins/perl/examples/ditherize.pl b/plug-ins/perl/examples/ditherize.pl deleted file mode 100755 index 194377e772..0000000000 --- a/plug-ins/perl/examples/ditherize.pl +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/perl - -use strict 'subs'; -use Gimp; -use Gimp::Fu; - -# -# this is quite convoluted, but I found no other way to do this than: -# -# create a new image & one layer -# copy & paste the layer -# ditherize new image -# copy & paste back -# - -#Gimp::set_trace(TRACE_ALL); - -my %imagetype2layertype = ( - RGB, RGB_IMAGE, - GRAY, GRAY_IMAGE, - INDEXED, INDEXED_IMAGE, -); - -register "plug_in_ditherize", - "dithers current selection", - "This script takes the current selection and dithers it just like convert to indexed", - "Marc Lehmann", - "Marc Lehmann", - "1.2", - N_"/Filters/Noise/Ditherize", - "RGB*, GRAY*", - [ - [PF_RADIO, "dither_type", "The dither type (see gimp_convert_indexed)", 1, - [none => 0, fs => 1, "fs/low-bleed" => 2, ordered => 3]], - [PF_SLIDER, "colours", "The number of colours to dither to", 10, [0, 256, 1, 1]], - ], - sub { - my($image,$drawable,$dither,$colours)=@_; - - Gimp::set_trace(-1); - - $drawable->is_layer or die "this plug-in only works for layers"; - - $image->undo_push_group_start; - - # make sure something is selected - $drawable->mask_bounds or $image->selection_all; - - my ($x1,$y1,$x2,$y2)=($drawable->mask_bounds)[1..4]; - my ($w,$h)=($x2-$x1,$y2-$y1); - - my $sel = $image->selection_save; - $image->rect_select($x1,$y1,$w,$h,REPLACE,0,0); - $drawable->edit_copy; - $sel->selection_load; - $sel->remove_channel; - - my $copy = new Image($w, $h, $image->base_type); - $copy->undo_disable; - my $draw = new Layer($copy, $w, $h, - $imagetype2layertype{$image->base_type}, - "temporary layer", 100, NORMAL_MODE); - $copy->add_layer ($draw, 1); - $draw->edit_paste(0)->anchor; - $copy->convert_indexed ($dither, MAKE_PALETTE, $colours, 1, 1, ""); - - $draw->edit_copy; - $drawable->edit_paste(1)->anchor; - $copy->delete; - - $image->undo_push_group_end; - - (); -}; - -exit main; - diff --git a/plug-ins/perl/examples/example-fu.pl b/plug-ins/perl/examples/example-fu.pl deleted file mode 100755 index d347c12bba..0000000000 --- a/plug-ins/perl/examples/example-fu.pl +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/perl - -use Gimp; -use Gimp::Fu; - -register "gimp_fu_example_script", # fill in a function name - "A non-working example of Gimp::Fu usage", # and a short description, - "Just a starting point to derive new ". # a (possibly multiline) help text - "scripts. Always remember to put a long". - "help message here!", - "Marc Lehmann ", # don't forget your name (author) - "(c) 1998, 1999 Marc Lehmann", # and your copyright! - "19990316", # the date this script was written - N_"/Xtns/Gimp::Fu Example", # the menu path - "RGB*, GRAYA", # image types to accept (RGB, RGAB amnd GRAYA) - [ - # argument type, switch name , a short description , default value, extra arguments - [PF_SLIDER , "width" , "The image width" , 360, [300, 500]], - [PF_SPINNER , "height" , "The image height" , 100, [100, 200]], - [PF_STRING , "text" , "The Message" , "example text"], - [PF_INT , "bordersize" , "The bordersize" , 10], - [PF_FLOAT , "borderwidth" , "The borderwidth" , 1/5], - [PF_FONT , "font" , "The Font Family" ], - [PF_COLOUR , "text_colour" , "The (foreground) text colour", [10,10,10]], - [PF_COLOUR , "bg_colour" , "The background colour" , "#ff8000"], - [PF_TOGGLE , "ignore_cols" , "Ignore colours" , 0], - [PF_IMAGE , "extra_image" , "An additonal picture to ignore"], - [PF_DRAWABLE , "extra_draw" , "Somehting to ignroe as well" ], - [PF_RADIO , "type" , "The effect type" , 0, [small => 0, large => 1]], - [PF_BRUSH , "a_brush" , "An unused brush" ], - [PF_PATTERN , "a_pattern" , "An unused pattern" ], - [PF_GRADIENT , "a_gradients" , "An unused gradients" ], - ], - sub { - - # now do sth. useful with the garbage we got ;) - my($width,$height,$text,$font,$fg,$bg,$ignore,$brush,$pattern,$gradient)=@_; - - # set tracing - Gimp::set_trace(TRACE_ALL); - - my $img=new Image($width,$height,RGB); - - # put an undo group around any modifications, so that - # they can be undone in one step. The eval shields against - # gimp-1.0, which does not have this function. - eval { $img->undo_push_group_start }; - - my $l=new Layer($img,$width,$height,RGB,"Background",100,NORMAL_MODE); - $l->add_layer(0); - - # now a few syntax examples - - Palette->set_foreground($fg) unless $ignore; - Palette->set_background($bg) unless $ignore; - - fill $l BG_IMAGE_FILL; - - $text_layer=$img->text_fontname(-1,10,10,$text,5,1,xlfd_size($font),$font); - - gimp_palette_set_foreground("green"); - - # close the undo push group - eval { $img->undo_push_group_end }; - - $img; # return the image, or an empty list, i.e. () -}; - -exit main; - diff --git a/plug-ins/perl/examples/example-net.pl b/plug-ins/perl/examples/example-net.pl deleted file mode 100755 index eae4c85fc2..0000000000 --- a/plug-ins/perl/examples/example-net.pl +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/perl - -# example for the gimp-perl-server (also called Net-Server) - -use Gimp; - -Gimp::on_lib { - print STDERR "$0: this script is not intended to be run from within the gimp!\n"; -}; - -Gimp::on_net { - # simple benchmark ;) - - $img=new Gimp::Image(600,300,RGB); - # the is the same as $img = new Image(600,300,RGB) - - $bg=$img->layer_new(30,20,RGB_IMAGE,"Background",100,NORMAL_MODE); - - $bg->add_layer(1); - - new Gimp::Display($img); - - for $i (0..255) { - Palette->set_background([$i,255-$i,$i]); - $bg->edit_fill; - Display->displays_flush (); - } -# Gimp::Net::server_quit; # kill the gimp-perl-server-extension (ugly name) -}; - -exit main; - diff --git a/plug-ins/perl/examples/example-oo.pl b/plug-ins/perl/examples/example-oo.pl deleted file mode 100755 index f687c88d1f..0000000000 --- a/plug-ins/perl/examples/example-oo.pl +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/perl - -# this extension shows some oo-like calls - -# it's really easy - -use Gimp; - -# the extension that's called. -sub plug_in_example_oo { - my $img=new Image(300,200,RGB); - - my $bg=new Layer($img,300,200,RGB_IMAGE,"Background",100,NORMAL_MODE); - - Palette->set_background([200,200,100]); - - $bg->fill(BG_IMAGE_FILL); -# Palette->set_background([200,100,200]); -# gimp_drawable_fill ($bg,BG_IMAGE_FILL); - $img->add_layer($bg,1); - - new Display($img); -} - -Gimp::on_run { - plug_in_example_oo; -}; - -Gimp::on_query { - gimp_install_procedure("plug_in_example_oo", "a test plug-in in perl", - "try it out", "Marc Lehmann", "Marc Lehmann", "1998-04-27", - N_"/Xtns/Perl Example Plug-in", "*", PROC_EXTENSION, - [[PARAM_INT32, "run_mode", "Interactive, [non-interactive]"]], []); -}; - -exit main; - diff --git a/plug-ins/perl/examples/feedback.pl b/plug-ins/perl/examples/feedback.pl deleted file mode 100755 index dea0f34892..0000000000 --- a/plug-ins/perl/examples/feedback.pl +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/perl - -# Revision 1.0: Released it -# 1.1: Marc Lehman added undo capability! -# 1.2: Added my email, and put it in "Noise" where it belongs -# - - -use Gimp; -use Gimp::Fu; - -register "feedback", - "Take an image and feed it back onto itself multiple times", - "This plug-in simulates video feedback. It makes for kinda a neat desktop if you're into that sort of thing", - "Seth Burgess", - "Seth Burgess ", - "2-15-99", - N_"/Filters/Noise/Feedback", - "RGB, GRAY", - [ - [PF_SLIDER, "offset", "the amount the frames will offset", 3, [0, 255, 1]], - [PF_SLIDER, "repeat", "the number of times to repeat the illusion", 3, [0, 100, 1]], - ], - sub { - my($img,$drawable,$offset,$repeat)=@_; - - eval { $img->undo_push_group_start }; - - for (; $repeat>0; $repeat--) { - $drawable = $img->flatten; - $copylayer = $drawable->copy(1); - $img->add_layer($copylayer,0); - $copylayer->scale($img->width - $offset, $img->height - $offset, 0); - } - $img->flatten; - eval { $img->undo_push_group_end }; - return(); -}; - -exit main; - diff --git a/plug-ins/perl/examples/homepage-logo.pl b/plug-ins/perl/examples/homepage-logo.pl deleted file mode 100755 index cec197ab5d..0000000000 --- a/plug-ins/perl/examples/homepage-logo.pl +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/perl - -# THIS IS OUTDATED AND WILL NOT RUN WITH CURRENT GIMP VERSIONS! - -# this test-plugin will create a simple button, and does automatically -# save it as an indexed gif in /tmp/x.gif - -# it works as plug-in as well as standalone! -# this script is old (its the first script ever written for gimp-perl) -# and I had no time to fix it yet. - -use Gimp; - -$blend1 = [0, 150, 255]; -$blend2 = [0, 255, 208]; -$black = "#000000"; -$font = "Engraver"; - -# enable example mode... if disabled, it will write out some logos, and not -# wont' display anything. -$example = 1; - -# set trace level to watch functions as they are executed -Gimp::set_trace(TRACE_NAME) if $example; - -sub set_fg ($) { gimp_palette_set_foreground ($_[0]) }; -sub set_bg ($) { gimp_palette_set_background ($_[0]) }; -sub get_fg ($) { gimp_palette_get_foreground () }; -sub get_bg ($) { gimp_palette_get_background () }; - -# shorthand function for drawing text -sub text($$$$$) { - my($img,$text,$border,$font,$size)=@_; - my $layer=gimp_text($img,-1,0,0,$text,$border,1,$size,PIXELS,"*",$font,"*","*","*","*"); - if (wantarray()) { - ($layer,gimp_text_get_extents($text,$size,PIXELS,"*",$font,"*","*","*","*")); - } else { - $layer; - } -} - -# convert image to indexed -# and automatically save it as interlaced gif. -sub index_and_save($$) { - my($img,$path)=@_; - gimp_image_flatten($img); - gimp_convert_indexed_palette($img,1,0,32,""); - file_gif_save(RUN_NONINTERACTIVE,$img,-1,$path,$path,1,0,0,0) unless $example; -} - -sub write_logo { - my($string,$active,$w,$h,$uc)=@_; - - # create a new image - my $img=gimp_image_new($w,$h,RGB); - - # and a layer for it - my $bg=gimp_layer_new($img,$w,$h,RGB_IMAGE,"Background",100,NORMAL_MODE); - - gimp_image_add_layer($img,$bg,1); - - set_fg($blend1); - set_bg($blend2); - - # blend the background - gimp_blend($bg,FG_BG_HSV,NORMAL_MODE,LINEAR,100,0, - REPEAT_NONE,0,0,0, - 0,0,$w*0.9,$h); - gimp_rect_select ($img,$w*0.92,0,$w,$h,REPLACE, 0, 0); - gimp_blend($bg,FG_BG_HSV,NORMAL_MODE,LINEAR,100,0, - REPEAT_NONE,0,0,0, - $w,0,$w*0.92,0); - gimp_selection_all($img); - - set_fg($black); - - my ($text,$tw,$th,$ta,$td) = text ($img, $string, 1, $font, $active ? $h*0.7 : $h*0.5); - - gimp_layer_translate ($text,($w-$tw)/2,($h-$th+$td)/2); - - my ($shadow) = gimp_layer_copy ($text, 0); - - plug_in_gauss_rle ($text, 1, 1, 1) unless $active; - - gimp_image_add_layer ($img,$shadow,1); - - gimp_shear ($shadow,1,ORIENTATION_HORIZONTAL,-$th); - gimp_layer_scale ($shadow, $tw, $th*0.3, 1); - gimp_layer_translate ($shadow, $th*0.1, $th*0.3); - plug_in_gauss_rle ($shadow, 1, 1, 1); - - gimp_hue_saturation($bg, ALL_HUES, 0, 0, $active ? 10 : -40); - - plug_in_nova ($bg, $h*0.4, $h*0.5, '#f0a020', 5, 50) if $active; - plug_in_nova ($bg, $w-$h*0.4, $h*0.5, '#f0a020', 5, 50) if $active; - - # add an under construction sign - if ($uc) { - set_fg($active ? "#a00000" : "#000000"); - my ($uc,$tw,$th,$ta,$td) = text ($img, "u/c", 1, $font, $h*0.4); - gimp_rotate ($uc,1,0.2); - gimp_layer_translate ($uc,$w*0.84,($h-$th+$td)/2); - } - - index_and_save ($img, "/root/www/src/marc/images/${string}_".($active ? "on" : "off").".gif"); - - gimp_display_new ($img) if $example; - gimp_image_delete($img) unless $example; -} - -# the extension that's called. -sub extension_homepage_logo { - # if in example mode just draw one example logo. - if($example) { - push(@logos,[ "-Projects", 0, 480, 60 ]); -# push(@logos,[ "-Projects", 1, 480, 60 ]); - } else { - for $active (0, 1) { - for $string (qw(Projects -Background -Main)) { - push(@logos,[$string,$active,240,30]); - } - } - for $active (0, 1) { - for $string (qw(PGCC Judge -FreeISDN -Gimp -Destripe -Links -EGCS)) { - push(@logos,[$string,$active,240,20]); - } - } - } - gimp_progress_init ("rendering buttons..."); - $numlogos = $#logos+1; - while($#logos>=0) { - gimp_progress_update (1-($#logos+1)/$numlogos); - my($string,$active,$w,$h)=@{pop(@logos)}; - $uc=$string=~s/^-//; - write_logo($string,$active,$w,$h,$uc); - } -} - -sub query { - gimp_install_procedure("extension_homepage_logo", "a test extension in perl", - "try it out", "Marc Lehmann", "Marc Lehmann", "1997-02-06", - N_"/Xtns/Homepage-Logo", "*", PROC_EXTENSION, - [[PARAM_INT32, "run_mode", "Interactive, [non-interactive]"]], []); -} - -sub net { - extension_homepage_logo; -} - -exit main; - diff --git a/plug-ins/perl/examples/prep4gif.pl b/plug-ins/perl/examples/prep4gif.pl deleted file mode 100755 index bf7e8da8e4..0000000000 --- a/plug-ins/perl/examples/prep4gif.pl +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/perl - -use Gimp qw(:auto N_ __); -use Gimp::Fu; - -# This script requires a Gimp version >= 0.96 (I haven't checked - ymmv) -# small changes by Marc Lehmann - -# prep4gif.pl -# by Seth Burgess -# June 29, 1998 -# -# This perl plug-in prepares a multilayer RGB image for use as a -# transparent gif. To use this prpoerly, you want to have something -# close to the intended background as the bottom layer. If convert -# to indexed is not selected, the bottom two options are unused. -# -# TODO: Write a nicer GUI than Gimp::Fu provides (learn some gtk) -# Anything else that seems useful - -# Gimp::set_trace(TRACE_ALL); - -sub prep { - my ($img, $drawable, $threshold, $growth, $index, $dither, $colors) = @_; - -# Duplicate this image, and work on the duplicate for the rest of the -# procedure. - my $out = gimp_channel_ops_duplicate($img); - -# @layers is the ordered list, from top to bottom, of all layers in the -# duplicated image. To find length of the list, use $#layers - my @layers = gimp_image_get_layers($out); - -# if there's not enough layers, abort. - if ($#layers <= 0) { - gimp_message(__"You need at least 2 layers to perform prep4gif"); - return; - } - -# Show the image early - this makes debugging a breeze - my $newdisplay = gimp_display_new($out); - -# Hide the bottom layer, so it doesn't get into the merge visible later. - - my $bottomlayer = $layers[$#layers]; - gimp_layer_set_visible($bottomlayer, 0); - gimp_layer_add_alpha($bottomlayer); - -# NOTE TO PERL NEWBIES - 'my' variables should be declared in their outermost -# scope - if defined inside the if statement, will disappear to program. - - my $foreground; - - if ($#layers > 1) { - $foreground = gimp_image_merge_visible_layers($out, 0); - } - else { - $foreground = $layers[0]; - }; - - my $layer_mask = gimp_layer_create_mask($foreground,2); - gimp_image_add_layer_mask ($out, $foreground, $layer_mask); - gimp_threshold($layer_mask,$threshold,255); - -# Transfer layer mask to selection, and grow the selection - gimp_selection_layer_alpha($foreground); - gimp_selection_grow($out,$growth); - -# Apply this selection to the background - gimp_layer_set_visible($bottomlayer, 1); - gimp_image_set_active_layer($out, $bottomlayer); - gimp_selection_invert($out); - gimp_edit_cut($bottomlayer); - -# Clean up after yourself - gimp_image_remove_layer_mask($out, $foreground, 1); - my $outlayer = gimp_image_merge_visible_layers($out,0); - -# Convert to indexed - if ($index) { - gimp_convert_indexed($out,1, MAKE_PALETTE, $colors, $dither, 1, ""); - } - -# Show all the changes. - gimp_displays_flush(); - - (); - } - -register - "prep4gif", - "Prep for gif", - "Make the image a small-cut-out of the intended background, so your transparent text doesn't look blocky.", - "Seth Burgess", - "Seth Burgess ", - "2-15-98", - N_"/Filters/Web/Prepare for GIF", - "RGB*", - [ - [PF_INT32, "lower_threshold", "Lower Alpha Threshold", 64], - [PF_INT32, "growth", "How Much growth for safety ",1], - [PF_TOGGLE, "convert_to_indexed", "Convert Image to indexed", 0], - [PF_TOGGLE, "dither", "Floyd-Steinberg Dithering?", 1], - [PF_INT32, "colors", "Colors to quantize to", "255"], - ], - \&prep; - -exit main; - diff --git a/plug-ins/perl/examples/scratches.pl b/plug-ins/perl/examples/scratches.pl deleted file mode 100755 index 80b43a3a15..0000000000 --- a/plug-ins/perl/examples/scratches.pl +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/perl - -use Gimp; -use Gimp::Fu; -use Gimp::Util; - -sub new_scratchlayer { - my($image,$length,$gamma,$angle)=@_; - my $type=$image->layertype(0); - my($layer)=$image->layer_new ($image->width, $image->height, $image->layertype(0), - "displace layer ($angle)", 100, NORMAL_MODE); - $layer->add_layer(-1); - $layer->fill (WHITE_IMAGE_FILL); - $layer->noisify (0, 1, 1, 1, 0); - $layer->mblur (0, $length, $angle); - #$layer->levels (VALUE_LUT, 120, 255, $gamma, 0, 255); - $layer->levels (VALUE_LUT, 120, 255, 0.3, 0, 255); - - $layer; -} - -register "scratches", - "Create a scratch effect", - "Add scratches to an existing image. Works best on a metallic-like background.", - "Marc Lehmann", - "Marc Lehmann ", - "19990223", - N_"/Filters/Distorts/Scratches", - "*", - [ - [PF_SLIDER , "angle_x" , "The horizontal angle" , 30, [ 0, 360]], - [PF_SLIDER , "angle_y" , "The vertical angle" , 70, [ 0, 360]], - [PF_SLIDER , "gamma" , "Scratch map gamma" , 0.3, [0.1, 10, 0.05]], - [PF_SPINNER , "smoothness" , "The scratch smoothness" , 15, [ 0, 400]], - [PF_SPINNER , "length" , "The scratch length" , 10, [ 0, 400]], - #[PF_BOOL, , "bump_map" , "Use bump map instead of displace", 0], - ], - [], - ['gimp-1.1'], - sub { - my($image,$drawable,$anglex,$angley,$gamma,$length,$width)=@_; - - $image->undo_push_group_start; - - my $layer1 = new_scratchlayer ($image, $length, $gamma, $anglex); - my $layer2 = new_scratchlayer ($image, $length, $gamma, $angley); - - $drawable->displace ($width, $width, 1, 1, $layer1, $layer2, WRAP); - - $layer1->remove_layer; - $layer2->remove_layer; - - $image->undo_push_group_end; - - $image; -}; - -exit main; - diff --git a/plug-ins/perl/examples/view3d.pl b/plug-ins/perl/examples/view3d.pl deleted file mode 100644 index 09015cbedb..0000000000 --- a/plug-ins/perl/examples/view3d.pl +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/perl - -use Gimp::Feature qw(pdl); -use PDL; -BEGIN { eval "use PDL::Graphics::TriD"; $@ and Gimp::Feature::missing('PDL TriD (OpenGL) support') } -use Gimp; -use Gimp::Fu; - -register - 'view3d', - 'View grayscale drawable in 3D', - 'This script uses PDL::Graphics:TriD to view a grayscale drawable in 3D. You can choose a Cartesian (default) or Polar projection, toggle the drawing of lines, and toggle normal smoothing.', - 'Tom Rathborne', 'GPLv2', '1999-03-11', - N_"/View/3D Surface", - 'RGB*,GRAY*', [ - [ PF_BOOL, 'polar', 'Radial view', 0], - [ PF_BOOL, 'lines', 'Draw grid lines', 0], - [ PF_BOOL, 'smooth', 'Smooth surface normals', 1] - ], [], -sub { - my ($img, $dwb, $polar, $lines, $smooth) = @_; - - my $w = $dwb->width; - my $h = $dwb->height; - - my $regn = $dwb->pixel_rgn (0, 0, $w, $h, 0, 0); - my $surf = $regn->get_rect (0, 0, $w, $h); - $surf=$surf->slice("(0)"); - - imag3d [ $polar ? 'POLAR2D' : 'SURF2D', $surf ], - { 'Lines' => $lines, 'Smooth' => $smooth }; - - (); -}; - -exit main; - diff --git a/plug-ins/perl/examples/webify.pl b/plug-ins/perl/examples/webify.pl deleted file mode 100755 index 981d97e756..0000000000 --- a/plug-ins/perl/examples/webify.pl +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/perl - -use Gimp; -use Gimp::Fu; - -#Gimp::set_trace(TRACE_ALL); - -register "webify", - "Make an image suitable for the web", - "This plug-in converts the image to indexed, with some extra options", - "Marc Lehmann", - "Marc Lehmann", - "1.0", - N_"/Filters/Web/Webify", - "RGB*, GRAY*", - [ - [PF_BOOL, "new", "create a new image?", 1], - [PF_BOOL, "transparent", "make transparent?", 1], - [PF_COLOUR, "bg_color", "the background colour to use for transparency", "white"], - [PF_SLIDER, "threshold", "the threshold to use for background detection", 3, [0, 255, 1]], - [PF_INT32, "colors", "how many colours to use (0 = don't convert to indexed)", 32], - [PF_BOOL, "autocrop", "autocrop at end?", 1], - ], - sub { - my($img,$drawable,$new,$alpha,$bg,$thresh,$colours,$autocrop)=@_; - - $img = $img->channel_ops_duplicate if $new; - - eval { $img->undo_push_group_start }; - - $drawable = $img->flatten; - - if ($alpha) { - $drawable->add_alpha; - $drawable->by_color_select($bg,$thresh,REPLACE,1,0,0,0); - $drawable->edit_cut if $img->selection_bounds; - } - Plugin->autocrop($drawable) if $autocrop; - $img->convert_indexed (2, 0, $colours, 0, 0, '') if $colours; - - eval { $img->undo_push_group_end }; - - $new ? ($img->clean_all, $img) : (); -}; - -exit main; - diff --git a/plug-ins/perl/examples/windify.pl b/plug-ins/perl/examples/windify.pl deleted file mode 100755 index eb08916774..0000000000 --- a/plug-ins/perl/examples/windify.pl +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/perl - -# sent to me by Seth Burgess -# small changes my Marc Lehmann - -use Gimp; -use Gimp::Fu; - -#Gimp::set_trace(TRACE_CALL); - -sub windify { - my ($img, $drawable, $angle, $density, $distance, $wrap) = @_; - my $oldbg = gimp_palette_get_background(); - my $xsize = gimp_drawable_width($drawable); - my $ysize = gimp_drawable_height($drawable); - - my $out = gimp_image_new($xsize,$ysize,0); - gimp_palette_set_background([128,128,128]); - my $windlayer = gimp_layer_new($out,$xsize,$ysize,RGB_IMAGE,"Windlayer",100,NORMAL_MODE); - gimp_drawable_fill($windlayer, 0); - gimp_image_add_layer($out,$windlayer,0); - my $windlayercopy = gimp_layer_copy($windlayer, 1); - gimp_image_add_layer($out,$windlayercopy,0); - plug_in_noisify(1,$out,$windlayercopy,0,$density/255, - $density/255, - $density/255,1); - - plug_in_mblur(1,$out,$windlayercopy,0,15,$angle); - gimp_layer_set_mode($windlayercopy, 10); # Lighten Only - gimp_image_merge_visible_layers($out,0); - -# many thanks to Dov for this suggestion as a workaround to the -# gimp_image_merge_visible_layers bug - - my $newlay = gimp_image_get_active_layer ($out); - plug_in_displace(1,$img,$drawable,-$distance*cos($angle*180/3.14159), - $distance*sin($angle*180/3.14159), - 1,1, $newlay,$newlay, $wrap); - gimp_image_remove_layer($out,$newlay); - gimp_image_delete ($out); - gimp_palette_set_background($oldbg); - gimp_displays_flush(); - - undef; - } - -register - "windify", - "Add wind to an image", - "Blow your image all over :)", - "Seth Burgess", - "Seth Burgess ", - "1998-09-14", - N_"/Filters/Distorts/Windify", - "*", - [ - [PF_INT32, "angle", "Wind Angle, 0 is left", 120], - [PF_INT32, "density", "How Much Is Blown",80], - [PF_VALUE, "distance", "How Far Its Blown",30], - [PF_TOGGLE, "smear", "Smear on Edges (or Wrap)",0] - ], - \&windify; - -exit main; - diff --git a/plug-ins/perl/examples/xachlego.pl b/plug-ins/perl/examples/xachlego.pl deleted file mode 100755 index 8aa42fb268..0000000000 --- a/plug-ins/perl/examples/xachlego.pl +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/perl -# This is (hopefully) a demonstration of how pathetically easy it is to script -# a neato effect you've come up with. This lil' effect was created by xach, -# and translated by sjburges (me). You can consider it released under the GPL -# or Artistic liscence, whichever makes you happier. -# -# sjburges: 1. pixelize the photo 2. in a new white layer, render a grid -# at the same resolution as the pixelize, then blur it. threshold the -# grid until you get a roundish blob in the center of each square (you -# may need to repeat a few times). -# sjburges: meanwhile, back at the pixelized image, bumpmap it with -# itself and a depth of about 5. do this twice. then bumpmap it with -# the round blobby layer. -# then create a new, clean grid, and bumpmap the pixelized layer with it -# - -# (To get a decent blobby grid) -# render a grid at 10x10, gaussian blur at 7, then set levels to -# 196 1.00 234 - -# Revision - 1.1: added a gimp_displays_flush() for 1.0.x users -# stopped deleting the layers after removal - it was -# causing bad things to happen with refcounts. I hope -# gimp is cleaning up this memory on its own... -# 1.2: Fixed buggy selection handling - oops ;) -# 1.3: Added undo capability by Marc Lehman -# 1.4: Marc Lehman , changed function name -# 1.5: Seth Burgess added my email, put it -# in a directory more suitable than the lame "Misc" -# Here's the boring start of every script... - -use Gimp qw(:auto __ N_); -use Gimp::Fu; - -register "xach_blocks", - "Xach's Blocks o' Fun", - "Turn your picture into something that resembles a certain trademarked - building block creation", - "Seth Burgess", - "Seth Burgess ", - "2-15-98", - N_"/Filters/Map/Xach Blocks", - "*", - [ - [PF_SLIDER, "block_size", "The size of the blocks...", 10, [0, 255, 1]], - [PF_SLIDER, "knob_factor", "The size of your knob...", 67, [0, 100, 5]], - ], - sub { - my($img,$drawable,$blocksize, $knobfactor)=@_; - $selection_flag = 0; - eval { $img->undo_push_group_start }; - if (!$drawable->has_alpha) { - $drawable->add_alpha; - }; - if ($img->selection_is_empty) { - $img->selection_all; - $selection_flag = 1; - } - $oldbackground = gimp_palette_get_background(); -# Now the fun begins :) - - $selection = $img->selection_save; - -#1. Pixelize the photo - $drawable->plug_in_pixelize($blocksize); -# 2. in a new white layer, render a grid -# at the same resolution as the pixelize, then blur it. - $gridlayer = $img->layer_new($img->width, $img->height, RGBA_IMAGE, "Grid 1", 100, 0); - $img->add_layer($gridlayer,0); - $img->selection_all; - gimp_edit_clear($gridlayer); - gimp_palette_set_background([255,255,255]); - gimp_edit_fill($gridlayer); - $gridlayer->plug_in_grid($blocksize, $blocksize, 0, 0); - $gridlayer->plug_in_gauss_iir(0.7*$blocksize, 1, 1); - -# threshold the -# grid until you get a roundish blob in the center of each square (you -# may need to repeat a few times). - - $gridlayer->levels(0, 196, 234, $knobfactor/100.0 , 0, 255); - -# sjburges: meanwhile, back at the pixelized image, bumpmap it with -# itself and a depth of about 5. do this twice. - gimp_selection_load($selection); - $drawable->plug_in_bump_map($drawable, 135, 45, 5, 0, 0, 0, 0, 1, 0, 0); - $drawable->plug_in_bump_map($drawable, 135, 45, 5, 0, 0, 0, 0, 1, 0, 0); - $drawable->plug_in_bump_map($gridlayer, 135, 45, 5, 0, 0, 0, 0, 1, 0, 0); - -# then create a new, clean grid, and bumpmap the pixelized layer with it - $img->selection_all; - $cleangrid = $img->layer_new($img->width, $img->height, - RGBA_IMAGE, "Grid 2", 100, 0); - $img->add_layer($cleangrid,0); - gimp_edit_fill($cleangrid); - $cleangrid->plug_in_grid($blocksize, $blocksize, 0, 0); - gimp_selection_load($selection); - $drawable->plug_in_bump_map($cleangrid, 135, 45, 3, 0, 0, 0, 0, 1, 0, 0); - $img->selection_all; - -# Clean up stuff - - $img->remove_layer($cleangrid); -# $cleangrid->delete; # Deleting these layers after removal seems to cause - # strange problems (I think gimp handles this - # automatically now) - $img->remove_layer($gridlayer); -# $gridlayer->delete; - gimp_selection_load($selection); - gimp_palette_set_background($oldbackground); - if ($selection_flag ==1) { - $img->selection_none; - } - eval { $img->undo_push_group_end }; - return (); -}; - -exit main; - diff --git a/plug-ins/perl/examples/xachshadow.pl b/plug-ins/perl/examples/xachshadow.pl deleted file mode 100755 index 0ec7c462dd..0000000000 --- a/plug-ins/perl/examples/xachshadow.pl +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/perl -# by Seth Burgess - -#[Xach] start off with an image, then pixelize it -#[Xach] then add alpha->add layer mask [20:21] -#[Xach] render a checkerboard into the layer mask -#[Xach] duplicate the image. fill the original with black, then blur the layer -# mask (i used 30% of pixelize size) and offset it by some value (i -# chose 20% of the pixelize size) -#[Xach] duplicate the duplicate, remove the layer mask, move it below everything -#[Xach] then add a new white layer on top, set the mode to multiply, and render -# a grid into it at pixelize size -#[Xach] that's a bit roundabout, but it's also in the xcf -# -# Because the way xach does it is a bit ackward, I'm switching it around a bit -# and working from the bottom up.. - -# Revision 1.1: Marc Lehman added undo capability -# Revision 1.2: Marc Lehman , changed function name -# Revision 1.3: Seth Burgess , changed location and -# added my email address -# -# Here's the boring start of every script... - -use Gimp qw(:auto __ N_); -use Gimp::Fu; - -register "xach_shadows", - "Xach's Shadows o' Fun", - "Screen of 50% of your drawing into a dropshadowed layer.", - "Seth Burgess", - "Seth Burgess ", - "2-15-98", - N_"/Filters/Map/Xach Shadows", - "RGB*, GRAY*", - [ - [PF_SLIDER, "block_size", "The size of the blocks...", 10, [0, 255, 1]], - ], - sub { - my($img,$drawable,$blocksize) =@_; - - eval { $img->undo_push_group_start }; - # $selection_flag = 0; - if (!$drawable->has_alpha) { - $drawable->add_alpha; - }; -# This only can be applied to an entire image right now.. -# $selection = $img->selection_save; - $img->selection_all; - $oldbackground = gimp_palette_get_background(); -# Now the fun begins :) - $drawable->plug_in_pixelize($blocksize); - $shadowlayer = $drawable->layer_copy(0); - $img->add_layer($shadowlayer,0); - $checkmask = $shadowlayer->create_mask(WHITE_MASK); - $img->add_layer_mask($shadowlayer, $checkmask); - plug_in_checkerboard ($img, $checkmask, 0, $blocksize); - - $frontlayer = $shadowlayer->layer_copy(0); - $img->add_layer($frontlayer,0); - gimp_palette_set_background([0,0,0]); - $shadowlayer->fill(BG_IMAGE_FILL); - $checkmask->plug_in_gauss_iir(0.3*$blocksize, 1, 1); - gimp_channel_ops_offset ($checkmask, 1, 0, 0.2*$blocksize, 0.2*$blocksize); - - - $gridlayer = $img->layer_new($img->width, $img->height, RGBA_IMAGE, "Grid 1", 100, 0); - $img->add_layer($gridlayer,0); - $img->selection_all; - gimp_edit_clear($gridlayer); - gimp_palette_set_background([255,255,255]); - gimp_edit_fill($gridlayer); - $gridlayer->plug_in_grid((1, $blocksize, 0, "black", 0) x 3); - - gimp_layer_set_mode($gridlayer, 3); -# Clean up stuff - gimp_palette_set_background($oldbackground); - eval { $img->undo_push_group_end }; - gimp_displays_flush(); - return(); -}; - -exit main; - diff --git a/plug-ins/perl/examples/xachvision.pl b/plug-ins/perl/examples/xachvision.pl deleted file mode 100644 index db94086eb6..0000000000 --- a/plug-ins/perl/examples/xachvision.pl +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/perl - -# Once again, an effect of Xach's -# Created by Seth Burgess - -use Gimp qw(:auto __ N_); -use Gimp::Fu; - -register "xachvision", - "Xach Survielence Camera/XachVision", - "This makes an interlaced-looking machine vision type thing.", - "Seth Burgess", - "Seth Burgess ", - "1999-02-28", - N_"/Filters/Noise/Xach Vision...", - "RGB*, GRAY*", - [ - [PF_COLOR, "color", "What Color to see the world in", [0, 255, 0]], - [PF_SLIDER, "added_noise", "How much noise to add", 25, [0,255,5]] - ], - sub { - my($img,$drawable,$color,$amt) =@_; - - eval { $img->undo_push_group_start }; - $oldbackground = gimp_palette_get_background(); - - $midlayer = $drawable->gimp_layer_copy(1); - $img->add_layer($midlayer, 0); - - $toplayer = $drawable->gimp_layer_copy(0); - $img->add_layer($toplayer, 0); - - gimp_palette_set_background($color); - $toplayer->edit_fill(); - $toplayer->set_mode(COLOR_MODE); - - gimp_palette_set_background([0,0,0]); - $drawable->edit_fill(); - - $amt = $amt/255; - $midlayer->plug_in_noisify(1,$amt, $amt, $amt, $amt); - $midmask = $midlayer->create_mask(0); - $img->add_layer_mask($midlayer, $midmask); - $midmask->plug_in_grid($img->height * 3, 3, 0, 0); - $midmask->plug_in_gauss_iir(1.01, 1, 1); - - gimp_palette_set_background($oldbackground); - eval { $img->undo_push_group_end }; - gimp_displays_flush(); - return(); -}; - -exit main; -