app/drawable_cmds.c The PDB procedures

* app/drawable_cmds.c
   * tools/pdbgen/pdb/drawable.pdb: The PDB procedures
     gimp_drawable_is_[layer|channel|channel_mask] were not renamed,
     but changed all over the place. This made the rotate plug-ins
     fail.

   * app/procedural_db.c: Spit out a warning if a procedure wasn't
     found in the PDB. Actually free the hash_table entries on
     procedural_db_free().

--Sven
This commit is contained in:
Sven Neumann 1999-10-27 20:45:57 +00:00
parent b2773c790e
commit 48e3c7a412
4 changed files with 74 additions and 39 deletions

View File

@ -1,3 +1,15 @@
Wed Oct 27 22:39:56 MEST 1999 Sven Neumann <sven@gimp.org>
* app/drawable_cmds.c
* tools/pdbgen/pdb/drawable.pdb: The PDB procedures
gimp_drawable_is_[layer|channel|channel_mask] were not renamed,
but changed all over the place. This made the rotate plug-ins
fail.
* app/procedural_db.c: Spit out a warning if a procedure wasn't
found in the PDB. Actually free the hash_table entries on
procedural_db_free().
Wed Oct 27 13:37:54 CEST 1999 Marc Lehmann <pcg@goof.com>
* gimp_parasite_find users where not updated to the new syntax

View File

@ -42,9 +42,9 @@ static ProcRecord drawable_bytes_proc;
static ProcRecord drawable_width_proc;
static ProcRecord drawable_height_proc;
static ProcRecord drawable_offsets_proc;
static ProcRecord drawable_layer_proc;
static ProcRecord drawable_layer_mask_proc;
static ProcRecord drawable_channel_proc;
static ProcRecord drawable_is_layer_proc;
static ProcRecord drawable_is_layer_mask_proc;
static ProcRecord drawable_is_channel_proc;
static ProcRecord drawable_get_pixel_proc;
static ProcRecord drawable_set_pixel_proc;
static ProcRecord drawable_set_image_proc;
@ -68,9 +68,9 @@ register_drawable_procs (void)
procedural_db_register (&drawable_width_proc);
procedural_db_register (&drawable_height_proc);
procedural_db_register (&drawable_offsets_proc);
procedural_db_register (&drawable_layer_proc);
procedural_db_register (&drawable_layer_mask_proc);
procedural_db_register (&drawable_channel_proc);
procedural_db_register (&drawable_is_layer_proc);
procedural_db_register (&drawable_is_layer_mask_proc);
procedural_db_register (&drawable_is_channel_proc);
procedural_db_register (&drawable_get_pixel_proc);
procedural_db_register (&drawable_set_pixel_proc);
procedural_db_register (&drawable_set_image_proc);
@ -875,20 +875,20 @@ static ProcRecord drawable_offsets_proc =
};
static Argument *
drawable_layer_invoker (Argument *args)
drawable_is_layer_invoker (Argument *args)
{
Argument *return_args;
GimpDrawable *drawable;
drawable = gimp_drawable_get_ID (args[0].value.pdb_int);
return_args = procedural_db_return_args (&drawable_layer_proc, TRUE);
return_args = procedural_db_return_args (&drawable_is_layer_proc, TRUE);
return_args[1].value.pdb_int = drawable_layer (drawable) ? TRUE : FALSE;
return return_args;
}
static ProcArg drawable_layer_inargs[] =
static ProcArg drawable_is_layer_inargs[] =
{
{
PDB_DRAWABLE,
@ -897,7 +897,7 @@ static ProcArg drawable_layer_inargs[] =
}
};
static ProcArg drawable_layer_outargs[] =
static ProcArg drawable_is_layer_outargs[] =
{
{
PDB_INT32,
@ -906,9 +906,9 @@ static ProcArg drawable_layer_outargs[] =
}
};
static ProcRecord drawable_layer_proc =
static ProcRecord drawable_is_layer_proc =
{
"gimp_drawable_layer",
"gimp_drawable_is_layer",
"Returns whether the drawable is a layer.",
"This procedure returns non-zero if the specified drawable is a layer.",
"Spencer Kimball & Peter Mattis",
@ -916,27 +916,27 @@ static ProcRecord drawable_layer_proc =
"1995-1996",
PDB_INTERNAL,
1,
drawable_layer_inargs,
drawable_is_layer_inargs,
1,
drawable_layer_outargs,
{ { drawable_layer_invoker } }
drawable_is_layer_outargs,
{ { drawable_is_layer_invoker } }
};
static Argument *
drawable_layer_mask_invoker (Argument *args)
drawable_is_layer_mask_invoker (Argument *args)
{
Argument *return_args;
GimpDrawable *drawable;
drawable = gimp_drawable_get_ID (args[0].value.pdb_int);
return_args = procedural_db_return_args (&drawable_layer_mask_proc, TRUE);
return_args = procedural_db_return_args (&drawable_is_layer_mask_proc, TRUE);
return_args[1].value.pdb_int = drawable_layer_mask (drawable) ? TRUE : FALSE;
return return_args;
}
static ProcArg drawable_layer_mask_inargs[] =
static ProcArg drawable_is_layer_mask_inargs[] =
{
{
PDB_DRAWABLE,
@ -945,7 +945,7 @@ static ProcArg drawable_layer_mask_inargs[] =
}
};
static ProcArg drawable_layer_mask_outargs[] =
static ProcArg drawable_is_layer_mask_outargs[] =
{
{
PDB_INT32,
@ -954,9 +954,9 @@ static ProcArg drawable_layer_mask_outargs[] =
}
};
static ProcRecord drawable_layer_mask_proc =
static ProcRecord drawable_is_layer_mask_proc =
{
"gimp_drawable_layer_mask",
"gimp_drawable_is_layer_mask",
"Returns whether the drawable is a layer mask.",
"This procedure returns non-zero if the specified drawable is a layer mask.",
"Spencer Kimball & Peter Mattis",
@ -964,27 +964,27 @@ static ProcRecord drawable_layer_mask_proc =
"1995-1996",
PDB_INTERNAL,
1,
drawable_layer_mask_inargs,
drawable_is_layer_mask_inargs,
1,
drawable_layer_mask_outargs,
{ { drawable_layer_mask_invoker } }
drawable_is_layer_mask_outargs,
{ { drawable_is_layer_mask_invoker } }
};
static Argument *
drawable_channel_invoker (Argument *args)
drawable_is_channel_invoker (Argument *args)
{
Argument *return_args;
GimpDrawable *drawable;
drawable = gimp_drawable_get_ID (args[0].value.pdb_int);
return_args = procedural_db_return_args (&drawable_channel_proc, TRUE);
return_args = procedural_db_return_args (&drawable_is_channel_proc, TRUE);
return_args[1].value.pdb_int = drawable_channel (drawable) ? TRUE : FALSE;
return return_args;
}
static ProcArg drawable_channel_inargs[] =
static ProcArg drawable_is_channel_inargs[] =
{
{
PDB_DRAWABLE,
@ -993,7 +993,7 @@ static ProcArg drawable_channel_inargs[] =
}
};
static ProcArg drawable_channel_outargs[] =
static ProcArg drawable_is_channel_outargs[] =
{
{
PDB_INT32,
@ -1002,9 +1002,9 @@ static ProcArg drawable_channel_outargs[] =
}
};
static ProcRecord drawable_channel_proc =
static ProcRecord drawable_is_channel_proc =
{
"gimp_drawable_channel",
"gimp_drawable_is_channel",
"Returns whether the drawable is a channel.",
"This procedure returns non-zero if the specified drawable is a channel.",
"Spencer Kimball & Peter Mattis",
@ -1012,10 +1012,10 @@ static ProcRecord drawable_channel_proc =
"1995-1996",
PDB_INTERNAL,
1,
drawable_channel_inargs,
drawable_is_channel_inargs,
1,
drawable_channel_outargs,
{ { drawable_channel_invoker } }
drawable_is_channel_outargs,
{ { drawable_is_channel_invoker } }
};
static Argument *

View File

@ -47,11 +47,24 @@ procedural_db_init (void)
pdb_id_init ();
}
void
procedural_db_free_entry (gpointer key,
gpointer value,
gpointer user_data)
{
if (value)
g_list_free (value);
}
void
procedural_db_free (void)
{
if (procedural_ht)
g_hash_table_destroy (procedural_ht);
{
g_hash_table_foreach (procedural_ht, procedural_db_free_entry, NULL);
g_hash_table_destroy (procedural_ht);
}
procedural_ht = NULL;
}
@ -119,6 +132,16 @@ procedural_db_execute (gchar *name,
list = g_hash_table_lookup (procedural_ht, (gpointer) name);
if (list == NULL)
{
g_message (_("PDB calling error %s not found"), name);
return_args = (Argument *) g_malloc (sizeof (Argument));
return_args->arg_type = PDB_STATUS;
return_args->value.pdb_int = PDB_CALLING_ERROR;
return return_args;
}
while (list)
{
if ((procedure = (ProcRecord *) list->data) == NULL)

View File

@ -309,15 +309,15 @@ HELP
%invoke = ( code => 'drawable_offsets (drawable, &offset_x, &offset_y);' );
}
sub drawable_layer {
sub drawable_is_layer {
&drawable_is_proc('layer');
}
sub drawable_layer_mask {
sub drawable_is_layer_mask {
&drawable_is_proc('layer mask');
}
sub drawable_channel {
sub drawable_is_channel {
&drawable_is_proc('channel');
}
@ -509,8 +509,8 @@ CODE
drawable_mask_bounds drawable_image drawable_type
drawable_has_alpha drawable_type_with_alpha drawable_is_rgb
drawable_is_gray drawable_is_indexed drawable_bytes drawable_width
drawable_height drawable_offsets drawable_layer
drawable_layer_mask drawable_channel drawable_get_pixel
drawable_height drawable_offsets drawable_is_layer
drawable_is_layer_mask drawable_is_channel drawable_get_pixel
drawable_set_pixel drawable_set_image drawable_thumbnail);
%exports = (app => [@procs], lib => [@procs]);