Bug 568479 – add PDB procedures to manipulate size of text box

2009-03-31  Sven Neumann  <sven@gimp.org>

	Bug 568479 – add PDB procedures to manipulate size of text box

	* tools/pdbgen/pdb/text_layer.pdb: add gimp-text-layer-resize,
	based on a patch from Barak Itkin.

	* app/pdb/internal-procs.c
	* app/pdb/text-layer-cmds.c
	* libgimp/gimptextlayer_pdb.[ch]: regenerated.


svn path=/trunk/; revision=28235
This commit is contained in:
Sven Neumann 2009-03-31 19:07:12 +00:00 committed by Sven Neumann
parent 9ba967f0e0
commit 94e626e1cc
6 changed files with 170 additions and 1 deletions

View File

@ -1,3 +1,14 @@
2009-03-31 Sven Neumann <sven@gimp.org>
Bug 568479 add PDB procedures to manipulate size of text box
* tools/pdbgen/pdb/text_layer.pdb: add gimp-text-layer-resize,
based on a patch from Barak Itkin.
* app/pdb/internal-procs.c
* app/pdb/text-layer-cmds.c
* libgimp/gimptextlayer_pdb.[ch]: regenerated.
2009-03-31 Sven Neumann <sven@gimp.org>
* plug-ins/file-uri/uri-backend-gvfs.c (copy_uri): simplified the

View File

@ -28,7 +28,7 @@
#include "internal-procs.h"
/* 596 procedures registered total */
/* 597 procedures registered total */
void
internal_procs_init (GimpPDB *pdb)

View File

@ -1043,6 +1043,43 @@ text_layer_set_letter_spacing_invoker (GimpProcedure *procedure,
error ? *error : NULL);
}
static GValueArray *
text_layer_resize_invoker (GimpProcedure *procedure,
Gimp *gimp,
GimpContext *context,
GimpProgress *progress,
const GValueArray *args,
GError **error)
{
gboolean success = TRUE;
GimpLayer *layer;
gdouble width;
gdouble height;
layer = gimp_value_get_layer (&args->values[0], gimp);
width = g_value_get_double (&args->values[1]);
height = g_value_get_double (&args->values[2]);
if (success)
{
if (gimp_pdb_layer_is_text_layer (layer, error))
{
gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
_("Set text layer attribute"),
"box-width", width,
"box-height", height,
NULL);
}
else
{
success = FALSE;
}
}
return gimp_procedure_get_return_values (procedure, success,
error ? *error : NULL);
}
static GValueArray *
text_layer_get_hinting_invoker (GimpProcedure *procedure,
Gimp *gimp,
@ -1967,6 +2004,41 @@ register_text_layer_procs (GimpPDB *pdb)
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
/*
* gimp-text-layer-resize
*/
procedure = gimp_procedure_new (text_layer_resize_invoker);
gimp_object_set_static_name (GIMP_OBJECT (procedure),
"gimp-text-layer-resize");
gimp_procedure_set_static_strings (procedure,
"gimp-text-layer-resize",
"Resize the box of a text layer.",
"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.",
"Barak Itkin <lightningismyname@gmail.com>",
"Barak Itkin",
"2009",
NULL);
gimp_procedure_add_argument (procedure,
gimp_param_spec_layer_id ("layer",
"layer",
"The text layer",
pdb->gimp, FALSE,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_double ("width",
"width",
"The new box width in pixels",
0.0, GIMP_MAX_IMAGE_SIZE, 0.0,
GIMP_PARAM_READWRITE));
gimp_procedure_add_argument (procedure,
g_param_spec_double ("height",
"height",
"The new box height in pixels",
0.0, GIMP_MAX_IMAGE_SIZE, 0.0,
GIMP_PARAM_READWRITE));
gimp_pdb_register_procedure (pdb, procedure);
g_object_unref (procedure);
/*
* gimp-text-layer-get-hinting
*/

View File

@ -968,6 +968,45 @@ gimp_text_layer_set_letter_spacing (gint32 layer_ID,
return success;
}
/**
* gimp_text_layer_resize:
* @layer_ID: The text layer.
* @width: The new box width in pixels.
* @height: The new box height in pixels.
*
* Resize the box of a text layer.
*
* 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.
*
* Returns: TRUE on success.
*
* Since: GIMP 2.8
*/
gboolean
gimp_text_layer_resize (gint32 layer_ID,
gdouble width,
gdouble height)
{
GimpParam *return_vals;
gint nreturn_vals;
gboolean success = TRUE;
return_vals = gimp_run_procedure ("gimp-text-layer-resize",
&nreturn_vals,
GIMP_PDB_LAYER, layer_ID,
GIMP_PDB_FLOAT, width,
GIMP_PDB_FLOAT, height,
GIMP_PDB_END);
success = return_vals[0].data.d_status == GIMP_PDB_SUCCESS;
gimp_destroy_params (return_vals, nreturn_vals);
return success;
}
/**
* gimp_text_layer_get_hinting:
* @layer_ID: The text layer.

View File

@ -75,6 +75,9 @@ gboolean gimp_text_layer_set_line_spacing (gint32
gdouble gimp_text_layer_get_letter_spacing (gint32 layer_ID);
gboolean gimp_text_layer_set_letter_spacing (gint32 layer_ID,
gdouble letter_spacing);
gboolean gimp_text_layer_resize (gint32 layer_ID,
gdouble width,
gdouble height);
#ifndef GIMP_DISABLE_DEPRECATED
gboolean gimp_text_layer_get_hinting (gint32 layer_ID,
gboolean *autohint);

View File

@ -1109,6 +1109,49 @@ 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
$author = 'Barak Itkin <lightningismyname@gmail.com>';
$copyright = 'Barak Itkin';
$date = '2009';
$since = '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, error))
{
gimp_text_layer_set (GIMP_TEXT_LAYER (layer),
_("Set text layer attribute"),
"box-width", width,
"box-height", height,
NULL);
}
else
{
success = FALSE;
}
}
CODE
);
}
@headers = qw("libgimpbase/gimpbase.h"
"core/gimpcontext.h"
@ -1145,6 +1188,7 @@ CODE
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
);