summaryrefslogtreecommitdiffstats
path: root/pdb/groups/text_layer.pdb
diff options
context:
space:
mode:
Diffstat (limited to 'pdb/groups/text_layer.pdb')
-rw-r--r--pdb/groups/text_layer.pdb1253
1 files changed, 1253 insertions, 0 deletions
diff --git a/pdb/groups/text_layer.pdb b/pdb/groups/text_layer.pdb
new file mode 100644
index 0000000..5a0dc8a
--- /dev/null
+++ b/pdb/groups/text_layer.pdb
@@ -0,0 +1,1253 @@
+# GIMP - The GNU Image Manipulation Program
+# 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 gimp_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 gimp_image_insert_layer().
+HELP
+
+ &marcus_pdb_misc('2008', '2.6');
+
+ @inargs = (
+ { name => 'image', type => 'image',
+ desc => 'The image' },
+ { name => 'text', type => 'string',
+ desc => 'The text to generate (in UTF-8 encoding)' },
+ { name => 'fontname', type => 'string',
+ desc => 'The name of the font' },
+ { 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 => 'layer',
+ desc => 'The new text layer.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ GimpText *gimp_text;
+ GimpRGB color;
+
+ gimp_context_get_foreground (context, &color);
+
+ gimp_text = g_object_new (GIMP_TYPE_TEXT,
+ "text", text,
+ "font", fontname,
+ "font-size", size,
+ "font-size-unit", unit,
+ "color", &color,
+ NULL);
+
+ layer = gimp_text_layer_new (image, gimp_text);
+ g_object_unref (gimp_text);
+
+ if (! layer)
+ {
+ g_set_error (error, GIMP_PDB_ERROR, GIMP_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 => 'layer',
+ desc => 'The text layer' }
+ );
+
+ @outargs = (
+ { name => 'text', type => 'string',
+ desc => 'The text from the specified text layer.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "text", &text,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'text', type => 'string',
+ desc => 'The new text to set' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "text", text,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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.
+Note: Setting the markup of a text layer using Pango's markup is not
+supported for now.
+HELP
+
+ barak_pdb_misc('2010', '2.8');
+
+ @inargs = (
+ { name => 'layer', type => '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'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "markup", &markup,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+CODE
+ );
+}
+
+sub text_layer_get_font {
+ $blurb = 'Get the font from a text layer as string.';
+
+ $help = <<'HELP';
+This procedure returns the name of the font from a text layer.
+HELP
+
+ &marcus_pdb_misc('2008', '2.6');
+
+ @inargs = (
+ { name => 'layer', type => 'layer',
+ desc => 'The text layer' }
+ );
+
+ @outargs = (
+ { name => 'font', type => 'string',
+ desc => 'The font which is used in the specified text layer.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "font", &font,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'font', type => 'string',
+ desc => 'The new font to use' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "font", font,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => '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'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "font-size", &font_size,
+ "font-size-unit", &unit,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => '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'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "font-size-unit", unit,
+ "font-size", font_size,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+CODE
+ );
+}
+
+sub text_layer_get_hinting {
+ &std_pdb_deprecated ('gimp-text-layer-get-hint-style');
+
+ @inargs = (
+ { name => 'layer', type => 'layer',
+ desc => 'The text layer' }
+ );
+
+ @outargs = (
+ { name => 'hinting', type => 'boolean',
+ desc => 'A flag which is true if hinting is used on the font.' },
+ { name => 'autohint', type => 'boolean',
+ desc => 'A flag which is true if the text layer is forced to use the autohinter from FreeType.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "hinting", &hinting,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+CODE
+ );
+}
+
+sub text_layer_set_hinting {
+ &std_pdb_deprecated ('gimp-text-layer-set-hint-style');
+
+ $blurb = 'Enable/disable the use of hinting in a text layer.';
+
+ $help = <<'HELP';
+This procedure enables or disables hinting on the text of a text
+layer. If you enable 'auto-hint', FreeType\'s automatic hinter will be
+used and hinting information from the font will be ignored.
+HELP
+
+ &marcus_pdb_misc('2008', '2.6');
+
+ @inargs = (
+ { name => 'layer', type => 'layer',
+ desc => 'The text layer' },
+ { name => 'hinting', type => 'boolean',
+ desc => 'Enable/disable the use of hinting on the text' },
+ { name => 'autohint', type => 'boolean', dead => 1,
+ desc => 'Force the use of the autohinter provided through FreeType' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "hinting", hinting,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => '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'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "antialias", &antialias,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'antialias', type => 'boolean',
+ desc => 'Enable/disable antialiasing of the text' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "antialias", antialias,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' }
+ );
+
+ @outargs = (
+ { name => 'style', type => 'enum GimpTextHintStyle',
+ desc => 'The hint style used for font outlines' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "hint-style", &style,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'style', type => 'enum GimpTextHintStyle',
+ desc => 'The new hint style' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "hint-style", style,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => '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'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "kerning", &kerning,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'kerning', type => 'boolean',
+ desc => 'Enable/disable kerning in the text' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "kerning", kerning,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer.' }
+ );
+
+ @outargs = (
+ { name => 'language', type => 'string',
+ desc => 'The language used in the text layer.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "language", &language,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'language', type => 'string',
+ desc => 'The new language to use for the text layer' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "language", language,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer.' }
+ );
+
+ @outargs = (
+ { name => 'direction', type => 'enum GimpTextDirection',
+ desc => 'The based direction used for the text layer.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "base-direction", &direction,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'direction', type => 'enum GimpTextDirection',
+ desc => 'The base direction of the text.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "base-direction", direction,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer.' }
+ );
+
+ @outargs = (
+ { name => 'justify', type => 'enum GimpTextJustification',
+ desc => 'The justification used in the text layer.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "justify", &justify,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'justify', type => 'enum GimpTextJustification',
+ desc => 'The justification for your text.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "justify", justify,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer.' }
+ );
+
+ @outargs = (
+ { name => 'color', type => 'color', void_ret => 1,
+ desc => 'The color of the text.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ color = gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer))->color;
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'color', type => 'color',
+ desc => 'The color to use for the text' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "color", &color,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer.' }
+ );
+
+ @outargs = (
+ { name => 'indent', type => 'float',
+ desc => 'The indentation value of the first line.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "indent", &indent,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'indent', type => '-8192.0 <= float <= 8192.0',
+ desc => 'The indentation for the first line.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "indent", indent,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer.' }
+ );
+
+ @outargs = (
+ { name => 'line_spacing', type => 'float',
+ desc => 'The line-spacing value.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "line-spacing", &line_spacing,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'line_spacing', type => '-8192.0 <= float <= 8192.0',
+ desc => 'The additional line spacing to use.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "line-spacing", line_spacing,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer.' }
+ );
+
+ @outargs = (
+ { name => 'letter_spacing', type => 'float',
+ desc => 'The letter-spacing value.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, 0, error))
+ {
+ g_object_get (gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer)),
+ "letter-spacing", &letter_spacing,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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 => 'layer',
+ desc => 'The text layer' },
+ { name => 'letter_spacing', type => '-8192.0 <= float <= 8192.0',
+ desc => 'The additional letter spacing to use.' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "letter-spacing", letter_spacing,
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+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
+gimp_layer_resize() would do.
+HELP
+
+ barak_pdb_misc('2009', '2.8');
+
+ @inargs = (
+ { name => 'layer', type => 'layer',
+ desc => 'The text layer' },
+ { name => 'width', type => '0.0 <= float <= GIMP_MAX_IMAGE_SIZE',
+ desc => 'The new box width in pixels' },
+ { name => 'height', type => '0.0 <= float <= GIMP_MAX_IMAGE_SIZE',
+ desc => 'The new box height in pixels' },
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (gimp_pdb_layer_is_text_layer (layer, GIMP_PDB_ITEM_CONTENT, error))
+ {
+ GimpText *text = gimp_text_layer_get_text (GIMP_TEXT_LAYER (layer));
+ gdouble xres, yres;
+
+ gimp_image_get_resolution (gimp_item_get_image (GIMP_ITEM (layer)),
+ &xres, &yres);
+
+ gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
+ _("Set text layer attribute"),
+ "box-mode", GIMP_TEXT_BOX_FIXED,
+ "box-width", gimp_pixels_to_units (width,
+ text->box_unit,
+ xres),
+ "box-height", gimp_pixels_to_units (height,
+ text->box_unit,
+ yres),
+ NULL);
+ }
+ else
+ {
+ success = FALSE;
+ }
+}
+CODE
+ );
+}
+
+
+@headers = qw("libgimpbase/gimpbase.h"
+ "core/gimpcontext.h"
+ "text/gimptext.h"
+ "text/gimptextlayer.h"
+ "gimppdb-utils.h"
+ "gimppdberror.h"
+ "gimp-intl.h");
+
+@procs = qw(text_layer_new
+ text_layer_get_text
+ text_layer_set_text
+ text_layer_get_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
+ text_layer_get_hinting
+ text_layer_set_hinting
+);
+
+%exports = (app => [@procs], lib => [@procs]);
+
+$desc = 'Text layer procedures';
+$doc_title = 'gimptextlayer';
+$doc_short_desc = 'Functions for querying and manipulating text layers.';
+$doc_long_desc = 'Functions for querying and manipulating text layers.';
+
+1;