diff options
Diffstat (limited to '')
-rw-r--r-- | pdb/groups/procedural_db.pdb | 521 |
1 files changed, 521 insertions, 0 deletions
diff --git a/pdb/groups/procedural_db.pdb b/pdb/groups/procedural_db.pdb new file mode 100644 index 0000000..91a426d --- /dev/null +++ b/pdb/groups/procedural_db.pdb @@ -0,0 +1,521 @@ +# GIMP - The GNU Image Manipulation Program +# Copyright (C) 1995 Spencer Kimball and Peter Mattis + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +# "Perlized" from C source by Manish Singh <yosh@gimp.org> + +sub procedural_db_temp_name { + $blurb = 'Generates a unique temporary PDB name.'; + + $help = <<'HELP'; +This procedure generates a temporary PDB entry name that is guaranteed to be +unique. +HELP + + &andy_pdb_misc('1998'); + + @outargs = ( + { name => 'temp_name', type => 'string', + desc => 'A unique temporary name for a temporary PDB entry' } + ); + + %invoke = ( + code => <<'CODE' +{ + static gint proc_number = 0; + + temp_name = g_strdup_printf ("temp-procedure-number-%d", proc_number++); +} +CODE + ); +} + +sub procedural_db_dump { + $blurb = 'Dumps the current contents of the procedural database'; + + $help = <<'HELP'; +This procedure dumps the contents of the procedural database to the specified +file. The file will contain all of the information provided for each registered +procedure. +HELP + + &std_pdb_misc; + $author = 'Spencer Kimball & Josh MacDonald'; + $copyright = $author . ' & Peter Mattis'; + + @inargs = ( + { name => 'filename', type => 'string', allow_non_utf8 => 1, + non_empty => 1, + desc => 'The dump filename' } + ); + + %invoke = ( + code => <<'CODE' +{ + GFile *file = g_file_new_for_path (filename); + + success = gimp_pdb_dump (gimp->pdb, file, error); + + g_object_unref (file); +} +CODE + ); +} + +sub procedural_db_query { + $blurb = <<'BLURB'; +Queries the procedural database for its contents using regular expression +matching. +BLURB + + $help = <<'HELP'; +This procedure queries the contents of the procedural database. It is supplied +with seven arguments matching procedures on { name, blurb, help, author, +copyright, date, procedure type}. This is accomplished using regular expression +matching. For instance, to find all procedures with "jpeg" listed in the blurb, +all seven arguments can be supplied as ".*", except for the second, which can +be supplied as ".*jpeg.*". There are two return arguments for this procedure. +The first is the number of procedures matching the query. The second is a +concatenated list of procedure names corresponding to those matching the query. +If no matching entries are found, then the returned string is NULL and the +number of entries is 0. +HELP + + &std_pdb_misc; + + @inargs = ( + { name => 'name', type => 'string', allow_non_utf8 => 1, + desc => 'The regex for procedure name' }, + { name => 'blurb', type => 'string', allow_non_utf8 => 1, + desc => 'The regex for procedure blurb' }, + { name => 'help', type => 'string', allow_non_utf8 => 1, + desc => 'The regex for procedure help' }, + { name => 'author', type => 'string', allow_non_utf8 => 1, + desc => 'The regex for procedure author' }, + { name => 'copyright', type => 'string', allow_non_utf8 => 1, + desc => 'The regex for procedure copyright' }, + { name => 'date', type => 'string', allow_non_utf8 => 1, + desc => 'The regex for procedure date' }, + { name => 'proc_type', type => 'string', allow_non_utf8 => 1, + desc => 'The regex for procedure type: { \'Internal GIMP procedure\', + \'GIMP Plug-in\', \'GIMP Extension\', + \'Temporary Procedure\' }' } + ); + + @outargs = ( + { name => 'procedure_names', type => 'stringarray', void_ret => 1, + desc => 'The list of procedure names', + array => { name => 'num_matches', + desc => 'The number of matching procedures' } } + ); + + %invoke = ( + code => <<CODE +{ + success = gimp_pdb_query (gimp->pdb, + name, blurb, help, author, + copyright, date, proc_type, + &num_matches, &procedure_names, + error); +} +CODE + ); +} + +sub procedural_db_proc_exists { + $blurb = <<'BLURB'; +Checks if the specified procedure exists in the procedural database +BLURB + + $help = <<'HELP'; +This procedure checks if the specified procedure is registered in the +procedural database. +HELP + + &neo_pdb_misc('2008', '2.6'); + + @inargs = ( + { name => 'procedure_name', type => 'string', non_empty => 1, + desc => 'The procedure name' } + ); + + @outargs = ( + { name => 'exists', type => 'boolean', + desc => 'Whether a procedure of that name is registered' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpProcedure *procedure; + gchar *canonical; + + canonical = gimp_canonicalize_identifier (procedure_name); + + procedure = gimp_pdb_lookup_procedure (gimp->pdb, canonical); + + if (! procedure) + { + procedure_name = gimp_pdb_lookup_compat_proc_name (gimp->pdb, canonical); + + if (procedure_name) + procedure = gimp_pdb_lookup_procedure (gimp->pdb, procedure_name); + } + + g_free (canonical); + + exists = (procedure != NULL); +} +CODE + ); +} + +sub procedural_db_proc_info { + $blurb = <<'BLURB'; +Queries the procedural database for information on the specified procedure. +BLURB + + $help = <<'HELP'; +This procedure returns information on the specified procedure. A short +blurb, detailed help, author(s), copyright information, procedure +type, number of input, and number of return values are returned. For +specific information on each input argument and return value, use the +gimp_procedural_db_proc_arg() and gimp_procedural_db_proc_val() +procedures. +HELP + + &std_pdb_misc; + $date = '1997'; + + @inargs = ( + { name => 'procedure_name', type => 'string', non_empty => 1, + desc => 'The procedure name' } + ); + + @outargs = ( + { name => 'blurb', type => 'string', void_ret => 1, wrap => 1, + desc => 'A short blurb' }, + { name => 'help', type => 'string', + desc => 'Detailed procedure help' }, + { name => 'author', type => 'string', + desc => 'Author(s) of the procedure' }, + { name => 'copyright', type => 'string', + desc => 'The copyright' }, + { name => 'date', type => 'string', + desc => 'Copyright date' }, + { name => 'proc_type', type => 'enum GimpPDBProcType', + desc => 'The procedure type' }, + { name => 'num_args', type => 'int32', + desc => 'The number of input arguments' }, + { name => 'num_values', type => 'int32', + desc => 'The number of return values' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPDBProcType ptype; + gchar *canonical; + + canonical = gimp_canonicalize_identifier (procedure_name); + + success = gimp_pdb_proc_info (gimp->pdb, canonical, + &blurb, &help, &author, + ©right, &date, &ptype, + &num_args, &num_values, + error); + proc_type = ptype; + + g_free (canonical); +} +CODE + ); +} + +sub procedural_db_proc_arg { + $blurb = <<BLURB; +Queries the procedural database for information on the specified procedure's +argument. +BLURB + + $help = <<HELP; +This procedure returns information on the specified procedure's argument. The +argument type, name, and a description are retrieved. +HELP + + &std_pdb_misc; + $date = '1997'; + + @inargs = ( + { name => 'procedure_name', type => 'string', non_empty => 1, + desc => 'The procedure name' }, + { name => 'arg_num', type => 'int32', + desc => 'The argument number' } + ); + + @outargs = ( + { name => 'arg_type', type => 'enum GimpPDBArgType (no GIMP_PDB_END)', + void_ret => 1, + desc => "The type of argument" }, + { name => 'arg_name', type => 'string', + desc => 'The name of the argument' }, + { name => 'arg_desc', type => 'string', + desc => 'A description of the argument' } + ); + + %invoke = ( + code => <<CODE +{ + GimpProcedure *proc; + gchar *canonical; + + canonical = gimp_canonicalize_identifier (procedure_name); + + proc = gimp_pdb_lookup_procedure (gimp->pdb, canonical); + + if (! proc) + { + const gchar *compat_name; + + compat_name = gimp_pdb_lookup_compat_proc_name (gimp->pdb, canonical); + + if (compat_name) + proc = gimp_pdb_lookup_procedure (gimp->pdb, compat_name); + } + + g_free (canonical); + + if (proc && (arg_num >= 0 && arg_num < proc->num_args)) + { + GParamSpec *pspec = proc->args[arg_num]; + + arg_type = gimp_pdb_compat_arg_type_from_gtype (G_PARAM_SPEC_VALUE_TYPE (pspec)); + arg_name = g_strdup (g_param_spec_get_name (pspec)); + arg_desc = gimp_param_spec_get_desc (pspec); + } + else + success = FALSE; +} +CODE + ); +} + +sub procedural_db_proc_val { + $blurb = <<BLURB; +Queries the procedural database for information on the specified procedure's +return value. +BLURB + + $help = <<HELP; +This procedure returns information on the specified procedure's return value. +The return value type, name, and a description are retrieved. +HELP + + &std_pdb_misc; + $date = '1997'; + + @inargs = ( + { name => 'procedure_name', type => 'string', non_empty => 1, + desc => 'The procedure name' }, + { name => 'val_num', type => 'int32', + desc => 'The return value number' } + ); + + @outargs = ( + { name => 'val_type', type => 'enum GimpPDBArgType (no GIMP_PDB_END)', + void_ret => 1, + desc => "The type of return value" }, + { name => 'val_name', type => 'string', + desc => 'The name of the return value' }, + { name => 'val_desc', type => 'string', + desc => 'A description of the return value' } + ); + + %invoke = ( + code => <<CODE +{ + GimpProcedure *proc; + gchar *canonical; + + canonical = gimp_canonicalize_identifier (procedure_name); + + proc = gimp_pdb_lookup_procedure (gimp->pdb, canonical); + + if (! proc) + { + const gchar *compat_name; + + compat_name = gimp_pdb_lookup_compat_proc_name (gimp->pdb, canonical); + + if (compat_name) + proc = gimp_pdb_lookup_procedure (gimp->pdb, compat_name); + } + + g_free (canonical); + + if (proc && (val_num >= 0 && val_num < proc->num_values)) + { + GParamSpec *pspec = proc->values[val_num]; + + val_type = gimp_pdb_compat_arg_type_from_gtype (G_PARAM_SPEC_VALUE_TYPE (pspec)); + val_name = g_strdup (g_param_spec_get_name (pspec)); + val_desc = gimp_param_spec_get_desc (pspec); + } + else + success = FALSE; +} +CODE + ); +} + +sub procedural_db_get_data { + $blurb = 'Returns data associated with the specified identifier.'; + + $help = <<'HELP'; +This procedure returns any data which may have been associated with the +specified identifier. The data is a variable length array of bytes. If no data +has been associated with the identifier, an error is returned. +HELP + + &std_pdb_misc; + $date = '1997'; + + @inargs = ( + { name => 'identifier', type => 'string', non_empty => 1, + desc => 'The identifier associated with data' } + ); + + @outargs = ( + { name => 'data', type => 'int8array', wrap => 1, void_ret => 1, + desc => 'A byte array containing data', + array => { name => 'bytes', type => '1 <= int32', + desc => 'The number of bytes in the data' } } + ); + + %invoke = ( + code => <<'CODE' +{ + gchar *canonical = gimp_canonicalize_identifier (identifier); + const guint8 *orig_data; + + orig_data = gimp_plug_in_manager_get_data (gimp->plug_in_manager, + canonical, &bytes); + + g_free (canonical); + + if (orig_data) + data = g_memdup (orig_data, bytes); + else + success = FALSE; +} +CODE + ); +} + +sub procedural_db_get_data_size { + $blurb = 'Returns size of data associated with the specified identifier.'; + + $help = <<'HELP'; +This procedure returns the size of any data which may have been associated with +the specified identifier. If no data has been associated with the identifier, +an error is returned. +HELP + + &nick_pdb_misc('1998'); + + @inargs = ( + { name => 'identifier', type => 'string', non_empty => 1, + desc => 'The identifier associated with data' } + ); + + @outargs = ( + { name => 'bytes', type => '1 <= int32', + desc => 'The number of bytes in the data' } + ); + + %invoke = ( + code => <<'CODE' +{ + gchar *canonical = gimp_canonicalize_identifier (identifier); + + if (! gimp_plug_in_manager_get_data (gimp->plug_in_manager, + canonical, &bytes)) + success = FALSE; + + g_free (canonical); +} +CODE + ); +} + +sub procedural_db_set_data { + $blurb = 'Associates the specified identifier with the supplied data.'; + + $help = <<'HELP'; +This procedure associates the supplied data with the provided identifier. The +data may be subsequently retrieved by a call to 'procedural-db-get-data'. +HELP + + &std_pdb_misc; + $date = '1997'; + + @inargs = ( + { name => 'identifier', type => 'string', non_empty => 1, + desc => 'The identifier associated with data' }, + { name => 'data', type => 'int8array', + desc => 'A byte array containing data', wrap => 1, + array => { name => 'bytes', type => '1 <= int32', + desc => 'The number of bytes in the data' } } + ); + + %invoke = ( + code => <<'CODE' +{ + gchar *canonical = gimp_canonicalize_identifier (identifier); + + gimp_plug_in_manager_set_data (gimp->plug_in_manager, + canonical, bytes, data); + + g_free (canonical); +} +CODE + ); +} + + +@headers = qw("libgimpbase/gimpbase.h" + "core/gimp.h" + "core/gimpparamspecs-desc.h" + "plug-in/gimppluginmanager-data.h" + "gimppdb-query.h" + "gimp-pdb-compat.h"); + +@procs = qw(procedural_db_temp_name + procedural_db_dump + procedural_db_query + procedural_db_proc_exists + procedural_db_proc_info + procedural_db_proc_arg procedural_db_proc_val + procedural_db_get_data procedural_db_get_data_size + procedural_db_set_data); + +%exports = (app => [@procs], lib => [@procs]); + +$desc = 'Procedural database'; +$doc_title = 'gimpproceduraldb'; +$doc_short_desc = 'Functions for querying and changing procedural database (PDB) entries.'; +$doc_long_desc = 'Functions for querying and changing procedural database (PDB) entries.'; + +1; |