added a boolean "push_undo" parameter.

2002-06-06  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpchannel.[ch] (gimp_channel_invert): added a boolean
	"push_undo" parameter.

	* app/core/gimpimage-mask.c
	* app/core/gimpimage-qmask.c: pass push_undo == TRUE.

	* app/core/gimplayer.c (gimp_layer_create_mask): call
	gimp_channel_invert(), not gimp_drawable_invert() because the
	latter takes the current selection into accout (reported by Jimmac
	on #gimp). Added g_return_if_fail() stuff to all public functions.
	Cleanup.
This commit is contained in:
Michael Natterer 2002-06-06 19:07:59 +00:00 committed by Michael Natterer
parent 8c3f15b42a
commit 8bfd02fa5a
9 changed files with 73 additions and 30 deletions

View File

@ -1,3 +1,17 @@
2002-06-06 Michael Natterer <mitch@gimp.org>
* app/core/gimpchannel.[ch] (gimp_channel_invert): added a boolean
"push_undo" parameter.
* app/core/gimpimage-mask.c
* app/core/gimpimage-qmask.c: pass push_undo == TRUE.
* app/core/gimplayer.c (gimp_layer_create_mask): call
gimp_channel_invert(), not gimp_drawable_invert() because the
latter takes the current selection into accout (reported by Jimmac
on #gimp). Added g_return_if_fail() stuff to all public functions.
Cleanup.
2002-06-06 Michael Natterer <mitch@gimp.org>
* app/core/gimpcontainer.c (gimp_container_get_child_by_index):

View File

@ -1322,15 +1322,16 @@ gimp_channel_all (GimpChannel *mask)
}
void
gimp_channel_invert (GimpChannel *mask)
gimp_channel_invert (GimpChannel *mask,
gboolean push_undo)
{
PixelRegion maskPR;
GimpLut *lut;
g_return_if_fail (GIMP_IS_CHANNEL (mask));
/* push the current channel onto the undo stack */
gimp_channel_push_undo (mask);
if (push_undo)
gimp_channel_push_undo (mask);
pixel_region_init (&maskPR, GIMP_DRAWABLE (mask)->tiles,
0, 0,
@ -1339,8 +1340,9 @@ gimp_channel_invert (GimpChannel *mask)
lut = invert_lut_new (1);
pixel_regions_process_parallel ((p_func) gimp_lut_process_inline,
lut, 1, &maskPR);
pixel_regions_process_parallel ((p_func) gimp_lut_process_inline, lut,
1, &maskPR);
gimp_lut_free (lut);
mask->bounds_known = FALSE;
}

View File

@ -160,7 +160,8 @@ void gimp_channel_push_undo (GimpChannel *mask);
void gimp_channel_clear (GimpChannel *mask);
void gimp_channel_all (GimpChannel *mask);
void gimp_channel_invert (GimpChannel *mask);
void gimp_channel_invert (GimpChannel *mask,
gboolean push_undo);
void gimp_channel_border (GimpChannel *mask,
gint radius_x,

View File

@ -1322,15 +1322,16 @@ gimp_channel_all (GimpChannel *mask)
}
void
gimp_channel_invert (GimpChannel *mask)
gimp_channel_invert (GimpChannel *mask,
gboolean push_undo)
{
PixelRegion maskPR;
GimpLut *lut;
g_return_if_fail (GIMP_IS_CHANNEL (mask));
/* push the current channel onto the undo stack */
gimp_channel_push_undo (mask);
if (push_undo)
gimp_channel_push_undo (mask);
pixel_region_init (&maskPR, GIMP_DRAWABLE (mask)->tiles,
0, 0,
@ -1339,8 +1340,9 @@ gimp_channel_invert (GimpChannel *mask)
lut = invert_lut_new (1);
pixel_regions_process_parallel ((p_func) gimp_lut_process_inline,
lut, 1, &maskPR);
pixel_regions_process_parallel ((p_func) gimp_lut_process_inline, lut,
1, &maskPR);
gimp_lut_free (lut);
mask->bounds_known = FALSE;
}

View File

@ -160,7 +160,8 @@ void gimp_channel_push_undo (GimpChannel *mask);
void gimp_channel_clear (GimpChannel *mask);
void gimp_channel_all (GimpChannel *mask);
void gimp_channel_invert (GimpChannel *mask);
void gimp_channel_invert (GimpChannel *mask,
gboolean push_undo);
void gimp_channel_border (GimpChannel *mask,
gint radius_x,

View File

@ -436,7 +436,7 @@ gimp_image_mask_undo (GimpImage *gimage)
void
gimp_image_mask_invert (GimpImage *gimage)
{
gimp_channel_invert (gimp_image_get_mask (gimage));
gimp_channel_invert (gimp_image_get_mask (gimage), TRUE);
}

View File

@ -104,7 +104,7 @@ gimp_image_set_qmask_state (GimpImage *gimage,
}
if (gimage->qmask_inverted)
gimp_channel_invert (mask);
gimp_channel_invert (mask, TRUE);
undo_push_image_qmask (gimage);
@ -131,7 +131,7 @@ gimp_image_set_qmask_state (GimpImage *gimage,
undo_push_image_qmask (gimage);
if (gimage->qmask_inverted)
gimp_channel_invert (mask);
gimp_channel_invert (mask, TRUE);
gimp_image_mask_load (gimage, mask);
gimp_image_remove_channel (gimage, mask);
@ -167,7 +167,7 @@ gimp_image_qmask_invert (GimpImage *gimage)
if (qmask)
{
gimp_channel_invert (qmask);
gimp_channel_invert (qmask, TRUE);
gimp_drawable_update (GIMP_DRAWABLE (qmask),
0, 0,

View File

@ -104,7 +104,7 @@ gimp_image_set_qmask_state (GimpImage *gimage,
}
if (gimage->qmask_inverted)
gimp_channel_invert (mask);
gimp_channel_invert (mask, TRUE);
undo_push_image_qmask (gimage);
@ -131,7 +131,7 @@ gimp_image_set_qmask_state (GimpImage *gimage,
undo_push_image_qmask (gimage);
if (gimage->qmask_inverted)
gimp_channel_invert (mask);
gimp_channel_invert (mask, TRUE);
gimp_image_mask_load (gimage, mask);
gimp_image_remove_channel (gimage, mask);
@ -167,7 +167,7 @@ gimp_image_qmask_invert (GimpImage *gimage)
if (qmask)
{
gimp_channel_invert (qmask);
gimp_channel_invert (qmask, TRUE);
gimp_drawable_update (GIMP_DRAWABLE (qmask),
0, 0,

View File

@ -1,5 +1,3 @@
/* TODO: make sure has_alpha gets set */
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
@ -175,19 +173,22 @@ gimp_layer_class_init (GimpLayerClass *klass)
viewable_class->invalidate_preview = gimp_layer_invalidate_preview;
klass->opacity_changed = NULL;
klass->mode_changed = NULL;
klass->preserve_trans_changed = NULL;
klass->linked_changed = NULL;
klass->mask_changed = NULL;
}
static void
gimp_layer_init (GimpLayer *layer)
{
layer->linked = FALSE;
layer->preserve_trans = FALSE;
layer->mask = NULL;
layer->opacity = GIMP_OPACITY_OPAQUE;
layer->mode = GIMP_NORMAL_MODE;
layer->preserve_trans = FALSE;
layer->linked = FALSE;
layer->mask = NULL;
/* floating selection */
layer->fs.backing_store = NULL;
@ -253,11 +254,11 @@ gimp_layer_invalidate_preview (GimpViewable *viewable)
{
GimpLayer *layer;
layer = GIMP_LAYER (viewable);
if (GIMP_VIEWABLE_CLASS (parent_class)->invalidate_preview)
GIMP_VIEWABLE_CLASS (parent_class)->invalidate_preview (viewable);
layer = GIMP_LAYER (viewable);
if (gimp_layer_is_floating_sel (layer))
floating_sel_invalidate (layer);
}
@ -615,6 +616,8 @@ gimp_layer_create_mask (const GimpLayer *layer,
gchar *mask_name;
GimpRGB black = { 0.0, 0.0, 0.0, GIMP_OPACITY_OPAQUE };
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
gimage = gimp_item_get_image (GIMP_ITEM (layer));
mask_name = g_strdup_printf (_("%s mask"),
@ -734,7 +737,7 @@ gimp_layer_create_mask (const GimpLayer *layer,
case GIMP_ADD_INVERSE_SELECTION_MASK:
case GIMP_ADD_INVERSE_COPY_MASK:
gimp_drawable_invert (GIMP_DRAWABLE (mask));
gimp_channel_invert (GIMP_CHANNEL (mask), FALSE);
break;
}
@ -840,6 +843,8 @@ gimp_layer_translate (GimpLayer *layer,
gint off_x,
gint off_y)
{
g_return_if_fail (GIMP_IS_LAYER (layer));
/* the undo call goes here */
undo_push_layer_displace (gimp_item_get_image (GIMP_ITEM (layer)), layer);
@ -880,6 +885,8 @@ gimp_layer_add_alpha (GimpLayer *layer)
GimpImageType type;
GimpImage *gimage;
g_return_if_fail (GIMP_IS_LAYER (layer));
if (gimp_drawable_has_alpha (GIMP_DRAWABLE (layer)))
return;
@ -1022,6 +1029,8 @@ gimp_layer_check_scaling (const GimpLayer *layer,
gint new_layer_width;
gint new_layer_height;
g_return_val_if_fail (GIMP_IS_LAYER (layer), FALSE);
gimage = gimp_item_get_image (GIMP_ITEM (layer));
img_scale_w = (gdouble) new_width / (gdouble) gimage->width;
img_scale_h = (gdouble) new_height / (gdouble) gimage->height;
@ -1070,6 +1079,8 @@ gimp_layer_scale_by_factors (GimpLayer *layer,
gint new_width, new_height;
gint new_offset_x, new_offset_y;
g_return_val_if_fail (GIMP_IS_LAYER (layer), FALSE);
if (w_factor == 0.0 || h_factor == 0.0)
{
g_message ("gimp_layer_scale_by_factors: Error. Requested width or height scale equals zero.");
@ -1129,6 +1140,8 @@ gimp_layer_scale (GimpLayer *layer,
{
gint new_offset_x, new_offset_y;
g_return_if_fail (GIMP_IS_LAYER (layer));
if (new_width == 0 || new_height == 0)
{
g_message ("gimp_layer_scale: Error. Requested width or height equals zero.");
@ -1172,6 +1185,8 @@ gimp_layer_resize (GimpLayer *layer,
gint w, h;
gint x1, y1, x2, y2;
g_return_if_fail (GIMP_IS_LAYER (layer));
if (new_width < 1 || new_height < 1)
return;
@ -1286,6 +1301,8 @@ gimp_layer_resize_to_image (GimpLayer *layer)
gint offset_x;
gint offset_y;
g_return_if_fail (GIMP_IS_LAYER (layer));
if (! (gimage = gimp_item_get_image (GIMP_ITEM (layer))))
return;
@ -1309,6 +1326,8 @@ gimp_layer_boundary (GimpLayer *layer,
{
BoundSeg *new_segs;
g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL);
/* Create the four boundary segments that encompass this
* layer's boundary.
*/
@ -1367,6 +1386,8 @@ gimp_layer_invalidate_boundary (GimpLayer *layer)
GimpImage *gimage;
GimpChannel *mask;
g_return_if_fail (GIMP_IS_LAYER (layer));
if (! (gimage = gimp_item_get_image (GIMP_ITEM (layer))))
return;
@ -1399,6 +1420,8 @@ gimp_layer_pick_correlate (GimpLayer *layer,
Tile *mask_tile;
gint val;
g_return_val_if_fail (GIMP_IS_LAYER (layer), FALSE);
/* Is the point inside the layer?
* First transform the point to layer coordinates...
*/
@ -1492,7 +1515,7 @@ gimp_layer_get_opacity (const GimpLayer *layer)
{
g_return_val_if_fail (GIMP_IS_LAYER (layer), GIMP_OPACITY_OPAQUE);
return (gdouble) layer->opacity;
return layer->opacity;
}
void