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> Wed Oct 27 13:37:54 CEST 1999 Marc Lehmann <pcg@goof.com>
* gimp_parasite_find users where not updated to the new syntax * 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_width_proc;
static ProcRecord drawable_height_proc; static ProcRecord drawable_height_proc;
static ProcRecord drawable_offsets_proc; static ProcRecord drawable_offsets_proc;
static ProcRecord drawable_layer_proc; static ProcRecord drawable_is_layer_proc;
static ProcRecord drawable_layer_mask_proc; static ProcRecord drawable_is_layer_mask_proc;
static ProcRecord drawable_channel_proc; static ProcRecord drawable_is_channel_proc;
static ProcRecord drawable_get_pixel_proc; static ProcRecord drawable_get_pixel_proc;
static ProcRecord drawable_set_pixel_proc; static ProcRecord drawable_set_pixel_proc;
static ProcRecord drawable_set_image_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_width_proc);
procedural_db_register (&drawable_height_proc); procedural_db_register (&drawable_height_proc);
procedural_db_register (&drawable_offsets_proc); procedural_db_register (&drawable_offsets_proc);
procedural_db_register (&drawable_layer_proc); procedural_db_register (&drawable_is_layer_proc);
procedural_db_register (&drawable_layer_mask_proc); procedural_db_register (&drawable_is_layer_mask_proc);
procedural_db_register (&drawable_channel_proc); procedural_db_register (&drawable_is_channel_proc);
procedural_db_register (&drawable_get_pixel_proc); procedural_db_register (&drawable_get_pixel_proc);
procedural_db_register (&drawable_set_pixel_proc); procedural_db_register (&drawable_set_pixel_proc);
procedural_db_register (&drawable_set_image_proc); procedural_db_register (&drawable_set_image_proc);
@ -875,20 +875,20 @@ static ProcRecord drawable_offsets_proc =
}; };
static Argument * static Argument *
drawable_layer_invoker (Argument *args) drawable_is_layer_invoker (Argument *args)
{ {
Argument *return_args; Argument *return_args;
GimpDrawable *drawable; GimpDrawable *drawable;
drawable = gimp_drawable_get_ID (args[0].value.pdb_int); 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_args[1].value.pdb_int = drawable_layer (drawable) ? TRUE : FALSE;
return return_args; return return_args;
} }
static ProcArg drawable_layer_inargs[] = static ProcArg drawable_is_layer_inargs[] =
{ {
{ {
PDB_DRAWABLE, PDB_DRAWABLE,
@ -897,7 +897,7 @@ static ProcArg drawable_layer_inargs[] =
} }
}; };
static ProcArg drawable_layer_outargs[] = static ProcArg drawable_is_layer_outargs[] =
{ {
{ {
PDB_INT32, 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.", "Returns whether the drawable is a layer.",
"This procedure returns non-zero if the specified drawable is a layer.", "This procedure returns non-zero if the specified drawable is a layer.",
"Spencer Kimball & Peter Mattis", "Spencer Kimball & Peter Mattis",
@ -916,27 +916,27 @@ static ProcRecord drawable_layer_proc =
"1995-1996", "1995-1996",
PDB_INTERNAL, PDB_INTERNAL,
1, 1,
drawable_layer_inargs, drawable_is_layer_inargs,
1, 1,
drawable_layer_outargs, drawable_is_layer_outargs,
{ { drawable_layer_invoker } } { { drawable_is_layer_invoker } }
}; };
static Argument * static Argument *
drawable_layer_mask_invoker (Argument *args) drawable_is_layer_mask_invoker (Argument *args)
{ {
Argument *return_args; Argument *return_args;
GimpDrawable *drawable; GimpDrawable *drawable;
drawable = gimp_drawable_get_ID (args[0].value.pdb_int); 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_args[1].value.pdb_int = drawable_layer_mask (drawable) ? TRUE : FALSE;
return return_args; return return_args;
} }
static ProcArg drawable_layer_mask_inargs[] = static ProcArg drawable_is_layer_mask_inargs[] =
{ {
{ {
PDB_DRAWABLE, 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, 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.", "Returns whether the drawable is a layer mask.",
"This procedure returns non-zero if the specified drawable is a layer mask.", "This procedure returns non-zero if the specified drawable is a layer mask.",
"Spencer Kimball & Peter Mattis", "Spencer Kimball & Peter Mattis",
@ -964,27 +964,27 @@ static ProcRecord drawable_layer_mask_proc =
"1995-1996", "1995-1996",
PDB_INTERNAL, PDB_INTERNAL,
1, 1,
drawable_layer_mask_inargs, drawable_is_layer_mask_inargs,
1, 1,
drawable_layer_mask_outargs, drawable_is_layer_mask_outargs,
{ { drawable_layer_mask_invoker } } { { drawable_is_layer_mask_invoker } }
}; };
static Argument * static Argument *
drawable_channel_invoker (Argument *args) drawable_is_channel_invoker (Argument *args)
{ {
Argument *return_args; Argument *return_args;
GimpDrawable *drawable; GimpDrawable *drawable;
drawable = gimp_drawable_get_ID (args[0].value.pdb_int); 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_args[1].value.pdb_int = drawable_channel (drawable) ? TRUE : FALSE;
return return_args; return return_args;
} }
static ProcArg drawable_channel_inargs[] = static ProcArg drawable_is_channel_inargs[] =
{ {
{ {
PDB_DRAWABLE, PDB_DRAWABLE,
@ -993,7 +993,7 @@ static ProcArg drawable_channel_inargs[] =
} }
}; };
static ProcArg drawable_channel_outargs[] = static ProcArg drawable_is_channel_outargs[] =
{ {
{ {
PDB_INT32, 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.", "Returns whether the drawable is a channel.",
"This procedure returns non-zero if the specified drawable is a channel.", "This procedure returns non-zero if the specified drawable is a channel.",
"Spencer Kimball & Peter Mattis", "Spencer Kimball & Peter Mattis",
@ -1012,10 +1012,10 @@ static ProcRecord drawable_channel_proc =
"1995-1996", "1995-1996",
PDB_INTERNAL, PDB_INTERNAL,
1, 1,
drawable_channel_inargs, drawable_is_channel_inargs,
1, 1,
drawable_channel_outargs, drawable_is_channel_outargs,
{ { drawable_channel_invoker } } { { drawable_is_channel_invoker } }
}; };
static Argument * static Argument *

View File

@ -47,11 +47,24 @@ procedural_db_init (void)
pdb_id_init (); pdb_id_init ();
} }
void
procedural_db_free_entry (gpointer key,
gpointer value,
gpointer user_data)
{
if (value)
g_list_free (value);
}
void void
procedural_db_free (void) procedural_db_free (void)
{ {
if (procedural_ht) 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; procedural_ht = NULL;
} }
@ -119,6 +132,16 @@ procedural_db_execute (gchar *name,
list = g_hash_table_lookup (procedural_ht, (gpointer) 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) while (list)
{ {
if ((procedure = (ProcRecord *) list->data) == NULL) if ((procedure = (ProcRecord *) list->data) == NULL)

View File

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