app/plug_in.c libgimp/gimp.c libgimpbase/gimpbasetypes.h

* app/plug_in.c
 	* libgimp/gimp.c
	* libgimpbase/gimpbasetypes.h
 	* libgimpbase/gimpprotocol.c
 	* libgimpbase/gimpprotocol.h
 	* tools/pdbgen/pdb/palette.pdb: added preliminary pdb support to
 	manipulate palettes.  Incremented plugin interface version number.

 	* app/pdb/internal_procs.c
 	* app/pdb/palette_cmds.c
 	* app/pdb/procedural_db.c
	* app/pdb/procedural_db_cmds.c
	* libgimp/gimppalette_pdb.c
	* libgimp/gimppalette_pdb.h
 	* plug-ins/script-fu/script-fu-constants.c
 	* tools/pdbgen/enums.pl: regenerated
This commit is contained in:
Nate Summers 2001-10-28 00:53:42 +00:00
parent ce76701406
commit 6ffaf7317c
36 changed files with 764 additions and 41 deletions

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -291,6 +291,8 @@ procedural_db_run_proc (Gimp *gimp,
case GIMP_PDB_STATUS:
params[i].value.pdb_int = (gint32) va_arg (args, gint);
break;
case GIMP_PDB_PALETTE:
params[i].value.pdb_pointer = va_arg (args, gpointer);
case GIMP_PDB_END:
break;
}
@ -384,6 +386,7 @@ procedural_db_destroy_args (Argument *args,
case GIMP_PDB_PATH:
case GIMP_PDB_PARASITE:
case GIMP_PDB_STATUS:
case GIMP_PDB_PALETTE:
case GIMP_PDB_END:
break;
}

View File

@ -291,6 +291,8 @@ procedural_db_run_proc (Gimp *gimp,
case GIMP_PDB_STATUS:
params[i].value.pdb_int = (gint32) va_arg (args, gint);
break;
case GIMP_PDB_PALETTE:
params[i].value.pdb_pointer = va_arg (args, gpointer);
case GIMP_PDB_END:
break;
}
@ -384,6 +386,7 @@ procedural_db_destroy_args (Argument *args,
case GIMP_PDB_PATH:
case GIMP_PDB_PARASITE:
case GIMP_PDB_STATUS:
case GIMP_PDB_PALETTE:
case GIMP_PDB_END:
break;
}

View File

@ -291,6 +291,8 @@ procedural_db_run_proc (Gimp *gimp,
case GIMP_PDB_STATUS:
params[i].value.pdb_int = (gint32) va_arg (args, gint);
break;
case GIMP_PDB_PALETTE:
params[i].value.pdb_pointer = va_arg (args, gpointer);
case GIMP_PDB_END:
break;
}
@ -384,6 +386,7 @@ procedural_db_destroy_args (Argument *args,
case GIMP_PDB_PATH:
case GIMP_PDB_PARASITE:
case GIMP_PDB_STATUS:
case GIMP_PDB_PALETTE:
case GIMP_PDB_END:
break;
}

View File

@ -63,7 +63,7 @@ void register_tools_procs (Gimp *gimp);
void register_undo_procs (Gimp *gimp);
void register_unit_procs (Gimp *gimp);
/* 326 procedures registered total */
/* 330 procedures registered total */
void
internal_procs_init (Gimp *gimp,
@ -78,94 +78,94 @@ internal_procs_init (Gimp *gimp,
(* status_callback) (NULL, _("Brushes"), 0.009);
register_brushes_procs (gimp);
(* status_callback) (NULL, _("Channel"), 0.043);
(* status_callback) (NULL, _("Channel"), 0.042);
register_channel_procs (gimp);
(* status_callback) (NULL, _("Color"), 0.092);
(* status_callback) (NULL, _("Color"), 0.091);
register_color_procs (gimp);
(* status_callback) (NULL, _("Convert"), 0.129);
(* status_callback) (NULL, _("Convert"), 0.127);
register_convert_procs (gimp);
(* status_callback) (NULL, _("GimpDisplay procedures"), 0.138);
(* status_callback) (NULL, _("GimpDisplay procedures"), 0.136);
register_display_procs (gimp);
(* status_callback) (NULL, _("Drawable procedures"), 0.147);
(* status_callback) (NULL, _("Drawable procedures"), 0.145);
register_drawable_procs (gimp);
(* status_callback) (NULL, _("Edit procedures"), 0.218);
(* status_callback) (NULL, _("Edit procedures"), 0.215);
register_edit_procs (gimp);
(* status_callback) (NULL, _("File Operations"), 0.236);
(* status_callback) (NULL, _("File Operations"), 0.233);
register_fileops_procs (gimp);
(* status_callback) (NULL, _("Floating selections"), 0.261);
(* status_callback) (NULL, _("Floating selections"), 0.258);
register_floating_sel_procs (gimp);
(* status_callback) (NULL, _("Gimprc procedures"), 0.279);
(* status_callback) (NULL, _("Gimprc procedures"), 0.276);
register_gimprc_procs (gimp);
(* status_callback) (NULL, _("Gradients"), 0.291);
(* status_callback) (NULL, _("Gradients"), 0.288);
register_gradients_procs (gimp);
(* status_callback) (NULL, _("Gradient UI"), 0.31);
(* status_callback) (NULL, _("Gradient UI"), 0.306);
register_gradient_select_procs (gimp);
(* status_callback) (NULL, _("Guide procedures"), 0.319);
(* status_callback) (NULL, _("Guide procedures"), 0.315);
register_guides_procs (gimp);
(* status_callback) (NULL, _("Help procedures"), 0.337);
(* status_callback) (NULL, _("Help procedures"), 0.333);
register_help_procs (gimp);
(* status_callback) (NULL, _("Image"), 0.34);
(* status_callback) (NULL, _("Image"), 0.336);
register_image_procs (gimp);
(* status_callback) (NULL, _("Layer"), 0.528);
(* status_callback) (NULL, _("Layer"), 0.521);
register_layer_procs (gimp);
(* status_callback) (NULL, _("Interface"), 0.623);
(* status_callback) (NULL, _("Interface"), 0.615);
register_message_procs (gimp);
(* status_callback) (NULL, _("Miscellaneous"), 0.632);
(* status_callback) (NULL, _("Miscellaneous"), 0.624);
register_misc_procs (gimp);
(* status_callback) (NULL, _("Palette"), 0.638);
(* status_callback) (NULL, _("Palette"), 0.63);
register_palette_procs (gimp);
(* status_callback) (NULL, _("Parasite procedures"), 0.66);
(* status_callback) (NULL, _("Parasite procedures"), 0.664);
register_parasite_procs (gimp);
(* status_callback) (NULL, _("Paths"), 0.696);
(* status_callback) (NULL, _("Paths"), 0.7);
register_paths_procs (gimp);
(* status_callback) (NULL, _("Pattern UI"), 0.736);
(* status_callback) (NULL, _("Pattern UI"), 0.739);
register_pattern_select_procs (gimp);
(* status_callback) (NULL, _("Patterns"), 0.745);
(* status_callback) (NULL, _("Patterns"), 0.748);
register_patterns_procs (gimp);
(* status_callback) (NULL, _("Plug-in"), 0.758);
(* status_callback) (NULL, _("Plug-in"), 0.761);
register_plug_in_procs (gimp);
(* status_callback) (NULL, _("Procedural database"), 0.776);
(* status_callback) (NULL, _("Procedural database"), 0.779);
register_procedural_db_procs (gimp);
(* status_callback) (NULL, _("Image mask"), 0.801);
(* status_callback) (NULL, _("Image mask"), 0.803);
register_selection_procs (gimp);
(* status_callback) (NULL, _("Selection Tool procedures"), 0.856);
(* status_callback) (NULL, _("Selection Tool procedures"), 0.858);
register_selection_tools_procs (gimp);
(* status_callback) (NULL, _("Text procedures"), 0.871);
(* status_callback) (NULL, _("Text procedures"), 0.873);
register_text_tool_procs (gimp);
(* status_callback) (NULL, _("Tool procedures"), 0.883);
(* status_callback) (NULL, _("Tool procedures"), 0.885);
register_tools_procs (gimp);
(* status_callback) (NULL, _("Undo"), 0.957);
(* status_callback) (NULL, _("Undo"), 0.958);
register_undo_procs (gimp);
(* status_callback) (NULL, _("Units"), 0.963);
(* status_callback) (NULL, _("Units"), 0.964);
register_unit_procs (gimp);
}

View File

@ -31,6 +31,8 @@
#include "core/gimp.h"
#include "core/gimpcontext.h"
#include "core/gimpdatafactory.h"
#include "core/gimplist.h"
#include "core/gimppalette.h"
#include "libgimpcolor/gimpcolor.h"
@ -41,6 +43,10 @@ static ProcRecord palette_set_background_proc;
static ProcRecord palette_set_default_colors_proc;
static ProcRecord palette_swap_colors_proc;
static ProcRecord palette_refresh_proc;
static ProcRecord palette_list_proc;
static ProcRecord palette_get_palette_proc;
static ProcRecord palette_set_palette_proc;
static ProcRecord palette_get_entry_proc;
void
register_palette_procs (Gimp *gimp)
@ -52,6 +58,10 @@ register_palette_procs (Gimp *gimp)
procedural_db_register (gimp, &palette_set_default_colors_proc);
procedural_db_register (gimp, &palette_swap_colors_proc);
procedural_db_register (gimp, &palette_refresh_proc);
procedural_db_register (gimp, &palette_list_proc);
procedural_db_register (gimp, &palette_get_palette_proc);
procedural_db_register (gimp, &palette_set_palette_proc);
procedural_db_register (gimp, &palette_get_entry_proc);
}
static Argument *
@ -293,3 +303,241 @@ static ProcRecord palette_refresh_proc =
NULL,
{ { palette_refresh_invoker } }
};
static Argument *
palette_list_invoker (Gimp *gimp,
Argument *args)
{
gboolean success = TRUE;
Argument *return_args;
gchar **palettes;
GList *list = NULL;
gint i = 0;
palettes = g_new (gchar *, gimp->palette_factory->container->num_children);
success = ((list = GIMP_LIST (gimp->palette_factory->container)->list) != NULL);
while (list)
{
palettes[i++] = g_strdup (GIMP_OBJECT (list->data)->name);
list = list->next;
}
return_args = procedural_db_return_args (&palette_list_proc, success);
if (success)
{
return_args[1].value.pdb_int = gimp->palette_factory->container->num_children;
return_args[2].value.pdb_pointer = palettes;
}
return return_args;
}
static ProcArg palette_list_outargs[] =
{
{
GIMP_PDB_INT32,
"num_palettes",
"The number of palettes in the list"
},
{
GIMP_PDB_STRINGARRAY,
"palette_list",
"The list of palette names"
}
};
static ProcRecord palette_list_proc =
{
"gimp_palette_list",
"Retrieves a list of all of the available patterns",
"This procedure returns a complete listing of available palettes. Each name returned can be used as input to the command 'gimp_palette_set_palette'.",
"Nathan Summers <rock@gimp.org>",
"Nathan Summers",
"2001",
GIMP_INTERNAL,
0,
NULL,
2,
palette_list_outargs,
{ { palette_list_invoker } }
};
static Argument *
palette_get_palette_invoker (Gimp *gimp,
Argument *args)
{
gboolean success = TRUE;
Argument *return_args;
GimpPalette *palette;
success = (palette = gimp_context_get_palette (gimp_get_current_context (gimp))) != NULL;
return_args = procedural_db_return_args (&palette_get_palette_proc, success);
if (success)
{
return_args[1].value.pdb_pointer = g_strdup (GIMP_OBJECT (palette)->name);
return_args[2].value.pdb_int = palette->n_colors;
}
return return_args;
}
static ProcArg palette_get_palette_outargs[] =
{
{
GIMP_PDB_STRING,
"name",
"The palette name"
},
{
GIMP_PDB_INT32,
"num_colors",
"The palette num_colors"
}
};
static ProcRecord palette_get_palette_proc =
{
"gimp_palette_get_palette",
"Retrieve information about the currently active palette.",
"This procedure retrieves information about the currently active palette. This includes the name, and the number of colors.",
"Nathan Summers <rock@gimp.org>",
"Nathan Summers",
"2001",
GIMP_INTERNAL,
0,
NULL,
2,
palette_get_palette_outargs,
{ { palette_get_palette_invoker } }
};
static Argument *
palette_set_palette_invoker (Gimp *gimp,
Argument *args)
{
gboolean success = TRUE;
gchar *name;
GimpPalette *palette;
GList *list;
name = (gchar *) args[0].value.pdb_pointer;
if (name == NULL)
success = FALSE;
if (success)
{
success = FALSE;
for (list = GIMP_LIST (gimp->palette_factory->container)->list;
list;
list = g_list_next (list))
{
palette = (GimpPalette *) list->data;
if (! strcmp (GIMP_OBJECT (palette)->name, name))
{
gimp_context_set_palette (gimp_get_current_context (gimp), palette);
success = TRUE;
break;
}
}
}
return procedural_db_return_args (&palette_set_palette_proc, success);
}
static ProcArg palette_set_palette_inargs[] =
{
{
GIMP_PDB_STRING,
"name",
"The palette name"
}
};
static ProcRecord palette_set_palette_proc =
{
"gimp_palette_set_palette",
"Set the specified palette as the active palette.",
"This procedure allows the active palette to be set by specifying its name. The name is simply a string which corresponds to one of the names of the installed palettes. If no matching palette is found, this procedure will return an error. Otherwise, the specified palette becomes active and will be used in all subsequent palette operations.",
"Nathan Summers <rock@gimp.org>",
"Nathan Summers",
"2001",
GIMP_INTERNAL,
1,
palette_set_palette_inargs,
0,
NULL,
{ { palette_set_palette_invoker } }
};
static Argument *
palette_get_entry_invoker (Gimp *gimp,
Argument *args)
{
gboolean success = TRUE;
Argument *return_args;
gint32 entry;
GimpRGB color;
GimpPalette *palette;
entry = args[0].value.pdb_int;
success = TRUE;
palette = gimp_context_get_palette (gimp_get_current_context(gimp));
if (entry >= palette->n_colors) {
success = FALSE;
}
else
{
color=*(GimpRGB *) g_list_nth(palette->colors, entry)->data;
}
return_args = procedural_db_return_args (&palette_get_entry_proc, success);
if (success)
return_args[1].value.pdb_color = color;
return return_args;
}
static ProcArg palette_get_entry_inargs[] =
{
{
GIMP_PDB_INT32,
"entry_num",
"The entry to retrieve"
}
};
static ProcArg palette_get_entry_outargs[] =
{
{
GIMP_PDB_COLOR,
"color",
"The color requested"
}
};
static ProcRecord palette_get_entry_proc =
{
"gimp_palette_get_entry",
"Gets the specified palette entry from the currently active pallette.",
"This procedure returns the color of the zero-based entry specifed for the current palette. It returns an error if the entry does not exist.",
"Nathan Summers <rock@gimp.org>",
"Nathan Summers",
"2001",
GIMP_INTERNAL,
1,
palette_get_entry_inargs,
1,
palette_get_entry_outargs,
{ { palette_get_entry_invoker } }
};

View File

@ -291,6 +291,8 @@ procedural_db_run_proc (Gimp *gimp,
case GIMP_PDB_STATUS:
params[i].value.pdb_int = (gint32) va_arg (args, gint);
break;
case GIMP_PDB_PALETTE:
params[i].value.pdb_pointer = va_arg (args, gpointer);
case GIMP_PDB_END:
break;
}
@ -384,6 +386,7 @@ procedural_db_destroy_args (Argument *args,
case GIMP_PDB_PATH:
case GIMP_PDB_PARASITE:
case GIMP_PDB_STATUS:
case GIMP_PDB_PALETTE:
case GIMP_PDB_END:
break;
}

View File

@ -103,6 +103,7 @@ static const gchar * const type_str[] =
"GIMP_PDB_BOUNDARY",
"GIMP_PDB_PATH",
"GIMP_PDB_PARASITE",
"GIMP_PDB_PALETTE",
"GIMP_PDB_STATUS",
"GIMP_PDB_END"
};
@ -629,7 +630,7 @@ static ProcArg procedural_db_proc_arg_outargs[] =
{
GIMP_PDB_INT32,
"arg_type",
"The type of argument { PDB_INT32 (0), PDB_INT16 (1), PDB_INT8 (2), PDB_FLOAT (3), PDB_STRING (4), PDB_INT32ARRAY (5), PDB_INT16ARRAY (6), PDB_INT8ARRAY (7), PDB_FLOATARRAY (8), PDB_STRINGARRAY (9), PDB_COLOR (10), PDB_REGION (11), PDB_DISPLAY (12), PDB_IMAGE (13), PDB_LAYER (14), PDB_CHANNEL (15), PDB_DRAWABLE (16), PDB_SELECTION (17), PDB_BOUNDARY (18), PDB_PATH (19), PDB_PARASITE (20), PDB_STATUS (21) }"
"The type of argument { PDB_INT32 (0), PDB_INT16 (1), PDB_INT8 (2), PDB_FLOAT (3), PDB_STRING (4), PDB_INT32ARRAY (5), PDB_INT16ARRAY (6), PDB_INT8ARRAY (7), PDB_FLOATARRAY (8), PDB_STRINGARRAY (9), PDB_COLOR (10), PDB_REGION (11), PDB_DISPLAY (12), PDB_IMAGE (13), PDB_LAYER (14), PDB_CHANNEL (15), PDB_DRAWABLE (16), PDB_SELECTION (17), PDB_BOUNDARY (18), PDB_PATH (19), PDB_PARASITE (20), PDB_PALETTE (21), PDB_STATUS (22) }"
},
{
GIMP_PDB_STRING,
@ -716,7 +717,7 @@ static ProcArg procedural_db_proc_val_outargs[] =
{
GIMP_PDB_INT32,
"val_type",
"The type of return value { PDB_INT32 (0), PDB_INT16 (1), PDB_INT8 (2), PDB_FLOAT (3), PDB_STRING (4), PDB_INT32ARRAY (5), PDB_INT16ARRAY (6), PDB_INT8ARRAY (7), PDB_FLOATARRAY (8), PDB_STRINGARRAY (9), PDB_COLOR (10), PDB_REGION (11), PDB_DISPLAY (12), PDB_IMAGE (13), PDB_LAYER (14), PDB_CHANNEL (15), PDB_DRAWABLE (16), PDB_SELECTION (17), PDB_BOUNDARY (18), PDB_PATH (19), PDB_PARASITE (20), PDB_STATUS (21) }"
"The type of return value { PDB_INT32 (0), PDB_INT16 (1), PDB_INT8 (2), PDB_FLOAT (3), PDB_STRING (4), PDB_INT32ARRAY (5), PDB_INT16ARRAY (6), PDB_INT8ARRAY (7), PDB_FLOATARRAY (8), PDB_STRINGARRAY (9), PDB_COLOR (10), PDB_REGION (11), PDB_DISPLAY (12), PDB_IMAGE (13), PDB_LAYER (14), PDB_CHANNEL (15), PDB_DRAWABLE (16), PDB_SELECTION (17), PDB_BOUNDARY (18), PDB_PATH (19), PDB_PARASITE (20), PDB_PALETTE (21), PDB_STATUS (22) }"
},
{
GIMP_PDB_STRING,

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -3154,6 +3154,8 @@ plug_in_params_to_args (GPParam *params,
else
args[i].value.pdb_pointer = (gpointer) &(params[i].data.d_parasite);
break;
case GIMP_PDB_PALETTE:
args[i].value.pdb_int = params[i].data.d_palette;
case GIMP_PDB_STATUS:
args[i].value.pdb_int = params[i].data.d_status;
break;
@ -3334,6 +3336,8 @@ plug_in_args_to_params (Argument *args,
sizeof (GimpParasite));
}
break;
case GIMP_PDB_PALETTE:
params[i].data.d_palette = args[i].value.pdb_int;
case GIMP_PDB_STATUS:
params[i].data.d_status = args[i].value.pdb_int;
break;
@ -3413,6 +3417,7 @@ plug_in_params_destroy (GPParam *params,
params[i].data.d_parasite.data = 0;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:
@ -3494,6 +3499,7 @@ plug_in_args_destroy (Argument *args,
args[i].value.pdb_pointer = NULL;
}
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_END:

View File

@ -453,6 +453,7 @@ gimp_run_procedure (gchar *name,
case GIMP_PDB_SELECTION:
case GIMP_PDB_BOUNDARY:
case GIMP_PDB_PATH:
case GIMP_PDB_PALETTE:
case GIMP_PDB_STATUS:
(void) va_arg (args, gint);
break;

View File

@ -237,3 +237,141 @@ gimp_palette_refresh (void)
return success;
}
/**
* gimp_palette_list:
* @num_palettes: The number of palettes in the list.
*
* Retrieves a list of all of the available patterns
*
* This procedure returns a complete listing of available palettes.
* Each name returned can be used as input to the command
* 'gimp_palette_set_palette'.
*
* Returns: The list of palette names.
*/
gchar **
gimp_palette_list (gint *num_palettes)
{
GimpParam *return_vals;
gint nreturn_vals;
gchar **palette_list = NULL;
gint i;
return_vals = gimp_run_procedure ("gimp_palette_list",
&nreturn_vals,
GIMP_PDB_END);
*num_palettes = 0;
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
{
*num_palettes = return_vals[1].data.d_int32;
palette_list = g_new (gchar *, *num_palettes);
for (i = 0; i < *num_palettes; i++)
palette_list[i] = g_strdup (return_vals[2].data.d_stringarray[i]);
}
gimp_destroy_params (return_vals, nreturn_vals);
return palette_list;
}
/**
* gimp_palette_get_palette:
* @num_colors: The palette num_colors.
*
* Retrieve information about the currently active palette.
*
* This procedure retrieves information about the currently active
* palette. This includes the name, and the number of colors.
*
* Returns: The palette name.
*/
gchar *
gimp_palette_get_palette (gint *num_colors)
{
GimpParam *return_vals;
gint nreturn_vals;
gchar *name = NULL;
return_vals = gimp_run_procedure ("gimp_palette_get_palette",
&nreturn_vals,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
{
name = g_strdup (return_vals[1].data.d_string);
*num_colors = return_vals[2].data.d_int32;
}
gimp_destroy_params (return_vals, nreturn_vals);
return name;
}
/**
* gimp_palette_set_palette:
* @name: The palette name.
*
* Set the specified palette as the active palette.
*
* This procedure allows the active palette to be set by specifying its
* name. The name is simply a string which corresponds to one of the
* names of the installed palettes. If no matching palette is found,
* this procedure will return an error. Otherwise, the specified
* palette becomes active and will be used in all subsequent palette
* operations.
*
* Returns: TRUE on success.
*/
gboolean
gimp_palette_set_palette (gchar *name)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp_palette_set_palette",
&nreturn_vals,
GIMP_PDB_STRING, name,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_palette_get_entry:
* @entry_num: The entry to retrieve.
*
* Gets the specified palette entry from the currently active pallette.
*
* This procedure returns the color of the zero-based entry specifed
* for the current palette. It returns an error if the entry does not
* exist.
*
* Returns: The color requested.
*/
GimpRGB *
gimp_palette_get_entry (gint entry_num)
{
GimpParam *return_vals;
gint nreturn_vals;
GimpRGB *color = 0;
return_vals = gimp_run_procedure ("gimp_palette_get_entry",
&nreturn_vals,
GIMP_PDB_INT32, entry_num,
GIMP_PDB_END);
if (return_vals[0].data.d_status == GIMP_PDB_SUCCESS)
color = return_vals[1].data.d_color;
gimp_destroy_params (return_vals, nreturn_vals);
return color;
}

View File

@ -38,6 +38,10 @@ gboolean gimp_palette_set_background (GimpRGB *background);
gboolean gimp_palette_set_default_colors (void);
gboolean gimp_palette_swap_colors (void);
gboolean gimp_palette_refresh (void);
gchar** gimp_palette_list (gint *num_palettes);
gchar* gimp_palette_get_palette (gint *num_colors);
gboolean gimp_palette_set_palette (gchar *name);
GimpRGB* gimp_palette_get_entry (gint entry_num);
#ifdef __cplusplus

View File

@ -71,6 +71,7 @@ typedef enum /*< chop=GIMP_ >*/
GIMP_PDB_BOUNDARY,
GIMP_PDB_PATH,
GIMP_PDB_PARASITE,
GIMP_PDB_PALETTE,
GIMP_PDB_STATUS,
GIMP_PDB_END
} GimpPDBArgType;

View File

@ -1177,6 +1177,11 @@ _gp_params_read (GIOChannel *channel,
goto cleanup;
break;
case GIMP_PDB_PALETTE:
if (!wire_read_int32 (channel, (guint32*) &(*params)[i].data.d_palette, 1))
goto cleanup;
break;
case GIMP_PDB_END:
break;
}
@ -1341,6 +1346,11 @@ _gp_params_write (GIOChannel *channel,
}
}
break;
case GIMP_PDB_PALETTE:
if (!wire_write_int32 (channel, (guint32*) &params[i].data.d_palette, 1))
return;
break;
case GIMP_PDB_STATUS:
if (!wire_write_int32 (channel, (guint32*) &params[i].data.d_status, 1))
@ -1418,6 +1428,7 @@ _gp_params_destroy (GPParam *params,
g_free(params[i].data.d_parasite.data);
break;
case GIMP_PDB_PALETTE:
case GIMP_PDB_END:
break;
}

View File

@ -29,7 +29,7 @@ extern "C" {
/* Increment every time the protocol changes
*/
#define GP_VERSION 0x0009
#define GP_VERSION 0x000A
enum
@ -132,6 +132,7 @@ struct _GPParam
guint32 size;
gpointer data;
} d_parasite;
gint32 d_palette;
gint32 d_status;
} data;
};

View File

@ -127,8 +127,9 @@ init_generated_constants (void)
setvar (cintern ("PDB-BOUNDARY"), flocons (18), NIL);
setvar (cintern ("PDB-PATH"), flocons (19), NIL);
setvar (cintern ("PDB-PARASITE"), flocons (20), NIL);
setvar (cintern ("PDB-STATUS"), flocons (21), NIL);
setvar (cintern ("PDB-END"), flocons (22), NIL);
setvar (cintern ("PDB-PALETTE"), flocons (21), NIL);
setvar (cintern ("PDB-STATUS"), flocons (22), NIL);
setvar (cintern ("PDB-END"), flocons (23), NIL);
setvar (cintern ("INTERNAL"), flocons (0), NIL);
setvar (cintern ("PLUGIN"), flocons (1), NIL);

View File

@ -49,7 +49,7 @@ package Gimp::CodeGen::enums;
GIMP_PDB_IMAGE GIMP_PDB_LAYER GIMP_PDB_CHANNEL
GIMP_PDB_DRAWABLE GIMP_PDB_SELECTION
GIMP_PDB_BOUNDARY GIMP_PDB_PATH GIMP_PDB_PARASITE
GIMP_PDB_STATUS GIMP_PDB_END) ],
GIMP_PDB_PALETTE GIMP_PDB_STATUS GIMP_PDB_END) ],
mapping => { GIMP_PDB_INT32 => '0',
GIMP_PDB_INT16 => '1',
GIMP_PDB_INT8 => '2',
@ -71,8 +71,9 @@ package Gimp::CodeGen::enums;
GIMP_PDB_BOUNDARY => '18',
GIMP_PDB_PATH => '19',
GIMP_PDB_PARASITE => '20',
GIMP_PDB_STATUS => '21',
GIMP_PDB_END => '22' },
GIMP_PDB_PALETTE => '21',
GIMP_PDB_STATUS => '22',
GIMP_PDB_END => '23' },
nicks => { GIMP_PDB_INT32 => 'PDB_INT32',
GIMP_PDB_INT16 => 'PDB_INT16',
GIMP_PDB_INT8 => 'PDB_INT8',
@ -94,6 +95,7 @@ package Gimp::CodeGen::enums;
GIMP_PDB_BOUNDARY => 'PDB_BOUNDARY',
GIMP_PDB_PATH => 'PDB_PATH',
GIMP_PDB_PARASITE => 'PDB_PARASITE',
GIMP_PDB_PALETTE => 'PDB_PALETTE',
GIMP_PDB_STATUS => 'PDB_STATUS',
GIMP_PDB_END => 'PDB_END' }
},

View File

@ -21,6 +21,35 @@ sub color_blurb {
$blurb = "@{[shift]} the current GIMP @{[shift]}ground color.";
}
sub palette_arg () {{
name => 'name',
type => 'string',
desc => 'The palette name'
}}
sub dim_args () {
my @args;
foreach (qw(num_colors)) {
push @args, { name => $_, type => 'int32', desc => "The palette $_" };
}
@args;
}
sub palette_outargs {
foreach (@outargs) {
my $alias;
if ($_->{type} eq 'string') {
$alias = "GIMP_OBJECT (palette)->$_->{name}";
} else {
$alias = "palette->$_->{name}";
}
$alias = "g_strdup ($alias)" if $_->{type} eq 'string';
$alias =~ s/num_colors/n_colors/ if $_->{name} =~ /num_colors/;
$_->{alias} = $alias;
$_->{no_declare} = 1;
}
}
sub color_arg {
my $ground = (shift) . "ground";
{
@ -166,13 +195,167 @@ CODE
);
}
sub palette_list {
$blurb = 'Retrieves a list of all of the available patterns';
$help = <<'HELP';
This procedure returns a complete listing of available palettes. Each name
returned can be used as input to the command 'gimp_palette_set_palette'.
HELP
$author = 'Nathan Summers <rock@gimp.org>';
$copyright = 'Nathan Summers';
$date = '2001';
@outargs = (
{ name => 'palette_list', type => 'stringarray',
desc => 'The list of palette names',
alias => 'palettes',
array => { name => 'num_palettes',
desc => 'The number of palettes in the list',
alias => 'gimp->palette_factory->container->num_children', no_declare => 1 } }
);
%invoke = (
vars => [ 'GList *list = NULL', 'gint i = 0' ],
code => <<'CODE'
{
palettes = g_new (gchar *, gimp->palette_factory->container->num_children);
success = ((list = GIMP_LIST (gimp->palette_factory->container)->list) != NULL);
while (list)
{
palettes[i++] = g_strdup (GIMP_OBJECT (list->data)->name);
list = list->next;
}
}
CODE
);
}
sub palette_get_palette {
$blurb = 'Retrieve information about the currently active palette.';
$help = <<'HELP';
This procedure retrieves information about the currently active palette. This
includes the name, and the number of colors.
HELP
$author = 'Nathan Summers <rock@gimp.org>';
$copyright = 'Nathan Summers';
$date = '2001';
@outargs = (
&palette_arg,
&dim_args,
);
&palette_outargs;
%invoke = (
vars => [ 'GimpPalette *palette' ],
code => 'success = (palette = gimp_context_get_palette (gimp_get_current_context (gimp))) != NULL;'
);
}
sub palette_set_palette {
$blurb = 'Set the specified palette as the active palette.';
$help = <<'HELP';
This procedure allows the active palette to be set by specifying its name.
The name is simply a string which corresponds to one of the names of the
installed palettes. If no matching palette is found, this procedure will
return an error. Otherwise, the specified palette becomes active and will be
used in all subsequent palette operations.
HELP
$author = 'Nathan Summers <rock@gimp.org>';
$copyright = 'Nathan Summers';
$date = '2001';
@inargs = ( &palette_arg );
%invoke = (
vars => [ 'GimpPalette *palette', 'GList *list' ],
code => <<'CODE'
{
success = FALSE;
for (list = GIMP_LIST (gimp->palette_factory->container)->list;
list;
list = g_list_next (list))
{
palette = (GimpPalette *) list->data;
if (! strcmp (GIMP_OBJECT (palette)->name, name))
{
gimp_context_set_palette (gimp_get_current_context (gimp), palette);
success = TRUE;
break;
}
}
}
CODE
);
}
sub palette_get_entry {
$blurb = 'Gets the specified palette entry from the currently active pallette.';
$help = <<'HELP';
This procedure returns the color of the zero-based entry specifed for the current palette.
It returns an error if the entry does not exist.
HELP
$author = 'Nathan Summers <rock@gimp.org>';
$copyright = 'Nathan Summers';
$date = '2001';
@inargs = (
{ name => 'entry_num', type => 'int32',
desc => 'The entry to retrieve',
alias => 'entry'}
);
@outargs = (
{ name => 'color', type => 'color',
desc => 'The color requested',
alias => 'color'}
);
%invoke = (
vars => [ 'GimpPalette *palette'],
code => <<'CODE'
{
success = TRUE;
palette = gimp_context_get_palette (gimp_get_current_context(gimp));
if (entry >= palette->n_colors) {
success = FALSE;
}
else
{
color=*(GimpRGB *) g_list_nth(palette->colors, entry)->data;
}
}
CODE
);
}
@headers = qw("core/gimp.h" "core/gimpcontext.h"
"core/gimpdatafactory.h");
"core/gimpdatafactory.h" "core/gimplist.h" "core/gimppalette.h");
@procs = qw(palette_get_foreground palette_get_background
palette_set_foreground palette_set_background
palette_set_default_colors palette_swap_colors
palette_refresh);
palette_refresh
palette_list
palette_get_palette palette_set_palette
palette_get_entry);
%exports = (app => [@procs], lib => [@procs]);
$desc = 'Palette';