diff --git a/include/Mw/Draw.h b/include/Mw/Draw.h index ec1839a..31216f0 100644 --- a/include/Mw/Draw.h +++ b/include/Mw/Draw.h @@ -145,6 +145,15 @@ MWDECL MwLLPixmap MwLoadRaw(MwWidget handle, unsigned char* rgb, int width, int */ MWDECL MwLLPixmap MwLoadXPM(MwWidget handle, char** data); +/*! + * %brief Creates a pixmap from XPM data with background + * %param handle Widget + * %param data Data + * %param bgcolor RGBA data for background + * %return Pixmap + */ +MWDECL MwLLPixmap MwLoadXPMEx(MwWidget handle, char** data, unsigned char* bgcolor); + /* color.c */ /*! diff --git a/src/draw.c b/src/draw.c index 4e4617f..2755874 100644 --- a/src/draw.c +++ b/src/draw.c @@ -642,7 +642,7 @@ typedef struct color { int a; } color_t; -MwLLPixmap MwLoadXPM(MwWidget handle, char** data) { +MwLLPixmap MwLoadXPMEx(MwWidget handle, char** data, unsigned char* bgcolor) { int col, row, colors, cpp; unsigned char* rgb; MwLLPixmap px; @@ -665,10 +665,10 @@ MwLLPixmap MwLoadXPM(MwWidget handle, char** data) { shput(c, k, v); ind = shgeti(c, k); - c[ind].r = 0; - c[ind].g = 0; - c[ind].b = 0; - c[ind].a = 0; + c[ind].r = bgcolor[0]; + c[ind].g = bgcolor[1]; + c[ind].b = bgcolor[2]; + c[ind].a = bgcolor[3]; } else { MwLLColor color = MwParseColor(handle, v); @@ -714,3 +714,10 @@ MwLLPixmap MwLoadXPM(MwWidget handle, char** data) { return px; } + +MwLLPixmap MwLoadXPM(MwWidget handle, char** data){ + unsigned char rgba[4]; + memset(rgba, 0, 4); + + return MwLoadXPMEx(handle, data, rgba); +}