# PIKA - Photo and Image Kooker Application
# 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 .
# "Perlized" from C source by Manish Singh
sub item_id_is_valid {
$blurb = 'Returns TRUE if the item ID is valid.';
$help = <<'HELP';
This procedure checks if the given item ID is valid and refers to an
existing item.
HELP
&neo_pdb_misc('2007', '3.0');
@inargs = (
{ name => 'item_id', type => 'int32',
desc => 'The item ID to check' }
);
@outargs = (
{ name => 'valid', type => 'boolean',
desc => 'Whether the item ID is valid' }
);
%invoke = (
code => <<'CODE'
{
PikaItem *item = pika_item_get_by_id (pika, item_id);
valid = (PIKA_IS_ITEM (item) &&
! pika_item_is_removed (PIKA_ITEM (item)));
}
CODE
);
}
sub item_id_is_drawable {
$blurb = 'Returns whether the item ID is a drawable.';
$help = < 'item_id', type => 'int32',
desc => 'The item ID' }
);
@outargs = (
{ name => 'drawable', type => 'boolean',
desc => 'TRUE if the item ID is a drawable, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
PikaItem *item = pika_item_get_by_id (pika, item_id);
drawable = (PIKA_IS_DRAWABLE (item) &&
! pika_item_is_removed (item));
}
CODE
);
}
sub item_id_is_layer {
$blurb = 'Returns whether the item ID is a layer.';
$help = < 'item_id', type => 'int32',
desc => 'The item ID' }
);
@outargs = (
{ name => 'layer', type => 'boolean',
desc => 'TRUE if the item is a layer, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
PikaItem *item = pika_item_get_by_id (pika, item_id);
layer = (PIKA_IS_LAYER (item) &&
! pika_item_is_removed (item));
}
CODE
);
}
sub item_id_is_text_layer {
$blurb = 'Returns whether the item ID is a text layer.';
$help = <<'HELP';
This procedure returns TRUE if the specified item ID is a text layer.
HELP
&mitch_pdb_misc('2010', '3.0');
@inargs = (
{ name => 'item_id', type => 'int32',
desc => 'The item ID' }
);
@outargs = (
{ name => 'text_layer', type => 'boolean',
desc => 'TRUE if the item is a text layer, FALSE otherwise.' }
);
%invoke = (
code => <<'CODE'
{
PikaItem *item = pika_item_get_by_id (pika, item_id);
text_layer = (PIKA_IS_LAYER (item) &&
! pika_item_is_removed (item) &&
pika_item_is_text_layer (item));
}
CODE
);
}
sub item_id_is_channel {
$blurb = 'Returns whether the item ID is a channel.';
$help = < 'item_id', type => 'int32',
desc => 'The item ID' }
);
@outargs = (
{ name => 'channel', type => 'boolean',
desc => 'TRUE if the item ID is a channel, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
PikaItem *item = pika_item_get_by_id (pika, item_id);
channel = (PIKA_IS_CHANNEL (item) &&
! pika_item_is_removed (item));
}
CODE
);
}
sub item_id_is_layer_mask {
$blurb = 'Returns whether the item ID is a layer mask.';
$help = < 'item_id', type => 'int32',
desc => 'The item' }
);
@outargs = (
{ name => 'layer_mask', type => 'boolean',
desc => 'TRUE if the item ID is a layer mask, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
PikaItem *item = pika_item_get_by_id (pika, item_id);
layer_mask = (PIKA_IS_LAYER_MASK (item) &&
! pika_item_is_removed (item));
}
CODE
);
}
sub item_id_is_selection {
$blurb = 'Returns whether the item ID is a selection.';
$help = < 'item_id', type => 'int32',
desc => 'The item ID' }
);
@outargs = (
{ name => 'selection', type => 'boolean',
desc => 'TRUE if the item ID is a selection, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
PikaItem *item = pika_item_get_by_id (pika, item_id);
selection = (PIKA_IS_SELECTION (item) &&
! pika_item_is_removed (item));
}
CODE
);
}
sub item_id_is_vectors {
$blurb = 'Returns whether the item ID is a vectors.';
$help = < 'item_id', type => 'int32',
desc => 'The item ID' }
);
@outargs = (
{ name => 'vectors', type => 'boolean',
desc => 'TRUE if the item ID is a vectors, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
PikaItem *item = pika_item_get_by_id (pika, item_id);
vectors = (PIKA_IS_VECTORS (item) &&
! pika_item_is_removed (item));
}
CODE
);
}
sub item_get_image {
$blurb = "Returns the item's image.";
$help = "This procedure returns the item's image.";
&std_pdb_misc;
$since = '2.8';
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'image', type => 'image',
desc => "The item's image" }
);
%invoke = (
code => <<'CODE'
{
image = pika_item_get_image (PIKA_ITEM (item));
}
CODE
);
}
sub item_delete {
$blurb = 'Delete a item.';
$help = <<'HELP';
This procedure deletes the specified item. This must not be done if the
image containing this item was already deleted or if the item was
already removed from the image. The only case in which this procedure is
useful is if you want to get rid of a item which has not yet been
added to an image.
HELP
&std_pdb_misc;
$since = '2.8';
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item to delete' }
);
%invoke = (
code => <<'CODE'
{
if (g_object_is_floating (item))
{
g_object_ref_sink (item);
g_object_unref (item);
}
else
success = FALSE;
}
CODE
);
}
sub item_is_group {
$blurb = 'Returns whether the item is a group item.';
$help = < 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'group', type => 'boolean',
desc => 'TRUE if the item is a group, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
group = (pika_viewable_get_children (PIKA_VIEWABLE (item)) != NULL);
}
CODE
);
}
sub item_get_parent {
$blurb = "Returns the item's parent item.";
$help = < 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'parent', type => 'item',
desc => "The item's parent item" }
);
%invoke = (
code => <<'CODE'
{
parent = pika_item_get_parent (item);
}
CODE
);
}
sub item_get_children {
$blurb = "Returns the item's list of children.";
$help = < 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'children', type => 'itemarray',
desc => "The item's list of children",
array => { name => 'num_children',
desc => "The item's number of children" } }
);
%invoke = (
code => <<'CODE'
{
PikaContainer *container = pika_viewable_get_children (PIKA_VIEWABLE (item));
if (container)
{
num_children = pika_container_get_n_children (container);
if (num_children)
{
GList *list;
gint i;
children = g_new (PikaItem *, num_children);
for (list = PIKA_LIST (container)->queue->head, i = 0;
list;
list = g_list_next (list), i++)
{
children[i] = g_object_ref (list->data);
}
}
}
else
success = FALSE;
}
CODE
);
}
sub item_get_expanded {
$blurb = 'Returns whether the item is expanded.';
$help = < 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'expanded', type => 'boolean',
desc => 'TRUE if the item is expanded, FALSE otherwise' }
);
%invoke = (
code => <<'CODE'
{
expanded = pika_viewable_get_expanded (PIKA_VIEWABLE (item));
}
CODE
);
}
sub item_set_expanded {
$blurb = 'Sets the expanded state of the item.';
$help = < 'item', type => 'item',
desc => 'The item' },
{ name => 'expanded', type => 'boolean',
desc => 'TRUE to expand the item, FALSE to collapse the item' }
);
%invoke = (
code => <<'CODE'
{
pika_viewable_set_expanded (PIKA_VIEWABLE (item), expanded);
}
CODE
);
}
sub item_get_name {
$blurb = "Get the name of the specified item.";
$help = "This procedure returns the specified item's name.";
&std_pdb_misc;
$since = '2.8';
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'name', type => 'string',
desc => "The item name" }
);
%invoke = (
code => <<'CODE'
{
name = g_strdup (pika_object_get_name (item));
}
CODE
);
}
sub item_set_name {
$blurb = "Set the name of the specified item.";
$help = "This procedure sets the specified item's name.";
&std_pdb_misc;
$since = '2.8';
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'name', type => 'string',
desc => "The new item name" }
);
%invoke = (
code => <<'CODE'
{
success = pika_item_rename (PIKA_ITEM (item), name, error);
}
CODE
);
}
sub item_get_visible {
$blurb = "Get the visibility of the specified item.";
$help = "This procedure returns the specified item's visibility.";
&std_pdb_misc;
$since = '2.8';
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'visible', type => 'boolean',
desc => "The item visibility" }
);
%invoke = (
code => <<'CODE'
{
visible = pika_item_get_visible (PIKA_ITEM (item));
}
CODE
);
}
sub item_set_visible {
$blurb = "Set the visibility of the specified item.";
$help = "This procedure sets the specified item's visibility.";
&std_pdb_misc;
$since = '2.8';
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'visible', type => 'boolean',
desc => "The new item visibility" }
);
%invoke = (
code => <<'CODE'
{
pika_item_set_visible (PIKA_ITEM (item), visible, TRUE);
}
CODE
);
}
sub item_get_lock_content {
$blurb = "Get the 'lock content' state of the specified item.";
$help = "This procedure returns the specified item's lock content state.";
&mitch_pdb_misc('2009', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'lock_content', type => 'boolean',
desc => "Whether the item's contents are locked" }
);
%invoke = (
code => <<'CODE'
{
lock_content = pika_item_get_lock_content (PIKA_ITEM (item));
}
CODE
);
}
sub item_set_lock_content {
$blurb = "Set the 'lock content' state of the specified item.";
$help = "This procedure sets the specified item's lock content state.";
&mitch_pdb_misc('2009', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'lock_content', type => 'boolean',
desc => "The new item 'lock content' state" }
);
%invoke = (
code => <<'CODE'
{
if (pika_item_can_lock_content (PIKA_ITEM (item)))
pika_item_set_lock_content (PIKA_ITEM (item), lock_content, TRUE);
else
success = FALSE;
}
CODE
);
}
sub item_get_lock_position {
$blurb = "Get the 'lock position' state of the specified item.";
$help = "This procedure returns the specified item's lock position state.";
&mitch_pdb_misc('2012', '2.10');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'lock_position', type => 'boolean',
desc => "Whether the item's position is locked" }
);
%invoke = (
code => <<'CODE'
{
lock_position = pika_item_get_lock_position (PIKA_ITEM (item));
}
CODE
);
}
sub item_set_lock_position {
$blurb = "Set the 'lock position' state of the specified item.";
$help = "This procedure sets the specified item's lock position state.";
&mitch_pdb_misc('2009', '2.10');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'lock_position', type => 'boolean',
desc => "The new item 'lock position' state" }
);
%invoke = (
code => <<'CODE'
{
if (pika_item_can_lock_position (PIKA_ITEM (item)))
pika_item_set_lock_position (PIKA_ITEM (item), lock_position, TRUE);
else
success = FALSE;
}
CODE
);
}
sub item_get_lock_visibility {
$blurb = "Get the 'lock visibility' state of the specified item.";
$help = "This procedure returns the specified item's lock visibility state.";
&jehan_pdb_misc('2021', '3.0');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'lock_visibility', type => 'boolean',
desc => "Whether the item's visibility is locked" }
);
%invoke = (
code => <<'CODE'
{
lock_visibility = pika_item_get_lock_visibility (PIKA_ITEM (item));
}
CODE
);
}
sub item_set_lock_visibility {
$blurb = "Set the 'lock visibility' state of the specified item.";
$help = "This procedure sets the specified item's lock visibility state.";
&jehan_pdb_misc('2021', '3.0');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'lock_visibility', type => 'boolean',
desc => "The new item 'lock visibility' state" }
);
%invoke = (
code => <<'CODE'
{
if (pika_item_can_lock_visibility (PIKA_ITEM (item)))
pika_item_set_lock_visibility (PIKA_ITEM (item), lock_visibility, TRUE);
else
success = FALSE;
}
CODE
);
}
sub item_get_color_tag {
$blurb = "Get the color tag of the specified item.";
$help = "This procedure returns the specified item's color tag.";
&mitch_pdb_misc('2016', '2.10');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'color_tag', type => 'enum PikaColorTag',
desc => "The item's color tag" }
);
%invoke = (
code => <<'CODE'
{
color_tag = pika_item_get_color_tag (PIKA_ITEM (item));
}
CODE
);
}
sub item_set_color_tag {
$blurb = "Set the color tag of the specified item.";
$help = "This procedure sets the specified item's color tag.";
&mitch_pdb_misc('2016', '2.10');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'color_tag', type => 'enum PikaColorTag',
desc => "The new item color tag" }
);
%invoke = (
code => <<'CODE'
{
pika_item_set_color_tag (PIKA_ITEM (item), color_tag, TRUE);
}
CODE
);
}
sub item_get_tattoo {
$blurb = "Get the tattoo of the specified item.";
$help = <<'HELP';
This procedure returns the specified item's tattoo. A tattoo is a
unique and permanent identifier attached to a item that can be
used to uniquely identify a item within an image even between
sessions.
HELP
&jay_pdb_misc('1998', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'tattoo', type => 'tattoo',
desc => "The item tattoo" }
);
%invoke = (
code => <<'CODE'
{
tattoo = pika_item_get_tattoo (PIKA_ITEM (item));
}
CODE
);
}
sub item_set_tattoo {
$blurb = "Set the tattoo of the specified item.";
$help = <<'HELP';
This procedure sets the specified item's tattoo. A tattoo is a
unique and permanent identifier attached to a item that can be
used to uniquely identify a item within an image even between
sessions.
HELP
&jay_pdb_misc('1998', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'tattoo', type => 'tattoo',
desc => "The new item tattoo" }
);
%invoke = (
code => <<'CODE'
{
pika_item_set_tattoo (PIKA_ITEM (item), tattoo);
}
CODE
);
}
sub item_attach_parasite {
$blurb = 'Add a parasite to an item.';
$help = <<'HELP';
This procedure attaches a parasite to an item. It has no return values.
HELP
&jay_pdb_misc('1998', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'parasite', type => 'parasite',
desc => 'The parasite to attach to the item' }
);
%invoke = (
code => <<'CODE'
{
if (pika_item_parasite_validate (item, parasite, error))
pika_item_parasite_attach (item, parasite, TRUE);
else
success = FALSE;
}
CODE
);
}
sub item_detach_parasite {
$blurb = 'Removes a parasite from an item.';
$help = <<'HELP';
This procedure detaches a parasite from an item. It has no return values.
HELP
&jay_pdb_misc('1998', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'name', type => 'string',
desc => 'The name of the parasite to detach from the item.' }
);
%invoke = (
code => <<'CODE'
{
pika_item_parasite_detach (item, name, TRUE);
}
CODE
);
}
sub item_get_parasite {
$blurb = 'Look up a parasite in an item';
$help = <<'HELP';
Finds and returns the parasite that is attached to an item.
HELP
&jay_pdb_misc('1998', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' },
{ name => 'name', type => 'string',
desc => 'The name of the parasite to find' }
);
@outargs = (
{ name => 'parasite', type => 'parasite',
desc => 'The found parasite' }
);
%invoke = (
code => <<'CODE'
{
parasite = pika_parasite_copy (pika_item_parasite_find (item, name));
if (! parasite)
success = FALSE;
}
CODE
);
}
sub item_get_parasite_list {
$blurb = 'List all parasites.';
$help = 'Returns a list of all parasites currently attached the an item.';
&marc_pdb_misc('1999', '2.8');
@inargs = (
{ name => 'item', type => 'item',
desc => 'The item' }
);
@outargs = (
{ name => 'parasites', type => 'strv',
desc => 'The names of currently attached parasites' }
);
%invoke = (
code => <<'CODE'
{
parasites = pika_item_parasite_list (item);
}
CODE
);
}
@headers = qw("core/pikalayermask.h"
"core/pikalist.h"
"core/pikaselection.h"
"text/pikatextlayer.h"
"vectors/pikavectors.h"
"pikapdb-utils.h"
"pikapdbcontext.h"
"pika-intl.h");
@procs = qw(item_id_is_valid
item_id_is_drawable
item_id_is_layer
item_id_is_text_layer
item_id_is_channel
item_id_is_layer_mask
item_id_is_selection
item_id_is_vectors
item_get_image
item_delete
item_is_group
item_get_parent
item_get_children
item_get_expanded item_set_expanded
item_get_name item_set_name
item_get_visible item_set_visible
item_get_lock_content item_set_lock_content
item_get_lock_position item_set_lock_position
item_get_lock_visibility item_set_lock_visibility
item_get_color_tag item_set_color_tag
item_get_tattoo item_set_tattoo
item_attach_parasite item_detach_parasite
item_get_parasite
item_get_parasite_list);
%exports = (app => [@procs], lib => [@procs]);
$desc = 'Item procedures';
$doc_title = 'pikaitem';
$doc_short_desc = 'Functions to manipulate items.';
$doc_long_desc = 'Functions to manipulate items.';
1;