X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fdraw%2Fao_pattern.c;h=de30c5452ae3b338cea8d8422f0773fd89e0d23a;hb=de37d4a17e8eac517ed00f179c9cd5c09b820dfc;hp=4d8c42c8bccf88709f46e857da75627f9cd34f9b;hpb=f9e2f41feac8ccd4e02020cf672366b194d2d60d;p=fw%2Faltos diff --git a/src/draw/ao_pattern.c b/src/draw/ao_pattern.c index 4d8c42c8..de30c545 100644 --- a/src/draw/ao_pattern.c +++ b/src/draw/ao_pattern.c @@ -12,8 +12,8 @@ * General Public License for more details. */ -#include "ao_draw.h" -#include "ao_draw_int.h" +#include +#include static inline uint32_t ao_pattern_expand(uint8_t v, uint8_t rot) @@ -21,7 +21,7 @@ ao_pattern_expand(uint8_t v, uint8_t rot) uint32_t r; if (rot) - v = ao_left(v, 8-rot) | ao_right(v, rot); + v = (uint8_t) ao_left(v, 8-rot) | (uint8_t) ao_right(v, rot); r = v; return (r << 24) | (r << 16) | (r << 8) | (r); } @@ -32,7 +32,7 @@ min(int a, int b) { } void -ao_pattern(const struct ao_bitmap *dst, +ao_pattern(struct ao_bitmap *dst, int16_t x, int16_t y, int16_t width, @@ -52,18 +52,20 @@ ao_pattern(const struct ao_bitmap *dst, ao_clip(y, 0, dst->height); ao_clip(y2, 0, dst->height); + ao_damage(dst, x, y, x2, y2); + if (x < x2 && y < y2) { - int xrot = (x - pat_x) & 7; - int yrot = (y - pat_y) & 7; - int i; + uint8_t xrot = (x - pat_x) & 7; + uint8_t yrot = (y - pat_y) & 7; + uint8_t i; int16_t dst_x, dst_y; for (i = 0; i < 8; i++) pat[(i + yrot) & 7] = ao_pattern_expand(pattern->pattern[i], xrot); for (dst_y = y; dst_y < y2; dst_y += 8) { - int h = min(y2 - dst_y, 8); + int16_t h = (int16_t) min(y2 - dst_y, 8); for (dst_x = x; dst_x < x2; dst_x += 8) { - int w = min(x2 - dst_x, 8); + int16_t w = (int16_t) min(x2 - dst_x, 8); ao_blt(pat, 1, 0, dst->base + dst_y * dst->stride,