diff options
Diffstat (limited to 'pdb/groups/palette.pdb')
-rw-r--r-- | pdb/groups/palette.pdb | 587 |
1 files changed, 587 insertions, 0 deletions
diff --git a/pdb/groups/palette.pdb b/pdb/groups/palette.pdb new file mode 100644 index 0000000..da3c7fc --- /dev/null +++ b/pdb/groups/palette.pdb @@ -0,0 +1,587 @@ +# 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 palette_new { + $blurb = "Creates a new palette"; + $help = "This procedure creates a new, uninitialized palette"; + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The requested name of the new palette' } + ); + + @outargs = ( + { name => 'actual_name', type => 'string', + desc => 'The actual new palette name' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpData *data = gimp_data_factory_data_new (gimp->palette_factory, + context, name); + + if (data) + actual_name = g_strdup (gimp_object_get_name (data)); + else + success = FALSE; +} +CODE + ); +} + +sub palette_is_editable { + $blurb = "Tests if palette can be edited"; + $help = "Returns TRUE if you have permission to change the palette"; + + &bill_pdb_misc('2004', '2.4'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' } + ); + + @outargs = ( + { name => 'editable', type => 'boolean', + desc => "TRUE if the palette can be edited" } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_READ, error); + + if (palette) + editable = gimp_data_is_writable (GIMP_DATA (palette)); + else + success = FALSE; +} +CODE + ); +} + +sub palette_duplicate { + $blurb = "Duplicates a palette"; + $help = "This procedure creates an identical palette by a different name"; + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' } + ); + + @outargs = ( + { name => 'copy_name', type => 'string', non_empty => 1, + desc => "The name of the palette's copy" } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_READ, error); + + if (palette) + { + GimpPalette *palette_copy = (GimpPalette *) + gimp_data_factory_data_duplicate (gimp->palette_factory, + GIMP_DATA (palette)); + + if (palette_copy) + copy_name = g_strdup (gimp_object_get_name (palette_copy)); + else + success = FALSE; + } + else + success = FALSE; +} +CODE + ); +} + +sub palette_rename { + $blurb = "Rename a palette"; + $help = "This procedure renames a palette"; + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' }, + { name => 'new_name', type => 'string', non_empty => 1, + desc => "The new name of the palette" } + ); + + @outargs = ( + { name => 'actual_name', type => 'string', + desc => "The actual new name of the palette" } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_RENAME, error); + + if (palette) + { + gimp_object_set_name (GIMP_OBJECT (palette), new_name); + actual_name = g_strdup (gimp_object_get_name (palette)); + } + else + success = FALSE; +} +CODE + ); +} + +sub palette_delete { + $blurb = "Deletes a palette"; + $help = "This procedure deletes a palette"; + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_READ, error); + + if (palette && gimp_data_is_deletable (GIMP_DATA (palette))) + success = gimp_data_factory_data_delete (gimp->palette_factory, + GIMP_DATA (palette), + TRUE, error); + else + success = FALSE; +} +CODE + ); +} + +sub palette_get_info { + $blurb = 'Retrieve information about the specified palette.'; + + $help = <<'HELP'; +This procedure retrieves information about the specified palette. This +includes the name, and the number of colors. +HELP + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' } + ); + + @outargs = ( + { name => 'num_colors', type => 'int32', void_ret => 1, + desc => 'The number of colors in the palette' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_READ, error); + + if (palette) + num_colors = gimp_palette_get_n_colors (palette); + else + success = FALSE; +} +CODE + ); +} + +sub palette_get_colors { + $blurb = 'Gets all colors from the specified palette.'; + + $help = <<'HELP'; +This procedure retrieves all color entries of the specified palette. +HELP + + &neo_pdb_misc('2006', '2.6'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' } + ); + + @outargs = ( + { name => 'colors', type => 'colorarray', + desc => 'The colors in the palette', + array => { name => 'num_colors', + desc => 'Length of the colors array' } } + ); + + %invoke = ( + vars => [ 'GimpPalette *palette = NULL' ], + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_READ, error); + + if (palette) + { + GList *list = gimp_palette_get_colors (palette); + gint i; + + num_colors = gimp_palette_get_n_colors (palette); + colors = g_new (GimpRGB, num_colors); + + for (i = 0; i < num_colors; i++, list = g_list_next (list)) + { + GimpPaletteEntry *entry = list->data; + + colors[i] = entry->color; + } + } + else + success = FALSE; +} +CODE + ); +} + +sub palette_get_columns { + $blurb = "Retrieves the number of columns to use to display this palette"; + $help = <<'HELP'; +This procedures retrieves the preferred number of columns to use when the +palette is being displayed. +HELP + + &neo_pdb_misc('2005', '2.4'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' } + ); + + @outargs = ( + { name => 'num_columns', type => 'int32', + desc => "The number of columns used to display this palette" } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_READ, error); + + if (palette) + num_columns = gimp_palette_get_columns (palette); + else + success = FALSE; +} +CODE + ); +} + +sub palette_set_columns { + $blurb = "Sets the number of columns to use when displaying the palette"; + $help = <<'HELP'; +This procedures controls how many colors are shown per row when the +palette is being displayed. This value can only be changed if the +palette is writable. The maximum allowed value is 64. +HELP + + &neo_pdb_misc('2005', '2.4'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' }, + { name => 'columns', type => '0 <= int32 <= 64', + desc => "The new number of columns" } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_WRITE, error); + + if (palette) + gimp_palette_set_columns (palette, columns); + else + success = FALSE; +} +CODE + ); +} + +sub palette_add_entry { + $blurb = 'Adds a palette entry to the specified palette.'; + + $help = <<'HELP'; +This procedure adds an entry to the specified palette. +It returns an error if the entry palette does not exist. +HELP + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' }, + { name => 'entry_name', type => 'string', null_ok => 1, + desc => 'The name of the entry' }, + { name => 'color', type => 'color', + desc => 'The new entry\'s color color' } + ); + + @outargs = ( + { name => 'entry_num', type => 'int32', void_ret => 1, + desc => 'The index of the added entry' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_WRITE, error); + + if (palette) + { + GimpPaletteEntry *entry = + gimp_palette_add_entry (palette, -1, entry_name, &color); + + entry_num = entry->position; + } + else + success = FALSE; +} +CODE + ); +} + +sub palette_delete_entry { + $blurb = 'Deletes a palette entry from the specified palette.'; + + $help = <<'HELP'; +This procedure deletes an entry from the specified palette. +It returns an error if the entry palette does not exist. +HELP + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' }, + { name => 'entry_num', type => 'int32', + desc => 'The index of the added entry' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_WRITE, error); + + if (palette) + { + GimpPaletteEntry *entry = gimp_palette_get_entry (palette, entry_num); + + if (entry) + gimp_palette_delete_entry (palette, entry); + else + success = FALSE; + } + else + success = FALSE; +} +CODE + ); +} + +sub palette_entry_get_color { + $blurb = 'Gets the specified palette entry from the specified palette.'; + + $help = <<'HELP'; +This procedure retrieves the color of the zero-based entry specified for the +specified palette. It returns an error if the entry does not exist. +HELP + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' }, + { name => 'entry_num', type => 'int32', + desc => 'The entry to retrieve' } + ); + + @outargs = ( + { name => 'color', type => 'color', void_ret => 1, + desc => 'The color requested' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_READ, error); + + if (palette) + { + GimpPaletteEntry *entry = gimp_palette_get_entry (palette, entry_num); + + if (entry) + color = entry->color; + else + success = FALSE; + } + else + success = FALSE; +} +CODE + ); +} + +sub palette_entry_set_color { + $blurb = 'Sets the specified palette entry in the specified palette.'; + + $help = <<'HELP'; +This procedure sets the color of the zero-based entry specified for the +specified palette. It returns an error if the entry does not exist. +HELP + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' }, + { name => 'entry_num', type => 'int32', + desc => 'The entry to retrieve' }, + { name => 'color', type => 'color', + desc => 'The new color' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_WRITE, error); + + if (palette) + success = gimp_palette_set_entry_color (palette, entry_num, &color); + else + success = FALSE; +} +CODE + ); +} + +sub palette_entry_get_name { + $blurb = 'Gets the specified palette entry from the specified palette.'; + + $help = <<'HELP'; +This procedure retrieves the name of the zero-based entry specified for the +specified palette. It returns an error if the entry does not exist. +HELP + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' }, + { name => 'entry_num', type => 'int32', + desc => 'The entry to retrieve' } + ); + + @outargs = ( + { name => 'entry_name', type => 'string', void_ret => 1, + desc => 'The name requested' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_READ, error); + + if (palette) + { + GimpPaletteEntry *entry = gimp_palette_get_entry (palette, entry_num); + + if (entry) + entry_name = g_strdup (entry->name); + else + success = FALSE; + } + else + success = FALSE; +} +CODE + ); +} + +sub palette_entry_set_name { + $blurb = 'Sets the specified palette entry in the specified palette.'; + + $help = <<'HELP'; +This procedure sets the name of the zero-based entry specified for the +specified palette. It returns an error if the entry does not exist. +HELP + + &mitch_pdb_misc('2004', '2.2'); + + @inargs = ( + { name => 'name', type => 'string', non_empty => 1, + desc => 'The palette name' }, + { name => 'entry_num', type => 'int32', + desc => 'The entry to retrieve' }, + { name => 'entry_name', type => 'string', null_ok => 1, + desc => 'The new name' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPalette *palette = gimp_pdb_get_palette (gimp, name, GIMP_PDB_DATA_ACCESS_WRITE, error); + + if (palette) + success = gimp_palette_set_entry_name (palette, entry_num, entry_name); + else + success = FALSE; +} +CODE + ); +} + + +@headers = qw(<string.h> + "core/gimp.h" + "core/gimpcontext.h" + "core/gimpdatafactory.h" + "core/gimppalette.h" + "gimppdb-utils.h"); + +@procs = qw(palette_new + palette_duplicate + palette_rename + palette_delete + palette_is_editable + palette_get_info palette_get_colors + palette_get_columns palette_set_columns + palette_add_entry palette_delete_entry + palette_entry_get_color palette_entry_set_color + palette_entry_get_name palette_entry_set_name); + +%exports = (app => [@procs], lib => [@procs]); + +$desc = 'Palette'; +$doc_title = 'gimppalette'; +$doc_short_desc = 'Functions operating on a single palette.'; +$doc_long_desc = 'Functions operating on a single palette.'; + +1; |