[PATCH 03/12] graphics_utils: Add function to invert an area
Sascha Hauer
s.hauer at pengutronix.de
Thu Jul 16 00:31:43 PDT 2015
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
include/gui/graphic_utils.h | 2 ++
lib/gui/graphic_utils.c | 19 +++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/include/gui/graphic_utils.h b/include/gui/graphic_utils.h
index de7bb24..5c5c40a 100644
--- a/include/gui/graphic_utils.h
+++ b/include/gui/graphic_utils.h
@@ -20,5 +20,7 @@ void gu_memset_pixel(struct fb_info *info, void* buf, u32 color, size_t size);
int fb_open(const char * fbdev, struct screen *sc, bool offscreen);
void fb_close(struct screen *sc);
void gu_screen_blit(struct screen *sc);
+void gu_invert_area(struct fb_info *info, void *buf, int startx, int starty, int width,
+ int height);
#endif /* __GRAPHIC_UTILS_H__ */
diff --git a/lib/gui/graphic_utils.c b/lib/gui/graphic_utils.c
index ae2e9ca..6d2540f 100644
--- a/lib/gui/graphic_utils.c
+++ b/lib/gui/graphic_utils.c
@@ -128,6 +128,25 @@ static u8 alpha_mux(int s, int d, int a)
return (d * a + s * (255 - a)) >> 8;
}
+void gu_invert_area(struct fb_info *info, void *buf, int startx, int starty, int width,
+ int height)
+{
+ unsigned char *adr;
+ int x, y;
+ int line_length;
+ int bpp = info->bits_per_pixel >> 3;
+
+ line_length = info->line_length;
+
+ for (y = starty; y < starty + height; y++) {
+ adr = buf + line_length * y + startx * bpp;
+
+ for (x = 0; x < width * bpp; x++) {
+ *adr++ ^= 0xff;
+ }
+ }
+}
+
void gu_set_rgba_pixel(struct fb_info *info, void *adr, u8 r, u8 g, u8 b, u8 a)
{
u32 px = 0x0;
--
2.1.4
More information about the barebox
mailing list