mirror of https://github.com/GNOME/gimp.git
588 lines
14 KiB
Plaintext
588 lines
14 KiB
Plaintext
# 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;
|