diff options
author | Kim Woelders <kim@woelders.dk> | 2021-04-15 12:57:25 +0200 |
---|---|---|
committer | Kim Woelders <kim@woelders.dk> | 2021-04-16 17:15:06 +0200 |
commit | 27ab891c56293ed34f592e628ef73ee34c24ef30 (patch) | |
tree | c0b7f7e62ed8ce78e143f162bbd607505ef0bd7a | |
parent | e82a5997ecf595ceb1ede964337733beb47cb94c (diff) | |
download | imlib2-27ab891c56293ed34f592e628ef73ee34c24ef30.tar.gz |
Fix clang-analyzer warnings - lib (less trivial)
-rw-r--r-- | src/lib/ellipse.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/lib/ellipse.c b/src/lib/ellipse.c index ddb410b..b7f21dd 100644 --- a/src/lib/ellipse.c +++ b/src/lib/ellipse.c @@ -6,6 +6,18 @@ #include "rgbadraw.h" #include "span.h" +/* Integer divide by 2^16 rounded */ +static int +div_round_16(int n) +{ + int nn; + + nn = n >> 15; + nn = (nn >> 1) + (nn & 1); + + return nn; +} + static void __imlib_Ellipse_DrawToData(int xc, int yc, int a, int b, DATA32 color, DATA32 * dst, int dstw, int clx, int cly, int clw, @@ -47,8 +59,7 @@ __imlib_Ellipse_DrawToData(int xc, int yc, int a, int b, DATA32 color, { int len; - y = yy >> 16; - y += ((yy - (y << 16)) >> 15); + y = div_round_16(yy); if (prev_y != y) { @@ -102,8 +113,7 @@ __imlib_Ellipse_DrawToData(int xc, int yc, int a, int b, DATA32 color, { int len; - x = xx >> 16; - x += ((xx - (x << 16)) >> 15); + x = div_round_16(xx); if (prev_x != x) { @@ -197,7 +207,7 @@ __imlib_Ellipse_DrawToData_AA(int xc, int yc, int a, int b, DATA32 color, bp -= dstw; } - A_VAL(&col1) = (yy - (y << 16)) >> 8; + A_VAL(&col1) = yy >> 8; A_VAL(&col0) = 255 - A_VAL(&col1); if (ca < 255) @@ -273,7 +283,7 @@ __imlib_Ellipse_DrawToData_AA(int xc, int yc, int a, int b, DATA32 color, bp--; } - A_VAL(&col1) = (xx - (x << 16)) >> 8; + A_VAL(&col1) = xx >> 8; A_VAL(&col0) = 255 - A_VAL(&col1); if (ca < 255) @@ -365,8 +375,7 @@ __imlib_Ellipse_FillToData(int xc, int yc, int a, int b, DATA32 color, int len; DATA32 *tpp, *bpp; - y = yy >> 16; - y += ((yy - (y << 16)) >> 15); + y = div_round_16(yy); if (prev_y != y) { @@ -437,8 +446,7 @@ __imlib_Ellipse_FillToData(int xc, int yc, int a, int b, DATA32 color, int len; DATA32 *tpp, *bpp; - x = xx >> 16; - x += ((xx - (x << 16)) >> 15); + x = div_round_16(xx); if (prev_x != x) { @@ -559,7 +567,7 @@ __imlib_Ellipse_FillToData_AA(int xc, int yc, int a, int b, DATA32 color, sfunc(color, bpp, len); } - A_VAL(&col1) = ((yy - (y << 16)) >> 8); + A_VAL(&col1) = yy >> 8; if (ca < 255) MULT(A_VAL(&col1), ca, A_VAL(&col1), tmp); @@ -635,7 +643,7 @@ __imlib_Ellipse_FillToData_AA(int xc, int yc, int a, int b, DATA32 color, if (((unsigned)by < (unsigned)clh) && (len > 0)) sfunc(color, bpp, len); - A_VAL(&col1) = ((xx - (x << 16)) >> 8); + A_VAL(&col1) = xx >> 8; if (ca < 255) MULT(A_VAL(&col1), ca, A_VAL(&col1), tmp); |