removed the _translate() and _stroke() wrappers.

2003-09-03  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpimage-mask.[ch]: removed the _translate()
	and _stroke() wrappers.

	* app/gui/edit-commands.c
	* app/tools/gimpeditselectiontool.c
	* app/widgets/gimpselectioneditor.c
	* tools/pdbgen/pdb/edit.pdb
	* tools/pdbgen/pdb/selection.pdb: changed accordingly.

	* app/pdb/edit_cmds.c
	* app/pdb/selection_cmds.c: regenerated.

	* app/core/gimpselection.c: implement GimpItem::scale(), resize(),
	flip() and rotate().

	* app/core/gimpimage-crop.c
	* app/core/gimpimage-flip.c
	* app/core/gimpimage-resize.c
	* app/core/gimpimage-rotate.c
	* app/core/gimpimage-scale.c: no need to call
	gimp_image_mask_invalidate() and/or gimp_image_mask_changed()
	manually after scale, resize, flip and rotate, since GimpSelection
	updates itself correctly.
This commit is contained in:
Michael Natterer 2003-09-03 10:19:47 +00:00 committed by Michael Natterer
parent 1bec873321
commit f47b758f32
17 changed files with 189 additions and 116 deletions

View File

@ -1,3 +1,29 @@
2003-09-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-mask.[ch]: removed the _translate()
and _stroke() wrappers.
* app/gui/edit-commands.c
* app/tools/gimpeditselectiontool.c
* app/widgets/gimpselectioneditor.c
* tools/pdbgen/pdb/edit.pdb
* tools/pdbgen/pdb/selection.pdb: changed accordingly.
* app/pdb/edit_cmds.c
* app/pdb/selection_cmds.c: regenerated.
* app/core/gimpselection.c: implement GimpItem::scale(), resize(),
flip() and rotate().
* app/core/gimpimage-crop.c
* app/core/gimpimage-flip.c
* app/core/gimpimage-resize.c
* app/core/gimpimage-rotate.c
* app/core/gimpimage-scale.c: no need to call
gimp_image_mask_invalidate() and/or gimp_image_mask_changed()
manually after scale, resize, flip and rotate, since GimpSelection
updates itself correctly.
2003-09-03 Sven Neumann <sven@gimp.org>
* app/batch.c (batch_init): s/extension/plug_in/ for Script-Fu

View File

@ -34,7 +34,6 @@
#include "core/gimpdrawable-bucket-fill.h"
#include "core/gimpedit.h"
#include "core/gimpimage.h"
#include "core/gimpimage-mask.h"
#include "core/gimpimage-undo.h"
#include "core/gimptoolinfo.h"
@ -276,7 +275,8 @@ edit_stroke_cmd_callback (GtkWidget *widget,
tool_info = gimp_context_get_tool (gimp_get_current_context (gimage->gimp));
gimp_image_mask_stroke (gimage, active_drawable, tool_info->paint_info);
gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (gimage)),
active_drawable, tool_info->paint_info);
gimp_image_flush (gimage);
}

View File

@ -30,7 +30,6 @@
#include "gimpimage.h"
#include "gimpimage-crop.h"
#include "gimpimage-guides.h"
#include "gimpimage-mask.h"
#include "gimpimage-projection.h"
#include "gimpimage-undo.h"
#include "gimpimage-undo-push.h"
@ -176,9 +175,8 @@ gimp_image_crop (GimpImage *gimage,
}
/* Don't forget the selection mask! */
gimp_item_resize (GIMP_ITEM (gimage->selection_mask),
gimp_item_resize (GIMP_ITEM (gimp_image_get_mask (gimage)),
width, height, -x1, -y1);
gimp_image_mask_invalidate (gimage);
/* crop all layers */
list = GIMP_LIST (gimage->layers)->list;
@ -263,8 +261,6 @@ gimp_image_crop (GimpImage *gimage,
gimp_image_update (gimage, 0, 0, gimage->width, gimage->height);
gimp_viewable_size_changed (GIMP_VIEWABLE (gimage));
gimp_image_mask_changed (gimage);
}
gimp_unset_busy (gimage->gimp);

View File

@ -24,7 +24,6 @@
#include "gimp.h"
#include "gimpimage.h"
#include "gimpimage-mask.h"
#include "gimpimage-projection.h"
#include "gimpimage-flip.h"
#include "gimpimage-guides.h"
@ -36,7 +35,7 @@
void
gimp_image_flip (GimpImage *gimage,
gimp_image_flip (GimpImage *gimage,
GimpOrientationType flip_type,
GimpProgressFunc progress_func,
gpointer progress_data)
@ -82,8 +81,8 @@ gimp_image_flip (GimpImage *gimage,
floating_sel_relax (floating_layer, TRUE);
/* Flip all channels */
for (list = GIMP_LIST (gimage->channels)->list;
list;
for (list = GIMP_LIST (gimage->channels)->list;
list;
list = g_list_next (list))
{
item = (GimpItem *) list->data;
@ -95,8 +94,8 @@ gimp_image_flip (GimpImage *gimage,
}
/* Flip all vectors */
for (list = GIMP_LIST (gimage->vectors)->list;
list;
for (list = GIMP_LIST (gimage->vectors)->list;
list;
list = g_list_next (list))
{
item = (GimpItem *) list->data;
@ -108,15 +107,15 @@ gimp_image_flip (GimpImage *gimage,
}
/* Don't forget the selection mask! */
gimp_item_flip (GIMP_ITEM (gimage->selection_mask), flip_type, axis, TRUE);
gimp_image_mask_invalidate (gimage);
gimp_item_flip (GIMP_ITEM (gimp_image_get_mask (gimage)),
flip_type, axis, TRUE);
if (progress_func)
(* progress_func) (0, progress_max, progress_current++, progress_data);
/* Flip all layers */
for (list = GIMP_LIST (gimage->layers)->list;
list;
for (list = GIMP_LIST (gimage->layers)->list;
list;
list = g_list_next (list))
{
item = (GimpItem *) list->data;
@ -160,7 +159,5 @@ gimp_image_flip (GimpImage *gimage,
gimp_image_undo_group_end (gimage);
gimp_image_mask_changed (gimage);
gimp_unset_busy (gimage->gimp);
}

View File

@ -178,29 +178,6 @@ gimp_image_mask_shrink (GimpImage *gimage,
TRUE);
}
void
gimp_image_mask_translate (GimpImage *gimage,
gint off_x,
gint off_y,
gboolean push_undo)
{
g_return_if_fail (GIMP_IS_IMAGE (gimage));
gimp_item_translate (GIMP_ITEM (gimp_image_get_mask (gimage)),
off_x, off_y, TRUE);
}
gboolean
gimp_image_mask_stroke (GimpImage *gimage,
GimpDrawable *drawable,
GimpPaintInfo *paint_info)
{
g_return_val_if_fail (GIMP_IS_IMAGE (gimage), FALSE);
return gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (gimage)),
drawable, paint_info);
}
void
gimp_image_mask_push_undo (GimpImage *gimage,
const gchar *undo_desc)

View File

@ -57,17 +57,6 @@ void gimp_image_mask_shrink (GimpImage *gimage,
gboolean edge_lock);
/* pure wrappers around the resp. GimpItem::foo() functions: */
void gimp_image_mask_translate (GimpImage *gimage,
gint off_x,
gint off_y,
gboolean push_undo);
gboolean gimp_image_mask_stroke (GimpImage *gimage,
GimpDrawable *drawable,
GimpPaintInfo *paint_info);
/* pure wrappers around the resp. GimpSelection functions: */
void gimp_image_mask_push_undo (GimpImage *gimage,

View File

@ -25,7 +25,6 @@
#include "gimp.h"
#include "gimpimage.h"
#include "gimpimage-guides.h"
#include "gimpimage-mask.h"
#include "gimpimage-projection.h"
#include "gimpimage-resize.h"
#include "gimpimage-undo.h"
@ -38,10 +37,10 @@
void
gimp_image_resize (GimpImage *gimage,
gint new_width,
gimp_image_resize (GimpImage *gimage,
gint new_width,
gint new_height,
gint offset_x,
gint offset_x,
gint offset_y,
GimpProgressFunc progress_func,
gpointer progress_data)
@ -105,9 +104,8 @@ gimp_image_resize (GimpImage *gimage,
}
/* Don't forget the selection mask! */
gimp_item_resize (GIMP_ITEM (gimage->selection_mask),
gimp_item_resize (GIMP_ITEM (gimp_image_get_mask (gimage)),
new_width, new_height, offset_x, offset_y);
gimp_image_mask_invalidate (gimage);
if (progress_func)
(* progress_func) (0, progress_max, progress_current++, progress_data);
@ -170,7 +168,5 @@ gimp_image_resize (GimpImage *gimage,
gimp_viewable_size_changed (GIMP_VIEWABLE (gimage));
gimp_image_mask_changed (gimage);
gimp_unset_busy (gimage->gimp);
}

View File

@ -24,7 +24,6 @@
#include "gimp.h"
#include "gimpimage.h"
#include "gimpimage-mask.h"
#include "gimpimage-projection.h"
#include "gimpimage-rotate.h"
#include "gimpimage-guides.h"
@ -45,7 +44,7 @@ static void gimp_image_rotate_guides (GimpImage *gimage,
void
gimp_image_rotate (GimpImage *gimage,
gimp_image_rotate (GimpImage *gimage,
GimpRotationType rotate_type,
GimpProgressFunc progress_func,
gpointer progress_data)
@ -104,8 +103,8 @@ gimp_image_rotate (GimpImage *gimage,
}
/* Rotate all channels */
for (list = GIMP_LIST (gimage->channels)->list;
list;
for (list = GIMP_LIST (gimage->channels)->list;
list;
list = g_list_next (list))
{
item = (GimpItem *) list->data;
@ -120,8 +119,8 @@ gimp_image_rotate (GimpImage *gimage,
}
/* Rotate all vectors */
for (list = GIMP_LIST (gimage->vectors)->list;
list;
for (list = GIMP_LIST (gimage->vectors)->list;
list;
list = g_list_next (list))
{
item = (GimpItem *) list->data;
@ -132,7 +131,7 @@ gimp_image_rotate (GimpImage *gimage,
item->height = new_image_height;
item->offset_x = 0;
item->offset_y = 0;
gimp_item_translate (item,
(new_image_width - gimage->width) / 2,
(new_image_height - gimage->height) / 2,
@ -143,14 +142,12 @@ gimp_image_rotate (GimpImage *gimage,
}
/* Don't forget the selection mask! */
gimp_item_rotate (GIMP_ITEM (gimage->selection_mask),
gimp_item_rotate (GIMP_ITEM (gimp_image_get_mask (gimage)),
rotate_type, center_x, center_y, FALSE);
GIMP_ITEM (gimage->selection_mask)->offset_x = 0;
GIMP_ITEM (gimage->selection_mask)->offset_y = 0;
gimp_image_mask_invalidate (gimage);
if (progress_func)
(* progress_func) (0, progress_max, progress_current++, progress_data);
@ -167,7 +164,7 @@ gimp_image_rotate (GimpImage *gimage,
gimp_item_rotate (item, rotate_type, center_x, center_y, FALSE);
gimp_image_rotate_item_offset (gimage, rotate_type, item, off_x, off_y);
gimp_image_rotate_item_offset (gimage, rotate_type, item, off_x, off_y);
if (progress_func)
(* progress_func) (0, progress_max, progress_current++, progress_data);
@ -208,8 +205,6 @@ gimp_image_rotate (GimpImage *gimage,
if (size_changed)
gimp_viewable_size_changed (GIMP_VIEWABLE (gimage));
gimp_image_mask_changed (gimage);
gimp_unset_busy (gimage->gimp);
}
@ -244,7 +239,7 @@ gimp_image_rotate_item_offset (GimpImage *gimage,
x -= off_x;
y -= off_y;
if (x || y)
gimp_item_translate (item, x, y, FALSE);
}
@ -270,12 +265,12 @@ gimp_image_rotate_guides (GimpImage *gimage,
guide->orientation = GIMP_ORIENTATION_VERTICAL;
guide->position = gimage->height - guide->position;
break;
case GIMP_ORIENTATION_VERTICAL:
gimp_image_undo_push_image_guide (gimage, NULL, guide);
guide->orientation = GIMP_ORIENTATION_HORIZONTAL;
break;
default:
break;
}
@ -288,7 +283,7 @@ gimp_image_rotate_guides (GimpImage *gimage,
gimp_image_move_guide (gimage, guide,
gimage->height - guide->position, TRUE);
break;
case GIMP_ORIENTATION_VERTICAL:
gimp_image_move_guide (gimage, guide,
gimage->width - guide->position, TRUE);
@ -306,13 +301,13 @@ gimp_image_rotate_guides (GimpImage *gimage,
gimp_image_undo_push_image_guide (gimage, NULL, guide);
guide->orientation = GIMP_ORIENTATION_VERTICAL;
break;
case GIMP_ORIENTATION_VERTICAL:
gimp_image_undo_push_image_guide (gimage, NULL, guide);
guide->orientation = GIMP_ORIENTATION_HORIZONTAL;
guide->position = gimage->width - guide->position;
break;
default:
break;
}

View File

@ -24,7 +24,6 @@
#include "gimp.h"
#include "gimpimage.h"
#include "gimpimage-mask.h"
#include "gimpimage-projection.h"
#include "gimpimage-scale.h"
#include "gimpimage-undo.h"
@ -37,8 +36,8 @@
void
gimp_image_scale (GimpImage *gimage,
gint new_width,
gimp_image_scale (GimpImage *gimage,
gint new_width,
gint new_height,
GimpInterpolationType interpolation_type,
GimpProgressFunc progress_func,
@ -86,10 +85,10 @@ gimp_image_scale (GimpImage *gimage,
gimage->height = new_height;
img_scale_w = (gdouble) new_width / (gdouble) old_width;
img_scale_h = (gdouble) new_height / (gdouble) old_height;
/* Scale all channels */
for (list = GIMP_LIST (gimage->channels)->list;
list;
for (list = GIMP_LIST (gimage->channels)->list;
list;
list = g_list_next (list))
{
item = (GimpItem *) list->data;
@ -101,8 +100,8 @@ gimp_image_scale (GimpImage *gimage,
}
/* Scale all vectors */
for (list = GIMP_LIST (gimage->vectors)->list;
list;
for (list = GIMP_LIST (gimage->vectors)->list;
list;
list = g_list_next (list))
{
item = (GimpItem *) list->data;
@ -114,16 +113,16 @@ gimp_image_scale (GimpImage *gimage,
}
/* Don't forget the selection mask! */
gimp_item_scale (GIMP_ITEM (gimage->selection_mask), new_width, new_height,
gimp_item_scale (GIMP_ITEM (gimp_image_get_mask (gimage)),
new_width, new_height,
0, 0, interpolation_type);
gimp_image_mask_invalidate (gimage);
if (progress_func)
(* progress_func) (0, progress_max, progress_current++, progress_data);
/* Scale all layers */
for (list = GIMP_LIST (gimage->layers)->list;
list;
for (list = GIMP_LIST (gimage->layers)->list;
list;
list = g_list_next (list))
{
item = (GimpItem *) list->data;
@ -190,8 +189,6 @@ gimp_image_scale (GimpImage *gimage,
gimp_viewable_size_changed (GIMP_VIEWABLE (gimage));
gimp_image_mask_changed (gimage);
gimp_unset_busy (gimage->gimp);
}
@ -200,14 +197,14 @@ gimp_image_scale (GimpImage *gimage,
* @gimage: A #GimpImage.
* @new_width: The new width.
* @new_height: The new height.
*
*
* Inventory the layer list in gimage and return #TRUE if, after
* scaling, they all retain positive x and y pixel dimensions.
*
*
* Return value: #TRUE if scaling the image will shrink none of it's
* layers completely away.
**/
gboolean
gboolean
gimp_image_check_scaling (const GimpImage *gimage,
gint new_width,
gint new_height)

View File

@ -44,6 +44,26 @@ static void gimp_selection_translate (GimpItem *item,
gint offset_x,
gint offset_y,
gboolean push_undo);
static void gimp_selection_scale (GimpItem *item,
gint new_width,
gint new_height,
gint new_offset_x,
gint new_offset_y,
GimpInterpolationType interp_type);
static void gimp_selection_resize (GimpItem *item,
gint new_width,
gint new_height,
gint off_x,
gint off_y);
static void gimp_selection_flip (GimpItem *item,
GimpOrientationType flip_type,
gdouble axis,
gboolean clip_result);
static void gimp_selection_rotate (GimpItem *item,
GimpRotationType rotation_type,
gdouble center_x,
gdouble center_y,
gboolean clip_result);
static gboolean gimp_selection_stroke (GimpItem *item,
GimpDrawable *drawable,
GimpPaintInfo *paint_info);
@ -141,6 +161,10 @@ gimp_selection_class_init (GimpSelectionClass *klass)
parent_class = g_type_class_peek_parent (klass);
item_class->translate = gimp_selection_translate;
item_class->scale = gimp_selection_scale;
item_class->resize = gimp_selection_resize;
item_class->flip = gimp_selection_flip;
item_class->rotate = gimp_selection_rotate;
item_class->stroke = gimp_selection_stroke;
channel_class->boundary = gimp_selection_boundary;
@ -181,6 +205,81 @@ gimp_selection_translate (GimpItem *item,
gimp_selection_changed (selection);
}
static void
gimp_selection_scale (GimpItem *item,
gint new_width,
gint new_height,
gint new_offset_x,
gint new_offset_y,
GimpInterpolationType interp_type)
{
GimpSelection *selection = GIMP_SELECTION (item);
gimp_selection_invalidate (selection);
GIMP_ITEM_CLASS (parent_class)->scale (item, new_width, new_height,
new_offset_x, new_offset_y,
interp_type);
item->offset_x = 0;
item->offset_y = 0;
gimp_selection_changed (selection);
}
static void
gimp_selection_resize (GimpItem *item,
gint new_width,
gint new_height,
gint off_x,
gint off_y)
{
GimpSelection *selection = GIMP_SELECTION (item);
gimp_selection_invalidate (selection);
GIMP_ITEM_CLASS (parent_class)->resize (item, new_width, new_height,
off_x, off_y);
item->offset_x = 0;
item->offset_y = 0;
gimp_selection_changed (selection);
}
static void
gimp_selection_flip (GimpItem *item,
GimpOrientationType flip_type,
gdouble axis,
gboolean clip_result)
{
GimpSelection *selection = GIMP_SELECTION (item);
gimp_selection_invalidate (selection);
GIMP_ITEM_CLASS (parent_class)->flip (item, flip_type, axis, TRUE);
gimp_selection_changed (selection);
}
static void
gimp_selection_rotate (GimpItem *item,
GimpRotationType rotation_type,
gdouble center_x,
gdouble center_y,
gboolean clip_result)
{
GimpSelection *selection = GIMP_SELECTION (item);
gimp_selection_invalidate (selection);
GIMP_ITEM_CLASS (parent_class)->rotate (item, rotation_type,
center_x, center_y,
clip_result);
gimp_selection_changed (selection);
}
static gboolean
gimp_selection_stroke (GimpItem *item,
GimpDrawable *drawable,

View File

@ -34,7 +34,6 @@
#include "core/gimpdrawable-bucket-fill.h"
#include "core/gimpedit.h"
#include "core/gimpimage.h"
#include "core/gimpimage-mask.h"
#include "core/gimpimage-undo.h"
#include "core/gimptoolinfo.h"
@ -276,7 +275,8 @@ edit_stroke_cmd_callback (GtkWidget *widget,
tool_info = gimp_context_get_tool (gimp_get_current_context (gimage->gimp));
gimp_image_mask_stroke (gimage, active_drawable, tool_info->paint_info);
gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (gimage)),
active_drawable, tool_info->paint_info);
gimp_image_flush (gimage);
}

View File

@ -32,7 +32,6 @@
#include "core/gimpcontext.h"
#include "core/gimpdrawable.h"
#include "core/gimpedit.h"
#include "core/gimpimage-mask.h"
#include "core/gimpimage.h"
#include "core/gimplayer.h"
#include "core/gimptoolinfo.h"
@ -340,7 +339,8 @@ edit_stroke_invoker (Gimp *gimp,
tool_info = gimp_context_get_tool (gimp_get_current_context (gimp));
success = gimp_image_mask_stroke (gimage, drawable, tool_info->paint_info);
success = gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (gimage)),
drawable, tool_info->paint_info);
}
return procedural_db_return_args (&edit_stroke_proc, success);

View File

@ -308,7 +308,7 @@ selection_translate_invoker (Gimp *gimp,
offy = args[2].value.pdb_int;
if (success)
gimp_image_mask_translate (gimage, offx, offy, TRUE);
gimp_item_translate (GIMP_ITEM (gimp_image_get_mask (gimage)), offx, offy, TRUE);
return procedural_db_return_args (&selection_translate_proc, success);
}

View File

@ -407,10 +407,10 @@ gimp_edit_selection_tool_button_release (GimpTool *tool,
/* move the selection -- whether there has been net movement or not!
* (to ensure that there's something on the undo stack)
*/
gimp_image_mask_translate (gdisp->gimage,
edit_select->cumlx,
edit_select->cumly,
TRUE);
gimp_item_translate (GIMP_ITEM (gimp_image_get_mask (gdisp->gimage)),
edit_select->cumlx,
edit_select->cumly,
TRUE);
if (edit_select->first_move)
{
@ -518,7 +518,7 @@ gimp_edit_selection_tool_motion (GimpTool *tool,
gdisp,
motion_x,
motion_y);
/******************************************* adam's live move *******/
/********************************************************************/
{
@ -1013,8 +1013,9 @@ gimp_edit_selection_tool_arrow_key (GimpTool *tool,
if (translate_mask)
{
gimp_image_mask_translate (gdisp->gimage, mask_inc_x, mask_inc_y,
push_undo);
gimp_item_translate (GIMP_ITEM (gimp_image_get_mask (gdisp->gimage)),
mask_inc_x, mask_inc_y,
push_undo);
}
else if (translate_layer)
{

View File

@ -357,9 +357,9 @@ gimp_selection_editor_stroke_clicked (GtkWidget *widget,
tool_info = gimp_context_get_tool (gimp_get_current_context (gimage->gimp));
gimp_image_mask_stroke (gimage,
gimp_image_active_drawable (gimage),
tool_info->paint_info);
gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (gimage)),
gimp_image_active_drawable (gimage),
tool_info->paint_info);
gimp_image_flush (gimage);
}
}

View File

@ -162,8 +162,7 @@ HELP
&inargs('stroke to');
%invoke = (
headers => [ qw("core/gimpimage-mask.h" "core/gimpcontext.h"
"core/gimptoolinfo.h") ],
headers => [ qw("core/gimpcontext.h" "core/gimptoolinfo.h") ],
code => <<'CODE'
{
GimpImage *gimage;
@ -173,7 +172,8 @@ HELP
tool_info = gimp_context_get_tool (gimp_get_current_context (gimp));
success = gimp_image_mask_stroke (gimage, drawable, tool_info->paint_info);
success = gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (gimage)),
drawable, tool_info->paint_info);
}
CODE
);

View File

@ -156,7 +156,7 @@ HELP
@inargs = ( &std_image_arg );
&coord_args('off$_', '$_ offset for translation', \@inargs);
%invoke = ( code => 'gimp_image_mask_translate (gimage, offx, offy, TRUE);' );
%invoke = ( code => 'gimp_item_translate (GIMP_ITEM (gimp_image_get_mask (gimage)), offx, offy, TRUE);' );
}
sub selection_float {