diff options
author | Benjamin Otte <otte@redhat.com> | 2012-09-19 22:38:24 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-09-20 02:45:41 +0200 |
commit | 502a2bf62546417fb13fd4847fbae13ee62fe031 (patch) | |
tree | b35140958193102f96276a2160feb8cae0685c6f /gtk/gtkcairoblur.c | |
parent | 65ba8901aab50558b135042eab31adca356f5004 (diff) | |
download | gtk+-502a2bf62546417fb13fd4847fbae13ee62fe031.tar.gz |
blur: Use rowstride
Diffstat (limited to 'gtk/gtkcairoblur.c')
-rw-r--r-- | gtk/gtkcairoblur.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/gtk/gtkcairoblur.c b/gtk/gtkcairoblur.c index 8186fc362f..b711f2b2ae 100644 --- a/gtk/gtkcairoblur.c +++ b/gtk/gtkcairoblur.c @@ -64,6 +64,7 @@ static inline void _blurrow (guchar* pixels, gint width, gint height, + gint rowstride, gint channels, gint line, gint alpha, @@ -77,7 +78,7 @@ _blurrow (guchar* pixels, gint index; guchar* scanline; - scanline = &(pixels[line * width * channels]); + scanline = &pixels[line * rowstride]; zR = *scanline << zprec; zG = *(scanline + 1) << zprec; @@ -109,6 +110,7 @@ static inline void _blurcol (guchar* pixels, gint width, gint height, + gint rowstride, gint channels, gint x, gint alpha, @@ -131,8 +133,8 @@ _blurcol (guchar* pixels, zB = *((guchar*) ptr + 2) << zprec; zA = *((guchar*) ptr + 3) << zprec; - for (index = width; index < (height - 1) * width; index += width) - _blurinner ((guchar*) &ptr[index * channels], + for (index = 1; index < height - 1; index++) + _blurinner (&ptr[index * rowstride], &zR, &zG, &zB, @@ -141,8 +143,8 @@ _blurcol (guchar* pixels, aprec, zprec); - for (index = (height - 2) * width; index >= 0; index -= width) - _blurinner ((guchar*) &ptr[index * channels], + for (index = height - 2; index >= 0; index--) + _blurinner (&ptr[index * rowstride], &zR, &zG, &zB, @@ -157,6 +159,7 @@ _blurcol (guchar* pixels, * @pixels: image data * @width: image width * @height: image height + * @rowstride: image rowstride * @channels: image channels * @radius: kernel radius * @aprec: precision of alpha parameter in fixed-point format 0.aprec @@ -172,6 +175,7 @@ static void _expblur (guchar* pixels, gint width, gint height, + gint rowstride, gint channels, double radius, gint aprec, @@ -189,6 +193,7 @@ _expblur (guchar* pixels, _blurrow (pixels, width, height, + rowstride, channels, row, alpha, @@ -199,6 +204,7 @@ _expblur (guchar* pixels, _blurcol (pixels, width, height, + rowstride, channels, col, alpha, @@ -236,6 +242,7 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface, _expblur (cairo_image_surface_get_data (surface), cairo_image_surface_get_width (surface), cairo_image_surface_get_height (surface), + cairo_image_surface_get_stride (surface), 4, radius, 16, |