summaryrefslogtreecommitdiff
path: root/gtk/gtkcairoblur.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-09-19 22:38:24 +0200
committerBenjamin Otte <otte@redhat.com>2012-09-20 02:45:41 +0200
commit502a2bf62546417fb13fd4847fbae13ee62fe031 (patch)
treeb35140958193102f96276a2160feb8cae0685c6f /gtk/gtkcairoblur.c
parent65ba8901aab50558b135042eab31adca356f5004 (diff)
downloadgtk+-502a2bf62546417fb13fd4847fbae13ee62fe031.tar.gz
blur: Use rowstride
Diffstat (limited to 'gtk/gtkcairoblur.c')
-rw-r--r--gtk/gtkcairoblur.c17
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,