gimp r25729 - in trunk/app: base core
- From: neo svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r25729 - in trunk/app: base core
- Date: Wed, 21 May 2008 13:51:26 +0000 (UTC)
Author: neo
Date: Wed May 21 13:51:26 2008
New Revision: 25729
URL: http://svn.gnome.org/viewvc/gimp?rev=25729&view=rev
Log:
fold the three desaturate functions into one
Modified:
trunk/app/base/desaturate.c
trunk/app/base/desaturate.h
trunk/app/core/gimpdrawable-desaturate.c
Modified: trunk/app/base/desaturate.c
==============================================================================
--- trunk/app/base/desaturate.c (original)
+++ trunk/app/base/desaturate.c Wed May 21 13:51:26 2008
@@ -28,15 +28,49 @@
#include "pixel-region.h"
+static void desaturate_region_lightness (PixelRegion *srcPR,
+ PixelRegion *destPR,
+ const gboolean has_alpha);
+static void desaturate_region_luminosity (PixelRegion *srcPR,
+ PixelRegion *destPR,
+ const gboolean has_alpha);
+static void desaturate_region_average (PixelRegion *srcPR,
+ PixelRegion *destPR,
+ const gboolean has_alpha);
+
+
void
-desaturate_region_lightness (gpointer data,
- PixelRegion *srcPR,
- PixelRegion *destPR)
+desaturate_region (GimpDesaturateMode mode,
+ PixelRegion *srcPR,
+ PixelRegion *destPR)
+{
+ g_return_if_fail (srcPR->bytes == destPR->bytes);
+ g_return_if_fail (srcPR->bytes == 3 || srcPR->bytes == 4);
+
+ switch (mode)
+ {
+ case GIMP_DESATURATE_LIGHTNESS:
+ desaturate_region_lightness (srcPR, destPR, srcPR->bytes == 4);
+ break;
+
+ case GIMP_DESATURATE_LUMINOSITY:
+ desaturate_region_luminosity (srcPR, destPR, srcPR->bytes == 4);
+ break;
+
+ case GIMP_DESATURATE_AVERAGE:
+ desaturate_region_average (srcPR, destPR, srcPR->bytes == 4);
+ break;
+ }
+}
+
+static void
+desaturate_region_lightness (PixelRegion *srcPR,
+ PixelRegion *destPR,
+ const gboolean has_alpha)
{
- const guchar *src = srcPR->data;
- guchar *dest = destPR->data;
- gint h = srcPR->h;
- gboolean has_alpha = GPOINTER_TO_INT (data);
+ const guchar *src = srcPR->data;
+ guchar *dest = destPR->data;
+ gint h = srcPR->h;
while (h--)
{
@@ -72,15 +106,14 @@
}
}
-void
-desaturate_region_luminosity (gpointer data,
- PixelRegion *srcPR,
- PixelRegion *destPR)
+static void
+desaturate_region_luminosity (PixelRegion *srcPR,
+ PixelRegion *destPR,
+ const gboolean has_alpha)
{
- const guchar *src = srcPR->data;
- guchar *dest = destPR->data;
- gint h = srcPR->h;
- gboolean has_alpha = GPOINTER_TO_INT (data);
+ const guchar *src = srcPR->data;
+ guchar *dest = destPR->data;
+ gint h = srcPR->h;
while (h--)
{
@@ -110,15 +143,14 @@
}
}
-void
-desaturate_region_average (gpointer data,
- PixelRegion *srcPR,
- PixelRegion *destPR)
+static void
+desaturate_region_average (PixelRegion *srcPR,
+ PixelRegion *destPR,
+ const gboolean has_alpha)
{
- const guchar *src = srcPR->data;
- guchar *dest = destPR->data;
- gint h = srcPR->h;
- gboolean has_alpha = GPOINTER_TO_INT (data);
+ const guchar *src = srcPR->data;
+ guchar *dest = destPR->data;
+ gint h = srcPR->h;
while (h--)
{
Modified: trunk/app/base/desaturate.h
==============================================================================
--- trunk/app/base/desaturate.h (original)
+++ trunk/app/base/desaturate.h Wed May 21 13:51:26 2008
@@ -20,15 +20,9 @@
#define __DESATURATE_H__
-void desaturate_region_lightness (gpointer data,
- PixelRegion *srcPR,
- PixelRegion *destPR);
-void desaturate_region_luminosity (gpointer data,
- PixelRegion *srcPR,
- PixelRegion *destPR);
-void desaturate_region_average (gpointer data,
- PixelRegion *srcPR,
- PixelRegion *destPR);
+void desaturate_region (GimpDesaturateMode mode,
+ PixelRegion *srcPR,
+ PixelRegion *destPR);
#endif /* __DESATURATE_H__ */
Modified: trunk/app/core/gimpdrawable-desaturate.c
==============================================================================
--- trunk/app/core/gimpdrawable-desaturate.c (original)
+++ trunk/app/core/gimpdrawable-desaturate.c Wed May 21 13:51:26 2008
@@ -76,43 +76,19 @@
}
else
{
- PixelRegion srcPR, destPR;
- PixelProcessorFunc function;
- gint x, y;
- gint width, height;
- gboolean has_alpha;
+ PixelRegion srcPR, destPR;
+ gint x, y, width, height;
if (! gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
return;
- switch (mode)
- {
- case GIMP_DESATURATE_LIGHTNESS:
- function = (PixelProcessorFunc) desaturate_region_lightness;
- break;
-
- break;
- case GIMP_DESATURATE_LUMINOSITY:
- function = (PixelProcessorFunc) desaturate_region_luminosity;
- break;
-
- case GIMP_DESATURATE_AVERAGE:
- function = (PixelProcessorFunc) desaturate_region_average;
- break;
-
- default:
- g_return_if_reached ();
- return;
- }
-
- has_alpha = gimp_drawable_has_alpha (drawable);
-
pixel_region_init (&srcPR, gimp_drawable_get_tiles (drawable),
x, y, width, height, FALSE);
pixel_region_init (&destPR, gimp_drawable_get_shadow_tiles (drawable),
x, y, width, height, TRUE);
- pixel_regions_process_parallel (function, GINT_TO_POINTER (has_alpha),
+ pixel_regions_process_parallel ((PixelProcessorFunc) desaturate_region,
+ GINT_TO_POINTER (mode),
2, &srcPR, &destPR);
gimp_drawable_merge_shadow_tiles (drawable, TRUE, _("Desaturate"));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]