From bed16d9706a72921435ad6df7171daf3f008337c Mon Sep 17 00:00:00 2001 From: Daisuke Nojiri Date: Thu, 24 Sep 2015 12:42:17 -0700 Subject: cbgfx: add load_bitmap This change adds load_bitmap API, which loads a bitmap file from cbfs and returns a pointer to the image data. BUG=none BRANCH=tot TEST=Tested on Samus Change-Id: I7d7874f6f68c414dc877a012ad96c393e42dc35e Signed-off-by: Patrick Georgi Original-Commit-Id: 9d33e713a0cf6bd1365418dad989e47e86db01e4 Original-Change-Id: Idbf9682c2fa9df3f0bd296ca47edd02cd09cfd01 Original-Signed-off-by: Daisuke Nojiri Original-Reviewed-on: https://chromium-review.googlesource.com/302194 Original-Reviewed-by: Randall Spangler Reviewed-on: http://review.coreboot.org/11925 Tested-by: build bot (Jenkins) --- payloads/libpayload/drivers/video/graphics.c | 15 +++++++++++++++ payloads/libpayload/include/cbgfx.h | 12 ++++++++++++ 2 files changed, 27 insertions(+) (limited to 'payloads/libpayload') diff --git a/payloads/libpayload/drivers/video/graphics.c b/payloads/libpayload/drivers/video/graphics.c index d4d08f8fc8..c26147333f 100644 --- a/payloads/libpayload/drivers/video/graphics.c +++ b/payloads/libpayload/drivers/video/graphics.c @@ -5,6 +5,7 @@ */ #include +#include #include #include "bitmap.h" @@ -145,6 +146,20 @@ static int cbgfx_init(void) return 0; } +void *load_bitmap(const char *name, size_t *size) +{ + static struct cbfs_media media; + static int cbfs_media_initialized = 0; + if (!cbfs_media_initialized) { + if (init_default_cbfs_media(&media)) { + printf("Failed to initialize default media\n"); + return NULL; + } + } + cbfs_media_initialized = 1; + return cbfs_get_file_content(&media, name, CBFS_TYPE_RAW, size); +} + int draw_box(const struct rect *box, const struct rgb_color *rgb) { struct vector top_left; diff --git a/payloads/libpayload/include/cbgfx.h b/payloads/libpayload/include/cbgfx.h index 3c28a13cb4..cb037a0897 100644 --- a/payloads/libpayload/include/cbgfx.h +++ b/payloads/libpayload/include/cbgfx.h @@ -73,6 +73,18 @@ struct rgb_color { * y values increasing towards bottom of screen. */ +/* + * Load a bitmap file from cbfs + * + * Memory is allocated automatically and it's caller's responsibility to free it + * + * name: name of the bitmap file + * size: (OUT) size of the image + * + * return: pointer to the image data in memory or NULL on error + */ +void *load_bitmap(const char *name, size_t *size); + /* * draw a box filled with a color on screen * -- cgit v1.2.3