2023-09-26 00:35:21 +02:00
|
|
|
# PIKA - Photo and Image Kooker Application
|
|
|
|
# Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
|
|
|
|
|
|
# New Text PDB API
|
|
|
|
# Copyright (C) 2008 Marcus Heese <heese@cip.ifi.lmu.de>
|
|
|
|
|
|
|
|
# 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/>.
|
|
|
|
|
|
|
|
|
|
|
|
sub text_layer_new {
|
|
|
|
$blurb = 'Creates a new text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure creates a new text layer. The arguments are kept as
|
|
|
|
simple as necessary for the normal case. All text attributes, however,
|
|
|
|
can be modified with the appropriate pika_text_layer_set_*()
|
|
|
|
procedures. The new layer still needs to be added to the image, as
|
|
|
|
this is not automatic. Add the new layer using pika_image_insert_layer().
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
$lib_private = 1;
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'image', type => 'image',
|
|
|
|
desc => 'The image' },
|
|
|
|
{ name => 'text', type => 'string',
|
|
|
|
desc => 'The text to generate (in UTF-8 encoding)' },
|
2023-10-30 23:55:30 +01:00
|
|
|
{ name => 'font', type => 'font',
|
|
|
|
desc => 'The font to write the text with' },
|
2023-09-26 00:35:21 +02:00
|
|
|
{ name => 'size', type => '0.0 <= float <= 8192.0',
|
|
|
|
desc => 'The size of text in either pixels or points' },
|
|
|
|
{ name => 'unit', type => 'unit',
|
|
|
|
desc => 'The units of specified size' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The new text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
PikaText *pika_text;
|
|
|
|
PikaRGB color;
|
|
|
|
|
|
|
|
pika_context_get_foreground (context, &color);
|
|
|
|
|
|
|
|
pika_text = g_object_new (PIKA_TYPE_TEXT,
|
|
|
|
"text", text,
|
2023-10-30 23:55:30 +01:00
|
|
|
"font", font,
|
2023-09-26 00:35:21 +02:00
|
|
|
"font-size", size,
|
|
|
|
"font-size-unit", unit,
|
|
|
|
"color", &color,
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
layer = PIKA_TEXT_LAYER (pika_text_layer_new (image, pika_text));
|
|
|
|
g_object_unref (pika_text);
|
|
|
|
|
|
|
|
if (! layer)
|
|
|
|
{
|
|
|
|
g_set_error (error, PIKA_PDB_ERROR, PIKA_PDB_ERROR_INVALID_ARGUMENT,
|
|
|
|
_("Failed to create text layer"));
|
|
|
|
|
|
|
|
success = FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_text {
|
|
|
|
$blurb = 'Get the text from a text layer as string.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the text from a text layer as a string.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'text', type => 'string',
|
|
|
|
desc => 'The text from the specified text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"text", &text,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_text {
|
|
|
|
$blurb = 'Set the text of a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure changes the text of a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'text', type => 'string',
|
|
|
|
desc => 'The new text to set' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"text", text,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_markup {
|
|
|
|
$blurb = 'Get the markup from a text layer as string.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the markup of the styles from a text layer.
|
|
|
|
The markup will be in the form of Pango's markup - See
|
|
|
|
https://www.pango.org/ for more information about Pango and its markup.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
barak_pdb_misc('2010', '2.8');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'markup', type => 'string',
|
|
|
|
desc => 'The markup which represents the style of the specified text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"markup", &markup,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_markup {
|
|
|
|
$blurb = 'Set the markup for a text layer from a string.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the markup of the styles for a text layer.
|
|
|
|
The markup should be in the form of Pango's markup - See
|
|
|
|
https://docs.gtk.org/Pango/pango_markup.html for a reference.
|
|
|
|
|
|
|
|
Note that PIKA's text tool does not support all of Pango markup. Any unsupported
|
|
|
|
markup will still be applied to your text layer, yet would be dropped as soon as
|
|
|
|
you edit text with the tool.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
$author = 'Ian Munsie <darkstarsword@gmail.com>';
|
|
|
|
$copyright = 'Ian Munsie';
|
|
|
|
$date = '2014';
|
|
|
|
$since = '3.0';
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'markup', type => 'string',
|
|
|
|
desc => 'The new markup to set' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
gchar *markup_cat = NULL;
|
|
|
|
const gchar *markup_ptr = markup;
|
|
|
|
|
|
|
|
if (strstr(markup, "<markup>") == NULL || strstr(markup, "</markup>") == NULL)
|
|
|
|
{
|
|
|
|
markup_cat = g_strconcat("<markup>", markup, "</markup>", NULL);
|
|
|
|
markup_ptr = markup_cat;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (pango_parse_markup (markup_ptr, -1, 0, NULL, NULL, NULL, error))
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer markup"),
|
|
|
|
"markup", markup_ptr,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
success = FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
g_free(markup_cat);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_font {
|
|
|
|
$blurb = 'Get the font from a text layer as string.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
2023-10-30 23:55:30 +01:00
|
|
|
This procedure returns the font from a text layer.
|
2023-09-26 00:35:21 +02:00
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
2023-10-30 23:55:30 +01:00
|
|
|
{ name => 'font', type => 'font',
|
2023-09-26 00:35:21 +02:00
|
|
|
desc => 'The font which is used in the specified text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
2023-10-30 23:55:30 +01:00
|
|
|
"font", &font,
|
2023-09-26 00:35:21 +02:00
|
|
|
NULL);
|
2023-10-30 23:55:30 +01:00
|
|
|
/* The PikaText keeps a reference. Therefore unref before returning the
|
|
|
|
* pointer so that we don't leak a reference.
|
|
|
|
*/
|
|
|
|
g_object_unref (font);
|
2023-09-26 00:35:21 +02:00
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_font {
|
|
|
|
$blurb = 'Set the font of a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure modifies the font used in the specified text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
2023-10-30 23:55:30 +01:00
|
|
|
{ name => 'font', type => 'font',
|
2023-09-26 00:35:21 +02:00
|
|
|
desc => 'The new font to use' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"font", font,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_font_size {
|
|
|
|
$blurb = 'Get the font size from a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the size of the font which is used in a text
|
|
|
|
layer. You will receive the size as a float 'font-size' in 'unit'
|
|
|
|
units.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'font_size', type => 'float',
|
|
|
|
desc => 'The font size' },
|
|
|
|
{ name => 'unit', type => 'unit',
|
|
|
|
desc => 'The unit used for the font size' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"font-size", &font_size,
|
|
|
|
"font-size-unit", &unit,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_font_size {
|
|
|
|
$blurb = 'Set the font size.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure changes the font size of a text layer. The size of your
|
|
|
|
font will be a double 'font-size' of 'unit' units.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'font_size', type => '0.0 <= float <= 8192.0',
|
|
|
|
desc => 'The font size' },
|
|
|
|
{ name => 'unit', type => 'unit',
|
|
|
|
desc => 'The unit to use for the font size' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"font-size-unit", unit,
|
|
|
|
"font-size", font_size,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_antialias {
|
|
|
|
$blurb = 'Check if antialiasing is used in the text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure checks if antialiasing is enabled in the specified text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'antialias', type => 'boolean',
|
|
|
|
desc => 'A flag which is true if antialiasing is used for rendering the font in the text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"antialias", &antialias,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_antialias {
|
|
|
|
$blurb = 'Enable/disable anti-aliasing in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure enables or disables anti-aliasing of the text in a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'antialias', type => 'boolean',
|
|
|
|
desc => 'Enable/disable antialiasing of the text' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"antialias", antialias,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_hint_style {
|
|
|
|
$blurb = 'Get information about hinting in the specified text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure provides information about the hinting that is being
|
|
|
|
used in a text layer. Hinting can be optimized for fidelity or contrast
|
|
|
|
or it can be turned entirely off.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.8');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'style', type => 'enum PikaTextHintStyle',
|
|
|
|
desc => 'The hint style used for font outlines' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"hint-style", &style,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_hint_style {
|
|
|
|
$blurb = 'Control how font outlines are hinted in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the hint style for font outlines in a text
|
|
|
|
layer. This controls whether to fit font outlines to the pixel grid,
|
|
|
|
and if so, whether to optimize for fidelity or contrast.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&neo_pdb_misc('2008', '2.8');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'style', type => 'enum PikaTextHintStyle',
|
|
|
|
desc => 'The new hint style' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"hint-style", style,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_kerning {
|
|
|
|
$blurb = 'Check if kerning is used in the text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure checks if kerning is enabled in the specified text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'kerning', type => 'boolean',
|
|
|
|
desc => 'A flag which is true if kerning is used in the text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"kerning", &kerning,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_kerning {
|
|
|
|
$blurb = 'Enable/disable kerning in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure enables or disables kerning in a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'kerning', type => 'boolean',
|
|
|
|
desc => 'Enable/disable kerning in the text' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"kerning", kerning,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_language {
|
|
|
|
$blurb = 'Get the language used in the text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the language string which is set for the text
|
|
|
|
in the text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'language', type => 'string',
|
|
|
|
desc => 'The language used in the text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"language", &language,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_language {
|
|
|
|
$blurb = 'Set the language of the text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the language of the text in text layer. For some
|
|
|
|
scripts the language has an influence of how the text is rendered.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'language', type => 'string',
|
|
|
|
desc => 'The new language to use for the text layer' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"language", language,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_base_direction {
|
|
|
|
$blurb = 'Get the base direction used for rendering the text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the base direction used for rendering the text
|
|
|
|
in the text layer
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'direction', type => 'enum PikaTextDirection',
|
|
|
|
desc => 'The based direction used for the text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"base-direction", &direction,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_base_direction {
|
|
|
|
$blurb = 'Set the base direction in the text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the base direction used in applying the Unicode
|
|
|
|
bidirectional algorithm when rendering the text.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'direction', type => 'enum PikaTextDirection',
|
|
|
|
desc => 'The base direction of the text.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"base-direction", direction,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_justification {
|
|
|
|
$blurb = 'Get the text justification information of the text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the alignment of the lines in the text layer
|
|
|
|
relative to each other.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'justify', type => 'enum PikaTextJustification',
|
|
|
|
desc => 'The justification used in the text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"justify", &justify,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_justification {
|
|
|
|
$blurb = 'Set the justification of the text in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the alignment of the lines in the text layer
|
|
|
|
relative to each other.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'justify', type => 'enum PikaTextJustification',
|
|
|
|
desc => 'The justification for your text.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"justify", justify,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_color {
|
|
|
|
$blurb = 'Get the color of the text in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the color of the text in a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'color', type => 'color', void_ret => 1,
|
|
|
|
desc => 'The color of the text.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
color = pika_text_layer_get_text (layer)->color;
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_color {
|
|
|
|
$blurb = 'Set the color of the text in the text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the text color in the text layer 'layer'.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'color', type => 'color',
|
|
|
|
desc => 'The color to use for the text' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"color", &color,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_indent {
|
|
|
|
$blurb = 'Get the line indentation of text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the indentation of the first line in a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'indent', type => 'float',
|
|
|
|
desc => 'The indentation value of the first line.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"indent", &indent,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_indent {
|
|
|
|
$blurb = 'Set the indentation of the first line in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the indentation of the first line in the text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'indent', type => '-8192.0 <= float <= 8192.0',
|
|
|
|
desc => 'The indentation for the first line.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"indent", indent,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_line_spacing {
|
|
|
|
$blurb = 'Get the spacing between lines of text.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the line-spacing between lines of text in a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'line_spacing', type => 'float',
|
|
|
|
desc => 'The line-spacing value.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"line-spacing", &line_spacing,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_line_spacing {
|
|
|
|
$blurb = 'Adjust the line spacing in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the additional spacing used between lines a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'line_spacing', type => '-8192.0 <= float <= 8192.0',
|
|
|
|
desc => 'The additional line spacing to use.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"line-spacing", line_spacing,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_get_letter_spacing {
|
|
|
|
$blurb = 'Get the letter spacing used in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure returns the additional spacing between the single glyphs
|
|
|
|
in a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
@outargs = (
|
|
|
|
{ name => 'letter_spacing', type => 'float',
|
|
|
|
desc => 'The letter-spacing value.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
g_object_get (pika_text_layer_get_text (layer),
|
|
|
|
"letter-spacing", &letter_spacing,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_set_letter_spacing {
|
|
|
|
$blurb = 'Adjust the letter spacing in a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure sets the additional spacing between the single glyphs
|
|
|
|
in a text layer.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
&marcus_pdb_misc('2008', '2.6');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'letter_spacing', type => '-8192.0 <= float <= 8192.0',
|
|
|
|
desc => 'The additional letter spacing to use.' }
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"letter-spacing", letter_spacing,
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
sub text_layer_resize {
|
|
|
|
$blurb = 'Resize the box of a text layer.';
|
|
|
|
|
|
|
|
$help = <<'HELP';
|
|
|
|
This procedure changes the width and height of a text layer while
|
|
|
|
keeping it as a text layer and not converting it to a bitmap like
|
|
|
|
pika_layer_resize() would do.
|
|
|
|
HELP
|
|
|
|
|
|
|
|
barak_pdb_misc('2009', '2.8');
|
|
|
|
|
|
|
|
@inargs = (
|
|
|
|
{ name => 'layer', type => 'text_layer',
|
|
|
|
desc => 'The text layer' },
|
|
|
|
{ name => 'width', type => '0.0 <= float <= PIKA_MAX_IMAGE_SIZE',
|
|
|
|
desc => 'The new box width in pixels' },
|
|
|
|
{ name => 'height', type => '0.0 <= float <= PIKA_MAX_IMAGE_SIZE',
|
|
|
|
desc => 'The new box height in pixels' },
|
|
|
|
);
|
|
|
|
|
|
|
|
%invoke = (
|
|
|
|
code => <<'CODE'
|
|
|
|
{
|
|
|
|
PikaText *text = pika_text_layer_get_text (layer);
|
|
|
|
gdouble xres, yres;
|
|
|
|
|
|
|
|
pika_image_get_resolution (pika_item_get_image (PIKA_ITEM (layer)),
|
|
|
|
&xres, &yres);
|
|
|
|
|
|
|
|
pika_text_layer_set (layer,
|
|
|
|
_("Set text layer attribute"),
|
|
|
|
"box-mode", PIKA_TEXT_BOX_FIXED,
|
|
|
|
"box-width", pika_pixels_to_units (width,
|
|
|
|
text->box_unit,
|
|
|
|
xres),
|
|
|
|
"box-height", pika_pixels_to_units (height,
|
|
|
|
text->box_unit,
|
|
|
|
yres),
|
|
|
|
NULL);
|
|
|
|
}
|
|
|
|
CODE
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@headers = qw(<pango/pango.h>
|
|
|
|
"libpikabase/pikabase.h"
|
|
|
|
"core/pikacontext.h"
|
|
|
|
"text/pikafont.h"
|
|
|
|
"text/pikatext.h"
|
|
|
|
"text/pikatextlayer.h"
|
|
|
|
"pikapdb-utils.h"
|
|
|
|
"pikapdberror.h"
|
|
|
|
"pika-intl.h");
|
|
|
|
|
|
|
|
@procs = qw(text_layer_new
|
|
|
|
text_layer_get_text
|
|
|
|
text_layer_set_text
|
|
|
|
text_layer_get_markup
|
|
|
|
text_layer_set_markup
|
|
|
|
text_layer_get_font
|
|
|
|
text_layer_set_font
|
|
|
|
text_layer_get_font_size
|
|
|
|
text_layer_set_font_size
|
|
|
|
text_layer_get_antialias
|
|
|
|
text_layer_set_antialias
|
|
|
|
text_layer_get_hint_style
|
|
|
|
text_layer_set_hint_style
|
|
|
|
text_layer_get_kerning
|
|
|
|
text_layer_set_kerning
|
|
|
|
text_layer_get_language
|
|
|
|
text_layer_set_language
|
|
|
|
text_layer_get_base_direction
|
|
|
|
text_layer_set_base_direction
|
|
|
|
text_layer_get_justification
|
|
|
|
text_layer_set_justification
|
|
|
|
text_layer_get_color
|
|
|
|
text_layer_set_color
|
|
|
|
text_layer_get_indent
|
|
|
|
text_layer_set_indent
|
|
|
|
text_layer_get_line_spacing
|
|
|
|
text_layer_set_line_spacing
|
|
|
|
text_layer_get_letter_spacing
|
|
|
|
text_layer_set_letter_spacing
|
|
|
|
text_layer_resize);
|
|
|
|
|
|
|
|
%exports = (app => [@procs], lib => [@procs]);
|
|
|
|
|
|
|
|
$desc = 'Text layer procedures';
|
|
|
|
$doc_title = 'pikatextlayer';
|
|
|
|
$doc_short_desc = 'Functions for querying and manipulating text layers.';
|
|
|
|
$doc_long_desc = 'Functions for querying and manipulating text layers.';
|
|
|
|
|
|
|
|
1;
|