X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fdraw%2Fao_draw_int.h;h=cd7be34eb5e8b427e5d9c4c10b9965e726161337;hb=2dd10fcc43369129b1d5067f10365574a12943eb;hp=433aa409b6e934bfdf7a1715d1262a7f8e26b444;hpb=1301d576d9bface4cc625e4a4187401f93f54444;p=fw%2Faltos diff --git a/src/draw/ao_draw_int.h b/src/draw/ao_draw_int.h index 433aa409..cd7be34e 100644 --- a/src/draw/ao_draw_int.h +++ b/src/draw/ao_draw_int.h @@ -76,7 +76,7 @@ ao_bits_mask(int16_t x, int16_t w) { r = ao_right_mask((x)+n); \ l = ao_left_mask(x); \ if (l) { \ - n -= AO_UNIT - ((x) & AO_MASK); \ + n -= (int16_t) (AO_UNIT - ((x) & AO_MASK)); \ if (n < 0) { \ n = 0; \ l &= r; \ @@ -94,6 +94,18 @@ ao_bits_mask(int16_t x, int16_t w) { } \ } while (0) +static inline int16_t +ao_min16(int16_t a, int16_t b) +{ + return a < b ? a : b; +} + +static inline int16_t +ao_max16(int16_t a, int16_t b) +{ + return a > b ? a : b; +} + static inline uint32_t ao_do_mask_rrop(uint32_t dst, uint32_t and, uint32_t xor, uint32_t mask) { return (dst & (and | ~mask)) ^ (xor & mask); @@ -104,6 +116,16 @@ ao_do_rrop(uint32_t dst, uint32_t and, uint32_t xor) { return (dst & and) ^ xor; } +static inline void +ao_damage(struct ao_bitmap *dst, + int16_t x1, + int16_t y1, + int16_t x2, + int16_t y2) +{ + ao_box_union(&dst->damage, x1, y1, x2, y2); +} + void ao_blt(uint32_t *src_line, int16_t src_stride,