[gimp] app: don't pass a PixelRegion to gradient_precalc_shapeburst()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: don't pass a PixelRegion to gradient_precalc_shapeburst()
- Date: Wed, 2 May 2012 16:43:28 +0000 (UTC)
commit 71e51e18c955e8b546438da8c4d84ce0f5db40a5
Author: Michael Natterer <mitch gimp org>
Date: Mon Apr 23 18:46:49 2012 +0200
app: don't pass a PixelRegion to gradient_precalc_shapeburst()
it only needs a rectangle.
app/core/gimpdrawable-blend.c | 126 +++++++++++++++++++++--------------------
1 files changed, 65 insertions(+), 61 deletions(-)
---
diff --git a/app/core/gimpdrawable-blend.c b/app/core/gimpdrawable-blend.c
index 6752426..aded41b 100644
--- a/app/core/gimpdrawable-blend.c
+++ b/app/core/gimpdrawable-blend.c
@@ -119,11 +119,11 @@ static gdouble gradient_calc_shapeburst_dimpled_factor (GeglBuffer *dist_buff
gdouble x,
gdouble y);
-static GeglBuffer * gradient_precalc_shapeburst (GimpImage *image,
- GimpDrawable *drawable,
- PixelRegion *PR,
- gdouble dist,
- GimpProgress *progress);
+static GeglBuffer * gradient_precalc_shapeburst (GimpImage *image,
+ GimpDrawable *drawable,
+ const GeglRectangle *region,
+ gdouble dist,
+ GimpProgress *progress);
static void gradient_render_pixel (gdouble x,
gdouble y,
@@ -134,27 +134,26 @@ static void gradient_put_pixel (gint x,
GimpRGB *color,
gpointer put_pixel_data);
-static void gradient_fill_region (GimpImage *image,
- GimpDrawable *drawable,
- GimpContext *context,
- GeglBuffer *buffer,
- PixelRegion *PR,
- gint width,
- gint height,
- GimpBlendMode blend_mode,
- GimpGradientType gradient_type,
- gdouble offset,
- GimpRepeatMode repeat,
- gboolean reverse,
- gboolean supersample,
- gint max_depth,
- gdouble threshold,
- gboolean dither,
- gdouble sx,
- gdouble sy,
- gdouble ex,
- gdouble ey,
- GimpProgress *progress);
+static void gradient_fill_region (GimpImage *image,
+ GimpDrawable *drawable,
+ GimpContext *context,
+ GeglBuffer *buffer,
+ const GeglRectangle *buffer_region,
+ PixelRegion *PR,
+ GimpBlendMode blend_mode,
+ GimpGradientType gradient_type,
+ gdouble offset,
+ GimpRepeatMode repeat,
+ gboolean reverse,
+ gboolean supersample,
+ gint max_depth,
+ gdouble threshold,
+ gboolean dither,
+ gdouble sx,
+ gdouble sy,
+ gdouble ex,
+ gdouble ey,
+ GimpProgress *progress);
static void gradient_fill_single_region_rgb (RenderBlendData *rbd,
PixelRegion *PR);
@@ -213,8 +212,8 @@ gimp_drawable_blend (GimpDrawable *drawable,
0, 0, width, height, TRUE);
gradient_fill_region (image, drawable, context,
- buffer,
- &bufPR, width, height,
+ buffer, GEGL_RECTANGLE (0, 0, width, height),
+ &bufPR,
blend_mode, gradient_type, offset, repeat, reverse,
supersample, max_depth, threshold, dither,
(startx - x), (starty - y),
@@ -541,11 +540,11 @@ gradient_calc_shapeburst_dimpled_factor (GeglBuffer *dist_buffer,
}
static GeglBuffer *
-gradient_precalc_shapeburst (GimpImage *image,
- GimpDrawable *drawable,
- PixelRegion *PR,
- gdouble dist,
- GimpProgress *progress)
+gradient_precalc_shapeburst (GimpImage *image,
+ GimpDrawable *drawable,
+ const GeglRectangle *region,
+ gdouble dist,
+ GimpProgress *progress)
{
GimpChannel *mask;
GeglBuffer *dist_buffer;
@@ -557,11 +556,13 @@ gradient_precalc_shapeburst (GimpImage *image,
gimp_progress_set_text (progress, _("Calculating distance map"));
/* allocate the distance map */
- dist_buffer = gegl_buffer_new (GEGL_RECTANGLE (0, 0, PR->w, PR->h),
+ dist_buffer = gegl_buffer_new (GEGL_RECTANGLE (0, 0,
+ region->width, region->height),
babl_format ("Y float"));
/* allocate the selection mask copy */
- temp_buffer = gimp_gegl_buffer_new (GEGL_RECTANGLE (0, 0, PR->w, PR->h),
+ temp_buffer = gimp_gegl_buffer_new (GEGL_RECTANGLE (0, 0,
+ region->width, region->height),
gimp_image_get_mask_format (image));
mask = gimp_image_get_mask (image);
@@ -594,7 +595,8 @@ gradient_precalc_shapeburst (GimpImage *image,
/* extract the aplha into the temp mask */
gegl_buffer_set_format (temp_buffer, component_format);
gegl_buffer_copy (gimp_drawable_get_buffer (drawable),
- GEGL_RECTANGLE (PR->x, PR->y, PR->w, PR->h),
+ GEGL_RECTANGLE (region->x, region->y,
+ region->width, region->height),
temp_buffer,
GEGL_RECTANGLE (0, 0, 0, 0));
gegl_buffer_set_format (temp_buffer, NULL);
@@ -816,27 +818,26 @@ gradient_put_pixel (gint x,
}
static void
-gradient_fill_region (GimpImage *image,
- GimpDrawable *drawable,
- GimpContext *context,
- GeglBuffer *buffer,
- PixelRegion *PR,
- gint width,
- gint height,
- GimpBlendMode blend_mode,
- GimpGradientType gradient_type,
- gdouble offset,
- GimpRepeatMode repeat,
- gboolean reverse,
- gboolean supersample,
- gint max_depth,
- gdouble threshold,
- gboolean dither,
- gdouble sx,
- gdouble sy,
- gdouble ex,
- gdouble ey,
- GimpProgress *progress)
+gradient_fill_region (GimpImage *image,
+ GimpDrawable *drawable,
+ GimpContext *context,
+ GeglBuffer *buffer,
+ const GeglRectangle *buffer_region,
+ PixelRegion *PR,
+ GimpBlendMode blend_mode,
+ GimpGradientType gradient_type,
+ gdouble offset,
+ GimpRepeatMode repeat,
+ gboolean reverse,
+ gboolean supersample,
+ gint max_depth,
+ gdouble threshold,
+ gboolean dither,
+ gdouble sx,
+ gdouble sy,
+ gdouble ex,
+ gdouble ey,
+ GimpProgress *progress)
{
RenderBlendData rbd = { 0, };
@@ -919,7 +920,8 @@ gradient_fill_region (GimpImage *image,
case GIMP_GRADIENT_SHAPEBURST_DIMPLED:
rbd.dist = sqrt (SQR (ex - sx) + SQR (ey - sy));
rbd.dist_buffer = gradient_precalc_shapeburst (image, drawable,
- PR, rbd.dist, progress);
+ buffer_region,
+ rbd.dist, progress);
gimp_progress_set_text (progress, _("Blending"));
break;
@@ -944,11 +946,13 @@ gradient_fill_region (GimpImage *image,
PutPixelData ppd;
ppd.buffer = buffer;
- ppd.row_data = g_malloc (sizeof (float) * 4 * width);
- ppd.width = width;
+ ppd.row_data = g_malloc (sizeof (float) * 4 * buffer_region->width);
+ ppd.width = buffer_region->width;
ppd.dither_rand = g_rand_new ();
- gimp_adaptive_supersample_area (0, 0, (width - 1), (height - 1),
+ gimp_adaptive_supersample_area (0, 0,
+ (buffer_region->width - 1),
+ (buffer_region->height - 1),
max_depth, threshold,
gradient_render_pixel, &rbd,
gradient_put_pixel, &ppd,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]