diff --git a/plug-ins/perl/Changes b/plug-ins/perl/Changes index b7b935dab0..879b31a67d 100644 --- a/plug-ins/perl/Changes +++ b/plug-ins/perl/Changes @@ -1,5 +1,6 @@ Revision history for Gimp-Perl extension. +1.071 Tue Mar 23 13:47:10 CET 1999 - changed the definition of PF_RADIO, simplifying it (it ain't no C). - Gimp::Fu scripts try to run with default arguments if Gtk is not available. @@ -10,6 +11,15 @@ Revision history for Gimp-Perl extension. bangpath. - added font_map. re-added xachshadow.pl, which was mysteriously missing. + - fixed Gimp::Util::set_state. + - improved get/set_state functions. + - added perlotine, randomblends and innerbevel plugins. + - improved t/run.t and server spawn robustness. + - Makefile.PL wrongly required the Gimp.pm in the current directory. + - made the 5.004 + gimp-1.0 combination work by working around another + bug in 5.004. + - fixed reporting of errors at startup time. + - enforcing argument name style. Eat it or die! 1.07 Mon Mar 15 01:27:05 CET 1999 - added examples/yinyang, examples/image_tile, examples/stamps. diff --git a/plug-ins/perl/Gimp.pm b/plug-ins/perl/Gimp.pm index 92be953bdc..f804e2daa6 100644 --- a/plug-ins/perl/Gimp.pm +++ b/plug-ins/perl/Gimp.pm @@ -162,6 +162,7 @@ sub import($;@) { if ($_ eq ":auto") { push(@export,@_consts,@_procs); *{"${up}::AUTOLOAD"} = sub { + croak "cannot autoload '$AUTOLOAD' at this time" unless initialized(); my ($class,$name) = $AUTOLOAD =~ /^(.*)::(.*?)$/; *{$AUTOLOAD} = sub { Gimp->$name(@_) }; goto &$AUTOLOAD; @@ -329,6 +330,7 @@ unless ($no_SIG) { sub call_callback { my $req = shift; my $cb = shift; + return () if $caller eq "Gimp"; if (UNIVERSAL::can($caller,$cb)) { &{"${caller}::$cb"}; } else { @@ -338,7 +340,6 @@ sub call_callback { sub callback { my $type = shift; - return () if $caller eq "Gimp"; if ($type eq "-run") { local $function = shift; local $in_run = 1; @@ -455,8 +456,6 @@ sub AUTOLOAD { wantarray ? @r : $r[0]; }; goto &$AUTOLOAD; - } elsif (defined(*{"${interface_pkg}::$sub"}{CODE})) { - die "safety net $interface_pkg :: $sub (REPORT THIS!!)";#d# } } # for performance reasons: supply a DESTROY method @@ -790,10 +789,9 @@ interface (L), and not as a native plug-in. Here's an example: Gimp::init; - Gimp::end; The optional argument to init has the same format as the GIMP_HOST variable -described in L. +described in L. Calling C is optional. =item Gimp::lock(), Gimp::unlock() diff --git a/plug-ins/perl/Gimp.xs b/plug-ins/perl/Gimp.xs index 684a7c8c5c..9b04d1fb7d 100644 --- a/plug-ins/perl/Gimp.xs +++ b/plug-ins/perl/Gimp.xs @@ -62,6 +62,13 @@ _gimp_prefix() OUTPUT: RETVAL +char * +_gimp_path() + CODE: + RETVAL = GIMP_PATH; + OUTPUT: + RETVAL + BOOT: { HV *stash = gv_stashpvn("Gimp", 4, TRUE); diff --git a/plug-ins/perl/Gimp/Data.pm b/plug-ins/perl/Gimp/Data.pm index 04f2102992..eb773928cc 100644 --- a/plug-ins/perl/Gimp/Data.pm +++ b/plug-ins/perl/Gimp/Data.pm @@ -1,8 +1,7 @@ package Gimp::Data; -use strict; use Carp; -use Gimp qw(); +use Gimp (); sub TIEHASH { my $pkg = shift; diff --git a/plug-ins/perl/Gimp/Feature.pm b/plug-ins/perl/Gimp/Feature.pm index cb43e9ffef..5cd631a083 100644 --- a/plug-ins/perl/Gimp/Feature.pm +++ b/plug-ins/perl/Gimp/Feature.pm @@ -47,21 +47,6 @@ sub import { } } -sub missing { - my ($msg,$function)=@_; - require Gimp; - Gimp::logger(message => "$_[0] is required but not found", function => $function); - Gimp::initialized() ? die "BE QUIET ABOUT THIS DIE\n" : exit Gimp::quiet_main(); -} - -sub need { - my ($feature,$function)=@_; - unless (present($feature)) { - missing($description{$feature},$function); - Gimp::initialized() ? die "BE QUIET ABOUT THIS DIE\n" : exit Gimp::quiet_main(); - } -} - sub describe { $description{$_[0]}; } @@ -111,6 +96,17 @@ sub present { } } +sub missing { + my ($msg,$function)=@_; + require Gimp; + Gimp::logger(message => "$_[0] is required but not found", function => $function); + Gimp::initialized() ? die "BE QUIET ABOUT THIS DIE\n" : exit Gimp::quiet_main(); +} + +sub need { + my ($feature,$function)=@_; + missing($description{$feature},$function) unless present $feature; +} 1; __END__ diff --git a/plug-ins/perl/Gimp/Fu.pm b/plug-ins/perl/Gimp/Fu.pm index 4d62f0aa2c..d23acb53d5 100644 --- a/plug-ins/perl/Gimp/Fu.pm +++ b/plug-ins/perl/Gimp/Fu.pm @@ -1,7 +1,7 @@ package Gimp::Fu; use Carp; -use Gimp qw(); +use Gimp (); use Gimp::Data; require Exporter; @@ -158,6 +158,7 @@ sub help_window(\$$$) { $b = new Gtk::Text; $b->set_editable (0); + $b->set_word_wrap (1); $font = load Gtk::Gdk::Font "9x15bold"; $font = fontset_load Gtk::Gdk::Font "-*-courier-medium-r-normal--*-120-*-*-*-*-*" unless $font; @@ -281,7 +282,7 @@ sub interact($$$$@) { my $setval = sub { $val=$_[0]; unless (defined $val && $fs->set_font_name ($val)) { - warn "illegal default font description: $val" if defined $val; + warn "illegal default font description for $function: $val\n" if defined $val; $val=$def; $fs->set_font_name ($val); } @@ -899,19 +900,20 @@ sub register($$$$$$$$$;@) { @_==0 or die "register called with too many or wrong arguments\n"; for my $p (@$params,@$results) { - int($p->[0]) eq $p->[0] or croak "Argument/return value '$p->[1]' has illegal type '$p->[0]'"; + int($p->[0]) eq $p->[0] or croak "$function: argument/return value '$p->[1]' has illegal type '$p->[0]'"; + $p->[1]=~/^[0-9a-z_]+$/ or carp "$function: argument name '$p->[1]' contains illegal characters, only 0-9, a-z and _ allowed"; } $function="perl_fu_".$function unless $function=~/^(?:perl_fu|extension|plug_in)/ || $function=~s/^\+//; + Gimp::logger message => "function name contains dashes instead of underscores", + function => $function, fatal => 0 + if $function =~ y/-//; + *$function = sub { $run_mode=shift; # global! my(@pre,@defaults,@lastvals,$input_image); - Gimp::logger message => "function name contains dashes instead of underscores", - function => $function, fatal => 0 - if $function =~ y/-//; - if ($menupath=~/^\//) { @_ >= 2 or die " plug-in called without both image and drawable arguments!\n"; @pre = (shift,shift); diff --git a/plug-ins/perl/Gimp/Lib.xs b/plug-ins/perl/Gimp/Lib.xs index cbb65bf3c3..17760daa29 100644 --- a/plug-ins/perl/Gimp/Lib.xs +++ b/plug-ins/perl/Gimp/Lib.xs @@ -611,7 +611,7 @@ push_gimp_sv (GParam *arg, int array_as_ref) case PARAM_STATUS: sv = newSViv(arg->data.d_status ); break; case PARAM_STRING: sv = arg->data.d_string ? neuSVpv(arg->data.d_string) - : &PL_sv_undef; + : newSVsv (&PL_sv_undef); break; case PARAM_COLOR: @@ -810,6 +810,32 @@ destroy_paramdefs (GParamDef *arg, int count) } #endif +#ifdef GIMP_HAVE_PROCEDURAL_DB_GET_DATA_SIZE +#define get_data_size gimp_get_data_size +#else +guint32 +get_data_size (gchar *id) +{ + GParam *return_vals; + int nreturn_vals; + int length; + + return_vals = gimp_run_procedure ("gimp_procedural_db_get_data", + &nreturn_vals, + PARAM_STRING, id, + PARAM_END); + + if (return_vals[0].data.d_status == STATUS_SUCCESS) + length = return_vals[1].data.d_int32; + else + length = 0; + + gimp_destroy_params (return_vals, nreturn_vals); + + return length; +} +#endif + static void simple_perl_call (char *function, char *arg1) { char *argv[2]; @@ -1363,20 +1389,7 @@ gimp_set_data(id, data) dta = SvPV (data, dlen); - /* do not remove this comment */ -#ifdef GIMP_HAVE_PROCEDURAL_DB_GET_DATA_SIZE gimp_set_data (SvPV (id, dc), dta, dlen); -#else - { - char str[MAX_STRING]; /* hack */ - SvUPGRADE (id, SVt_PV); - len = SvCUR (id); - Copy (SvPV (id, dc), str, len, char); - str[len+1] = 0; - str[len] = 'S'; gimp_set_data (str, &dlen, sizeof (STRLEN)); - str[len] = 'C'; gimp_set_data (str, dta, dlen); - } -#endif } void @@ -1389,35 +1402,12 @@ gimp_get_data(id) STRLEN len; STRLEN dc; - /* do not remove this comment */ -#ifdef GIMP_HAVE_PROCEDURAL_DB_GET_DATA_SIZE - dlen = gimp_get_data_size (SvPV (id, dc)); + dlen = get_data_size (SvPV (id, dc)); /* I count on dlen being zero if "id" doesn't exist. */ data = newSVpv ("", 0); gimp_get_data (SvPV (id, dc), SvGROW (data, dlen+1)); SvCUR_set (data, dlen); *((char *)SvPV (data, dc) + dlen) = 0; -#else - { - char str[MAX_STRING]; /* hack */ - SvUPGRADE (id, SVt_PV); - len = SvCUR (id); - Copy (SvPV (id, dc), str, len, char); - - str[len+1] = 0; - dlen = (STRLEN) -1; - str[len] = 'S'; gimp_get_data (str, &dlen); - - data = newSVpv ("", 0); - if (dlen != (STRLEN)-1) - { - str[len] = 'C'; gimp_get_data (str, SvGROW (data, dlen+1)); - SvCUR_set (data, dlen); - *((char *)SvPV (data, dc) + dlen) = 0; - } - - } -#endif XPUSHs (sv_2mortal (data)); } diff --git a/plug-ins/perl/Gimp/Net.pm b/plug-ins/perl/Gimp/Net.pm index f3e108f8ac..bbf302763c 100644 --- a/plug-ins/perl/Gimp/Net.pm +++ b/plug-ins/perl/Gimp/Net.pm @@ -140,26 +140,31 @@ sub set_trace { sub start_server { print "trying to start gimp\n" if $Gimp::verbose; $server_fh=local *FH; - socketpair $server_fh,GIMP_FH,PF_UNIX,SOCK_STREAM,AF_UNIX + my $gimp_fh=local *FH; + socketpair $server_fh,$gimp_fh,PF_UNIX,SOCK_STREAM,AF_UNIX or croak "unable to create socketpair for gimp communications: $!"; $gimp_pid = fork; if ($gimp_pid > 0) { Gimp::ignore_functions(@Gimp::gimp_gui_functions); + close $gimp_fh; return $server_fh; } elsif ($gimp_pid == 0) { close $server_fh; delete $ENV{GIMP_HOST}; unless ($Gimp::verbose) { + open STDIN,"/dev/null"; open STDERR,">&1"; - close STDIN; } my $args = &Gimp::RUN_NONINTERACTIVE." ". (&Gimp::_PS_FLAG_BATCH | &Gimp::_PS_FLAG_QUIET)." ". - fileno(GIMP_FH); + fileno($gimp_fh); { # block to suppress warning with broken perls (e.g. 5.004) - exec "gimp","-n","-b","(extension-perl-server $args)", - "(extension_perl_server $args)" + exec &Gimp::_gimp_path, + "-n","-b","(extension-perl-server $args)", + "(extension_perl_server $args)", + "(gimp_quit 0)", + "(gimp-quit 0)"; } exit(255); } else { diff --git a/plug-ins/perl/Gimp/UI.pm b/plug-ins/perl/Gimp/UI.pm index c9492110b7..aa5985df9e 100644 --- a/plug-ins/perl/Gimp/UI.pm +++ b/plug-ins/perl/Gimp/UI.pm @@ -1,7 +1,7 @@ package Gimp::UI; use Carp; -use Gimp qw(); +use Gimp (); use Gtk; $gtk_10 = Gtk->major_version==1 && Gtk->minor_version==0; diff --git a/plug-ins/perl/Gimp/Util.pm b/plug-ins/perl/Gimp/Util.pm index 8639099c34..bc274da01c 100644 --- a/plug-ins/perl/Gimp/Util.pm +++ b/plug-ins/perl/Gimp/Util.pm @@ -23,12 +23,15 @@ you end up with them and the user cannot see them or delete them. So we always attach our created layers to an image here, too avoid memory leaks and debugging times. -These functions try to preserve the current settings like colors. +These functions try to preserve the current settings like colors, but not +all do. Also: these functions are handled in exactly the same way as PDB-Functions, i.e. the (hypothetical) function C can be called as $image->xyzzy, if the module is available. +The need to explicitly C will go away in the future. + =head1 FUNCTIONS =over 4 @@ -55,20 +58,31 @@ use Gimp; =item C, C -C returns a scalar representing most of gimps global state (at the -moment foreground colour and background colour). The state can later be -restored by a call to C. This is ideal for library functions such -as the ones used here, at least when it includes more state in the future. +C returns a scalar representing most of gimps global state +(at the moment foreground colour, background colour, active gradient, +pattern and brush). The state can later be restored by a call to +C. This is ideal for library functions such as the ones used +here, at least when it includes more state in the future. =cut sub get_state() { - [Palette->get_foreground,Palette->get_background]; + [ + Palette->get_foreground, + Palette->get_background, + Gradients->get_active, + scalar Patterns->get_pattern, + scalar Brushes->get_brush, + ] } sub set_state($) { - Palette->set_foreground($_->[0]); - Palette->set_background($_->[1]); + my $s = shift; + Palette->set_foreground($s->[0]); + Palette->set_background($s->[1]); + Gradients->set_active($s->[2]); + Patterns->set_pattern($s->[3]); + Brushes->set_brush($s->[4]); } ############################################################################## diff --git a/plug-ins/perl/MANIFEST b/plug-ins/perl/MANIFEST index 36a5f7de8e..1f0ebb5d90 100644 --- a/plug-ins/perl/MANIFEST +++ b/plug-ins/perl/MANIFEST @@ -72,3 +72,7 @@ examples/yinyang examples/image_tile examples/stamps examples/font_table +examples/perlotine +examples/randomblends +examples/innerbevel + diff --git a/plug-ins/perl/Makefile.PL b/plug-ins/perl/Makefile.PL index 98e8638f3a..a4cfb636d3 100644 --- a/plug-ins/perl/Makefile.PL +++ b/plug-ins/perl/Makefile.PL @@ -10,6 +10,7 @@ $|=1; border.pl view3d.pl feedback.pl xachlego.pl xachshadow.pl parasite-editor scratches.pl blowinout.pl terral_text xachvision.pl gimpmagick perlcc sethspin.pl animate_cells image_tile yinyang stamps font_table + perlotine randomblends innerbevel ); @shebang = (map("examples/$_",@examples), qw(Perl-Server examples/example-net.pl examples/homepage-logo.pl @@ -24,7 +25,7 @@ if ($ARGV[0] ne "--writemakefile") { do './config.pl'; if(defined $EXTENSIVE_TESTS) { print "\nFetched some defaults from an earlier Makefile.PL run.\n"; - print "Run \"make clean\" if you don't want this\n"; + print "Run \"make realclean\" if you don't want this\n"; } else { print " This module usually does only a very short installation check. @@ -35,7 +36,7 @@ gimp-1.1 ;) If you decide to run these tests (please!), I'd be glad to hear success stories (and of course any bug-reports ;) -Do you want me to make these tests [y]? "; +Do you want me to run these tests [y]? "; print "y\n"; $EXTENSIVE_TESTS = 1; @@ -59,6 +60,45 @@ Do you want me to make these tests [y]? "; require ExtUtils::MakeMaker; import ExtUtils::MakeMaker; +@INC = grep /^\//,@INC; +eval { $Gimp::no_SIG=1; require Gimp }; +unless($@) { + $old_prefix = eval { Gimp::_gimp_prefix() }; + if ($@) { + print <install_procedure("extension_perl_server", "Start the Gimp-Perl Server", - "This is the server for plug-ins written using the Gimp::Net module", - "Marc Lehmann ", "Marc Lehmann", "1998-07-22", - "/Xtns/Perl Server", "*",&Gimp::PROC_EXTENSION, - [ - [&Gimp::PARAM_INT32, "run_mode", "Interactive, [non-interactive]"], - [&Gimp::PARAM_INT32, "flags", "internal flags (must be 0)"], - [&Gimp::PARAM_INT32, "extra", "multi-purpose ;)"], - ],[]); + Gimp->install_procedure("extension_perl_server", "Start the Gimp-Perl Server", + "This is the server for plug-ins written using the Gimp::Net module", + "Marc Lehmann ", "Marc Lehmann", "1998-07-22", + "/Xtns/Perl Server", "*",&Gimp::PROC_EXTENSION, + [ + [&Gimp::PARAM_INT32, "run_mode", "Interactive, [non-interactive]"], + [&Gimp::PARAM_INT32, "flags", "internal flags (must be 0)"], + [&Gimp::PARAM_INT32, "extra", "multi-purpose ;)"], + ],[]); } sub quit { diff --git a/plug-ins/perl/etc/config.pl.in b/plug-ins/perl/etc/config.pl.in index 6a8ef1b008..7b23762351 100644 --- a/plug-ins/perl/etc/config.pl.in +++ b/plug-ins/perl/etc/config.pl.in @@ -7,11 +7,17 @@ $LDFLAGS = q[@LDFLAGS@]; $prefix = q[@prefix@]; $exec_prefix = q[@exec_prefix@]; $libdir = q[@libdir@]; +$bindir = q[@bindir@]; + +$exec_prefix=~s/\${?prefix}?/$prefix/g; +$libdir=~s/\${?exec_prefix}?/$exec_prefix/g; +$bindir=~s/\${?exec_prefix}?/$exec_prefix/g; $IN_GIMP = q[@IN_GIMP@]; $PERL = q[@PERL@]; -$GIMP = q[@GIMP@]; +$GIMP = $IN_GIMP ? q[@GIMP@] : "$bindir/gimp"; + $GIMPTOOL = q[@GIMPTOOL@]; $GIMP_INC = q[@GIMP_CFLAGS@]; $GIMP_INC_NOUI = q[@GIMP_CFLAGS_NOUI@]; @@ -34,4 +40,4 @@ if ($IN_GIMP) { chomp $GIMP_PREFIX; } -$DEFS = ' -DGIMP_PREFIX=\"'.$GIMP_PREFIX.'\"'; +$DEFS = ' -DGIMP_PREFIX=\"'.$GIMP_PREFIX.'\" -DGIMP_PATH=\"'.$GIMP.'\"'; diff --git a/plug-ins/perl/etc/configure b/plug-ins/perl/etc/configure index 3ecdca044f..60257c203f 100755 --- a/plug-ins/perl/etc/configure +++ b/plug-ins/perl/etc/configure @@ -574,25 +574,31 @@ do set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:577: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_GIMP'+set}'`\" = set"; then +if eval "test \"`echo '$''{'ac_cv_path_GIMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$GIMP"; then - ac_cv_prog_GIMP="$GIMP" # Let the user override the test. -else + case "$GIMP" in + /*) + ac_cv_path_GIMP="$GIMP" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_GIMP="$GIMP" # Let the user override the test with a dos path. + ;; + *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" - for ac_dir in $ac_dummy; do + for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_GIMP="$ac_prog" + ac_cv_path_GIMP="$ac_dir/$ac_word" break fi done IFS="$ac_save_ifs" + ;; +esac fi -fi -GIMP="$ac_cv_prog_GIMP" +GIMP="$ac_cv_path_GIMP" if test -n "$GIMP"; then echo "$ac_t""$GIMP" 1>&6 else @@ -601,7 +607,6 @@ fi test -n "$GIMP" && break done -test -n "$GIMP" || GIMP="gimp" # Check whether --with-gimp-prefix or --without-gimp-prefix was given. @@ -645,7 +650,7 @@ fi # Extract the first word of "gimptool", so it can be a program name with args. set dummy gimptool; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:649: checking for $ac_word" >&5 +echo "configure:654: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GIMPTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -680,7 +685,7 @@ fi min_gimp_version=1.0.2 echo $ac_n "checking for GIMP - version >= $min_gimp_version""... $ac_c" 1>&6 -echo "configure:684: checking for GIMP - version >= $min_gimp_version" >&5 +echo "configure:689: checking for GIMP - version >= $min_gimp_version" >&5 no_gimp="" if test "$GIMPTOOL" = "no" ; then no_gimp=yes @@ -713,7 +718,7 @@ echo "configure:684: checking for GIMP - version >= $min_gimp_version" >&5 echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -762,7 +767,7 @@ int main () EOF -if { (eval echo configure:766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -796,7 +801,7 @@ fi CFLAGS="$CFLAGS $GIMP_CFLAGS" LIBS="$LIBS $GIMP_LIBS" cat > conftest.$ac_ext < @@ -806,7 +811,7 @@ int main() { return 0; ; return 0; } EOF -if { (eval echo configure:810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GIMP or finding the wrong" @@ -847,7 +852,7 @@ rm -f conftest* ac_gimp_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $GIMP_CFLAGS" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:851: checking how to run the C preprocessor" >&5 +echo "configure:856: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -862,13 +867,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:872: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -879,13 +884,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:894: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -896,13 +901,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:911: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -927,7 +932,7 @@ fi echo "$ac_t""$CPP" 1>&6 cat > conftest.$ac_ext < EOF @@ -947,17 +952,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:951: checking for $ac_hdr" >&5 +echo "configure:956: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:966: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -983,73 +988,18 @@ else fi done -for ac_func in _exit -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:990: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - CONFIG_H="config.h" for ac_func in vsnprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1048: checking for $ac_func" >&5 +echo "configure:998: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1128,12 +1078,12 @@ fi for ac_func in _exit do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1132: checking for $ac_func" >&5 +echo "configure:1082: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1543,3 +1493,4 @@ test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 echo "now invoking perl to complete the configuration..." exec $PERL $MAKEFILE_PL --writemakefile PREFIX="$prefix" + diff --git a/plug-ins/perl/etc/configure.in b/plug-ins/perl/etc/configure.in index 0b6b6d8520..d1b61182b0 100644 --- a/plug-ins/perl/etc/configure.in +++ b/plug-ins/perl/etc/configure.in @@ -16,7 +16,7 @@ AC_ARG_WITH(includes,[ --with-includes=DIR Additionally search for includes AC_ARG_WITH(libs, [ --with-libs=DIR Additionally search for libraries in dir in DIR (optional)], LIBS="$LIBS -L$with_libs") -AC_CHECK_PROGS(GIMP,gimp,gimp) +AC_PATH_PROGS(GIMP,gimp) AM_PATH_GIMP(1.0.2,, AC_MSG_ERROR( ** unable to find gimp, make sure it's in your path (version 1.0.2+ required!) @@ -29,7 +29,6 @@ AC_EGREP_CPP(DIVIDE_MODE,[#include ],AC_DEFINE(HAVE_DIVIDE_MODE) CPPFLAGS="$ac_gimp_save_CPPFLAGS" AC_CHECK_HEADERS(unistd.h) -AC_CHECK_FUNCS(_exit) CONFIG_H="config.h" diff --git a/plug-ins/perl/examples/alpha2color.pl b/plug-ins/perl/examples/alpha2color.pl index bc2ee7cca9..c4d9f3315f 100755 --- a/plug-ins/perl/examples/alpha2color.pl +++ b/plug-ins/perl/examples/alpha2color.pl @@ -106,7 +106,7 @@ register "/Image/Colors/Alpha2Color", "RGBA", [ - [PF_COLOR, "Color", "Color for current alpha", [127,127,127]] + [PF_COLOR, "color", "Color for current alpha", [127,127,127]] ], \&alpha2col; diff --git a/plug-ins/perl/examples/animate_cells b/plug-ins/perl/examples/animate_cells index 404123e096..ce512bab1e 100755 --- a/plug-ins/perl/examples/animate_cells +++ b/plug-ins/perl/examples/animate_cells @@ -85,7 +85,7 @@ register "/Filters/Animation/Animate Cells", "*", [ - [PF_TOGGLE, "Work on a copy?", "", 1] + [PF_TOGGLE, "work_on_copy", "", 1] ], \&perl_fu_animate_cells; diff --git a/plug-ins/perl/examples/font_table b/plug-ins/perl/examples/font_table index d1fc4c9508..be5807dfbd 100755 --- a/plug-ins/perl/examples/font_table +++ b/plug-ins/perl/examples/font_table @@ -179,17 +179,17 @@ register "/Xtns/Render/Font Table", "*", [ - [PF_STRING, "Foundery (perl regex or \"*\")", "Foundery", "*"], - [PF_STRING, "Family (perl regex or \"*\")", "Family", "*"], - [PF_STRING, "Weight (perl regex or \"*\")", "Weight", "*"], - [PF_STRING, "Slant (perl regex or \"*\")", "Slant", "*"], - [PF_INT32, "Point Size", "Size", 18], - [PF_COLOR, "Text Color", "FG", 'black'], - [PF_COLOR, "Background Color", "BG", 'white'], - [PF_FONT, "Label Font", "Font", '-*-courier-medium-r-normal--18-*-*-*-*-*-*-*'], - [PF_STRING, "Test String", "String", 'FOUR (4) SCORE and seven (7) years @%$*&'], - [PF_INT32, "Text Padding", "Padding", 10], - [PF_INT32, "Maximum page height", "Height", 1000] + [PF_STRING, "foundery", "Foundery (perl regex or \"*\")", "*"], + [PF_STRING, "family", "Family (perl regex or \"*\")", "*"], + [PF_STRING, "weight", "Weight (perl regex or \"*\")", "*"], + [PF_STRING, "slant", "Slant (perl regex or \"*\")", "*"], + [PF_INT32, "point_size", "Point Size", 18], + [PF_COLOR, "text_color", "Text Color", 'black'], + [PF_COLOR, "bg_color", "Background Color", 'white'], + [PF_FONT, "label_font", "Label Font", '-*-courier-medium-r-normal--18-*-*-*-*-*-*-*'], + [PF_STRING, "test_string", "Test String", 'FOUR (4) SCORE and seven (7) years @%$*&'], + [PF_INT32, "padding", "Text Padding", 10], + [PF_INT32, "height", "Maximum page height", 1000] ], \&font_table; diff --git a/plug-ins/perl/examples/image_tile b/plug-ins/perl/examples/image_tile index c7b015f413..6f42114245 100755 --- a/plug-ins/perl/examples/image_tile +++ b/plug-ins/perl/examples/image_tile @@ -442,13 +442,13 @@ register # Image and drawable are given for free... # [PF_IMAGE, "Input image", undef], # [PF_DRAWABLE, "Input drawable", undef], - [PF_INT32, "Number of tiles (X)", "X tiles", 10], - [PF_INT32, "Number of tiles (Y)", "Y tiles", 10], - [PF_INT32, "Number of sample cells per tile (X)", "X cells", 4], - [PF_INT32, "Number of sample cells per tile (Y)", "Y cells", 4], - [PF_INT32, "Duplicates (0[lots] - 100[none])", "Duplicates", 5], - [PF_STRING, "Sub-image directories (space speparated)", "Directories"], - [PF_TOGGLE, "Delete cached image samples?", "", 0] + [PF_INT32, "tiles_x", "Number of tiles (X)", 10], + [PF_INT32, "tiles_y", "Number of tiles (Y)", 10], + [PF_INT32, "samples_x", "Number of sample cells per tile (X)", 4], + [PF_INT32, "samples_y", "Number of sample cells per tile (Y)", 4], + [PF_INT32, "duplicates", "Duplicates (0[lots] - 100[none])", 5], + [PF_STRING, "image_dirs", "Sub-image directories (space speparated)"], + [PF_TOGGLE, "delete_cached", "Delete cached image samples?", 0] ], \&perl_fu_image_tile; diff --git a/plug-ins/perl/examples/innerbevel b/plug-ins/perl/examples/innerbevel new file mode 100755 index 0000000000..0c7217013e --- /dev/null +++ b/plug-ins/perl/examples/innerbevel @@ -0,0 +1,95 @@ +#!/usr/bin/perl +# Effect taken from http://tigert.gimp.org/gimp/tutorials/beveled_text/ +# perl-ified by Seth Burgess + +# Programatically, this script is about as dull as they come. The only +# exceptions are those of the neat util functions (that aren't all quite +# working btw). You can follow step by step with the website at +# http://tigert.gimp.org/gimp/tutorials/beveled_text/ + +use Gimp; +use Gimp::Fu; +use Gimp::Util; + +$defaultcolor1 = [124,10,18]; +$defaultcolor2 = [200,19,27]; + +$path = "/Xtns/Render/Logos/Inner Bevel"; +$shortdesc = "Perform an inner bevel on text"; +$longdesc = "This uses tigert's inner bevel method on text, which can be found with his other excellent tutorials at http://tigert.gimp.org/"; +$date = "1999-03-23"; +$imgtypes = "*"; +$author = "Seth Burgess "; + +$path =~ m,/([^/]+)$,; +$regname = $1; +$regname =~ s/ /_/g; +$regname =~ tr/A-Z/a-z/; + +$author =~ m/^(.*) 0, Spherical => 1, Sinusoidal => 2] ], + ], sub { + +my ($font, $text, $color1, $color2, $azimuth, $elevation, $depth, $maptype) = @_; +# -- step 1 -- +$oldst = get_state(); + +gimp_palette_set_background($color1); +gimp_palette_set_foreground($color2); + +@dims = gimp_text_wh($text, $font); + +$img = gimp_image_new($dims[0]+10, $dims[1]+10, RGB); + +# none of the macro's did quite what I was looking for here. +# i.e. create a text layer on transparent only... + +# -- step 2 -- +$layertmp = $img->add_new_layer(0,TRANS_IMAGE_FILL); +$txtlayer = $img->text_fontname(-1, 10, 10, $text, 0, 1, xlfd_size($font), $font); +$dsp = gimp_display_new($img); # display the image early +$layer = $img->merge_visible_layers(EXPAND_AS_NECESSARY); +@pt1 = ($layer->width * 0.5 -1, 0); +@pt2 = ($layer->width * 0.5 +1, $layer->height); +# -- step 3 -- +$layer->set_preserve_trans(1); +$layer->blend(FG_BG_RGB, 0, LINEAR, 100, 0, REPEAT_NONE, 0, 3, 0.20, @pt1, @pt2); # NORMAL isn't recognized +# -- step 4 -- +$layer2 = $layer->copy(0); # Can you override these to have a default? (would be nice) +$img->add_layer($layer2, 0); +# -- step 5 -- +$layer2->set_preserve_trans(1); +$img->selection_all; +gimp_palette_set_background([255,255,255]); +$layer2->edit_fill; +# -- step 6 -- +$layer2->set_preserve_trans(0); +$layer2->gauss_rle(6,1,1); # Defaults would be cool here too :) +# -- step 7 -- +$layer->plug_in_bump_map($layer2, $azimuth, $elevation, $depth, 0,0,0,0,1,0,$maptype); +# -- step 8 -- +$layer2->invert; +$img->lower_layer($layer2); +# -- step 9 -- +$layer2->translate(2, 3); + +# extra stuff +$img->add_new_layer(2); +$img->gimp_selection_none(); + +set_state($oldst); # Doesn't seem to work - says it can't grok color +return(); +}; + +exit main; # <-- This lil' bugger caused me much grief. I suppose its very much required? diff --git a/plug-ins/perl/examples/perlotine b/plug-ins/perl/examples/perlotine new file mode 100755 index 0000000000..b9aff12e6f --- /dev/null +++ b/plug-ins/perl/examples/perlotine @@ -0,0 +1,166 @@ +#!/usr/bin/perl +# +# This is tigert's request. I suppose it'll be useful to those that do +# this sort of thing. Personally I'll probably only run it to test and +# put up a demo image. + +use Gimp; +use Gimp::Fu; +use Gimp::Util; + +# Gimp::set_trace(TRACE_ALL); + +sub get_vguides { # get back an ordered set of vertical guides + my ($img)=@_; + $i=0; + my @vguides; + while ($i=$img->findnext_guide($i)) { + if (!$img->get_guide_orientation($i)){ + $keyval = sprintf("%4d", $img->get_guide_position($i)); + $vkeys{$keyval} = $i; + } + } + foreach $key(sort (keys %vkeys)) { + # print "Unshifting ", $key, "\n"; + push @vguides, $vkeys{$key}; + } + return @vguides; + } + +sub get_hguides { # get back an ordered set of horizontal guides + my ($img)=@_; + $i=0; + my @hguides; + while ($i=$img->findnext_guide($i)) { + if ($img->get_guide_orientation($i)){ + $keyval = sprintf("%4d", $img->get_guide_position($i)); + $hkeys{$keyval} = $i; + } + } + # need to sort them in order of their occurance in the image + foreach $key(sort keys %hkeys) { + push @hguides, $hkeys{$key}; + } + return @hguides; + } + +sub dosel { # do the selection + ($img, $savepath, $imgpath, $imgbasename, $l,$r,$t,$b, $i,$j) = @_; + $filename =~ m/^(.*)\.[^\.]*$/ ; + $imgname = "$imgbasename-$i-$j.gif"; + $tmpimg = $img->channel_ops_duplicate; + # print "Cropping from $l to $r, $t to $b\n"; + $tmpimg->crop($r-$l, $b-$t, $l, $t); + $tmplay = $tmpimg->active_drawable; + if (! $tmplay->indexed) { + $tmpimg->convert_indexed(1,256); + } + $tmpimg->gimp_file_save(-1,"$savepath$imgpath$imgname","$savepath$imgpath$imgname"); + $tmpimg->delete; + return "$imgpath$imgname"; # what I want printed in html + } + +sub html_table_start { + ($fn,$cellpadding,$cellspacing,$border,$capatalize) = @_; + $str = $capatalize ? "\n" : + "
\n" ; + print $fn $str; + } + +sub html_table_row_start { + ($fn, $capatalize) = @_; + $str = $capatalize ? "\t\n" : "\t\n"; + print $fn $str; + } + +sub html_table_entry { + ($fn, $imgname, $width, $height, $capatalize) = @_; + $str = $capatalize ? "\t\t\n" : + "\t\t\n"; + print $fn $str; + } + +sub html_table_row_end { + ($fn, $capatalize) = @_; + $str = $capatalize ? "\t\n" : "\t\n"; + print $fn $str; + } + +sub html_table_end { + ($fn, $capatalize) = @_; + $str = $capatalize ? "
\n":"\n"; + print $fn $str; + } + +# Save-path: [_____________________][browse] +# html-file name: [_________________] +# image-basename [__________________] +# [x] use separate dir for images +# image directory: [___________________] + +# later, decided to have UPPER/lower case HTML toggle +# cellspacing: ___^ + +register "perlotine", + "Guilotine implemented ala perl, with html output", + "Add guides to an image. Then run this. It will cut along the guides, and give you the html to reassemble the resulting images.", + "Seth Burgess", + "Seth Burgess ", + "1999-03-19", + "/Image/Transforms/Perl-o-tine", + "*", + [ + [PF_STRING, "save_path", "The path to export the HTML to",$ENV{HOME}], + [PF_STRING, "html_file_name", "Filename to export","perlotine.html"], + [PF_STRING, "image_basename", "What to call the images","perlotine"], + [PF_TOGGLE, "separate_image_dir", "Use a separate directory for images?",0], + [PF_STRING, "relative_image_path", "The path to export the images to, relative to the Save Path", "images/"], + [PF_TOGGLE, "capitalize_tags", "Capatalize HTML tags?", 0], + [PF_SPINNER, "cellspacing", "Add space between the table elements", 0, [0,15,1]], + ], sub { + + my($img,$layer,$savepath, $htmlname, $imgbasename, $separate, $imgpath, $capatalize, $cellspacing) =@_; + + @vert = get_vguides($img); + @horz = get_hguides($img); + + if (!(scalar(@vert) || scalar(@horz))) { + die ("No horizontal or vertical guides found. Aborted."); + } + # print @vert, " LEN = ", scalar(@vert), "\n"; + # print @horz, " LEN = ", scalar(@horz), "\n"; + # foreach $guide (@vert) { + # print $img->get_guide_position($guide), "\n"; + # } + + + if (!($savepath=~ m,/$,)) { # add a trailing slash if its not on there + $savepath = $savepath . "/"; + } + + if (!($imgpath=~ m,/$,)) { # add a trailing slash if its not on there + $imgpath= $imgpath . "/"; + } + if (!$separate) { $imgpath = ""; } + + open FILE, ">$savepath$htmlname" or die "Couldn't open $savepath$filename: $!\n"; + + $top=0; + html_table_start(\*FILE,0,$cellspacing,0,$capatalize); + for ($i=0; $i<=scalar(@horz); $i++) { + $bot = ($i>$#horz) ? $img->height : $img->get_guide_position($horz[$i]); + html_table_row_start(\*FILE, $capatalize); + $left=0; + for ($j=0; $j<=scalar(@vert); $j++) { + $right = ($j>$#vert) ? $img->width : $img->get_guide_position($vert[$j]); + $imgname = dosel($img, $savepath, $imgpath, $imgbasename, $left, $right, $top, $bot, $i, $j); + html_table_entry(\*FILE, $imgname, $right-$left, $bot-$top, $capatalize); + $left = $right + $cellspacing; + } + html_table_row_end(\*FILE, $capatalize); + $top = $bot + $cellspacing; + } + html_table_end(\*FILE, $capatalize); + return(); +}; +exit main; diff --git a/plug-ins/perl/examples/prep4gif.pl b/plug-ins/perl/examples/prep4gif.pl index b4af7da0a9..87ed979de0 100755 --- a/plug-ins/perl/examples/prep4gif.pl +++ b/plug-ins/perl/examples/prep4gif.pl @@ -98,11 +98,11 @@ register "/Filters/Misc/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"], + [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; diff --git a/plug-ins/perl/examples/randomblends b/plug-ins/perl/examples/randomblends new file mode 100755 index 0000000000..9e61dc3c45 --- /dev/null +++ b/plug-ins/perl/examples/randomblends @@ -0,0 +1,57 @@ +#!/usr/bin/perl +# +# This is adrian's idea - take random blends and difference them. You're +# bound to come up w/ something cool eventually. + +use Gimp; +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 ", + "1999-03-18", + "/Filters/Render/Random Blends", + "RGB*, GRAY*", + [ + [PF_SPINNER, "number", "How many gradients to apply", 7, [1,255,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; diff --git a/plug-ins/perl/examples/sethspin.pl b/plug-ins/perl/examples/sethspin.pl index 2e6802d5eb..2229825b49 100755 --- a/plug-ins/perl/examples/sethspin.pl +++ b/plug-ins/perl/examples/sethspin.pl @@ -85,13 +85,13 @@ register "seth_spin", "/Xtns/Animation/Seth Spin", "*", [ - [PF_DRAWABLE, "Source", "What drawable to spin from?"], - [PF_DRAWABLE, "Destination","What drawable to spin to?"], - [PF_INT8, "Frames", "How many frames to use?", 16], - [PF_COLOR, "Background", "What color to use for background if not transparent", [0,0,0]], - [PF_SLIDER, "Perspective", "How much perspective effect to get", 40, [0,255,5]], - [PF_TOGGLE, "Spin Back", "Also spin back?" , 1], - [PF_TOGGLE, "Convert Indexed", "Convert to indexed?", 1], + [PF_DRAWABLE, "source", "What drawable to spin from?"], + [PF_DRAWABLE, "destination","What drawable to spin to?"], + [PF_INT8, "frames", "How many frames to use?", 16], + [PF_COLOR, "background", "What color to use for background if not transparent", [0,0,0]], + [PF_SLIDER, "perspective", "How much perspective effect to get", 40, [0,255,5]], + [PF_TOGGLE, "spin_back", "Also spin back?" , 1], + [PF_TOGGLE, "convert_indexed", "Convert to indexed?", 1], ], [], ['gimp-1.1'], diff --git a/plug-ins/perl/examples/stamps b/plug-ins/perl/examples/stamps index 68269efb81..7988df0584 100755 --- a/plug-ins/perl/examples/stamps +++ b/plug-ins/perl/examples/stamps @@ -8,7 +8,6 @@ sub stamps { gimp_palette_set_background($fgcolor); $img = gimp_image_new($size, $size, RGB); - $img = gimp_image_new($size, $size, RGB); $layer = gimp_layer_new($img, $size, $size, RGB, "Layer 1", 100, NORMAL_MODE); gimp_image_add_layer($layer, -1); gimp_palette_set_background($bgcolor); diff --git a/plug-ins/perl/examples/terral_text b/plug-ins/perl/examples/terral_text index c3d8ec7e5c..c5a565b76c 100644 --- a/plug-ins/perl/examples/terral_text +++ b/plug-ins/perl/examples/terral_text @@ -45,8 +45,8 @@ register [ [ PF_RADIO, "solid_noise", "The Texture Type", 0, ["solid noise" => 1, "current picture" => 0]], [ PF_FONT, "helvetica", "Font Name", "-*-helvetica-medium-r-normal-*-*-240-*-*-p-*-iso8859-1" ], - [ PF_STRING, "Text", "Enter your Text to be Terral-ified", "TerralText"], - [ PF_SLIDER, "Blur Amount", "Blur Amount", 10, [0,26,1]], + [ PF_STRING, "text", "Enter your Text to be Terral-ified", "TerralText"], + [ PF_SLIDER, "blur_amount", "Blur Amount", 10, [0,26,1]], ], [], sub { diff --git a/plug-ins/perl/examples/tex-to-float b/plug-ins/perl/examples/tex-to-float index 376dc558b8..031d604f55 100755 --- a/plug-ins/perl/examples/tex-to-float +++ b/plug-ins/perl/examples/tex-to-float @@ -166,11 +166,11 @@ register "tex_string_to_float", "Turn a TeX-string into floating layer", "Takes "/Filters/Render/TeX String", "*", [ - [PF_STRING, "Input file", "TeX macro file to input"], - [PF_STRING, "TeX String", "Enter TeX String"], - [PF_VALUE, "DPI", "Resolution to render the text in", "72"], - [PF_VALUE, "Magstep", "TeX magstep", "2"], - [PF_VALUE, "Anti-aliasing", "Anti-aliasing factor", "4"], + [PF_STRING, "input_file", "TeX macro file to input"], + [PF_STRING, "tex_string", "Enter TeX String"], + [PF_VALUE, "dpi", "Resolution to render the text in", "72"], + [PF_VALUE, "magstep", "TeX magstep", "2"], + [PF_VALUE, "anti_aliasing", "Anti-aliasing factor", "4"], ], \&tex_string_to_float; diff --git a/plug-ins/perl/examples/view3d.pl b/plug-ins/perl/examples/view3d.pl index 03ed125ba1..245484f409 100644 --- a/plug-ins/perl/examples/view3d.pl +++ b/plug-ins/perl/examples/view3d.pl @@ -19,9 +19,9 @@ register 'Tom Rathborne', 'GPLv2', '1999-03-11', '/View/3D Surface', 'GRAY', [ - [ PF_BOOL, 'Polar', 'Radial view', 0], - [ PF_BOOL, 'Lines', 'Draw grid lines', 0], - [ PF_BOOL, 'Smooth', 'Smooth surface normals', 1] + [ 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) = @_; diff --git a/plug-ins/perl/examples/webify.pl b/plug-ins/perl/examples/webify.pl index 17f6987298..2cb6c7706d 100755 --- a/plug-ins/perl/examples/webify.pl +++ b/plug-ins/perl/examples/webify.pl @@ -16,9 +16,9 @@ register "webify", [ [PF_BOOL, "new", "create a new image?", 1], [PF_BOOL, "transparent", "make transparent?", 1], - [PF_COLOUR, "bg colour", "the background colour to use for transparency", "white"], + [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, "colours", "how many colours to use (0 = don't convert to indexed)", 32], + [PF_INT32, "colors", "how many colours to use (0 = don't convert to indexed)", 32], [PF_BOOL, "autocrop", "autocrop at end?", 1], ], sub { diff --git a/plug-ins/perl/examples/windy.pl b/plug-ins/perl/examples/windy.pl index 00e5cde56c..7a6e5ab470 100755 --- a/plug-ins/perl/examples/windy.pl +++ b/plug-ins/perl/examples/windy.pl @@ -54,10 +54,10 @@ register "/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] + [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; diff --git a/plug-ins/perl/examples/xachlego.pl b/plug-ins/perl/examples/xachlego.pl index 27fcb92ef5..7205128ac2 100755 --- a/plug-ins/perl/examples/xachlego.pl +++ b/plug-ins/perl/examples/xachlego.pl @@ -42,8 +42,8 @@ register "xach_blocks", "/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]], + [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)=@_; diff --git a/plug-ins/perl/examples/xachshadow.pl b/plug-ins/perl/examples/xachshadow.pl index 285c4e0afc..4103dd162b 100755 --- a/plug-ins/perl/examples/xachshadow.pl +++ b/plug-ins/perl/examples/xachshadow.pl @@ -34,7 +34,7 @@ register "xach_shadows", "/Filters/Map/Xach Shadows", "RGB*, GRAY*", [ - [PF_SLIDER, "Block size", "The size of the blocks...", 10, [0, 255, 1]], + [PF_SLIDER, "block_size", "The size of the blocks...", 10, [0, 255, 1]], ], sub { my($img,$drawable,$blocksize) =@_; diff --git a/plug-ins/perl/examples/xachvision.pl b/plug-ins/perl/examples/xachvision.pl index d45fe97c9e..dcf6112dfb 100644 --- a/plug-ins/perl/examples/xachvision.pl +++ b/plug-ins/perl/examples/xachvision.pl @@ -15,8 +15,8 @@ register "xachvision", "/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]] + [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) =@_; diff --git a/plug-ins/perl/examples/yinyang b/plug-ins/perl/examples/yinyang index ef527bd154..71ed645c4b 100755 --- a/plug-ins/perl/examples/yinyang +++ b/plug-ins/perl/examples/yinyang @@ -108,13 +108,13 @@ register("yinyang", "Render a stand-alone Yin/Yang image", "Aaron Sherman", "(c) 1998, Aaron Sherman", "1999a", "/Xtns/Render/Yin-Yang", "*", [ - [PF_INT32, "Width", "Width", 256], - [PF_INT32, "Height", "Height", 256], - [PF_TOGGLE, "Insert eyes?", "", 1], - [PF_TOGGLE, "Eyes are images?", "", 0], - [PF_STRING, "Top eye filename", "eye 1", ""], - [PF_STRING, "Bottom eye filename", "eye 2", ""], - [PF_TOGGLE, "Anti-aliasing?", "", 1] + [PF_INT32, "width", "Width", 256], + [PF_INT32, "height", "Height", 256], + [PF_TOGGLE, "insert_eyes", "", 1], + [PF_TOGGLE, "eyes_are_images", "", 0], + [PF_STRING, "top_eye_filename", "eye 1", ""], + [PF_STRING, "aobttom_eye_filename", "eye 2", ""], + [PF_TOGGLE, "anti_aliasing", "", 1] ], \&yinyang); diff --git a/plug-ins/perl/scm2perl b/plug-ins/perl/scm2perl index a77f57a2f7..5787475c23 100755 --- a/plug-ins/perl/scm2perl +++ b/plug-ins/perl/scm2perl @@ -36,12 +36,12 @@ Parse::RecDescent module from CPAN. =head2 PDB functions returning arrays -Perls knows the length of arrays, Script-Fu doesn't. Functions returning -single arrays return them as a normal perl array, Functions returning more -then one array return it as an array-ref. Script-Fu (and the converted -script) expect to get a length argument and then the arguments. Each -occurence (common ones are C or C) -must be fixed by hand. +Perl knows the length of arrays, Script-Fu doesn't. Functions returning +single arrays return them as a normal perl array, Functions returning +more then one array return it as an array-ref. Script-Fu (and the +converted script) expect to get a length argument and then the +arguments. Each occurence (common ones are C or +C) must be fixed by hand. =head1 AUTHOR diff --git a/plug-ins/perl/t/load.t b/plug-ins/perl/t/load.t index c07cb7b761..afcadac886 100644 --- a/plug-ins/perl/t/load.t +++ b/plug-ins/perl/t/load.t @@ -1,18 +1,10 @@ -use Test; - -BEGIN { - plan tests => 2; -} - -END { - ok(0) unless $loaded; -} +$|=1; +print "1..2\n"; use Gimp qw(:consts); -$loaded = 1; -ok(1); +print "ok 1\n"; -ok(SHARPEN,1); +print "ok 2\n" if SHARPEN; diff --git a/plug-ins/perl/t/loadlib.t b/plug-ins/perl/t/loadlib.t index 381ac14ff4..17beccbd21 100644 --- a/plug-ins/perl/t/loadlib.t +++ b/plug-ins/perl/t/loadlib.t @@ -1,19 +1,11 @@ -use Test; +$|=1; +print "1..1\n"; -BEGIN { - plan tests => 2; -} - -END { - ok(0) unless $loaded; -} +# trick Gimp into using the Gimp::Lib-interface. +BEGIN { @ARGV = '-gimp' } use Gimp qw(:consts); -use Gimp::Lib; -$loaded = 1; -ok(1); - -ok(SHARPEN,1); +print "ok 1\n"; diff --git a/plug-ins/perl/t/run.t b/plug-ins/perl/t/run.t index 0adac12ba3..88d178c40f 100644 --- a/plug-ins/perl/t/run.t +++ b/plug-ins/perl/t/run.t @@ -1,19 +1,27 @@ -use Test; +use Config; use vars qw($EXTENSIVE_TESTS $GIMPTOOL); # the most complicated thing is to set up a working gimp environment. its # difficult at best... BEGIN { - plan tests => 25; + $|=1; + print "1..26\n"; + $count=0; + $Gimp::host = "spawn/"; +} + +sub ok($;$) { + print((@_==1 ? shift : $_[0] eq &{$_[1]}) ? + "ok " : "not ok ", ++$count, "\n"); +} + +sub skip($$;$) { + shift() ? print "ok ",++$count," # skip\n" : &ok; } END { - if($loaded and $dir) { - system("rm","-rf",$dir); #d#FIXME - } else { - ok(0); - } +# system("rm","-rf",$dir);#d##FIXME# } use Cwd; @@ -25,59 +33,71 @@ ok(1); $n=!$EXTENSIVE_TESTS; -skip($n,sub {($plugins = `$GIMPTOOL -n --install-admin-bin /bin/sh`) =~ s{^.*\s(.*?)(?:/+bin/sh)\r?\n?$}{$1}}); -skip($n,sub {-d $plugins}); -skip($n,sub {-x "$plugins/script-fu"}); +skip($n,1,sub {($plugins = `$GIMPTOOL -n --install-admin-bin /bin/sh`) =~ s{^.*\s(.*?)(?:/+bin/sh)\r?\n?$}{$1}}); +skip($n,1,sub {-d $plugins}); +skip($n,1,sub {-x "$plugins/script-fu"}); use Gimp; -$loaded = 1; ok(1); ok(RGBA_IMAGE || RGB_IMAGE); -ok(RGB_IMAGE ? 1 : 1); # this shouldn't be a pattern match(!) +ok(RGB_IMAGE ? 1 : 1); # check for correct prototype -sub net { +sub tests { my($i,$l); - skip($n,sub{$i=new Image(10,10,RGB)}); - skip($n,ref $i); - skip($n,sub{$l=$i->layer_new(10,10,RGBA_IMAGE,"new layer",100,VALUE_MODE)}); - skip($n,ref $l); + skip($n,1,sub{0 != ($i=new Image(10,10,RGB))}); + skip($n,1,sub {!!ref $i}); + skip($n,1,sub{0 != ($l=$i->layer_new(10,10,RGBA_IMAGE,"new layer",100,VALUE_MODE))}); + skip($n,1,sub {!!ref $l}); - skip($n,sub{gimp_image_add_layer($l,0) || 1}); - skip($n,sub{$l->get_name()},"new layer"); + skip($n,1,sub{gimp_image_add_layer($l,0) || 1}); + skip($n,"new layer",sub{$l->get_name()}); - skip($n,sub{$l->paintbrush(50,[1,1,2,2,5,3,7,4,2,8]) || 1}); - skip($n,sub{$l->paintbrush(30,4,[5,5,8,1]) || 1}); + skip($n,1,sub{$l->paintbrush(50,[1,1,2,2,5,3,7,4,2,8]) || 1}); + skip($n,1,sub{$l->paintbrush(30,4,[5,5,8,1]) || 1}); - skip($n,sub{Plugin->sharpen(RUN_NONINTERACTIVE,$i,$l,10) || 1}); - skip($n,sub{$l->sharpen(10) || 1}); - skip($n,sub{plug_in_sharpen($i,$l,10) || 1}); + skip($n,1,sub{Plugin->sharpen(RUN_NONINTERACTIVE,$i,$l,10) || 1}); + skip($n,1,sub{$l->sharpen(10) || 1}); + skip($n,1,sub{plug_in_sharpen($i,$l,10) || 1}); - skip($n,sub{$i->delete || 1}); + skip($n,1,sub{$i->delete || 1}); } system("rm","-rf",$dir); #d#FIXME -ok(sub {mkdir $dir,0700}); -ok(sub {symlink "../Perl-Server","$dir/Perl-Server"}); -skip($n,sub {symlink "$plugins/script-fu","$dir/script-fu"}); -skip($n,sub {symlink "$plugins/sharpen","$dir/sharpen"}); +ok(1,sub {mkdir $dir,0700}); + +# copy the Perl-Server +{ + local(*X,*Y,$/); + open X,"; + open Y,">$dir/Perl-Server.pl" or die "unable to write the Perl-Server"; + print Y $Config{startperl},"\n",$s,; + ok(1); +} +ok(1,sub { chmod 0700,"$dir/Perl-Server.pl" }); + +skip($n,1,sub {symlink "$plugins/script-fu","$dir/script-fu"}); +skip($n,1,sub {symlink "$plugins/sharpen","$dir/sharpen"}); ok ( open RC,">$dir/gimprc" and print RC "(show-tips no)\n" and + print RC "(gimp_data_dir \"\")\n" and + print RC "(script-fu-path \"\")\n" and print RC "(plug-in-path \"$dir\")\n" and close RC ); $ENV{'GIMP_DIRECTORY'}=$dir; -$Gimp::host = "spawn/"; if(!$n) { skip($n,1); - main; + Gimp::init; + tests; } else { skip($n,0); - net(); + tests; }