X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fdraw%2Fao_draw.h;h=7f1a413cd980be8ed87d10b0dcb9fce261194996;hb=f9103d13f620cb06642aacdff9dcaf05e87d671f;hp=b4ca6eacc64c106ac74cf1088da764150aa541b1;hpb=c3dff4d7286991888bd79484c19adccc6926afc1;p=fw%2Faltos diff --git a/src/draw/ao_draw.h b/src/draw/ao_draw.h index b4ca6eac..7f1a413c 100644 --- a/src/draw/ao_draw.h +++ b/src/draw/ao_draw.h @@ -18,14 +18,18 @@ #include #include #include "ao_font.h" +#include "ao_box.h" struct ao_bitmap { uint32_t *base; int16_t stride; /* in units */ int16_t width; /* in pixels */ int16_t height; /* in pixels */ + struct ao_box damage; }; +#define AO_BITMAP_STRIDE(width) (((width) + 31) >> 5) + struct ao_coord { float x, y; }; @@ -81,6 +85,12 @@ ao_stride_bytes(int16_t width) return (int16_t) ((width + 7) >> 3); } +static inline void +ao_damage_set_empty(struct ao_bitmap *dst) +{ + ao_box_set_empty(&dst->damage); +} + struct ao_pattern { uint8_t pattern[8]; }; @@ -103,7 +113,7 @@ struct ao_font { }; void -ao_copy(const struct ao_bitmap *dst, +ao_copy(struct ao_bitmap *dst, int16_t dst_x, int16_t dst_y, int16_t width, @@ -114,7 +124,7 @@ ao_copy(const struct ao_bitmap *dst, uint8_t rop); void -ao_rect(const struct ao_bitmap *dst, +ao_rect(struct ao_bitmap *dst, int16_t x, int16_t y, int16_t width, @@ -123,7 +133,7 @@ ao_rect(const struct ao_bitmap *dst, uint8_t rop); void -ao_pattern(const struct ao_bitmap *dst, +ao_pattern(struct ao_bitmap *dst, int16_t x, int16_t y, int16_t width, @@ -134,7 +144,7 @@ ao_pattern(const struct ao_bitmap *dst, uint8_t rop); void -ao_line(const struct ao_bitmap *dst, +ao_line(struct ao_bitmap *dst, int16_t x1, int16_t y1, int16_t x2, @@ -143,24 +153,30 @@ ao_line(const struct ao_bitmap *dst, uint8_t rop); void -ao_poly(const struct ao_bitmap *dst, +ao_poly(struct ao_bitmap *dst, const struct ao_coord *coords, uint16_t ncoords, const struct ao_transform *transform, uint32_t fill, uint8_t rop); -void -ao_text(const struct ao_bitmap *dst, +int16_t +ao_text(struct ao_bitmap *dst, const struct ao_font *font, int16_t x, int16_t y, - char *string, + const char *string, uint32_t fill, uint8_t rop); void -ao_logo(const struct ao_bitmap *dst, +ao_logo_poly(struct ao_bitmap *dst, + const struct ao_transform *transform, + uint32_t fill, + uint8_t rop); + +void +ao_logo(struct ao_bitmap *dst, const struct ao_transform *transform, const struct ao_font *font, uint32_t fill, @@ -201,4 +217,7 @@ extern const struct ao_transform ao_identity; #define AO_NAND 0xe /* NOT src OR NOT dst */ #define AO_SET 0xf /* 1 */ +#define AO_WHITE 0xffffffff +#define AO_BLACK 0x00000000 + #endif /* _AO_DRAW_H_ */