64 lines
2.2 KiB
Perl
Executable File
64 lines
2.2 KiB
Perl
Executable File
#!/usr/app/bin/perl
|
|
|
|
eval 'exec /usr/app/bin/perl -S $0 ${1+"$@"}'
|
|
if 0; # not running under some shell
|
|
# <sjburges@gimp.org>
|
|
# This is adrian's idea - take random blends and difference them. You're
|
|
# bound to come up w/ something cool eventually.
|
|
|
|
use Gimp qw(:auto __ N_);
|
|
use Gimp::Fu;
|
|
use Gimp::Util;
|
|
|
|
# Gimp::set_trace(TRACE_ALL);
|
|
|
|
sub randint {
|
|
my ($int) = @_;
|
|
return int(rand()*$int +0.5);
|
|
}
|
|
|
|
register "random_blends",
|
|
"Random Blends - take a guess.",
|
|
"A random approach to art. Just try it. It might be good.",
|
|
"Seth Burgess",
|
|
"Seth Burgess <sjburges\@gimp.org>",
|
|
"1999-03-18",
|
|
N_"<Image>/Filters/Render/Random Blends...",
|
|
"RGB*, GRAY*",
|
|
[
|
|
[PF_SPINNER, "number", "How many gradients to apply", 7, [1,255,1]],
|
|
],
|
|
[],
|
|
['gimp-1.1'],
|
|
sub {
|
|
my($img,$layer,$numgradients) =@_;
|
|
eval { $img->undo_push_group_start }; # undo is broked for this one.
|
|
# add this to the get_state (after its working?)
|
|
$oldgradient = gimp_gradients_get_active();
|
|
($sel,$x1,$y1,$x2,$y2) = $img->gimp_selection_bounds;
|
|
srand();
|
|
|
|
@gradientlist = gimp_gradients_get_list();
|
|
for ($i=0; $i<=$numgradients; $i++) {
|
|
gimp_gradients_set_active(@gradientlist[randint($#gradientlist)]);
|
|
$layer->gimp_blend(CUSTOM,
|
|
6, # DIFFERENCE
|
|
# I'd really like to alternate how many arguments in gradient type depending
|
|
# on what version of gimp is being run.. Hints anyone? -sjb
|
|
randint(10), # gradient type
|
|
randint(100), # opacity
|
|
0, # offset
|
|
randint(2), # repeat
|
|
0,3,0.2, # disabled supersampling
|
|
randint($x2-$x1)+$x1, # x1
|
|
randint($y2-$y1)+$y1, # y1
|
|
randint($x2-$x1)+$x1, # x2
|
|
randint($y2-$y1)+$y1, # y2
|
|
);
|
|
}
|
|
eval { $img->undo_push_group_end };
|
|
gimp_gradients_set_active($oldgradient);
|
|
return();
|
|
};
|
|
exit main;
|