[gimp] app: port gimp_image_contiguous_region_by_seed() to babl_process()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: port gimp_image_contiguous_region_by_seed() to babl_process()
- Date: Wed, 2 May 2012 16:21:41 +0000 (UTC)
commit 48c796e748c3fb77c437927d82cf47b25a66e1ee
Author: Michael Natterer <mitch gimp org>
Date: Thu Mar 29 01:51:59 2012 +0200
app: port gimp_image_contiguous_region_by_seed() to babl_process()
instead of gimp_image_get_color().
app/core/gimpimage-contiguous-region.c | 39 +++++++++++++++++--------------
1 files changed, 21 insertions(+), 18 deletions(-)
---
diff --git a/app/core/gimpimage-contiguous-region.c b/app/core/gimpimage-contiguous-region.c
index 9004336..6581001 100644
--- a/app/core/gimpimage-contiguous-region.c
+++ b/app/core/gimpimage-contiguous-region.c
@@ -61,7 +61,7 @@ static gboolean find_contiguous_segment (GimpImage *image,
PixelRegion *mask,
gint width,
gint bytes,
- GimpImageType src_type,
+ const Babl *fish,
gboolean has_alpha,
gboolean select_transparent,
GimpSelectCriterion select_criterion,
@@ -73,7 +73,7 @@ static gboolean find_contiguous_segment (GimpImage *image,
static void find_contiguous_region_helper (GimpImage *image,
PixelRegion *mask,
PixelRegion *src,
- GimpImageType src_type,
+ const Babl *fish,
gboolean has_alpha,
gboolean select_transparent,
GimpSelectCriterion select_criterion,
@@ -101,7 +101,8 @@ gimp_image_contiguous_region_by_seed (GimpImage *image,
GimpPickable *pickable;
TileManager *tiles;
GimpChannel *mask;
- GimpImageType src_type;
+ const Babl *src_format;
+ const Babl *fish = NULL;
gboolean has_alpha;
gint bytes;
Tile *tile;
@@ -116,9 +117,9 @@ gimp_image_contiguous_region_by_seed (GimpImage *image,
gimp_pickable_flush (pickable);
- src_type = gimp_pickable_get_image_type (pickable);
- has_alpha = GIMP_IMAGE_TYPE_HAS_ALPHA (src_type);
- bytes = GIMP_IMAGE_TYPE_BYTES (src_type);
+ src_format = gimp_pickable_get_format (pickable);
+ has_alpha = babl_format_has_alpha (src_format);
+ bytes = babl_format_get_bytes_per_pixel (src_format);
tiles = gimp_pickable_get_tiles (pickable);
pixel_region_init (&srcPR, tiles,
@@ -158,9 +159,11 @@ gimp_image_contiguous_region_by_seed (GimpImage *image,
select_transparent = FALSE;
}
- if (GIMP_IMAGE_TYPE_IS_INDEXED (src_type))
+ if (babl_format_is_palette (src_format))
{
- gimp_image_get_color (image, src_type, start, start_col);
+ fish = babl_fish (src_format, babl_format ("R'G'B'A u8"));
+
+ babl_process (fish, start, start_col, 1);
}
else
{
@@ -171,7 +174,7 @@ gimp_image_contiguous_region_by_seed (GimpImage *image,
}
find_contiguous_region_helper (image, &maskPR, &srcPR,
- src_type, has_alpha,
+ fish, has_alpha,
select_transparent, select_criterion,
antialias, threshold,
x, y, start_col);
@@ -428,7 +431,7 @@ find_contiguous_segment (GimpImage *image,
PixelRegion *mask,
gint width,
gint bytes,
- GimpImageType src_type,
+ const Babl *fish,
gboolean has_alpha,
gboolean select_transparent,
GimpSelectCriterion select_criterion,
@@ -449,11 +452,11 @@ find_contiguous_segment (GimpImage *image,
ref_tiles (src->tiles, mask->tiles,
&s_tile, &m_tile, src->x, src->y, &s, &m);
- if (GIMP_IMAGE_TYPE_IS_INDEXED (src_type))
+ if (fish)
{
col_bytes = has_alpha ? 4 : 3;
- gimp_image_get_color (image, src_type, s, s_color);
+ babl_process (fish, s, s_color, 1);
diff = pixel_difference (col, s_color, antialias, threshold,
col_bytes, has_alpha, select_transparent,
@@ -484,9 +487,9 @@ find_contiguous_segment (GimpImage *image,
ref_tiles (src->tiles, mask->tiles,
&s_tile, &m_tile, *start, src->y, &s, &m);
- if (GIMP_IMAGE_TYPE_IS_INDEXED (src_type))
+ if (fish)
{
- gimp_image_get_color (image, src_type, s, s_color);
+ babl_process (fish, s, s_color, 1);
diff = pixel_difference (col, s_color, antialias, threshold,
col_bytes, has_alpha, select_transparent,
@@ -519,9 +522,9 @@ find_contiguous_segment (GimpImage *image,
ref_tiles (src->tiles, mask->tiles,
&s_tile, &m_tile, *end, src->y, &s, &m);
- if (GIMP_IMAGE_TYPE_IS_INDEXED (src_type))
+ if (fish)
{
- gimp_image_get_color (image, src_type, s, s_color);
+ babl_process (fish, s, s_color, 1);
diff = pixel_difference (col, s_color, antialias, threshold,
col_bytes, has_alpha, select_transparent,
@@ -551,7 +554,7 @@ static void
find_contiguous_region_helper (GimpImage *image,
PixelRegion *mask,
PixelRegion *src,
- GimpImageType src_type,
+ const Babl *fish,
gboolean has_alpha,
gboolean select_transparent,
GimpSelectCriterion select_criterion,
@@ -596,7 +599,7 @@ find_contiguous_region_helper (GimpImage *image,
src->y = y;
if (! find_contiguous_segment (image, col, src, mask, src->w,
- src->bytes, src_type, has_alpha,
+ src->bytes, fish, has_alpha,
select_transparent, select_criterion,
antialias, threshold, x,
&new_start, &new_end))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]