From 386e49480d449596b6f878c572241470a1cf9577 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Thu, 10 Nov 2016 23:00:31 +0100 Subject: Adding ability to modify the color palette of BMP images (untested) --- src/gdisp/gdisp_image_bmp.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'src/gdisp/gdisp_image_bmp.c') diff --git a/src/gdisp/gdisp_image_bmp.c b/src/gdisp/gdisp_image_bmp.c index 371fdf2d..f8ac07ab 100644 --- a/src/gdisp/gdisp_image_bmp.c +++ b/src/gdisp/gdisp_image_bmp.c @@ -829,4 +829,73 @@ delaytime_t gdispImageNext_BMP(gdispImage *img) { return TIME_INFINITE; } +int gdispImageGetPaletteSize_BMP(gdispImage *img) { + #if GDISP_NEED_IMAGE_BMP_1 || GDISP_NEED_IMAGE_BMP_4 || GDISP_NEED_IMAGE_BMP_8 + gdispImagePrivate_BMP *priv; + + priv = (gdispImagePrivate_BMP *)img->priv; + if (!priv) { + return 0; + } + + if (!(priv->bmpflags & BMP_PALETTE)) { + return 0; + } + + return priv->palsize; + #else + return 0; + #endif +} + +color_t gdispImageGetPalette_BMP(gdispImage *img, int index) { + #if GDISP_NEED_IMAGE_BMP_1 || GDISP_NEED_IMAGE_BMP_4 || GDISP_NEED_IMAGE_BMP_8 + gdispImagePrivate_BMP *priv; + + priv = (gdispImagePrivate_BMP *)img->priv; + if (!priv) { + return 0; + } + + if (!(priv->bmpflags & BMP_PALETTE)) { + return 0; + } + + if (index < 0 || index >= priv->palsize) { + return 0; + } + + return priv->palette[index]; + + #else + return 0; + #endif +} + +bool_t gdispImageAdjustPalette_BMP(gdispImage *img, int index, color_t newColor) { + #if GDISP_NEED_IMAGE_BMP_1 || GDISP_NEED_IMAGE_BMP_4 || GDISP_NEED_IMAGE_BMP_8 + gdispImagePrivate_BMP *priv; + + priv = (gdispImagePrivate_BMP *)img->priv; + if (!priv) { + return FALSE; + } + + if (!(priv->bmpflags & BMP_PALETTE)) { + return FALSE; + } + + if (index < 0 || index >= priv->palsize) { + return FALSE; + } + + priv->palette[index] = newColor; + + return TRUE; + + #else + return 0; + #endif +} + #endif /* GFX_USE_GDISP && GDISP_NEED_IMAGE && GDISP_NEED_IMAGE_BMP */ -- cgit v1.2.3 From ebfe1e95a240cdd29d295522f002325c65df622b Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Fri, 11 Nov 2016 18:28:48 +0100 Subject: Minor changes & improvements on image color palletization handling --- src/gdisp/gdisp_image_bmp.c | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) (limited to 'src/gdisp/gdisp_image_bmp.c') diff --git a/src/gdisp/gdisp_image_bmp.c b/src/gdisp/gdisp_image_bmp.c index f8ac07ab..2ea4e95f 100644 --- a/src/gdisp/gdisp_image_bmp.c +++ b/src/gdisp/gdisp_image_bmp.c @@ -829,18 +829,16 @@ delaytime_t gdispImageNext_BMP(gdispImage *img) { return TIME_INFINITE; } -int gdispImageGetPaletteSize_BMP(gdispImage *img) { +uint16_t gdispImageGetPaletteSize_BMP(gdispImage *img) { #if GDISP_NEED_IMAGE_BMP_1 || GDISP_NEED_IMAGE_BMP_4 || GDISP_NEED_IMAGE_BMP_8 gdispImagePrivate_BMP *priv; priv = (gdispImagePrivate_BMP *)img->priv; - if (!priv) { + if (!priv) return 0; - } - if (!(priv->bmpflags & BMP_PALETTE)) { + if (!(priv->bmpflags & BMP_PALETTE)) return 0; - } return priv->palsize; #else @@ -848,48 +846,42 @@ int gdispImageGetPaletteSize_BMP(gdispImage *img) { #endif } -color_t gdispImageGetPalette_BMP(gdispImage *img, int index) { +color_t gdispImageGetPalette_BMP(gdispImage *img, uint16_t index) { #if GDISP_NEED_IMAGE_BMP_1 || GDISP_NEED_IMAGE_BMP_4 || GDISP_NEED_IMAGE_BMP_8 gdispImagePrivate_BMP *priv; priv = (gdispImagePrivate_BMP *)img->priv; - if (!priv) { + if (!priv) return 0; - } - if (!(priv->bmpflags & BMP_PALETTE)) { + if (!(priv->bmpflags & BMP_PALETTE)) return 0; - } - if (index < 0 || index >= priv->palsize) { + if (index >= priv->palsize) return 0; - } - return priv->palette[index]; + return priv->palette[(uint8_t)index]; #else return 0; #endif } -bool_t gdispImageAdjustPalette_BMP(gdispImage *img, int index, color_t newColor) { +bool_t gdispImageAdjustPalette_BMP(gdispImage *img, uint16_t index, color_t newColor) { #if GDISP_NEED_IMAGE_BMP_1 || GDISP_NEED_IMAGE_BMP_4 || GDISP_NEED_IMAGE_BMP_8 gdispImagePrivate_BMP *priv; priv = (gdispImagePrivate_BMP *)img->priv; - if (!priv) { + if (!priv) return FALSE; - } - if (!(priv->bmpflags & BMP_PALETTE)) { + if (!(priv->bmpflags & BMP_PALETTE)) return FALSE; - } - if (index < 0 || index >= priv->palsize) { + if (index >= priv->palsize) return FALSE; - } - priv->palette[index] = newColor; + priv->palette[(uint8_t)index] = newColor; return TRUE; -- cgit v1.2.3