see plug-ins/perl/Changes

This commit is contained in:
Marc Lehmann
1999-07-28 21:19:15 +00:00
parent 99ef09e511
commit fcb24402f5
2 changed files with 79 additions and 53 deletions

View File

@ -1,5 +1,14 @@
Revision history for Gimp-Perl extension.
- new enums.pl, some changes: SELECTION_* becomes * again.
- compatibility fix for 5.005_58, also fixed a bug in Gimp::Pod.
- removed register_magic_load_handler from Lib.xs (is in PDB).
- preliminary <Load> and <Save> support (arguments are automatically
supplied).
- enabled limited pixel access functions even when PDL was not found.
- added examples/miff (a save filter for miff images).
1.0981 Wed Jul 28 00:09:50 CEST 1999
- improved gouge ;) In a sense, it's actually pretty code now!
- region functions (except data) wrongly returned transposed matrices.
Now the order of dimensions is bpp <- width <- height.

View File

@ -6,13 +6,13 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD %EXPORT_TAGS @EXPORT_FAIL
@PREFIXES $_PROT_VERSION
@gimp_gui_functions $function $basename $spawn_opts
$in_quit $in_run $in_net $in_init $in_query $no_SIG
$help $verbose $host);
$help $verbose $host $in_top);
use subs qw(init end lock unlock canonicalize_color);
require DynaLoader;
@ISA=qw(DynaLoader);
$VERSION = 1.098;
$VERSION = 1.099;
@_param = qw(
PARAM_BOUNDARY PARAM_CHANNEL PARAM_COLOR PARAM_DISPLAY PARAM_DRAWABLE
@ -25,24 +25,26 @@ $VERSION = 1.098;
# constants that, in some earlier version, were autoloaded
@_consts = (@_param,
#ENUM_NAME#
'PRESSURE', 'SOFT', 'HARD', 'INDEXEDA_IMAGE', 'RGBA_IMAGE', 'GRAYA_IMAGE', 'RGB_IMAGE',
'INDEXED_IMAGE', 'GRAY_IMAGE', 'TRANS_IMAGE_FILL', 'WHITE_IMAGE_FILL', 'BG_IMAGE_FILL', 'FG_IMAGE_FILL', 'NO_IMAGE_FILL',
'VERTICAL_FLIP', 'HORIZONTAL_FLIP', 'LOOP_SAWTOOTH', 'ONCE_BACKWARDS', 'ONCE_FORWARD', 'ONCE_END_COLOR', 'LOOP_TRIANGLE',
'CYAN_HUES', 'RED_HUES', 'GREEN_HUES', 'YELLOW_HUES', 'ALL_HUES', 'MAGENTA_HUES', 'BLUE_HUES',
'MONO_PALETTE', 'WEB_PALETTE', 'MAKE_PALETTE', 'REUSE_PALETTE', 'CUSTOM_PALETTE', 'POINTS', 'PIXELS',
'SATURATION_MODE', 'ADDITION_MODE', 'NORMAL_MODE', 'HUE_MODE', 'SUBTRACT_MODE', 'DIVIDE_MODE', 'SCREEN_MODE',
'BEHIND_MODE', 'MULTIPLY_MODE', 'DISSOLVE_MODE', 'DIFFERENCE_MODE', 'DARKEN_ONLY_MODE', 'VALUE_MODE', 'LIGHTEN_ONLY_MODE',
'REPLACE_MODE', 'COLOR_MODE', 'OVERLAY_MODE', 'ERASE_MODE', 'CUSTOM', 'FG_TRANS', 'FG_BG_HSV',
'FG_BG_RGB', 'CONTINUOUS', 'INCREMENTAL', 'APPLY', 'DISCARD', 'BLUE_CHANNEL', 'GREEN_CHANNEL',
'GRAY_CHANNEL', 'AUXILLARY_CHANNEL', 'INDEXED_CHANNEL', 'RED_CHANNEL', 'HORIZONTAL_SHEAR', 'VERTICAL_SHEAR', 'BLUR_CONVOLVE',
'CUSTOM_CONVOLVE', 'SHARPEN_CONVOLVE', 'SELECTION_SUB', 'SELECTION_INTERSECT', 'SELECTION_ADD', 'SELECTION_REPLACE', 'SHADOWS',
'MIDTONES', 'HIGHLIGHTS', 'IMAGE_CLONE', 'PATTERN_CLONE', 'INDEXED', 'RGB', 'GRAY',
'ADD_BLACK_MASK', 'ADD_WHITE_MASK', 'ADD_ALPHA_MASK', 'BILINEAR', 'SPIRAL_CLOCKWISE', 'SQUARE', 'RADIAL',
'CONICAL_SYMMETRIC', 'SHAPEBURST_DIMPLED', 'CONICAL_ASYMMETRIC', 'LINEAR', 'SPIRAL_ANTICLOCKWISE','SHAPEBURST_ANGULAR', 'SHAPEBURST_SPHERICAL',
'ALPHA_LUT', 'GREEN_LUT', 'BLUE_LUT', 'VALUE_LUT', 'RED_LUT', 'HORIZONTAL_GUIDE', 'VERTICAL_GUIDE',
'OFFSET_BACKGROUND', 'OFFSET_TRANSPARENT', 'MESSAGE_BOX', 'ERROR_CONSOLE', 'CONSOLE', 'RUN_INTERACTIVE', 'RUN_WITH_LAST_VALS',
'RUN_NONINTERACTIVE', 'EXPAND_AS_NECESSARY', 'CLIP_TO_BOTTOM_LAYER','CLIP_TO_IMAGE', 'FLATTEN_IMAGE', 'REPEAT_NONE', 'REPEAT_SAWTOOTH',
'REPEAT_TRIANGULAR', 'BG_BUCKET_FILL', 'FG_BUCKET_FILL', 'PATTERN_BUCKET_FILL',
'SOFT', 'PRESSURE', 'HARD', 'RGBA_IMAGE', 'INDEXED_IMAGE', 'GRAYA_IMAGE', 'RGB_IMAGE',
'INDEXEDA_IMAGE', 'GRAY_IMAGE', 'CUSTOM', 'FG_BG_HSV', 'FG_TRANS', 'FG_BG_RGB', 'CONTINUOUS',
'INCREMENTAL', 'APPLY', 'DISCARD', 'BLUE_CHANNEL', 'GREEN_CHANNEL', 'GRAY_CHANNEL', 'INDEXED_CHANNEL',
'AUXILLARY_CHANNEL', 'RED_CHANNEL', 'DODGEBURN_HIGHLIGHTS','DODGEBURN_SHADOWS', 'DODGEBURN_MIDTONES', 'ALPHA_LUT', 'GREEN_LUT',
'BLUE_LUT', 'VALUE_LUT', 'RED_LUT', 'HORIZONTAL_GUIDE', 'VERTICAL_GUIDE', 'OFFSET_BACKGROUND', 'OFFSET_TRANSPARENT',
'FG_BUCKET_FILL', 'BG_BUCKET_FILL', 'PATTERN_BUCKET_FILL', 'PDB_CALLING_ERROR', 'PDB_SUCCESS', 'PDB_EXECUTION_ERROR', 'PDB_PASS_THROUGH',
'WHITE_IMAGE_FILL', 'FG_IMAGE_FILL', 'TRANS_IMAGE_FILL', 'BG_IMAGE_FILL', 'NO_IMAGE_FILL', 'ONCE_FORWARD', 'ONCE_BACKWARDS',
'LOOP_SAWTOOTH', 'ONCE_END_COLOR', 'LOOP_TRIANGLE', 'MONO_PALETTE', 'WEB_PALETTE', 'MAKE_PALETTE', 'REUSE_PALETTE',
'CUSTOM_PALETTE', 'DODGE', 'BURN', 'CYAN_HUES', 'RED_HUES', 'ALL_HUES', 'YELLOW_HUES',
'GREEN_HUES', 'BLUE_HUES', 'MAGENTA_HUES', 'POINTS', 'PIXELS', 'SATURATION_MODE', 'ADDITION_MODE',
'NORMAL_MODE', 'HUE_MODE', 'SUBTRACT_MODE', 'DIVIDE_MODE', 'SCREEN_MODE', 'BEHIND_MODE', 'MULTIPLY_MODE',
'DISSOLVE_MODE', 'DIFFERENCE_MODE', 'DARKEN_ONLY_MODE', 'VALUE_MODE', 'LIGHTEN_ONLY_MODE', 'REPLACE_MODE', 'COLOR_MODE',
'OVERLAY_MODE', 'ERASE_MODE', 'VERTICAL', 'HORIZONTAL', 'BLUR_CONVOLVE', 'CUSTOM_CONVOLVE', 'SHARPEN_CONVOLVE',
'SHADOWS', 'MIDTONES', 'HIGHLIGHTS', 'REPLACE', 'SUB', 'ADD', 'INTERSECT',
'IMAGE_CLONE', 'PATTERN_CLONE', 'INDEXED', 'RGB', 'GRAY', 'BLACK_MASK', 'WHITE_MASK',
'ALPHA_MASK', 'BILINEAR', 'SPIRAL_CLOCKWISE', 'SQUARE', 'RADIAL', 'CONICAL_SYMMETRIC', 'SHAPEBURST_DIMPLED',
'CONICAL_ASYMMETRIC', 'LINEAR', 'SHAPEBURST_ANGULAR', 'SPIRAL_ANTICLOCKWISE','SHAPEBURST_SPHERICAL','PDB_PLUGIN', 'PDB_EXTENSION',
'PDB_TEMPORARY', 'PDB_INTERNAL', 'MESSAGE_BOX', 'ERROR_CONSOLE', 'CONSOLE', 'EXPAND_AS_NECESSARY', 'CLIP_TO_BOTTOM_LAYER',
'CLIP_TO_IMAGE', 'FLATTEN_IMAGE', 'RUN_INTERACTIVE', 'RUN_NONINTERACTIVE', 'RUN_WITH_LAST_VALS', 'REPEAT_NONE', 'REPEAT_SAWTOOTH',
'REPEAT_TRIANGULAR',
#ENUM_NAME#
'STATUS_CALLING_ERROR', 'STATUS_EXECUTION_ERROR', 'STATUS_PASS_THROUGH',
'STATUS_SUCCESS', 'PARASITE_PERSISTENT', 'PARASITE_ATTACH_PARENT',
@ -51,38 +53,46 @@ $VERSION = 1.098;
'TRACE_NONE', 'TRACE_CALL', 'TRACE_TYPE', 'TRACE_NAME', 'TRACE_DESC', 'TRACE_ALL',
'COMPRESSION_NONE', 'COMPRESSION_LZW', 'COMPRESSION_PACKBITS',
'WRAP', 'SMEAR', 'BLACK',
'ADD_BLACK_MASK', 'ADD_WHITE_MASK', 'ADD_ALPHA_MASK',
);
sub ADD_WHITE_MASK () { &WHITE_MASK }
sub ADD_BLACK_MASK () { &BLACK_MASK }
sub ADD_ALPHA_MASK () { &ALPHA_MASK }
@_procs = ('main','xlfd_size');
bootstrap Gimp $VERSION;
#ENUM_DEFS#
sub PRESSURE (){ 2} sub SOFT (){ 1} sub HARD (){ 0} sub INDEXEDA_IMAGE (){ 5} sub RGBA_IMAGE (){ 1}
sub GRAYA_IMAGE (){ 3} sub RGB_IMAGE (){ 0} sub INDEXED_IMAGE (){ 4} sub GRAY_IMAGE (){ 2} sub TRANS_IMAGE_FILL (){ 3}
sub WHITE_IMAGE_FILL (){ 2} sub BG_IMAGE_FILL (){ 1} sub FG_IMAGE_FILL (){ 0} sub NO_IMAGE_FILL (){ 4} sub VERTICAL_FLIP (){ 1}
sub HORIZONTAL_FLIP (){ 0} sub LOOP_SAWTOOTH (){ 2} sub ONCE_BACKWARDS (){ 1} sub ONCE_FORWARD (){ 0} sub ONCE_END_COLOR (){ 4}
sub LOOP_TRIANGLE (){ 3} sub CYAN_HUES (){ 4} sub RED_HUES (){ 1} sub GREEN_HUES (){ 3} sub YELLOW_HUES (){ 2}
sub ALL_HUES (){ 0} sub MAGENTA_HUES (){ 6} sub BLUE_HUES (){ 5} sub MONO_PALETTE (){ 3} sub WEB_PALETTE (){ 2}
sub MAKE_PALETTE (){ 0} sub REUSE_PALETTE (){ 1} sub CUSTOM_PALETTE (){ 4} sub POINTS (){ 1} sub PIXELS (){ 0}
sub SATURATION_MODE (){12} sub ADDITION_MODE (){ 7} sub NORMAL_MODE (){ 0} sub HUE_MODE (){11} sub SUBTRACT_MODE (){ 8}
sub DIVIDE_MODE (){15} sub SCREEN_MODE (){ 4} sub BEHIND_MODE (){ 2} sub MULTIPLY_MODE (){ 3} sub DISSOLVE_MODE (){ 1}
sub DIFFERENCE_MODE (){ 6} sub DARKEN_ONLY_MODE (){ 9} sub VALUE_MODE (){14} sub LIGHTEN_ONLY_MODE (){10} sub REPLACE_MODE (){17}
sub COLOR_MODE (){13} sub OVERLAY_MODE (){ 5} sub ERASE_MODE (){16} sub CUSTOM (){ 3} sub FG_TRANS (){ 2}
sub FG_BG_HSV (){ 1} sub FG_BG_RGB (){ 0} sub CONTINUOUS (){ 0} sub INCREMENTAL (){ 1} sub APPLY (){ 0}
sub DISCARD (){ 1} sub BLUE_CHANNEL (){ 2} sub GREEN_CHANNEL (){ 1} sub GRAY_CHANNEL (){ 3} sub AUXILLARY_CHANNEL (){ 5}
sub INDEXED_CHANNEL (){ 4} sub RED_CHANNEL (){ 0} sub HORIZONTAL_SHEAR (){ 0} sub VERTICAL_SHEAR (){ 1} sub BLUR_CONVOLVE (){ 0}
sub CUSTOM_CONVOLVE (){ 2} sub SHARPEN_CONVOLVE (){ 1} sub SELECTION_SUB (){ 1} sub SELECTION_INTERSECT (){ 3} sub SELECTION_ADD (){ 0}
sub SELECTION_REPLACE (){ 2} sub SHADOWS (){ 0} sub MIDTONES (){ 1} sub HIGHLIGHTS (){ 2} sub IMAGE_CLONE (){ 0}
sub PATTERN_CLONE (){ 1} sub INDEXED (){ 2} sub RGB (){ 0} sub GRAY (){ 1} sub ADD_BLACK_MASK (){ 1}
sub ADD_WHITE_MASK (){ 0} sub ADD_ALPHA_MASK (){ 2} sub BILINEAR (){ 1} sub SPIRAL_CLOCKWISE (){ 9} sub SQUARE (){ 3}
sub RADIAL (){ 2} sub CONICAL_SYMMETRIC (){ 4} sub SHAPEBURST_DIMPLED (){ 8} sub CONICAL_ASYMMETRIC (){ 5} sub LINEAR (){ 0}
sub SPIRAL_ANTICLOCKWISE(){10} sub SHAPEBURST_ANGULAR (){ 6} sub SHAPEBURST_SPHERICAL(){ 7} sub ALPHA_LUT (){ 4} sub GREEN_LUT (){ 2}
sub BLUE_LUT (){ 3} sub VALUE_LUT (){ 0} sub RED_LUT (){ 1} sub HORIZONTAL_GUIDE (){ 1} sub VERTICAL_GUIDE (){ 2}
sub OFFSET_BACKGROUND (){ 0} sub OFFSET_TRANSPARENT (){ 1} sub MESSAGE_BOX (){ 0} sub ERROR_CONSOLE (){ 2} sub CONSOLE (){ 1}
sub RUN_INTERACTIVE (){bless \(my $x=0),'Gimp::run_mode'} sub RUN_WITH_LAST_VALS (){bless \(my $x=2),'Gimp::run_mode'} sub RUN_NONINTERACTIVE (){bless \(my $x=1),'Gimp::run_mode'} sub EXPAND_AS_NECESSARY (){ 0} sub CLIP_TO_BOTTOM_LAYER(){ 2}
sub CLIP_TO_IMAGE (){ 1} sub FLATTEN_IMAGE (){ 3} sub REPEAT_NONE (){ 0} sub REPEAT_SAWTOOTH (){ 1} sub REPEAT_TRIANGULAR (){ 2}
sub BG_BUCKET_FILL (){ 1} sub FG_BUCKET_FILL (){ 0} sub PATTERN_BUCKET_FILL (){ 2}
sub SOFT (){ 1} sub PRESSURE (){ 2} sub HARD (){ 0} sub RGBA_IMAGE (){ 1} sub INDEXED_IMAGE (){ 4}
sub GRAYA_IMAGE (){ 3} sub RGB_IMAGE (){ 0} sub INDEXEDA_IMAGE (){ 5} sub GRAY_IMAGE (){ 2} sub CUSTOM (){ 3}
sub FG_BG_HSV (){ 1} sub FG_TRANS (){ 2} sub FG_BG_RGB (){ 0} sub CONTINUOUS (){ 0} sub INCREMENTAL (){ 1}
sub APPLY (){ 0} sub DISCARD (){ 1} sub BLUE_CHANNEL (){ 2} sub GREEN_CHANNEL (){ 1} sub GRAY_CHANNEL (){ 3}
sub INDEXED_CHANNEL (){ 4} sub AUXILLARY_CHANNEL (){ 5} sub RED_CHANNEL (){ 0} sub DODGEBURN_HIGHLIGHTS(){ 0} sub DODGEBURN_SHADOWS (){ 2}
sub DODGEBURN_MIDTONES (){ 1} sub ALPHA_LUT (){ 4} sub GREEN_LUT (){ 2} sub BLUE_LUT (){ 3} sub VALUE_LUT (){ 0}
sub RED_LUT (){ 1} sub HORIZONTAL_GUIDE (){ 1} sub VERTICAL_GUIDE (){ 2} sub OFFSET_BACKGROUND (){ 0} sub OFFSET_TRANSPARENT (){ 1}
sub FG_BUCKET_FILL (){ 0} sub BG_BUCKET_FILL (){ 1} sub PATTERN_BUCKET_FILL (){ 2} sub PDB_CALLING_ERROR (){ 1} sub PDB_SUCCESS (){ 3}
sub PDB_EXECUTION_ERROR (){ 0} sub PDB_PASS_THROUGH (){ 2} sub WHITE_IMAGE_FILL (){ 2} sub FG_IMAGE_FILL (){ 0} sub TRANS_IMAGE_FILL (){ 3}
sub BG_IMAGE_FILL (){ 1} sub NO_IMAGE_FILL (){ 4} sub ONCE_FORWARD (){ 0} sub ONCE_BACKWARDS (){ 1} sub LOOP_SAWTOOTH (){ 2}
sub ONCE_END_COLOR (){ 4} sub LOOP_TRIANGLE (){ 3} sub MONO_PALETTE (){ 3} sub WEB_PALETTE (){ 2} sub MAKE_PALETTE (){ 0}
sub REUSE_PALETTE (){ 1} sub CUSTOM_PALETTE (){ 4} sub DODGE (){ 0} sub BURN (){ 1} sub CYAN_HUES (){ 4}
sub RED_HUES (){ 1} sub ALL_HUES (){ 0} sub YELLOW_HUES (){ 2} sub GREEN_HUES (){ 3} sub BLUE_HUES (){ 5}
sub MAGENTA_HUES (){ 6} sub POINTS (){ 1} sub PIXELS (){ 0} sub SATURATION_MODE (){12} sub ADDITION_MODE (){ 7}
sub NORMAL_MODE (){ 0} sub HUE_MODE (){11} sub SUBTRACT_MODE (){ 8} sub DIVIDE_MODE (){15} sub SCREEN_MODE (){ 4}
sub BEHIND_MODE (){ 2} sub MULTIPLY_MODE (){ 3} sub DISSOLVE_MODE (){ 1} sub DIFFERENCE_MODE (){ 6} sub DARKEN_ONLY_MODE (){ 9}
sub VALUE_MODE (){14} sub LIGHTEN_ONLY_MODE (){10} sub REPLACE_MODE (){17} sub COLOR_MODE (){13} sub OVERLAY_MODE (){ 5}
sub ERASE_MODE (){16} sub VERTICAL (){ 1} sub HORIZONTAL (){ 0} sub BLUR_CONVOLVE (){ 0} sub CUSTOM_CONVOLVE (){ 2}
sub SHARPEN_CONVOLVE (){ 1} sub SHADOWS (){ 0} sub MIDTONES (){ 1} sub HIGHLIGHTS (){ 2} sub REPLACE (){ 2}
sub SUB (){ 1} sub ADD (){ 0} sub INTERSECT (){ 3} sub IMAGE_CLONE (){ 0} sub PATTERN_CLONE (){ 1}
sub INDEXED (){ 2} sub RGB (){ 0} sub GRAY (){ 1} sub BLACK_MASK (){ 1} sub WHITE_MASK (){ 0}
sub ALPHA_MASK (){ 2} sub BILINEAR (){ 1} sub SPIRAL_CLOCKWISE (){ 9} sub SQUARE (){ 3} sub RADIAL (){ 2}
sub CONICAL_SYMMETRIC (){ 4} sub SHAPEBURST_DIMPLED (){ 8} sub CONICAL_ASYMMETRIC (){ 5} sub LINEAR (){ 0} sub SHAPEBURST_ANGULAR (){ 6}
sub SPIRAL_ANTICLOCKWISE(){10} sub SHAPEBURST_SPHERICAL(){ 7} sub PDB_PLUGIN (){ 1} sub PDB_EXTENSION (){ 2} sub PDB_TEMPORARY (){ 3}
sub PDB_INTERNAL (){ 0} sub MESSAGE_BOX (){ 0} sub ERROR_CONSOLE (){ 2} sub CONSOLE (){ 1} sub EXPAND_AS_NECESSARY (){ 0}
sub CLIP_TO_BOTTOM_LAYER(){ 2} sub CLIP_TO_IMAGE (){ 1} sub FLATTEN_IMAGE (){ 3} sub RUN_INTERACTIVE (){bless \(my $x=0),'Gimp::run_mode'} sub RUN_NONINTERACTIVE (){bless \(my $x=1),'Gimp::run_mode'}
sub RUN_WITH_LAST_VALS (){bless \(my $x=2),'Gimp::run_mode'} sub REPEAT_NONE (){ 0} sub REPEAT_SAWTOOTH (){ 1} sub REPEAT_TRIANGULAR (){ 2}
#ENUM_DEFS#
sub WRAP (){ 0 }
@ -191,7 +201,7 @@ sub canonicalize_colour {
} elsif ($_[0] =~ /^#([0-9a-fA-F]{2,2})([0-9a-fA-F]{2,2})([0-9a-fA-F]{2,2})$/) {
[map {eval "0x$_"} ($1,$2,$3)];
} else {
unless (defined %rgb_db) {
unless (%rgb_db) {
if ($rgb_db_path) {
open RGB_TEXT,"<$rgb_db_path" or croak "unable to open $rgb_db_path";
} else {
@ -218,8 +228,8 @@ sub canonicalize_colour {
$spawn_opts = "";
# extra check for Gimp::Feature::import
$in_query=0 unless defined $in_query; # perl -w is SOOO braindamaged
$in_quit=$in_run=$in_net=$in_init=0; # perl -w is braindamaged
$in_query=0 unless defined $in_query; # perl -w is SOOO braindamaged
$in_top=$in_quit=$in_run=$in_net=$in_init=0; # perl -w is braindamaged
$verbose=0;
@ -277,6 +287,7 @@ sub _initialized_callback {
}
}
if (@log) {
my $oldtrace = set_trace(0);
unless ($in_net || $in_query || $in_quit || $in_init) {
for(@log) {
Gimp->message(format_msg($_)) if $_->[3];
@ -284,6 +295,7 @@ sub _initialized_callback {
}
Gimp->_gimp_append_data ('gimp-perl-log', map join("\1",@$_)."\0",@log);
@log=();
set_trace($oldtrace);
}
}
@ -307,7 +319,7 @@ sub die_msg {
# this needs to be improved
sub quiet_die {
die "IGNORE THIS MESSAGE\n";
$in_top ? exit(1) : die "IGNORE THIS MESSAGE\n";
}
unless ($no_SIG) {
@ -336,7 +348,9 @@ sub call_callback {
my $cb = shift;
return () if $caller eq "Gimp";
if ($callback{$cb}) {
&{$callback{$cb}};
for(@{$callback{$cb}}) {
&$_;
}
} elsif (UNIVERSAL::can($caller,$cb)) {
&{"$caller\::$cb"};
} else {
@ -366,9 +380,12 @@ sub callback {
}
sub register_callback($$) {
$callback{$_[0]}=$_[1];
push(@{$callback{$_[0]}},$_[1]);
}
sub on_query(&) { register_callback "query", $_[0] }
sub on_net (&) { register_callback "net" , $_[0] }
sub main {
$caller=caller;
#d# #D# # BIG BUG LURKING SOMEWHERE
@ -448,7 +465,7 @@ sub AUTOLOAD {
my $ref = \&{"Gimp::Util::$sub"};
*{$AUTOLOAD} = sub {
shift unless ref $_[0];
#goto &$ref; # does not always work, PERLBUG! #FIXME
goto &$ref; # does not always work, PERLBUG! #FIXME
my @r = eval { &$ref };
_croak $@ if $@;
wantarray ? @r : $r[0];
@ -458,7 +475,7 @@ sub AUTOLOAD {
my $ref = \&{"$interface_pkg\::$sub"};
*{$AUTOLOAD} = sub {
shift unless ref $_[0];
#goto &$ref; # does not always work, PERLBUG! #FIXME
goto &$ref; # does not always work, PERLBUG! #FIXME
my @r = eval { &$ref };
_croak $@ if $@;
wantarray ? @r : $r[0];