aboutsummaryrefslogtreecommitdiffstats
path: root/src/gdisp/image.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gdisp/image.c')
-rw-r--r--src/gdisp/image.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/gdisp/image.c b/src/gdisp/image.c
index 3da0844d..061db5fe 100644
--- a/src/gdisp/image.c
+++ b/src/gdisp/image.c
@@ -167,6 +167,7 @@ bool_t gdispImageSetBaseFileStreamReader(gdispImage *img, void *BaseFileStreamPt
gdispImageError gdispImageOpen(gdispImage *img) {
gdispImageError err;
+ img->bgcolor = White;
for(img->fns = ImageHandlers; img->fns < ImageHandlers+sizeof(ImageHandlers)/sizeof(ImageHandlers[0]); img->fns++) {
err = img->fns->open(img);
if (err != GDISP_IMAGE_ERR_BADFORMAT) {
@@ -190,6 +191,10 @@ void gdispImageClose(gdispImage *img) {
img->io.fns->close(&img->io);
}
+void gdispImageSetBgColor(gdispImage *img, color_t bgcolor) {
+ img->bgcolor = bgcolor;
+}
+
gdispImageError gdispImageCache(gdispImage *img) {
if (!img->fns) return GDISP_IMAGE_ERR_BADFORMAT;
return img->fns->cache(img);
@@ -205,6 +210,34 @@ systime_t gdispImageNext(gdispImage *img) {
return img->fns->next(img);
}
+// Helper Routines
+void *gdispImageAlloc(gdispImage *img, size_t sz) {
+ #if GDISP_NEED_IMAGE_ACCOUNTING
+ void *ptr;
+
+ ptr = chHeapAlloc(NULL, sz);
+ if (ptr) {
+ img->memused += sz;
+ if (img->memused > img->maxmemused)
+ img->maxmemused = img->memused;
+ }
+ return ptr;
+ #else
+ (void) img;
+ return chHeapAlloc(NULL, sz);
+ #endif
+}
+
+void gdispImageFree(gdispImage *img, void *ptr, size_t sz) {
+ #if GDISP_NEED_IMAGE_ACCOUNTING
+ chHeapFree(ptr);
+ img->memused -= sz;
+ #else
+ (void) img;
+ (void) sz;
+ chHeapFree(ptr);
+ #endif
+}
#endif /* GFX_USE_GDISP && GDISP_NEED_IMAGE */
/** @} */