From 97db5945202d4cbac6a7518cacebf70059bb8151 Mon Sep 17 00:00:00 2001 From: Marc Lehmann Date: Mon, 23 Nov 1998 20:20:52 +0000 Subject: [PATCH] see plug-ins/perl/Changes --- plug-ins/perl/Changes | 6 +- plug-ins/perl/Gimp.pm | 86 +++----- plug-ins/perl/Gimp.xs | 447 +++++++++++++++----------------------- plug-ins/perl/Gimp/Net.pm | 2 +- plug-ins/perl/README | 3 + plug-ins/perl/TODO | 4 + 6 files changed, 213 insertions(+), 335 deletions(-) diff --git a/plug-ins/perl/Changes b/plug-ins/perl/Changes index 20e9fbd85e..77670742a8 100644 --- a/plug-ins/perl/Changes +++ b/plug-ins/perl/Changes @@ -1,10 +1,14 @@ Revision history for Gimp-Perl extension. +1.049 Mon Nov 23 20:54:41 CET 1998 - updated configure to require 1.0.2 - added some more scripts to the dist - brushes are no longer shown inverted - - belp button && logo for Gimp::Fu. the first doesn't work properly + - help button && logo for Gimp::Fu. the first doesn't work properly and the second is ugly. feel free to send me a better version. + - constants are no longer autoloaded (yeah!) + - bug in Gimp::Net::set_connection fixed as suggested by + 1.048 Fri Nov 13 20:39:52 CET 1998 - Gimp::Fu::save_image now correctly respects the quality setting diff --git a/plug-ins/perl/Gimp.pm b/plug-ins/perl/Gimp.pm index 7e0f5b2083..1fb2ab4e2e 100644 --- a/plug-ins/perl/Gimp.pm +++ b/plug-ins/perl/Gimp.pm @@ -22,8 +22,8 @@ $VERSION = 1.049; PARAM_SELECTION PARAM_STATUS PARAM_INT32ARRAY ); -# constants to be autoloaded -@_al_consts = (@_param,qw( +# constants that, in some earlier version, were autoloaded +@_consts = (@_param,qw( ADDITION_MODE ALPHA_MASK APPLY BEHIND_MODE BG_BUCKET_FILL BG_IMAGE_FILL BILINEAR BLACK_MASK BLUE_CHANNEL BLUR CLIP_TO_BOTTOM_LAYER CLIP_TO_IMAGE COLOR_MODE CONICAL_ASYMMETRIC @@ -47,9 +47,6 @@ $VERSION = 1.049; TRACE_NONE TRACE_CALL TRACE_TYPE TRACE_NAME TRACE_DESC TRACE_ALL -)); - -@_consts = (@_al_consts,qw( MESSAGE_BOX CONSOLE ALL_HUES RED_HUES YELLOW_HUES GREEN_HUES CYAN_HUES @@ -64,30 +61,6 @@ $VERSION = 1.049; bootstrap Gimp $VERSION; -# use subs is broken for our purpose, so no constant autoloading... -for(@_al_consts) { - my $val = constant($_); - *{$_} = sub (){ $val }; -} - -sub ALL_HUES (){ 0 }; -sub RED_HUES (){ 1 }; -sub YELLOW_HUES (){ 2 }; -sub GREEN_HUES (){ 3 }; -sub CYAN_HUES (){ 4 }; -sub BLUE_HUES (){ 5 }; -sub MAGENTA_HUES (){ 6 }; - -sub MESSAGE_BOX (){ 0 }; -sub CONSOLE (){ 1 }; - -sub SHADOWS (){ 0 }; -sub MIDTONES (){ 1 }; -sub HIGHLIGHTS (){ 2 }; - -sub HORIZONTAL (){ 0 }; -sub VERTICAL (){ 1 }; - # internal constants shared with Perl-Server sub _PS_FLAG_QUIET { 0000000001 }; # do not output messages @@ -248,40 +221,35 @@ sub _croak($) { sub AUTOLOAD { my ($class,$name) = $AUTOLOAD =~ /^(.*)::(.*?)$/; - my $val = Gimp::constant($name); - if ($!) { - for(@{"${class}::PREFIXES"}) { - my $sub = $_.$name; - if (exists $ignore_function{$sub}) { - *{$AUTOLOAD} = sub { () }; - goto &$AUTOLOAD; - } elsif (UNIVERSAL::can($interface_pkg,$sub)) { - my $ref = \&{"${interface_pkg}::$sub"}; - *{$AUTOLOAD} = sub { - shift unless ref $_[0]; + for(@{"${class}::PREFIXES"}) { + my $sub = $_.$name; + if (exists $ignore_function{$sub}) { + *{$AUTOLOAD} = sub { () }; + goto &$AUTOLOAD; + } elsif (UNIVERSAL::can($interface_pkg,$sub)) { + my $ref = \&{"${interface_pkg}::$sub"}; + *{$AUTOLOAD} = sub { + shift unless ref $_[0]; # goto &$ref; # does not always work, PERLBUG! #FIXME - my @r = eval { &$ref }; - _croak $@ if $@; - wantarray ? @r : $r[0]; - }; - goto &$AUTOLOAD; - } elsif (_gimp_procedure_available ($sub)) { - *{$AUTOLOAD} = sub { - shift unless ref $_[0]; + my @r = eval { &$ref }; + _croak $@ if $@; + wantarray ? @r : $r[0]; + }; + goto &$AUTOLOAD; + } elsif (_gimp_procedure_available ($sub)) { + *{$AUTOLOAD} = sub { + shift unless ref $_[0]; # goto gimp_call_procedure - my @r=eval { gimp_call_procedure ($sub,@_) }; - _croak $@ if $@; - wantarray ? @r : $r[0]; - }; - goto &$AUTOLOAD; - } elsif (defined(*{"${interface_pkg}::$sub"}{CODE})) { - die "safety net $interface_pkg :: $sub";#d# - } + my @r=eval { gimp_call_procedure ($sub,@_) }; + _croak $@ if $@; + wantarray ? @r : $r[0]; + }; + goto &$AUTOLOAD; + } elsif (defined(*{"${interface_pkg}::$sub"}{CODE})) { + die "safety net $interface_pkg :: $sub";#d# } - croak "function/macro \"$name\" not found in $class"; } - *{$AUTOLOAD} = sub (){ $val }; - goto &$AUTOLOAD; + croak "function/macro \"$name\" not found in $class"; } # FIXME: why is this necessary? try to understand, hard! diff --git a/plug-ins/perl/Gimp.xs b/plug-ins/perl/Gimp.xs index d9265a8335..d1cd1a4422 100644 --- a/plug-ins/perl/Gimp.xs +++ b/plug-ins/perl/Gimp.xs @@ -31,286 +31,185 @@ extern "C" { #define GIMP_PARASITE 1 #endif -static double -constant(name) -char *name; +/* Shamelesssly stolen from IO.xs. See perlguts, this is only for + * 5.004 compatibility. + */ +#ifndef newCONSTSUB +static void +newCONSTSUB(stash,name,sv) + HV *stash; + char *name; + SV *sv; { - errno = 0; - switch (*name) { - case 'A': - if (strEQ(name, "ADDITION_MODE")) - return ADDITION_MODE; - if (strEQ(name, "ALPHA_MASK")) - return ALPHA_MASK; - if (strEQ(name, "APPLY")) - return APPLY; - break; - case 'B': - if (strEQ(name, "BEHIND_MODE")) - return BEHIND_MODE; - if (strEQ(name, "BG_BUCKET_FILL")) - return BG_BUCKET_FILL; - if (strEQ(name, "BG_IMAGE_FILL")) - return BG_IMAGE_FILL; - if (strEQ(name, "BILINEAR")) - return BILINEAR; - if (strEQ(name, "BLACK_MASK")) - return BLACK_MASK; - if (strEQ(name, "BLUE_CHANNEL")) - return BLUE_CHANNEL; - if (strEQ(name, "BLUR")) - return BLUR; - break; - case 'C': - if (strEQ(name, "CLIP_TO_BOTTOM_LAYER")) - return CLIP_TO_BOTTOM_LAYER; - if (strEQ(name, "CLIP_TO_IMAGE")) - return CLIP_TO_IMAGE; - if (strEQ(name, "COLOR_MODE")) - return COLOR_MODE; - if (strEQ(name, "CONICAL_ASYMMETRIC")) - return CONICAL_ASYMMETRIC; - if (strEQ(name, "CONICAL_SYMMETRIC")) - return CONICAL_SYMMETRIC; - if (strEQ(name, "CUSTOM")) - return CUSTOM; - break; - case 'D': - if (strEQ(name, "DARKEN_ONLY_MODE")) - return DARKEN_ONLY_MODE; - if (strEQ(name, "DIFFERENCE_MODE")) - return DIFFERENCE_MODE; - if (strEQ(name, "DISCARD")) - return DISCARD; - if (strEQ(name, "DISSOLVE_MODE")) - return DISSOLVE_MODE; -#if HAVE_DIVIDE_MODE || IN_GIMP - if (strEQ(name, "DIVIDE_MODE")) - return DIVIDE_MODE; +#ifdef dTHR + dTHR; #endif - break; - case 'E': - if (strEQ(name, "EXPAND_AS_NECESSARY")) - return EXPAND_AS_NECESSARY; - break; - case 'F': -#if GIMP11 - if (strEQ(name, "FG_IMAGE_FILL")) - return FG_IMAGE_FILL; -#endif - if (strEQ(name, "FG_BG_HSV")) - return FG_BG_HSV; - if (strEQ(name, "FG_BG_RGB")) - return FG_BG_RGB; - if (strEQ(name, "FG_BUCKET_FILL")) - return FG_BUCKET_FILL; - if (strEQ(name, "FG_TRANS")) - return FG_TRANS; - break; - case 'G': - if (strEQ(name, "GRAY")) - return GRAY; - if (strEQ(name, "GRAYA_IMAGE")) - return GRAYA_IMAGE; - if (strEQ(name, "GRAY_CHANNEL")) - return GRAY_CHANNEL; - if (strEQ(name, "GRAY_IMAGE")) - return GRAY_IMAGE; - if (strEQ(name, "GREEN_CHANNEL")) - return GREEN_CHANNEL; - break; - case 'H': - if (strEQ(name, "HUE_MODE")) - return HUE_MODE; - break; - case 'I': - if (strEQ(name, "IMAGE_CLONE")) - return IMAGE_CLONE; - if (strEQ(name, "INDEXED")) - return INDEXED; - if (strEQ(name, "INDEXEDA_IMAGE")) - return INDEXEDA_IMAGE; - if (strEQ(name, "INDEXED_CHANNEL")) - return INDEXED_CHANNEL; - if (strEQ(name, "INDEXED_IMAGE")) - return INDEXED_IMAGE; - break; - case 'L': - if (strEQ(name, "LIGHTEN_ONLY_MODE")) - return LIGHTEN_ONLY_MODE; - if (strEQ(name, "LINEAR")) - return LINEAR; - break; - case 'M': - if (strEQ(name, "MULTIPLY_MODE")) - return MULTIPLY_MODE; - break; - case 'N': - if (strEQ(name, "NORMAL_MODE")) - return NORMAL_MODE; -#if GIMP11 - if (strEQ(name, "NO_IMAGE_FILL")) - return NO_IMAGE_FILL; -#endif - break; - case 'O': - if (strEQ(name, "OVERLAY_MODE")) - return OVERLAY_MODE; - break; - case 'P': -#if GIMP_PARASITE - if (strEQ(name, "PARAM_PARASITE")) - return PARAM_PARASITE; - if (strEQ(name, "PARASITE_PERSISTANT")) - return PARASITE_PERSISTANT; -#endif - if (strEQ(name, "PARAM_BOUNDARY")) - return PARAM_BOUNDARY; - if (strEQ(name, "PARAM_CHANNEL")) - return PARAM_CHANNEL; - if (strEQ(name, "PARAM_COLOR")) - return PARAM_COLOR; - if (strEQ(name, "PARAM_DISPLAY")) - return PARAM_DISPLAY; - if (strEQ(name, "PARAM_DRAWABLE")) - return PARAM_DRAWABLE; - if (strEQ(name, "PARAM_END")) - return PARAM_END; - if (strEQ(name, "PARAM_FLOAT")) - return PARAM_FLOAT; - if (strEQ(name, "PARAM_FLOATARRAY")) - return PARAM_FLOATARRAY; - if (strEQ(name, "PARAM_IMAGE")) - return PARAM_IMAGE; - if (strEQ(name, "PARAM_INT16")) - return PARAM_INT16; - if (strEQ(name, "PARAM_INT16ARRAY")) - return PARAM_INT16ARRAY; - if (strEQ(name, "PARAM_INT32")) - return PARAM_INT32; - if (strEQ(name, "PARAM_INT32ARRAY")) - return PARAM_INT32ARRAY; - if (strEQ(name, "PARAM_INT8")) - return PARAM_INT8; - if (strEQ(name, "PARAM_INT8ARRAY")) - return PARAM_INT8ARRAY; - if (strEQ(name, "PARAM_LAYER")) - return PARAM_LAYER; - if (strEQ(name, "PARAM_PATH")) - return PARAM_PATH; - if (strEQ(name, "PARAM_REGION")) - return PARAM_REGION; - if (strEQ(name, "PARAM_SELECTION")) - return PARAM_SELECTION; - if (strEQ(name, "PARAM_STATUS")) - return PARAM_STATUS; - if (strEQ(name, "PARAM_STRING")) - return PARAM_STRING; - if (strEQ(name, "PARAM_STRINGARRAY")) - return PARAM_STRINGARRAY; - if (strEQ(name, "PATTERN_BUCKET_FILL")) - return PATTERN_BUCKET_FILL; - if (strEQ(name, "PATTERN_CLONE")) - return PATTERN_CLONE; - if (strEQ(name, "PIXELS")) - return PIXELS; - if (strEQ(name, "POINTS")) - return POINTS; - if (strEQ(name, "PROC_EXTENSION")) - return PROC_EXTENSION; - if (strEQ(name, "PROC_PLUG_IN")) - return PROC_PLUG_IN; - if (strEQ(name, "PROC_TEMPORARY")) - return PROC_TEMPORARY; - break; - case 'R': - if (strEQ(name, "RADIAL")) - return RADIAL; - if (strEQ(name, "RED_CHANNEL")) - return RED_CHANNEL; - if (strEQ(name, "REPEAT_NONE")) - return REPEAT_NONE; - if (strEQ(name, "REPEAT_SAWTOOTH")) - return REPEAT_SAWTOOTH; - if (strEQ(name, "REPEAT_TRIANGULAR")) - return REPEAT_TRIANGULAR; - if (strEQ(name, "RGB")) - return RGB; - if (strEQ(name, "RGBA_IMAGE")) - return RGBA_IMAGE; - if (strEQ(name, "RGB_IMAGE")) - return RGB_IMAGE; - if (strEQ(name, "RUN_INTERACTIVE")) - return RUN_INTERACTIVE; - if (strEQ(name, "RUN_NONINTERACTIVE")) - return RUN_NONINTERACTIVE; - if (strEQ(name, "RUN_WITH_LAST_VALS")) - return RUN_WITH_LAST_VALS; - break; - case 'S': - if (strEQ(name, "SATURATION_MODE")) - return SATURATION_MODE; - if (strEQ(name, "SCREEN_MODE")) - return SCREEN_MODE; - if (strEQ(name, "SELECTION_ADD")) - return SELECTION_ADD; - if (strEQ(name, "SELECTION_INTERSECT")) - return SELECTION_INTERSECT; - if (strEQ(name, "SELECTION_REPLACE")) - return SELECTION_REPLACE; - if (strEQ(name, "SELECTION_SUB")) - return SELECTION_SUB; - if (strEQ(name, "SHAPEBURST_ANGULAR")) - return SHAPEBURST_ANGULAR; - if (strEQ(name, "SHAPEBURST_DIMPLED")) - return SHAPEBURST_DIMPLED; - if (strEQ(name, "SHAPEBURST_SPHERICAL")) - return SHAPEBURST_SPHERICAL; - if (strEQ(name, "SHARPEN")) - return SHARPEN; - if (strEQ(name, "SQUARE")) - return SQUARE; - if (strEQ(name, "STATUS_CALLING_ERROR")) - return STATUS_CALLING_ERROR; - if (strEQ(name, "STATUS_EXECUTION_ERROR")) - return STATUS_EXECUTION_ERROR; - if (strEQ(name, "STATUS_PASS_THROUGH")) - return STATUS_PASS_THROUGH; - if (strEQ(name, "STATUS_SUCCESS")) - return STATUS_SUCCESS; - if (strEQ(name, "SUBTRACT_MODE")) - return SUBTRACT_MODE; - break; - case 'T': - if (strEQ(name, "TRANS_IMAGE_FILL")) - return TRANS_IMAGE_FILL; - if (strEQ(name, "TRACE_NONE")) return TRACE_NONE; - if (strEQ(name, "TRACE_CALL")) return TRACE_CALL; - if (strEQ(name, "TRACE_TYPE")) return TRACE_TYPE; - if (strEQ(name, "TRACE_NAME")) return TRACE_NAME; - if (strEQ(name, "TRACE_DESC")) return TRACE_DESC; - if (strEQ(name, "TRACE_ALL")) return TRACE_ALL; - break; - case 'V': - if (strEQ(name, "VALUE_MODE")) - return VALUE_MODE; - break; - case 'W': - if (strEQ(name, "WHITE_IMAGE_FILL")) - return WHITE_IMAGE_FILL; - if (strEQ(name, "WHITE_MASK")) - return WHITE_MASK; - break; - } - errno = EINVAL; - return 0; + U32 oldhints = hints; + HV *old_cop_stash = curcop->cop_stash; + HV *old_curstash = curstash; + line_t oldline = curcop->cop_line; + curcop->cop_line = copline; + + hints &= ~HINT_BLOCK_SCOPE; + if(stash) + curstash = curcop->cop_stash = stash; + + newSUB( + MY_start_subparse(FALSE, 0), + newSVOP(OP_CONST, 0, newSVpv(name,0)), + newSVOP(OP_CONST, 0, &sv_no), /* SvPV(&sv_no) == "" -- GMB */ + newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) + ); + + hints = oldhints; + curcop->cop_stash = old_cop_stash; + curstash = old_curstash; + curcop->cop_line = oldline; } +#endif MODULE = Gimp PACKAGE = Gimp PROTOTYPES: ENABLE -double -constant(name) - char * name +BOOT: +{ + HV *stash = gv_stashpvn("Gimp", 4, TRUE); + + newCONSTSUB(stash,"ADDITION_MODE",newSViv(ADDITION_MODE)); + newCONSTSUB(stash,"ALPHA_MASK",newSViv(ALPHA_MASK)); + newCONSTSUB(stash,"APPLY",newSViv(APPLY)); + newCONSTSUB(stash,"BEHIND_MODE",newSViv(BEHIND_MODE)); + newCONSTSUB(stash,"BG_BUCKET_FILL",newSViv(BG_BUCKET_FILL)); + newCONSTSUB(stash,"BG_IMAGE_FILL",newSViv(BG_IMAGE_FILL)); + newCONSTSUB(stash,"BILINEAR",newSViv(BILINEAR)); + newCONSTSUB(stash,"BLACK_MASK",newSViv(BLACK_MASK)); + newCONSTSUB(stash,"BLUE_CHANNEL",newSViv(BLUE_CHANNEL)); + newCONSTSUB(stash,"BLUR",newSViv(BLUR)); + newCONSTSUB(stash,"CLIP_TO_BOTTOM_LAYER",newSViv(CLIP_TO_BOTTOM_LAYER)); + newCONSTSUB(stash,"CLIP_TO_IMAGE",newSViv(CLIP_TO_IMAGE)); + newCONSTSUB(stash,"COLOR_MODE",newSViv(COLOR_MODE)); + newCONSTSUB(stash,"CONICAL_ASYMMETRIC",newSViv(CONICAL_ASYMMETRIC)); + newCONSTSUB(stash,"CONICAL_SYMMETRIC",newSViv(CONICAL_SYMMETRIC)); + newCONSTSUB(stash,"CUSTOM",newSViv(CUSTOM)); + newCONSTSUB(stash,"DARKEN_ONLY_MODE",newSViv(DARKEN_ONLY_MODE)); + newCONSTSUB(stash,"DIFFERENCE_MODE",newSViv(DIFFERENCE_MODE)); + newCONSTSUB(stash,"DISCARD",newSViv(DISCARD)); + newCONSTSUB(stash,"DISSOLVE_MODE",newSViv(DISSOLVE_MODE)); + newCONSTSUB(stash,"EXPAND_AS_NECESSARY",newSViv(EXPAND_AS_NECESSARY)); + newCONSTSUB(stash,"FG_BG_HSV",newSViv(FG_BG_HSV)); + newCONSTSUB(stash,"FG_BG_RGB",newSViv(FG_BG_RGB)); + newCONSTSUB(stash,"FG_BUCKET_FILL",newSViv(FG_BUCKET_FILL)); + newCONSTSUB(stash,"FG_TRANS",newSViv(FG_TRANS)); + newCONSTSUB(stash,"GRAY",newSViv(GRAY)); + newCONSTSUB(stash,"GRAYA_IMAGE",newSViv(GRAYA_IMAGE)); + newCONSTSUB(stash,"GRAY_CHANNEL",newSViv(GRAY_CHANNEL)); + newCONSTSUB(stash,"GRAY_IMAGE",newSViv(GRAY_IMAGE)); + newCONSTSUB(stash,"GREEN_CHANNEL",newSViv(GREEN_CHANNEL)); + newCONSTSUB(stash,"HUE_MODE",newSViv(HUE_MODE)); + newCONSTSUB(stash,"IMAGE_CLONE",newSViv(IMAGE_CLONE)); + newCONSTSUB(stash,"INDEXED",newSViv(INDEXED)); + newCONSTSUB(stash,"INDEXEDA_IMAGE",newSViv(INDEXEDA_IMAGE)); + newCONSTSUB(stash,"INDEXED_CHANNEL",newSViv(INDEXED_CHANNEL)); + newCONSTSUB(stash,"INDEXED_IMAGE",newSViv(INDEXED_IMAGE)); + newCONSTSUB(stash,"LIGHTEN_ONLY_MODE",newSViv(LIGHTEN_ONLY_MODE)); + newCONSTSUB(stash,"LINEAR",newSViv(LINEAR)); + newCONSTSUB(stash,"MULTIPLY_MODE",newSViv(MULTIPLY_MODE)); + newCONSTSUB(stash,"NORMAL_MODE",newSViv(NORMAL_MODE)); + newCONSTSUB(stash,"OVERLAY_MODE",newSViv(OVERLAY_MODE)); + newCONSTSUB(stash,"PARAM_BOUNDARY",newSViv(PARAM_BOUNDARY)); + newCONSTSUB(stash,"PARAM_CHANNEL",newSViv(PARAM_CHANNEL)); + newCONSTSUB(stash,"PARAM_COLOR",newSViv(PARAM_COLOR)); + newCONSTSUB(stash,"PARAM_DISPLAY",newSViv(PARAM_DISPLAY)); + newCONSTSUB(stash,"PARAM_DRAWABLE",newSViv(PARAM_DRAWABLE)); + newCONSTSUB(stash,"PARAM_END",newSViv(PARAM_END)); + newCONSTSUB(stash,"PARAM_FLOAT",newSViv(PARAM_FLOAT)); + newCONSTSUB(stash,"PARAM_FLOATARRAY",newSViv(PARAM_FLOATARRAY)); + newCONSTSUB(stash,"PARAM_IMAGE",newSViv(PARAM_IMAGE)); + newCONSTSUB(stash,"PARAM_INT16",newSViv(PARAM_INT16)); + newCONSTSUB(stash,"PARAM_INT16ARRAY",newSViv(PARAM_INT16ARRAY)); + newCONSTSUB(stash,"PARAM_INT32",newSViv(PARAM_INT32)); + newCONSTSUB(stash,"PARAM_INT32ARRAY",newSViv(PARAM_INT32ARRAY)); + newCONSTSUB(stash,"PARAM_INT8",newSViv(PARAM_INT8)); + newCONSTSUB(stash,"PARAM_INT8ARRAY",newSViv(PARAM_INT8ARRAY)); + newCONSTSUB(stash,"PARAM_LAYER",newSViv(PARAM_LAYER)); + newCONSTSUB(stash,"PARAM_PATH",newSViv(PARAM_PATH)); + newCONSTSUB(stash,"PARAM_REGION",newSViv(PARAM_REGION)); + newCONSTSUB(stash,"PARAM_SELECTION",newSViv(PARAM_SELECTION)); + newCONSTSUB(stash,"PARAM_STATUS",newSViv(PARAM_STATUS)); + newCONSTSUB(stash,"PARAM_STRING",newSViv(PARAM_STRING)); + newCONSTSUB(stash,"PARAM_STRINGARRAY",newSViv(PARAM_STRINGARRAY)); + newCONSTSUB(stash,"PATTERN_BUCKET_FILL",newSViv(PATTERN_BUCKET_FILL)); + newCONSTSUB(stash,"PATTERN_CLONE",newSViv(PATTERN_CLONE)); + newCONSTSUB(stash,"PIXELS",newSViv(PIXELS)); + newCONSTSUB(stash,"POINTS",newSViv(POINTS)); + newCONSTSUB(stash,"PROC_EXTENSION",newSViv(PROC_EXTENSION)); + newCONSTSUB(stash,"PROC_PLUG_IN",newSViv(PROC_PLUG_IN)); + newCONSTSUB(stash,"PROC_TEMPORARY",newSViv(PROC_TEMPORARY)); + newCONSTSUB(stash,"RADIAL",newSViv(RADIAL)); + newCONSTSUB(stash,"RED_CHANNEL",newSViv(RED_CHANNEL)); + newCONSTSUB(stash,"REPEAT_NONE",newSViv(REPEAT_NONE)); + newCONSTSUB(stash,"REPEAT_SAWTOOTH",newSViv(REPEAT_SAWTOOTH)); + newCONSTSUB(stash,"REPEAT_TRIANGULAR",newSViv(REPEAT_TRIANGULAR)); + newCONSTSUB(stash,"RGB",newSViv(RGB)); + newCONSTSUB(stash,"RGBA_IMAGE",newSViv(RGBA_IMAGE)); + newCONSTSUB(stash,"RGB_IMAGE",newSViv(RGB_IMAGE)); + newCONSTSUB(stash,"RUN_INTERACTIVE",newSViv(RUN_INTERACTIVE)); + newCONSTSUB(stash,"RUN_NONINTERACTIVE",newSViv(RUN_NONINTERACTIVE)); + newCONSTSUB(stash,"RUN_WITH_LAST_VALS",newSViv(RUN_WITH_LAST_VALS)); + newCONSTSUB(stash,"SATURATION_MODE",newSViv(SATURATION_MODE)); + newCONSTSUB(stash,"SCREEN_MODE",newSViv(SCREEN_MODE)); + newCONSTSUB(stash,"SELECTION_ADD",newSViv(SELECTION_ADD)); + newCONSTSUB(stash,"SELECTION_INTERSECT",newSViv(SELECTION_INTERSECT)); + newCONSTSUB(stash,"SELECTION_REPLACE",newSViv(SELECTION_REPLACE)); + newCONSTSUB(stash,"SELECTION_SUB",newSViv(SELECTION_SUB)); + newCONSTSUB(stash,"SHAPEBURST_ANGULAR",newSViv(SHAPEBURST_ANGULAR)); + newCONSTSUB(stash,"SHAPEBURST_DIMPLED",newSViv(SHAPEBURST_DIMPLED)); + newCONSTSUB(stash,"SHAPEBURST_SPHERICAL",newSViv(SHAPEBURST_SPHERICAL)); + newCONSTSUB(stash,"SHARPEN",newSViv(SHARPEN)); + newCONSTSUB(stash,"SQUARE",newSViv(SQUARE)); + newCONSTSUB(stash,"STATUS_CALLING_ERROR",newSViv(STATUS_CALLING_ERROR)); + newCONSTSUB(stash,"STATUS_EXECUTION_ERROR",newSViv(STATUS_EXECUTION_ERROR)); + newCONSTSUB(stash,"STATUS_PASS_THROUGH",newSViv(STATUS_PASS_THROUGH)); + newCONSTSUB(stash,"STATUS_SUCCESS",newSViv(STATUS_SUCCESS)); + newCONSTSUB(stash,"SUBTRACT_MODE",newSViv(SUBTRACT_MODE)); + newCONSTSUB(stash,"TRANS_IMAGE_FILL",newSViv(TRANS_IMAGE_FILL)); + newCONSTSUB(stash,"TRACE_NONE",newSViv(TRACE_NONE)); + newCONSTSUB(stash,"TRACE_CALL",newSViv(TRACE_CALL)); + newCONSTSUB(stash,"TRACE_TYPE",newSViv(TRACE_TYPE)); + newCONSTSUB(stash,"TRACE_NAME",newSViv(TRACE_NAME)); + newCONSTSUB(stash,"TRACE_DESC",newSViv(TRACE_DESC)); + newCONSTSUB(stash,"TRACE_ALL",newSViv(TRACE_ALL)); + newCONSTSUB(stash,"VALUE_MODE",newSViv(VALUE_MODE)); + newCONSTSUB(stash,"WHITE_IMAGE_FILL",newSViv(WHITE_IMAGE_FILL)); + newCONSTSUB(stash,"WHITE_MASK",newSViv(WHITE_MASK)); +#if HAVE_DIVIDE_MODE || IN_GIMP + newCONSTSUB(stash,"DIVIDE_MODE",newSViv(DIVIDE_MODE)); +#endif +#if GIMP11 + newCONSTSUB(stash,"FG_IMAGE_FILL",newSViv(FG_IMAGE_FILL)); + newCONSTSUB(stash,"NO_IMAGE_FILL",newSViv(NO_IMAGE_FILL)); +#endif +#if GIMP_PARASITE + newCONSTSUB(stash,"PARAM_PARASITE",newSViv(PARAM_PARASITE)); + newCONSTSUB(stash,"PARASITE_PERSISTANT",newSViv(PARASITE_PERSISTANT)); +#endif + newCONSTSUB(stash,"ALL_HUES", newSViv(0)); + newCONSTSUB(stash,"RED_HUES", newSViv(1)); + newCONSTSUB(stash,"YELLOW_HUES", newSViv(2)); + newCONSTSUB(stash,"GREEN_HUES", newSViv(3)); + newCONSTSUB(stash,"CYAN_HUES", newSViv(4)); + newCONSTSUB(stash,"BLUE_HUES", newSViv(5)); + newCONSTSUB(stash,"MAGENTA_HUES", newSViv(6)); + + newCONSTSUB(stash,"MESSAGE_BOX", newSViv(0)); + newCONSTSUB(stash,"CONSOLE", newSViv(1)); + + newCONSTSUB(stash,"SHADOWS", newSViv(0)); + newCONSTSUB(stash,"MIDTONES", newSViv(1)); + newCONSTSUB(stash,"HIGHLIGHTS", newSViv(2)); + + newCONSTSUB(stash,"HORIZONTAL", newSViv(0)); + newCONSTSUB(stash,"VERTICAL", newSViv(1)); +} diff --git a/plug-ins/perl/Gimp/Net.pm b/plug-ins/perl/Gimp/Net.pm index 9208d81225..0e8cf8be27 100644 --- a/plug-ins/perl/Gimp/Net.pm +++ b/plug-ins/perl/Gimp/Net.pm @@ -231,7 +231,7 @@ sub get_connection() { } sub set_connection($) { - ($server_fh,$gimp_pid)=@$_; + ($server_fh,$gimp_pid)=@{+shift}; } END { diff --git a/plug-ins/perl/README b/plug-ins/perl/README index 33c5960fcd..7c5aa6b19b 100644 --- a/plug-ins/perl/README +++ b/plug-ins/perl/README @@ -91,3 +91,6 @@ SUPPORT/MAILING LISTS/MORE INFO Scheme is the crappiest language ever. Have a look at Haskell (http://www.haskell.org) to see how functional is done right. + + + (c)1998 Marc Lehmann diff --git a/plug-ins/perl/TODO b/plug-ins/perl/TODO index 75915625c8..0a4a15bc0a 100644 --- a/plug-ins/perl/TODO +++ b/plug-ins/perl/TODO @@ -6,6 +6,7 @@ shortcuts (don't ask) gimp -b "(extension-perl-server 0 0 0)" gimp ~/pix/ka001.jpg -b "(extension-perl-server 0 0 0)" file:///usr/app/lib/perl5/site_perl/i686-linux/PDL/HtmlDocs/ +make test TEST_VERBOSE=1 bugs @@ -22,6 +23,9 @@ bugs important issues + * gimp->object_id, drawable_object_id remove! + * PF_CUSTOM + * gimp_display_image * wamp up homepage * --ui and --noui for Gimp::Fu * [PF_CUSTOM]