Hello,
Thanks a lot for the freetype plugin! I created a patch that makes
the resulting text layer a floating layer instead of a normal layer.
The patch also checks if there was is a selection active in which
case it will center the resulting text within the selection.
Perhaps you would like to have another checkbutton for the user to
decide if she wants a normal layer or a floating layer. I'll leave
that up to you to decide.
Another issue that I am looking into is why in some Hebrew ttf fonts
all the characters are mapped into font position '0'. But if I press
[Font Table] I do see all the rendered characters of the font. There
must be some mapping somewhere that gets screwed up. I'll let you
know on this mailing list know if I find something.
Regards,
Dov
*** gimp-freetype-0.2/src/render.c Sat Nov 25 12:43:25 2000
--- gimp-freetype-0.2-dov/src/render.c Mon Feb 12 23:18:04 2001
***************
*** 555,560 ****
--- 555,562 ----
guchar *dest;
guchar fg[3];
gint i;
+ gboolean is_selection;
+ gint x1,x2,y1,y2;
type = gimp_image_base_type (image_ID);
switch (type)
***************
*** 584,591 ****
type,
100,
GIMP_NORMAL_MODE);
- gimp_image_add_layer (image_ID, layer_ID, 0);
drawable = gimp_drawable_get (layer_ID);
/* fill with fg color and clear transparency */
--- 586,609 ----
type,
100,
GIMP_NORMAL_MODE);
+
+ /* Make undo erase the text */
+ gimp_undo_push_group_start(image_ID);
+
+ /* Paste the image as a floating selection */
+ gimp_floating_sel_attach(layer_ID, gimp_image_get_active_layer(image_ID));
+
+ /* Move the new image to the center of the selection, or the center
+ of the image if there is no selection. */
+ gimp_selection_bounds(image_ID, &is_selection, &x1,&y1,&x2,&y2);
+ if (!is_selection)
+ {
+ x1=y1=0;
+ x2=gimp_image_width(image_ID);
+ y2=gimp_image_height(image_ID);
+ }
+ gimp_layer_translate(layer_ID, (x2+x1-width)/2, (y2+y1-height)/2);
drawable = gimp_drawable_get (layer_ID);
/* fill with fg color and clear transparency */
***************
*** 623,628 ****
--- 641,648 ----
gimp_pixel_rgn_set_rect (pixel_rgn, buf, 0, 0, width, height);
g_free (buf);
+
+ gimp_undo_push_group_end(image_ID);
return drawable;
}