diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-09-26 11:59:00 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-10-04 17:22:09 +0200 |
commit | da0d61770a1eaebf90f92d432cde7f6e602da7da (patch) | |
tree | 80939e74e5d199b8789f136a84f4d0035d668a2a /include/gui | |
parent | 3dc70b22556ec808260e94042e6a475ece0a073d (diff) | |
download | barebox-da0d61770a1eaebf90f92d432cde7f6e602da7da.tar.gz barebox-da0d61770a1eaebf90f92d432cde7f6e602da7da.tar.xz |
gui: move gui file to include/gui and lib/gui
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include/gui')
-rw-r--r-- | include/gui/graphic_utils.h | 17 | ||||
-rw-r--r-- | include/gui/image.h | 20 | ||||
-rw-r--r-- | include/gui/image_renderer.h | 78 |
3 files changed, 115 insertions, 0 deletions
diff --git a/include/gui/graphic_utils.h b/include/gui/graphic_utils.h new file mode 100644 index 0000000000..9909b6c873 --- /dev/null +++ b/include/gui/graphic_utils.h @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> + * + * GPL v2 + */ + +#ifndef __GRAPHIC_UTILS_H__ +#define __GRAPHIC_UTILS_H__ + +void rgba_blend(struct fb_info *info, void *image, void* dest, int height, + int width, int startx, int starty, bool is_rgba); +void set_pixel(struct fb_info *info, void *adr, u32 px); +void set_rgb_pixel(struct fb_info *info, void *adr, u8 r, u8 g, u8 b); +void set_rgba_pixel(struct fb_info *info, void *adr, u8 r, u8 g, u8 b, u8 a); +void memset_pixel(struct fb_info *info, void* buf, u32 color, size_t size); + +#endif /* __GRAPHIC_UTILS_H__ */ diff --git a/include/gui/image.h b/include/gui/image.h new file mode 100644 index 0000000000..ea423b2596 --- /dev/null +++ b/include/gui/image.h @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> + * + * GPL v2 + */ + +#ifndef __GUI_IMAGE_H__ +#define __GUI_IMAGE_H__ + +struct image_renderer; + +struct image { + void *data; + struct image_renderer *ir; + int height; + int width; + int bits_per_pixel; +}; + +#endif /* __IMAGE_RENDERER_H__ */ diff --git a/include/gui/image_renderer.h b/include/gui/image_renderer.h new file mode 100644 index 0000000000..5ee9969442 --- /dev/null +++ b/include/gui/image_renderer.h @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> + * + * GPL v2 + */ + +#ifndef __IMAGE_RENDER_H__ +#define __IMAGE_RENDER_H__ + +#include <filetype.h> +#include <linux/list.h> +#include <errno.h> +#include <linux/err.h> +#include <fb.h> +#include <gui/image.h> + +struct image_renderer { + enum filetype type; + struct image *(*open)(char *data, int size); + void (*close)(struct image *img); + int (*renderer)(struct fb_info *info, struct image *img, void* fb, + int startx, int starty, void* offscreenbuf); + + /* + * do not free the data read from the file + * needed by bmp support + */ + int keep_file_data; + + struct list_head list; +}; + +#ifdef CONFIG_IMAGE_RENDERER +int image_renderer_register(struct image_renderer *ir); +void image_render_unregister(struct image_renderer *ir); + +int image_renderer_image(struct fb_info *info, struct image *img, void* fb, + int startx, int starty, void* offscreenbuf); + +struct image *image_renderer_open(const char* file); +void image_renderer_close(struct image *img); + +#else +static inline int image_renderer_register(struct image_renderer *ir) +{ + return -EINVAL; +} +static inline void image_renderer_unregister(struct image_renderer *ir) {} + +static inline struct image *image_renderer_open(const char* file) +{ + return ERR_PTR(-EINVAL); +} + +static inline void image_renderer_close(struct image *img) {} + +int image_renderer_image(struct fb_info *info, struct image *img, void* fb, + int startx, int starty, void* offscreenbuf); +#endif + +static inline int image_renderer_file(struct fb_info *info, const char* file, void* fb, + int startx, int starty, void* offscreenbuf) +{ + struct image* img = image_renderer_open(file); + int ret; + + if (IS_ERR(img)) + return PTR_ERR(img); + + ret = image_renderer_image(info, img, fb, startx, starty, + offscreenbuf); + + image_renderer_close(img); + + return ret; +} + +#endif /* __IMAGE_RENDERER_H__ */ |