summaryrefslogtreecommitdiffstats
path: root/include/gui
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2012-09-26 11:59:00 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-10-04 17:22:09 +0200
commitda0d61770a1eaebf90f92d432cde7f6e602da7da (patch)
tree80939e74e5d199b8789f136a84f4d0035d668a2a /include/gui
parent3dc70b22556ec808260e94042e6a475ece0a073d (diff)
downloadbarebox-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.h17
-rw-r--r--include/gui/image.h20
-rw-r--r--include/gui/image_renderer.h78
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__ */