gimp/tools/pdbgen/pdb/text_tool.pdb

266 lines
6.4 KiB
Plaintext
Raw Normal View History

1999-03-19 23:04:16 +00:00
# The GIMP -- an image manipulation program
# Copyright (C) 1995 Spencer Kimball and Peter Mattis
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# "Perlized" from C source by Manish Singh <yosh@gimp.org>
# Text
sub pdb_misc {
&std_pdb_misc;
$author = 'Martin Edlman';
$date = '1998';
}
sub text_arg () {{
name => 'text',
type => 'string',
desc => 'The text to generate'
1999-03-19 23:04:16 +00:00
}}
sub fontname_arg () {{
name => 'fontname',
type => 'string',
desc => 'The name of the font'
1999-03-19 23:04:16 +00:00
}}
1999-03-21 02:14:08 +00:00
sub size_args () {(
{ name => 'size', type => '0 < float',
desc => 'The size of text in either pixels or points' },
{ name => 'size_type', type => 'enum GimpSizeType',
1999-03-21 02:14:08 +00:00
desc => 'The units of specified size: %%desc%%' }
)}
1999-03-19 23:04:16 +00:00
sub render_args () {(
&std_image_arg,
{ name => 'drawable', type => 'drawable',
desc => 'The affected drawable: (-1 for a new text layer)',
no_success => 1 },
{ name => 'x', type => 'float',
desc => 'The x coordinate for the left of the text bounding box' },
{ name => 'y', type => 'float',
desc => 'The y coordinate for the top of the text bounding box' },
&text_arg,
{ name => 'border', type => '-1 <= int32',
1999-03-21 02:14:08 +00:00
desc => 'The size of the border: %%desc%%' },
&std_antialias_arg,
&size_args
1999-03-19 23:04:16 +00:00
)}
1999-04-10 04:52:07 +00:00
@props = qw(foundry family weight slant set_width spacing registry encoding);
1999-03-19 23:04:16 +00:00
sub font_prop_args {
my @result;
1999-03-21 02:14:08 +00:00
foreach (@props) {
1999-04-10 04:52:07 +00:00
(my $desc = $_) =~ s/_/-/g;
push @result, { name => $_, type => 'string', no_validate => 1,
desc => qq/The font $desc/ }
1999-03-19 23:04:16 +00:00
}
@result;
}
sub render_outargs {
@outargs = (
{ name => 'text_layer', type => 'layer',
desc => 'The new text layer', init => 1 }
);
}
sub extents_outargs {
foreach (qw(width height ascent descent)) {
push @outargs, { name => $_, type => 'int32',
desc => "The $_ of the specified font" }
}
}
1999-04-10 04:52:07 +00:00
sub text_fontname {
1999-03-19 23:04:16 +00:00
$blurb = <<'BLURB';
Add text at the specified location as a floating selection or a new layer.
BLURB
$help = <<'HELP';
This tool requires a fontname matching an installed PangoFT2 font.
You can specify the fontsize in units of pixels
1999-04-10 04:52:07 +00:00
or points, and the appropriate metric is specified using the size_type
argument. The x and y parameters together control the placement of the new
text by specifying the upper left corner of the text bounding box. If the
specified drawable parameter is valid, the text will be created as a floating
selection attached to the drawable. If the drawable parameter is not valid
(-1), the text will appear as a new layer. Finally, a border can be specified
around the final rendered text. The border is measured in pixels.
1999-03-19 23:04:16 +00:00
HELP
1999-03-21 02:14:08 +00:00
&pdb_misc;
1999-04-10 04:52:07 +00:00
$author .= ' & Sven Neumann';
$date .= '- 2001';
1999-03-19 23:04:16 +00:00
1999-03-21 02:14:08 +00:00
@inargs = (
1999-04-10 04:52:07 +00:00
&render_args,
&fontname_arg
1999-03-21 02:14:08 +00:00
);
1999-03-19 23:04:16 +00:00
1999-03-21 02:14:08 +00:00
&render_outargs;
1999-03-19 23:04:16 +00:00
1999-03-21 02:14:08 +00:00
%invoke = (
1999-03-19 23:04:16 +00:00
code => <<'CODE'
{
if (drawable && ! gimp_item_is_attached (GIMP_ITEM (drawable)))
1999-04-10 04:52:07 +00:00
success = FALSE;
1999-03-19 23:04:16 +00:00
add the layer to the image before pasting to it. Fixes bug #132504. 2004-01-26 Michael Natterer <mitch@gimp.org> * plug-ins/script-fu/scripts/unsharp-mask.scm: add the layer to the image before pasting to it. Fixes bug #132504. Fixed the underlying problem: make it impossible to attach floating selections to drawables which are not currently part of the image's layer or channel stacks. Also cleaned up image <-> floating_sel interaction: * app/core/gimplayer-floating-sel.[ch] (floating_sel_attach): added assertion that the drawable is part of the image (see below). Don't call gimp_image_floating_selection_changed(), it's emitted by gimp_image_add_layer() now. (floating_sel_remove) (floating_sel_anchor): don't emit "floating_selection_changed", it's emitted by gimp_image_remove_layer() now. (floating_sel_anchor): removed the fix for bug #132162 because gimp_image_remove_layer() behaves correctly now (see below). Renamed floating_sel_reset() to floating_sel_activate_drawable(). Added g_return_if_fail() all over the place. * app/core/gimpimage.[ch]: added new function gimp_image_owns_item() which return TRUE if the passed item is part of the image. (gimp_image_add_layer): emit "floating_selection_changed" here if needed. (gimp_image_remove_layer): emit "floating_selection_changed" if needed, don't try to activate a layer if we called floating_sel_activate_drawable(). This is the real fix for bug #132162. * app/core/gimpimage-undo-push.c (undo_pop_layer): apply the same fixes as to gimp_image_add,remove_layer(). Don't call gimp_drawable_invalidate_preview() on the previously active layer because that's done by gimp_image_set_active_layer() now. * app/xcf/xcf-load.c: remember the "floating_sel_drawable" in the XcfInfo struct and attach it *after* all layers and channels are loaded to avoid attaching the floating selection to an out-of-image drawable. * app/core/gimp-edit.c (gimp_edit_paste) * app/core/gimpdrawable-transform.c (gimp_drawable_transform_affine, gimp_drawable_transform_flip, gimp_drawable_transform_rotate) * app/core/gimpselection.c (gimp_selection_float) * app/text/gimptext-compat.c (text_render): added checks for gimp_image_owns_item() in all functions which can produce floating selections. * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/floating_sel.pdb * tools/pdbgen/pdb/selection.pdb * tools/pdbgen/pdb/text_tool.pdb * tools/pdbgen/pdb/transform_tools.pdb: added checks for gimp_item_owns_image() and return an execution error if invoked with a drawable which is not part of the image. * app/pdb/edit_cmds.c * app/pdb/floating_sel_cmds.c * app/pdb/selection_cmds.c * app/pdb/text_tool_cmds.c * app/pdb/transform_tools_cmds.c: regenerated.
2004-01-26 15:34:47 +00:00
if (success)
{
gchar *real_fontname = g_strdup_printf ("%s %d", fontname, (gint) size);
Get rid of the "current_context" which was in fact just a bunch of global 2004-04-15 Michael Natterer <mitch@gimp.org> Get rid of the "current_context" which was in fact just a bunch of global variables. Instead, pass the needed context all the way from the GUI and the PDB to the core. This is a prerequisite for macro recording and generally helps separating the various subsystems from each other. Work in progress... * app/core/gimp.[ch]: removed member "current_context" and gimp_[get|set]_current_context(). * app/core/gimp-edit.[ch] * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-bucket-fill.[ch] * app/core/gimpdrawable-offset.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-crop.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-merge.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage.[ch] * app/core/gimpimagefile.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimplayer.[ch] * app/core/gimpselection.[ch] * app/core/gimptemplate.[ch] * app/file/file-open.[ch] * app/file/file-save.[ch] * app/pdb/procedural_db.[ch] * app/text/gimptext-compat.[ch] * app/text/gimptextlayer-transform.[ch] * app/gui/brush-select.[ch] * app/gui/font-select.[ch] * app/gui/gradient-select.[ch] * app/gui/palette-select.[ch] * app/gui/pattern-select.[ch]: added tons of "GimpContext *context" parameters and use the passed context instead of gimp_get_current_context(). * app/app_procs.c * app/batch.c * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/paint/gimperaser.c * app/paint/gimppaintbrush.c * app/plug-in/plug-in-message.c * app/plug-in/plug-ins.c * app/text/gimptextlayer.c * app/tools/gimpblendtool.c * app/tools/gimpbucketfilltool.c * app/tools/gimpcroptool.c * app/tools/gimpeditselectiontool.c * app/tools/gimpfliptool.c * app/tools/gimpinktool.c * app/tools/gimptransformtool.c * app/vectors/gimpvectors.c * app/gui/convert-dialog.c * app/gui/drawable-commands.c * app/gui/edit-commands.c * app/gui/file-commands.c * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/image-commands.c * app/gui/layers-commands.c * app/gui/offset-dialog.c * app/gui/select-commands.c * app/gui/vectors-commands.c * app/widgets/gimpdnd.c * app/widgets/gimpdocumentview.c * app/widgets/gimphelp.c * app/widgets/gimpthumbbox.c: pass gimp_get_user_context() or GIMP_CONTEXT(tool_options) or whatever is the right context to the changed core functions. * tools/pdbgen/app.pl: pass "GimpContext *context" to all generated PDB invokers. * tools/pdbgen/pdb/brush_select.pdb * tools/pdbgen/pdb/brushes.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/font_select.pdb * tools/pdbgen/pdb/gradient_select.pdb * tools/pdbgen/pdb/gradients.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb * tools/pdbgen/pdb/paint_tools.pdb * tools/pdbgen/pdb/palette.pdb * tools/pdbgen/pdb/palette_select.pdb * tools/pdbgen/pdb/palettes.pdb * tools/pdbgen/pdb/paths.pdb * tools/pdbgen/pdb/pattern_select.pdb * tools/pdbgen/pdb/patterns.pdb * tools/pdbgen/pdb/selection.pdb * tools/pdbgen/pdb/text_tool.pdb * tools/pdbgen/pdb/transform_tools.pdb: pass the new context parameter to the changed core functions. * app/pdb/*_cmds.c: regenerated.
2004-04-14 23:37:34 +00:00
text_layer = text_render (gimage, drawable, context,
x, y, real_fontname, text,
add the layer to the image before pasting to it. Fixes bug #132504. 2004-01-26 Michael Natterer <mitch@gimp.org> * plug-ins/script-fu/scripts/unsharp-mask.scm: add the layer to the image before pasting to it. Fixes bug #132504. Fixed the underlying problem: make it impossible to attach floating selections to drawables which are not currently part of the image's layer or channel stacks. Also cleaned up image <-> floating_sel interaction: * app/core/gimplayer-floating-sel.[ch] (floating_sel_attach): added assertion that the drawable is part of the image (see below). Don't call gimp_image_floating_selection_changed(), it's emitted by gimp_image_add_layer() now. (floating_sel_remove) (floating_sel_anchor): don't emit "floating_selection_changed", it's emitted by gimp_image_remove_layer() now. (floating_sel_anchor): removed the fix for bug #132162 because gimp_image_remove_layer() behaves correctly now (see below). Renamed floating_sel_reset() to floating_sel_activate_drawable(). Added g_return_if_fail() all over the place. * app/core/gimpimage.[ch]: added new function gimp_image_owns_item() which return TRUE if the passed item is part of the image. (gimp_image_add_layer): emit "floating_selection_changed" here if needed. (gimp_image_remove_layer): emit "floating_selection_changed" if needed, don't try to activate a layer if we called floating_sel_activate_drawable(). This is the real fix for bug #132162. * app/core/gimpimage-undo-push.c (undo_pop_layer): apply the same fixes as to gimp_image_add,remove_layer(). Don't call gimp_drawable_invalidate_preview() on the previously active layer because that's done by gimp_image_set_active_layer() now. * app/xcf/xcf-load.c: remember the "floating_sel_drawable" in the XcfInfo struct and attach it *after* all layers and channels are loaded to avoid attaching the floating selection to an out-of-image drawable. * app/core/gimp-edit.c (gimp_edit_paste) * app/core/gimpdrawable-transform.c (gimp_drawable_transform_affine, gimp_drawable_transform_flip, gimp_drawable_transform_rotate) * app/core/gimpselection.c (gimp_selection_float) * app/text/gimptext-compat.c (text_render): added checks for gimp_image_owns_item() in all functions which can produce floating selections. * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/floating_sel.pdb * tools/pdbgen/pdb/selection.pdb * tools/pdbgen/pdb/text_tool.pdb * tools/pdbgen/pdb/transform_tools.pdb: added checks for gimp_item_owns_image() and return an execution error if invoked with a drawable which is not part of the image. * app/pdb/edit_cmds.c * app/pdb/floating_sel_cmds.c * app/pdb/selection_cmds.c * app/pdb/text_tool_cmds.c * app/pdb/transform_tools_cmds.c: regenerated.
2004-01-26 15:34:47 +00:00
border, antialias);
if (text_layer == NULL)
success = FALSE;
g_free (real_fontname);
}
1999-03-19 23:04:16 +00:00
}
CODE
1999-04-10 04:52:07 +00:00
);
1999-03-19 23:04:16 +00:00
}
1999-04-10 04:52:07 +00:00
sub text_get_extents_fontname {
1999-03-19 23:04:16 +00:00
$blurb = 'Get extents of the bounding box for the specified text.';
$help = <<'HELP';
This tool returns the width and height of a bounding box for the specified text
string with the specified font information. Ascent and descent for the
specified font are returned as well.
HELP
&pdb_misc;
1999-04-10 04:52:07 +00:00
$author .= ' & Sven Neumann';
$date .= '- 2001';
1999-04-10 04:52:07 +00:00
1999-03-19 23:04:16 +00:00
@inargs = (
&text_arg,
&size_args,
1999-04-10 04:52:07 +00:00
&fontname_arg
1999-03-19 23:04:16 +00:00
);
&extents_outargs;
$outargs[0]->{void_ret} = 1;
1999-03-19 23:04:16 +00:00
%invoke = (
1999-04-10 04:52:07 +00:00
vars => [ 'gchar *real_fontname' ],
code => <<'CODE'
{
real_fontname = g_strdup_printf ("%s %d", fontname, (gint) size);
1999-04-10 04:52:07 +00:00
success = text_get_extents (real_fontname, text,
&width, &height,
&ascent, &descent);
g_free (real_fontname);
}
CODE
1999-03-19 23:04:16 +00:00
);
}
1999-04-10 04:52:07 +00:00
sub text {
1999-03-19 23:04:16 +00:00
$blurb = <<'BLURB';
Add text at the specified location as a floating selection or a new layer.
BLURB
$help = <<'HELP';
This function is deprecated, use gimp_get_text_fontname() instead.
1999-03-19 23:04:16 +00:00
HELP
$deprecated = 1;
1999-03-19 23:04:16 +00:00
&pdb_misc;
@inargs = (
1999-04-10 04:52:07 +00:00
&render_args,
&font_prop_args
1999-03-19 23:04:16 +00:00
);
1999-03-21 02:14:08 +00:00
&render_outargs;
1999-03-19 23:04:16 +00:00
%invoke = (
Fixed most of the bugs the Script-Fu logo scripts triggered: 2003-02-14 Michael Natterer <mitch@gimp.org> Fixed most of the bugs the Script-Fu logo scripts triggered: * app/core/gimpdrawable-bucket-fill.[ch] (gimp_drawable_bucket_fill): added "gboolean do_seed_fill" parameter instead of assuming TRUE. (gimp_drawable_bucket_fill_full): moved "color" and "pattern" parameters to the end. * app/tools/gimpbucketfilltool.c * app/display/gimpdisplayshell-dnd.c * app/widgets/gimpdrawablelistview.c: changed accordingly. * tools/pdbgen/pdb/misc_tools.pdb: only pass TRUE if the selection is empty. Restores old PDB behaviour. * app/core/gimpimage-undo.c (gimp_image_undo_group_end): return early if gimage->undo_on is FALSE. Fixes bogus criticals. * app/core/gimpimage.c (gimp_image_add_[layer|channel|vectors]): clamp the passed position to sane values before calling gimp_container_insert() (Scripts adding layers at wrong indices are broken but should not crash the core). * tools/pdbgen/pdb/paint_tools.pdb: need to copy the relevant paint parameters from the current context now that the paint options are contexts themselves. * tools/pdbgen/pdb/palette.pdb: removed useless includes. (Mostly) fixed text PDB functions: * app/text/gimptext-compat.[ch] (text_render): don't set text->font_size = -1 but get the size from the PangoFontDescrition. (text_get_extents): return the logical_rect, not the ink_rect because the size of the created text layer will be the logical_rect. * tools/pdbgen/pdb/text_tool.pdb: removed text_fontname_create() utility function and the usage of pass_through and implement all invokers in-place, using the correct parameters. * plug-ins/script-fu/siod-wrapper.c: fixed BG-IMAGE-FILL compat define so we can BG fill again. Cleaned up color handling code. * plug-ins/script-fu/scripts/coolmetal-logo.scm * plug-ins/script-fu/scripts/glossy.scm * plug-ins/script-fu/scripts/land.scm * plug-ins/script-fu/scripts/lava.scm * plug-ins/script-fu/scripts/test-sphere.scm: use new gradient names. * app/pdb/misc_tools_cmds.c * app/pdb/paint_tools_cmds.c * app/pdb/palette_cmds.c * app/pdb/text_tool_cmds.c: regenerated.
2003-02-14 22:33:22 +00:00
code => <<'CODE'
{
if (drawable && ! gimp_item_is_attached (GIMP_ITEM (drawable)))
Fixed most of the bugs the Script-Fu logo scripts triggered: 2003-02-14 Michael Natterer <mitch@gimp.org> Fixed most of the bugs the Script-Fu logo scripts triggered: * app/core/gimpdrawable-bucket-fill.[ch] (gimp_drawable_bucket_fill): added "gboolean do_seed_fill" parameter instead of assuming TRUE. (gimp_drawable_bucket_fill_full): moved "color" and "pattern" parameters to the end. * app/tools/gimpbucketfilltool.c * app/display/gimpdisplayshell-dnd.c * app/widgets/gimpdrawablelistview.c: changed accordingly. * tools/pdbgen/pdb/misc_tools.pdb: only pass TRUE if the selection is empty. Restores old PDB behaviour. * app/core/gimpimage-undo.c (gimp_image_undo_group_end): return early if gimage->undo_on is FALSE. Fixes bogus criticals. * app/core/gimpimage.c (gimp_image_add_[layer|channel|vectors]): clamp the passed position to sane values before calling gimp_container_insert() (Scripts adding layers at wrong indices are broken but should not crash the core). * tools/pdbgen/pdb/paint_tools.pdb: need to copy the relevant paint parameters from the current context now that the paint options are contexts themselves. * tools/pdbgen/pdb/palette.pdb: removed useless includes. (Mostly) fixed text PDB functions: * app/text/gimptext-compat.[ch] (text_render): don't set text->font_size = -1 but get the size from the PangoFontDescrition. (text_get_extents): return the logical_rect, not the ink_rect because the size of the created text layer will be the logical_rect. * tools/pdbgen/pdb/text_tool.pdb: removed text_fontname_create() utility function and the usage of pass_through and implement all invokers in-place, using the correct parameters. * plug-ins/script-fu/siod-wrapper.c: fixed BG-IMAGE-FILL compat define so we can BG fill again. Cleaned up color handling code. * plug-ins/script-fu/scripts/coolmetal-logo.scm * plug-ins/script-fu/scripts/glossy.scm * plug-ins/script-fu/scripts/land.scm * plug-ins/script-fu/scripts/lava.scm * plug-ins/script-fu/scripts/test-sphere.scm: use new gradient names. * app/pdb/misc_tools_cmds.c * app/pdb/paint_tools_cmds.c * app/pdb/palette_cmds.c * app/pdb/text_tool_cmds.c: regenerated.
2003-02-14 22:33:22 +00:00
success = FALSE;
add the layer to the image before pasting to it. Fixes bug #132504. 2004-01-26 Michael Natterer <mitch@gimp.org> * plug-ins/script-fu/scripts/unsharp-mask.scm: add the layer to the image before pasting to it. Fixes bug #132504. Fixed the underlying problem: make it impossible to attach floating selections to drawables which are not currently part of the image's layer or channel stacks. Also cleaned up image <-> floating_sel interaction: * app/core/gimplayer-floating-sel.[ch] (floating_sel_attach): added assertion that the drawable is part of the image (see below). Don't call gimp_image_floating_selection_changed(), it's emitted by gimp_image_add_layer() now. (floating_sel_remove) (floating_sel_anchor): don't emit "floating_selection_changed", it's emitted by gimp_image_remove_layer() now. (floating_sel_anchor): removed the fix for bug #132162 because gimp_image_remove_layer() behaves correctly now (see below). Renamed floating_sel_reset() to floating_sel_activate_drawable(). Added g_return_if_fail() all over the place. * app/core/gimpimage.[ch]: added new function gimp_image_owns_item() which return TRUE if the passed item is part of the image. (gimp_image_add_layer): emit "floating_selection_changed" here if needed. (gimp_image_remove_layer): emit "floating_selection_changed" if needed, don't try to activate a layer if we called floating_sel_activate_drawable(). This is the real fix for bug #132162. * app/core/gimpimage-undo-push.c (undo_pop_layer): apply the same fixes as to gimp_image_add,remove_layer(). Don't call gimp_drawable_invalidate_preview() on the previously active layer because that's done by gimp_image_set_active_layer() now. * app/xcf/xcf-load.c: remember the "floating_sel_drawable" in the XcfInfo struct and attach it *after* all layers and channels are loaded to avoid attaching the floating selection to an out-of-image drawable. * app/core/gimp-edit.c (gimp_edit_paste) * app/core/gimpdrawable-transform.c (gimp_drawable_transform_affine, gimp_drawable_transform_flip, gimp_drawable_transform_rotate) * app/core/gimpselection.c (gimp_selection_float) * app/text/gimptext-compat.c (text_render): added checks for gimp_image_owns_item() in all functions which can produce floating selections. * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/floating_sel.pdb * tools/pdbgen/pdb/selection.pdb * tools/pdbgen/pdb/text_tool.pdb * tools/pdbgen/pdb/transform_tools.pdb: added checks for gimp_item_owns_image() and return an execution error if invoked with a drawable which is not part of the image. * app/pdb/edit_cmds.c * app/pdb/floating_sel_cmds.c * app/pdb/selection_cmds.c * app/pdb/text_tool_cmds.c * app/pdb/transform_tools_cmds.c: regenerated.
2004-01-26 15:34:47 +00:00
if (success)
{
gchar *real_fontname = g_strdup_printf ("%s %d", family, (gint) size);
Get rid of the "current_context" which was in fact just a bunch of global 2004-04-15 Michael Natterer <mitch@gimp.org> Get rid of the "current_context" which was in fact just a bunch of global variables. Instead, pass the needed context all the way from the GUI and the PDB to the core. This is a prerequisite for macro recording and generally helps separating the various subsystems from each other. Work in progress... * app/core/gimp.[ch]: removed member "current_context" and gimp_[get|set]_current_context(). * app/core/gimp-edit.[ch] * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-bucket-fill.[ch] * app/core/gimpdrawable-offset.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-crop.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-merge.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage.[ch] * app/core/gimpimagefile.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimplayer.[ch] * app/core/gimpselection.[ch] * app/core/gimptemplate.[ch] * app/file/file-open.[ch] * app/file/file-save.[ch] * app/pdb/procedural_db.[ch] * app/text/gimptext-compat.[ch] * app/text/gimptextlayer-transform.[ch] * app/gui/brush-select.[ch] * app/gui/font-select.[ch] * app/gui/gradient-select.[ch] * app/gui/palette-select.[ch] * app/gui/pattern-select.[ch]: added tons of "GimpContext *context" parameters and use the passed context instead of gimp_get_current_context(). * app/app_procs.c * app/batch.c * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/paint/gimperaser.c * app/paint/gimppaintbrush.c * app/plug-in/plug-in-message.c * app/plug-in/plug-ins.c * app/text/gimptextlayer.c * app/tools/gimpblendtool.c * app/tools/gimpbucketfilltool.c * app/tools/gimpcroptool.c * app/tools/gimpeditselectiontool.c * app/tools/gimpfliptool.c * app/tools/gimpinktool.c * app/tools/gimptransformtool.c * app/vectors/gimpvectors.c * app/gui/convert-dialog.c * app/gui/drawable-commands.c * app/gui/edit-commands.c * app/gui/file-commands.c * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/image-commands.c * app/gui/layers-commands.c * app/gui/offset-dialog.c * app/gui/select-commands.c * app/gui/vectors-commands.c * app/widgets/gimpdnd.c * app/widgets/gimpdocumentview.c * app/widgets/gimphelp.c * app/widgets/gimpthumbbox.c: pass gimp_get_user_context() or GIMP_CONTEXT(tool_options) or whatever is the right context to the changed core functions. * tools/pdbgen/app.pl: pass "GimpContext *context" to all generated PDB invokers. * tools/pdbgen/pdb/brush_select.pdb * tools/pdbgen/pdb/brushes.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/font_select.pdb * tools/pdbgen/pdb/gradient_select.pdb * tools/pdbgen/pdb/gradients.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb * tools/pdbgen/pdb/paint_tools.pdb * tools/pdbgen/pdb/palette.pdb * tools/pdbgen/pdb/palette_select.pdb * tools/pdbgen/pdb/palettes.pdb * tools/pdbgen/pdb/paths.pdb * tools/pdbgen/pdb/pattern_select.pdb * tools/pdbgen/pdb/patterns.pdb * tools/pdbgen/pdb/selection.pdb * tools/pdbgen/pdb/text_tool.pdb * tools/pdbgen/pdb/transform_tools.pdb: pass the new context parameter to the changed core functions. * app/pdb/*_cmds.c: regenerated.
2004-04-14 23:37:34 +00:00
text_layer = text_render (gimage, drawable, context,
x, y, real_fontname, text,
add the layer to the image before pasting to it. Fixes bug #132504. 2004-01-26 Michael Natterer <mitch@gimp.org> * plug-ins/script-fu/scripts/unsharp-mask.scm: add the layer to the image before pasting to it. Fixes bug #132504. Fixed the underlying problem: make it impossible to attach floating selections to drawables which are not currently part of the image's layer or channel stacks. Also cleaned up image <-> floating_sel interaction: * app/core/gimplayer-floating-sel.[ch] (floating_sel_attach): added assertion that the drawable is part of the image (see below). Don't call gimp_image_floating_selection_changed(), it's emitted by gimp_image_add_layer() now. (floating_sel_remove) (floating_sel_anchor): don't emit "floating_selection_changed", it's emitted by gimp_image_remove_layer() now. (floating_sel_anchor): removed the fix for bug #132162 because gimp_image_remove_layer() behaves correctly now (see below). Renamed floating_sel_reset() to floating_sel_activate_drawable(). Added g_return_if_fail() all over the place. * app/core/gimpimage.[ch]: added new function gimp_image_owns_item() which return TRUE if the passed item is part of the image. (gimp_image_add_layer): emit "floating_selection_changed" here if needed. (gimp_image_remove_layer): emit "floating_selection_changed" if needed, don't try to activate a layer if we called floating_sel_activate_drawable(). This is the real fix for bug #132162. * app/core/gimpimage-undo-push.c (undo_pop_layer): apply the same fixes as to gimp_image_add,remove_layer(). Don't call gimp_drawable_invalidate_preview() on the previously active layer because that's done by gimp_image_set_active_layer() now. * app/xcf/xcf-load.c: remember the "floating_sel_drawable" in the XcfInfo struct and attach it *after* all layers and channels are loaded to avoid attaching the floating selection to an out-of-image drawable. * app/core/gimp-edit.c (gimp_edit_paste) * app/core/gimpdrawable-transform.c (gimp_drawable_transform_affine, gimp_drawable_transform_flip, gimp_drawable_transform_rotate) * app/core/gimpselection.c (gimp_selection_float) * app/text/gimptext-compat.c (text_render): added checks for gimp_image_owns_item() in all functions which can produce floating selections. * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/floating_sel.pdb * tools/pdbgen/pdb/selection.pdb * tools/pdbgen/pdb/text_tool.pdb * tools/pdbgen/pdb/transform_tools.pdb: added checks for gimp_item_owns_image() and return an execution error if invoked with a drawable which is not part of the image. * app/pdb/edit_cmds.c * app/pdb/floating_sel_cmds.c * app/pdb/selection_cmds.c * app/pdb/text_tool_cmds.c * app/pdb/transform_tools_cmds.c: regenerated.
2004-01-26 15:34:47 +00:00
border, antialias);
if (text_layer == NULL)
success = FALSE;
g_free (real_fontname);
}
Fixed most of the bugs the Script-Fu logo scripts triggered: 2003-02-14 Michael Natterer <mitch@gimp.org> Fixed most of the bugs the Script-Fu logo scripts triggered: * app/core/gimpdrawable-bucket-fill.[ch] (gimp_drawable_bucket_fill): added "gboolean do_seed_fill" parameter instead of assuming TRUE. (gimp_drawable_bucket_fill_full): moved "color" and "pattern" parameters to the end. * app/tools/gimpbucketfilltool.c * app/display/gimpdisplayshell-dnd.c * app/widgets/gimpdrawablelistview.c: changed accordingly. * tools/pdbgen/pdb/misc_tools.pdb: only pass TRUE if the selection is empty. Restores old PDB behaviour. * app/core/gimpimage-undo.c (gimp_image_undo_group_end): return early if gimage->undo_on is FALSE. Fixes bogus criticals. * app/core/gimpimage.c (gimp_image_add_[layer|channel|vectors]): clamp the passed position to sane values before calling gimp_container_insert() (Scripts adding layers at wrong indices are broken but should not crash the core). * tools/pdbgen/pdb/paint_tools.pdb: need to copy the relevant paint parameters from the current context now that the paint options are contexts themselves. * tools/pdbgen/pdb/palette.pdb: removed useless includes. (Mostly) fixed text PDB functions: * app/text/gimptext-compat.[ch] (text_render): don't set text->font_size = -1 but get the size from the PangoFontDescrition. (text_get_extents): return the logical_rect, not the ink_rect because the size of the created text layer will be the logical_rect. * tools/pdbgen/pdb/text_tool.pdb: removed text_fontname_create() utility function and the usage of pass_through and implement all invokers in-place, using the correct parameters. * plug-ins/script-fu/siod-wrapper.c: fixed BG-IMAGE-FILL compat define so we can BG fill again. Cleaned up color handling code. * plug-ins/script-fu/scripts/coolmetal-logo.scm * plug-ins/script-fu/scripts/glossy.scm * plug-ins/script-fu/scripts/land.scm * plug-ins/script-fu/scripts/lava.scm * plug-ins/script-fu/scripts/test-sphere.scm: use new gradient names. * app/pdb/misc_tools_cmds.c * app/pdb/paint_tools_cmds.c * app/pdb/palette_cmds.c * app/pdb/text_tool_cmds.c: regenerated.
2003-02-14 22:33:22 +00:00
}
CODE
1999-04-10 04:52:07 +00:00
);
1999-03-19 23:04:16 +00:00
}
1999-03-21 02:14:08 +00:00
1999-04-10 04:52:07 +00:00
sub text_get_extents {
1999-03-21 02:14:08 +00:00
$blurb = 'Get extents of the bounding box for the specified text.';
$help = <<'HELP';
This function is deprecated, use gimp_get_text_extents_fontname() instead.
1999-03-21 02:14:08 +00:00
HELP
$deprecated = 1;
1999-03-21 02:14:08 +00:00
&pdb_misc;
1999-04-10 04:52:07 +00:00
1999-03-21 02:14:08 +00:00
@inargs = (
&text_arg,
&size_args,
1999-04-10 04:52:07 +00:00
&font_prop_args
1999-03-21 02:14:08 +00:00
);
&extents_outargs;
$outargs[0]->{void_ret} = 1;
1999-03-21 02:14:08 +00:00
%invoke = (
Fixed most of the bugs the Script-Fu logo scripts triggered: 2003-02-14 Michael Natterer <mitch@gimp.org> Fixed most of the bugs the Script-Fu logo scripts triggered: * app/core/gimpdrawable-bucket-fill.[ch] (gimp_drawable_bucket_fill): added "gboolean do_seed_fill" parameter instead of assuming TRUE. (gimp_drawable_bucket_fill_full): moved "color" and "pattern" parameters to the end. * app/tools/gimpbucketfilltool.c * app/display/gimpdisplayshell-dnd.c * app/widgets/gimpdrawablelistview.c: changed accordingly. * tools/pdbgen/pdb/misc_tools.pdb: only pass TRUE if the selection is empty. Restores old PDB behaviour. * app/core/gimpimage-undo.c (gimp_image_undo_group_end): return early if gimage->undo_on is FALSE. Fixes bogus criticals. * app/core/gimpimage.c (gimp_image_add_[layer|channel|vectors]): clamp the passed position to sane values before calling gimp_container_insert() (Scripts adding layers at wrong indices are broken but should not crash the core). * tools/pdbgen/pdb/paint_tools.pdb: need to copy the relevant paint parameters from the current context now that the paint options are contexts themselves. * tools/pdbgen/pdb/palette.pdb: removed useless includes. (Mostly) fixed text PDB functions: * app/text/gimptext-compat.[ch] (text_render): don't set text->font_size = -1 but get the size from the PangoFontDescrition. (text_get_extents): return the logical_rect, not the ink_rect because the size of the created text layer will be the logical_rect. * tools/pdbgen/pdb/text_tool.pdb: removed text_fontname_create() utility function and the usage of pass_through and implement all invokers in-place, using the correct parameters. * plug-ins/script-fu/siod-wrapper.c: fixed BG-IMAGE-FILL compat define so we can BG fill again. Cleaned up color handling code. * plug-ins/script-fu/scripts/coolmetal-logo.scm * plug-ins/script-fu/scripts/glossy.scm * plug-ins/script-fu/scripts/land.scm * plug-ins/script-fu/scripts/lava.scm * plug-ins/script-fu/scripts/test-sphere.scm: use new gradient names. * app/pdb/misc_tools_cmds.c * app/pdb/paint_tools_cmds.c * app/pdb/palette_cmds.c * app/pdb/text_tool_cmds.c: regenerated.
2003-02-14 22:33:22 +00:00
vars => [ 'gchar *real_fontname' ],
code => <<'CODE'
{
real_fontname = g_strdup_printf ("%s %d", family, (gint) size);
success = text_get_extents (real_fontname, text,
&width, &height,
&ascent, &descent);
g_free (real_fontname);
}
CODE
1999-03-21 02:14:08 +00:00
);
}
@headers = qw("libgimpbase/gimpbase.h" "text/gimptext-compat.h");
1999-04-04 05:59:08 +00:00
1999-04-10 04:52:07 +00:00
@procs = qw(text_fontname text_get_extents_fontname text text_get_extents);
Sven Neumann <sven@gimp.org> 2000-06-01 Michael Natterer <mitch@gimp.org> Sven Neumann <sven@gimp.org> Completed the new file structure. Yet only few of the _pdb.[ch] files are based upon generated code and nothing is really autogenerated... * app/Makefile.am * app/gdisplay_cmds.c -> app/display_cmds.c * app/gimage_cmds.c -> app/image_cmds.c * app/gimage_mask_cmds.c -> app/selection_cmds.c * app/internal_procs.c: related change * libgimp/Makefile.am * libgimp/gimp.h * libgimp/gimp_pdb.h * libgimp/gimpdisplay_pdb.[ch] * libgimp/gimpimage_pdb.[ch] * libgimp/gimpselection_pdb.[ch]: replaced with code based on files generated using pdbgen * libgimp/gimpchannelops_pdb.[ch] * libgimp/gimpcolor_pdb.[ch] * libgimp/gimpedit_pdb.[ch] * libgimp/gimpfloatingsel_pdb.[ch] * libgimp/gimpgimprc_pdb.[ch] * libgimp/gimptexttool_pdb.[ch] * libgimp/gimptools_pdb.[ch] * libgimp/gimpundo_pdb.[ch]: new files based on generated code * libgimp/gimpgradientselect.[ch] * libgimp/gimpimage.[ch] * libgimp/gimpselection.[ch]: new files wrapping around the autogenerated PDB wrappers as found in *_pdb.[ch]. This is necessary since the number of parameters or their order is different from the PDP calls. * plug-ins/common/CEL.c: plugged memleak * plug-ins/common/aa.c: removed compiler warning * tools/pdbgen/Makefile.am * tools/pdbgen/groups.pl * tools/pdbgen/pdb/gdisplay.pdb -> display.pdb * tools/pdbgen/pdb/gimage.pdb -> image.pdb * tools/pdbgen/pdb/gimage_mask.pdb -> selection.pdb * tools/pdbgen/pdb/channel_ops.pdb * tools/pdbgen/pdb/color.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/floating_sel.pdb * tools/pdbgen/pdb/gimprc.pdb * tools/pdbgen/pdb/text_tool.pdb * tools/pdbgen/pdb/tools.pdb * tools/pdbgen/pdb/undo.pdb: made them create libgimp code
2000-06-01 12:20:13 +00:00
%exports = (app => [@procs], lib => [@procs]);
1999-03-21 02:14:08 +00:00
$desc = 'Text procedures';
1;