use $(LN_S) instead of ln -sf, should fix bug #5289.

* help/C/*/Makefile.am: use $(LN_S) instead of ln -sf, should fix
bug #5289.

* tools/pdbgen/lib.pl
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/gimage_mask.pdb
* tools/pdbgen/pdb/guides.pdb
* tools/pdbgen/pdb/parasite.pdb
* tools/pdbgen/pdb/unit.pdb: more lib work, slight guide tweak

-Yosh
This commit is contained in:
Manish Singh 2000-01-17 20:25:55 +00:00
parent 2f4a226ed2
commit 155cd986e0
24 changed files with 210 additions and 108 deletions

View file

@ -1,3 +1,15 @@
Mon Jan 17 12:05:35 PST 2000 Manish Singh <yosh@gimp.org>
* help/C/*/Makefile.am: use $(LN_S) instead of ln -sf, should fix
bug #5289.
* tools/pdbgen/lib.pl
* tools/pdbgen/pdb/brushes.pdb
* tools/pdbgen/pdb/gimage_mask.pdb
* tools/pdbgen/pdb/guides.pdb
* tools/pdbgen/pdb/parasite.pdb
* tools/pdbgen/pdb/unit.pdb: more lib work, slight guide tweak
2000-01-17 Michael Natterer <mitch@gimp.org>
* libgimp/gimpcolorbutton.c: emit the "color_changed" signal

View file

@ -49,7 +49,7 @@ image_add_hguide_invoker (Argument *args)
Argument *return_args;
GimpImage *gimage;
gint32 offset;
gint32 guide_id = 0;
gint32 guide_ID = 0;
Guide *guide;
gimage = pdb_id_to_image (args[0].value.pdb_int);
@ -67,7 +67,7 @@ image_add_hguide_invoker (Argument *args)
guide = gimp_image_add_hguide (gimage);
undo_push_guide (gimage, guide);
guide->position = offset;
guide_id = guide->guide_ID;
guide_ID = guide->guide_ID;
}
else
success = FALSE;
@ -76,7 +76,7 @@ image_add_hguide_invoker (Argument *args)
return_args = procedural_db_return_args (&image_add_hguide_proc, success);
if (success)
return_args[1].value.pdb_int = guide_id;
return_args[1].value.pdb_int = guide_ID;
return return_args;
}
@ -99,7 +99,7 @@ static ProcArg image_add_hguide_outargs[] =
{
{
PDB_INT32,
"guide_id",
"guide",
"The new guide"
}
};
@ -127,7 +127,7 @@ image_add_vguide_invoker (Argument *args)
Argument *return_args;
GimpImage *gimage;
gint32 offset;
gint32 guide_id = 0;
gint32 guide_ID = 0;
Guide *guide;
gimage = pdb_id_to_image (args[0].value.pdb_int);
@ -145,7 +145,7 @@ image_add_vguide_invoker (Argument *args)
guide = gimp_image_add_vguide (gimage);
undo_push_guide (gimage, guide);
guide->position = offset;
guide_id = guide->guide_ID;
guide_ID = guide->guide_ID;
}
else
success = FALSE;
@ -154,7 +154,7 @@ image_add_vguide_invoker (Argument *args)
return_args = procedural_db_return_args (&image_add_vguide_proc, success);
if (success)
return_args[1].value.pdb_int = guide_id;
return_args[1].value.pdb_int = guide_ID;
return return_args;
}
@ -177,7 +177,7 @@ static ProcArg image_add_vguide_outargs[] =
{
{
PDB_INT32,
"guide_id",
"guide",
"The new guide"
}
};

View file

@ -22,4 +22,4 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../dialogs/channels $(helpdatadir)/dialogs
$(LN_S) ../dialogs/channels $(helpdatadir)/dialogs

View file

@ -20,10 +20,10 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../dialogs $(helpdatadir)/dialogs
$(LN_S) ../dialogs $(helpdatadir)/dialogs
rm -f $(helpdatadir)/filters
ln -sf ../filters $(helpdatadir)/filters
$(LN_S) ../filters $(helpdatadir)/filters
rm -f $(helpdatadir)/open
ln -sf ../open $(helpdatadir)/open
$(LN_S) ../open $(helpdatadir)/open
rm -f $(helpdatadir)/save
ln -sf ../save $(helpdatadir)/save
$(LN_S) ../save $(helpdatadir)/save

View file

@ -25,14 +25,14 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../dialogs $(helpdatadir)/dialogs
$(LN_S) ../dialogs $(helpdatadir)/dialogs
rm -f $(helpdatadir)/file
ln -sf ../file $(helpdatadir)/file
$(LN_S) ../file $(helpdatadir)/file
rm -f $(helpdatadir)/filters
ln -sf ../filters $(helpdatadir)/filters
$(LN_S) ../filters $(helpdatadir)/filters
rm -f $(helpdatadir)/layers
ln -sf ../layers $(helpdatadir)/layers
$(LN_S) ../layers $(helpdatadir)/layers
rm -f $(helpdatadir)/toolbox
ln -sf ../toolbox $(helpdatadir)/toolbox
$(LN_S) ../toolbox $(helpdatadir)/toolbox
rm -f $(helpdatadir)/tools
ln -sf ../tools $(helpdatadir)/tools
$(LN_S) ../tools $(helpdatadir)/tools

View file

@ -26,4 +26,4 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../../dialogs $(helpdatadir)/dialogs
$(LN_S) ../../dialogs $(helpdatadir)/dialogs

View file

@ -25,4 +25,4 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../../dialogs $(helpdatadir)/dialogs
$(LN_S) ../../dialogs $(helpdatadir)/dialogs

View file

@ -18,4 +18,4 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../../../dialogs $(helpdatadir)/dialogs
$(LN_S) ../../../dialogs $(helpdatadir)/dialogs

View file

@ -16,4 +16,4 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../../../dialogs $(helpdatadir)/dialogs
$(LN_S) ../../../dialogs $(helpdatadir)/dialogs

View file

@ -22,4 +22,4 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../../dialogs $(helpdatadir)/dialogs
$(LN_S) ../../dialogs $(helpdatadir)/dialogs

View file

@ -25,4 +25,4 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../../dialogs $(helpdatadir)/dialogs
$(LN_S) ../../dialogs $(helpdatadir)/dialogs

View file

@ -33,4 +33,4 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../dialogs/layers $(helpdatadir)/dialogs
$(LN_S) ../dialogs/layers $(helpdatadir)/dialogs

View file

@ -17,6 +17,6 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../dialogs $(helpdatadir)/dialogs
$(LN_S) ../dialogs $(helpdatadir)/dialogs
rm -f $(helpdatadir)/filters
ln -sf ../filters $(helpdatadir)/filters
$(LN_S) ../filters $(helpdatadir)/filters

View file

@ -23,6 +23,6 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../dialogs/paths $(helpdatadir)/dialogs
$(LN_S) ../dialogs/paths $(helpdatadir)/dialogs
rm -f $(helpdatadir)/filters
ln -sf ../filters $(helpdatadir)/filters
$(LN_S) ../filters $(helpdatadir)/filters

View file

@ -17,6 +17,6 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../dialogs $(helpdatadir)/dialogs
$(LN_S) ../dialogs $(helpdatadir)/dialogs
rm -f $(helpdatadir)/filters
ln -sf ../filters $(helpdatadir)/filters
$(LN_S) ../filters $(helpdatadir)/filters

View file

@ -25,8 +25,8 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../dialogs $(helpdatadir)/dialogs
$(LN_S) ../dialogs $(helpdatadir)/dialogs
rm -f $(helpdatadir)/file
ln -sf ../file $(helpdatadir)/file
$(LN_S) ../file $(helpdatadir)/file
rm -f $(helpdatadir)/filters
ln -sf ../filters $(helpdatadir)/filters
$(LN_S) ../filters $(helpdatadir)/filters

View file

@ -17,6 +17,6 @@ files:
install-data-local:
rm -f $(helpdatadir)/dialogs
ln -sf ../../dialogs $(helpdatadir)/dialogs
$(LN_S) ../../dialogs $(helpdatadir)/dialogs
rm -f $(helpdatadir)/filters
ln -sf ../filters $(helpdatadir)/filters
$(LN_S) ../filters $(helpdatadir)/filters

View file

@ -37,7 +37,9 @@ sub generate {
my ($type, $name) = &arg_parse($arg->{type});
my $argtype = $arg_types{$type};
return 'gint32 ' if exists $argtype->{id_func};
if (exists $argtype->{id_func} || $arg->{type} =~ /guide/) {
return 'gint32 ';
}
if ($type eq 'enum') {
$name = "Gimp$name" if $name !~ /^Gimp/;
@ -101,7 +103,7 @@ sub generate {
foreach (@inargs) {
my ($type) = &arg_parse($_->{type});
my $arg = $arg_types{$type};
my $id = exists $arg->{id_func};
my $id = exists $arg->{id_func} || $_->{type} =~ /guide/;
if (exists $_->{implicit_fill}) {
$privatevars++;
@ -154,7 +156,7 @@ CODE
foreach (@outargs) {
my ($type) = &arg_parse($_->{type});
my $arg = $arg_types{$type};
my $id = $arg->{id_ret_func};
my $id = $arg->{id_ret_func} || $_->{type} =~ /guide/;
my $var;
$return_marshal = "" unless $once++;
@ -177,11 +179,24 @@ CODE
# Save the first var to "return" it
$firstvar = $var unless defined $firstvar;
if (exists $_->{libdef}) {
$return_args .= " = $_->{libdef}";
}
elsif ($id) {
# Initialize all IDs to -1
$return_args .= " = -1" if $id;
$return_args .= " = -1";
}
elsif ($arg->{type} =~ /\*/) {
# Initialize pointers to NULL
$return_args .= " = NULL" if !$id && ($arg->{type} =~ /\*/);
$return_args .= " = NULL";
}
elsif ($arg->{type} =~ /boolean/) {
$return_args .= " = TRUE";
}
else {
# Default to 0
$return_args .= " = 0";
}
$return_args .= ";";
@ -204,19 +219,19 @@ CODE
foreach (@outargs) {
my ($type) = &arg_parse($_->{type});
my $arg = $arg_types{$type};
my $id = $arg->{id_ret_func};
my $id = $arg->{id_ret_func} || $_->{type} =~ /guide/;
my $var;
my $head = ""; my $foot = "";
my $ch = ""; my $cf = "";
if ($type =~ /^string(array)?/) {
$head = 'g_strdup (';
$foot = ')';
$ch = 'g_strdup (';
$cf = ')';
}
elsif ($type =~ /parasite/) {
$head = 'parasite_copy (&';
$foot = ')';
$ch = 'parasite_copy (&';
$cf = ')';
}
elsif ($type =~ /boolean|enum/) {
elsif ($type =~ /boolean|enum|guide/) {
$type = 'int32';
}
@ -229,17 +244,27 @@ CODE
chop $datatype;
$datatype =~ s/ *$//;
my $var = $_->{name}; my $dh = ""; my $df = "";
unless (exists $_->{retval}) {
$var = "*$var"; $dh = "(*"; $df = ")";
$arglist .= "$datatype **$_->{name}";
}
$return_args .= "\n" . ' ' x 2 . "gint i;";
my $numvar = '*' . $_->{array}->{name};
$numvar = "num_$_->{name}" if exists $_->{array}->{no_lib};
$return_marshal .= <<CODE;
$return_marshal .= <<NEW . ($ch || $ch) ? <<CP1 : <<CP2;
$numvar = return_vals[$numpos].data.d_$numtype;
$_->{name} = g_new ($datatype, $numvar);
$var = g_new ($datatype, $numvar);
NEW
memcpy ($var, return_vals[$argc].data.d_$type\[i],
$numvar * sizeof ($datatype));
CP1
for (i = 0; i < $numvar; i++)
$_->{name}\[i] = ${head}return_vals[$argc].data.d_$type\[i]${foot};
CODE
$dh$_->{name}$df\[i] = ${ch}return_vals[$argc].data.d_$type\[i]${cf};
CP2
}
elsif ($type ne 'color') {
# The return value variable
@ -259,7 +284,7 @@ CODE
$return_marshal .= ' ' x 2 if $#outargs;
$return_marshal .= <<CODE
$var = ${head}return_vals[$argc].data.d_$type${foot};
$var = ${ch}return_vals[$argc].data.d_$type${cf};
CODE
}
else {
@ -293,29 +318,29 @@ CODE
}
if ($arglist) {
my @arglist = ();
my $longest = 0; my $indirect = 0;
foreach (split(/, /, $arglist)) {
my ($type, $var) = /(\w+) ((?:\w|\*)+)/;
my $num = scalar @{[ $var =~ /\*/g ]};
push @arglist, [ $type, $var, $num ];
$longest = length $type if $longest < length $type;
$indirect = $num if $indirect < $num;
my @arglist = split(/, /, $arglist);
my $longest = 0; my $seen = 0;
foreach (@arglist) {
/(\w+) \S+/;
my $len = length($1);
my $num = scalar @{[ /\*/g ]};
$seen = $num if $seen < $num;
$longest = $len if $longest < $len;
}
$longest += $indirect + 1;
$longest += $seen;
my $once = 0; $arglist = "";
foreach (@arglist) {
my ($type, $var, $num) = @$_;
my $space = $longest - length($type) - $num;
$arglist .= ",\n\t" if $once++;
$arglist .= $type . ' ' x $space . $var;
my $len = $longest - index($_, ' ') + 1;
$len -= scalar @{[ /\*/g ]};
s/ /' ' x $len/e if $len > 1;
$arglist .= "\t" if $once;
$arglist .= $_;
$arglist .= ",\n";
$once++;
}
$arglist =~ s/ +/ / if !$#arglist;
$arglist =~ s/,\n$//;
}
else {
$arglist = "void";
@ -326,23 +351,25 @@ CODE
# Our function prototype for the headers
(my $hrettype = $rettype) =~ s/ //g;
my $proto = "$hrettype gimp_$name ($arglist);\n";
my $proto = "$hrettype $funcname ($arglist);\n";
$proto =~ s/ +/ /g;
push @{$out->{proto}}, $proto;
push @{$out->{protos}}, $proto;
my $clist = $arglist;
$clist =~ s/\t/' ' x (length("gimp_$name") + 2)/eg;
$clist =~ s/ {8}/\t/g;
my $padlen = length($funcname) + 2;
my $padtab = $padlen / 8; my $padspace = $padlen % 8;
my $padding = "\t" x $padtab . ' ' x $padspace;
$clist =~ s/\t/$padding/eg;
$out->{code} .= <<CODE;
$rettype
gimp_$name ($clist)
$funcname ($clist)
{
GParam *return_vals;
gint nreturn_vals;$return_args$color
return_vals = gimp_run_procedure ("gimp_$name",
return_vals = gimp_run_procedure ("$funcname",
\&nreturn_vals,$argpass
PARAM_END);
@ -389,10 +416,26 @@ LGPL
$extra = $main::grp{$group}->{extra}->{lib}
}
push @{$out->{proto}}, $extra->{protos} if exists $extra->{protos};
if (exists $extra->{protos}) {
my $proto = "";
foreach (split(/\n/, $extra->{protos})) {
next if /^\s*$/;
if (/^\t/ && length($proto)) {
s/\s+/ /g; s/ $//; s/^ /\t/;
$proto .= $_ . "\n";
}
else {
push @{$out->{protos}}, $proto if length($proto);
s/\s+/ /g; s/^ //; s/ $//;
$proto = $_ . "\n";
}
}
}
my @longest = (0, 0, 0); my @arglist = (); my $seen = 0;
foreach (@{$out->{proto}}) {
foreach (@{$out->{protos}}) {
my $len; my $arglist = [ split(' ', $_, 3) ];
for (0..1) {
@ -400,27 +443,28 @@ LGPL
$longest[$_] = $len if $longest[$_] < $len;
}
my @arg = split(/,/, $arglist->[2]);
foreach (@arg) {
foreach (split(/,/, $arglist->[2])) {
/(\w+) \S+/;
$len = length($1) + 1;
$seen++ if /\*/;
my $num = scalar @{[ /\*/g ]};
$seen = $num if $seen < $num;
$longest[2] = $len if $longest[2] < $len;
}
push @arglist, $arglist;
}
$longest[2]++ if $seen;
$longest[2] += $seen;
@{$out->{proto}} = ();
@{$out->{protos}} = ();
foreach (@arglist) {
my ($type, $func, $arglist) = @$_;
my @args = split(/,/, $arglist); $arglist = "";
foreach (@args) {
my $len = $longest[2] - index($_, ' ') + 1;
$len-- if /\*/;
$len -= scalar @{[ /\*/g ]};
$len++ if /\t/;
s/ /' ' x $len/e if $len > 1;
$arglist .= $_;
$arglist .= "," if !/;\n$/;
@ -430,12 +474,12 @@ LGPL
$arg .= ' ' x ($longest[1] - length($func) + 1) . $arglist;
$arg =~ s/\t/' ' x ($longest[0] + $longest[1] + 3)/eg;
while ($arg =~ /^\t* {8}/m) { $arg =~ s/^(\t*) {8}/$1\t/mg }
push @{$out->{proto}}, $arg;
push @{$out->{protos}}, $arg;
}
my $body;
$body = $extra->{decls} if exists $extra->{decls};
foreach (@{$out->{proto}}) { $body .= $_ }
foreach (@{$out->{protos}}) { $body .= $_ }
chomp $body;
open HFILE, "> $hfile" or die "Can't open $hfile: $!\n";

View file

@ -314,7 +314,7 @@ HELP
push @outargs, { name => 'mask_data', type => 'int8array', init => 1,
desc => 'The brush mask data',
array => { name => 'length', init => 1,
array => { name => 'length', init => 1, no_lib => 1,
desc => 'Length of brush mask data' } };
%invoke = (

View file

@ -364,7 +364,7 @@ HELP
selection_invert selection_sharpen selection_all selection_none
selection_feather selection_border selection_grow selection_shrink
selection_layer_alpha selection_load selection_save);
%exports = (app => [@procs], lib => [@procs[2,4]]);
%exports = (app => [@procs], lib => [@procs[0,2,4,9]]);
$desc = 'Image mask';

View file

@ -43,7 +43,7 @@ HELP
);
@outargs = (
{ name => 'guide_id', type => 'guide', init => 1,
{ name => 'guide', type => 'guide', init => 1, alias => 'guide_ID',
desc => 'The new guide' }
);
@ -57,7 +57,7 @@ HELP
guide = gimp_image_add_${func}guide (gimage);
undo_push_guide (gimage, guide);
guide->position = offset;
guide_id = guide->guide_ID;
guide_ID = guide->guide_ID;
}
else
success = FALSE;
@ -216,9 +216,9 @@ HELP
);
@outargs = (
{ name => 'orientation',
type => &std_orientation_enum,
desc => "The guide's orientation: { %%desc%% }", init => 1 }
{ name => 'orientation', type => &std_orientation_enum, init => 1,
desc => "The guide's orientation: { %%desc%% }",
libdef => 'GIMP_UNKNOWN' }
);
%invoke = (
@ -263,7 +263,7 @@ HELP
);
@outargs = (
{ name => 'position', type => 'int32', init => 1,
{ name => 'position', type => 'int32', init => 1, libdef => '-1',
desc => "The guide's position relative to top or left of image" }
);

View file

@ -165,18 +165,18 @@ sub parasite_list {
"gimpimage.h");
$extra{lib}->{protos} = <<'CODE';
void gimp_parasite_attach_new (const gchar *name,
guint32 flags,
guint32 size,
gconstpoiner data);
void gimp_parasite_attach_new (gchar *name,
gint flags,
gint size,
gpointer data);
CODE
$extra{lib}->{code} = <<'CODE';
void
gimp_parasite_attach_new (const gchar *name,
guint32 flags,
guint32 size,
gconstpointer data)
gimp_parasite_attach_new (gchar *name,
gint flags,
gint size,
gpointer data)
{
Parasite *p = parasite_new (name, flags, size, data);
gimp_parasite_attach (p);

View file

@ -364,7 +364,7 @@ HELP
selection_invert selection_sharpen selection_all selection_none
selection_feather selection_border selection_grow selection_shrink
selection_layer_alpha selection_load selection_save);
%exports = (app => [@procs], lib => [@procs[2,4]]);
%exports = (app => [@procs], lib => [@procs[0,2,4,9]]);
$desc = 'Image mask';

View file

@ -59,7 +59,7 @@ sub unit_get_number_of_units {
&pdb_misc;
@outargs = (
{ name => 'num_units', type => 'int32',
{ name => 'num_units', type => 'int32', libdef => 'UNIT_END',
desc => 'The number of units',
alias => 'gimp_unit_get_number_of_units ()', no_declare => 1 }
);
@ -96,6 +96,7 @@ HELP
@outargs = ( &unit_arg );
$outargs[0]->{desc} = "The new unit's ID";
$outargs[0]->{init} = 1;
$outargs[0]->{libdef} = 'UNIT_INCH';
%invoke = (
code => <<'CODE'
@ -197,6 +198,51 @@ HELP
@headers = qw("libgimp/gimpunit.h");
$extra{lib}->{protos} = <<'CODE';
GUnit gimp_unit_get_number_of_built_in_units (void);
CODE
$extra{lib}->{code} = <<'CODE';
/* internal structures */
typedef struct {
guint delete_on_exit;
gdouble factor;
gint digits;
gchar *identifier;
gchar *symbol;
gchar *abbreviation;
gchar *singular;
gchar *plural;
} GimpUnitDef;
static GimpUnitDef gimp_unit_defs[UNIT_END] =
{
/* pseudo unit */
{ FALSE, 0.0, 0, "pixels", "px", "px", N_("pixel"), N_("pixels") },
/* standard units */
{ FALSE, 1.0, 2, "inches", "''", "in", N_("inch"), N_("inches") },
{ FALSE, 25.4, 1, "millimeters", "mm", "mm", N_("millimeter"), N_("millimeters") },
/* professional units */
{ FALSE, 72.0, 0, "points", "pt", "pt", N_("point"), N_("points") },
{ FALSE, 6.0, 1, "picas", "pc", "pc", N_("pica"), N_("picas") },
};
/* Not a unit at all but kept here to have the strings in one place */
static GimpUnitDef gimp_unit_percent =
{
FALSE, 0.0, 0, "percent", "%", "%", N_("percent"), N_("percent")
};
GUnit
gimp_unit_get_number_of_built_in_units (void)
{
return UNIT_END;
}
CODE
@procs = qw(unit_get_number_of_units unit_new unit_get_deletion_flag
unit_set_deletion_flag unit_get_identifier unit_get_factor
unit_get_digits unit_get_symbol unit_get_abbreviation