From: Søren Sandmann Pedersen Date: Thu, 5 Apr 2012 04:42:55 +0000 (-0400) Subject: test/utils.c: Clip values to the [0, 255] interval X-Git-Tag: pixman-0.25.6~25 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4d2fee14063b960c6b81b55dd3aa94b956d23eeb;p=platform%2Fupstream%2Fpixman.git test/utils.c: Clip values to the [0, 255] interval Unpremultiplying a superluminescent pixel can result in values greater than 255. --- diff --git a/test/utils.c b/test/utils.c index cc0365a..c1bf6dc 100644 --- a/test/utils.c +++ b/test/utils.c @@ -358,9 +358,16 @@ a8r8g8b8_to_rgba_np (uint32_t *dst, uint32_t *src, int n_pixels) if (a != 0) { - r = (r * 255) / a; - g = (g * 255) / a; - b = (b * 255) / a; +#define DIVIDE(c, a) \ + do \ + { \ + int t = ((c) * 255) / a; \ + (c) = t < 0? 0 : t > 255? 255 : t; \ + } while (0) + + DIVIDE (r, a); + DIVIDE (g, a); + DIVIDE (b, a); } *dst8++ = r;