From e42129241681dde7adae7d20697e7b421682fbb4 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:23:22 +0200 Subject: Adding upstream version 2.10.22. Signed-off-by: Daniel Baumann --- pdb/groups/text_layer.pdb | 1253 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1253 insertions(+) create mode 100644 pdb/groups/text_layer.pdb (limited to 'pdb/groups/text_layer.pdb') 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 + +# 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 . + + +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; -- cgit v1.2.3