diff --git a/.gitignore b/.gitignore index ecc3570..8c1aa21 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,8 @@ src/osd-echo src/osd-echo.o src/utf8.o xosd-xft.pc + +# Code::Blocks files +obj/ +*.depend +*.layout diff --git a/src/libxosd-xft/intern.h b/src/libxosd-xft/intern.h index 7bbe3b5..7fe7e3c 100644 --- a/src/libxosd-xft/intern.h +++ b/src/libxosd-xft/intern.h @@ -41,7 +41,7 @@ typedef enum _DEBUG_LEVEL { Dfunction = (1<<0), /* Function enter/exit */ Dlocking = (1<<1), /* Locking */ Dselect = (1<<2), /* select() processing */ - Dtrace = (1<<3), /* Programm progess */ + Dtrace = (1<<3), /* Program progess */ Dvalue = (1<<4), /* Computed values */ Dupdate = (1<<5), /* Display update processing */ Dall = -1 /* Everything */ @@ -87,10 +87,12 @@ typedef struct _osd_settings int maxlines; int nlines; const char* fontname; - const char* color; + const char* text_color; + unsigned int text_alpha; const char* bg_color; unsigned int bg_alpha; const char* shadow_color; + unsigned int shadow_alpha; int shadow_offset; const char* padding; const char* text_align; @@ -123,7 +125,7 @@ struct xosd_xft XftFont* font; /* Colors */ - XftColor color; + XftColor text_color; XftColor bg_color; XftColor shadow_color; diff --git a/src/libxosd-xft/xosd-xft.c b/src/libxosd-xft/xosd-xft.c index 1243803..36d8fa2 100644 --- a/src/libxosd-xft/xosd-xft.c +++ b/src/libxosd-xft/xosd-xft.c @@ -39,10 +39,12 @@ void load_defaults(osd_settings *settings) settings->use_xinerama = 1; #endif settings->fontname = osd_default_font; - settings->color = "#0000ee"; + settings->text_color = "#0000ee"; + settings->text_alpha = 100; settings->bg_color = "black"; settings->bg_alpha = 100; settings->shadow_color = "lightgrey"; + settings->shadow_alpha = 100; settings->shadow_offset = 0; settings->padding = "0"; settings->text_align = "center"; @@ -401,7 +403,7 @@ event_loop(void *osdv) if(osd->settings.shadow_offset) { XftDrawStringUtf8(osd->draw, &osd->shadow_color, osd->font, x + osd->settings.shadow_offset, y + osd->settings.shadow_offset, (const FcChar8 *)message, strlen(message)); } - XftDrawStringUtf8(osd->draw, &osd->color, osd->font, x, y, (const FcChar8 *)message, strlen(message)); + XftDrawStringUtf8(osd->draw, &osd->text_color, osd->font, x, y, (const FcChar8 *)message, strlen(message)); } XftDrawSetClip(osd->draw, NULL); } @@ -418,11 +420,11 @@ event_loop(void *osdv) XMoveResizeWindow(osd->display, osd->window, osd->w_x, osd->w_y, osd->w_width, osd->w_height); } else if (ev.xclient.data.l[0] == XOSD_XFT_event_Foreground) { XftColor xft_color ; - if(init_color(osd, osd->settings.color, 0, &xft_color) != -1) { - XftColorFree(osd->display, osd->visual, osd->colormap, &osd->color); - osd->color = xft_color; + if(init_color(osd, osd->settings.text_color, osd->settings.text_alpha, &xft_color) != -1) { + XftColorFree(osd->display, osd->visual, osd->colormap, &osd->text_color); + osd->text_color = xft_color; } else { - fprintf(stderr, "Error in setting color %s: %s (ignoring)\n", osd->settings.color, osd_error); + fprintf(stderr, "Error in setting text color %s: %s (ignoring)\n", osd->settings.text_color, osd_error); } } else if (ev.xclient.data.l[0] == XOSD_XFT_event_Background) { XftColor xft_color ; @@ -430,15 +432,15 @@ event_loop(void *osdv) XftColorFree(osd->display, osd->visual, osd->colormap, &osd->bg_color); osd->bg_color = xft_color; } else { - fprintf(stderr, "Error in setting color %s: %s (ignoring)\n", osd->settings.bg_color, osd_error); + fprintf(stderr, "Error in setting background color %s: %s (ignoring)\n", osd->settings.bg_color, osd_error); } } else if (ev.xclient.data.l[0] == XOSD_XFT_event_Shadow) { XftColor xft_color ; - if(init_color(osd, osd->settings.shadow_color, 0, &xft_color) != -1) { + if(init_color(osd, osd->settings.shadow_color, osd->settings.shadow_alpha, &xft_color) != -1) { XftColorFree(osd->display, osd->visual, osd->colormap, &osd->shadow_color); osd->shadow_color = xft_color; } else { - fprintf(stderr, "Error in setting color %s: %s (ignoring)\n", osd->settings.bg_color, osd_error); + fprintf(stderr, "Error in setting shadow color %s: %s (ignoring)\n", osd->settings.bg_color, osd_error); } } } @@ -455,7 +457,7 @@ init_color(xosd_xft* osd, const char* color, unsigned int alpha, XftColor* xft_c FUNCTION_START(); XRenderColor bgRender; if (!XftColorAllocName(osd->display, osd->visual, osd->colormap, color, xft_color)) { - osd_error = "Could not allocate color"; + osd_error = "Could not allocate text color"; return -1; } if(alpha < 100) { @@ -564,11 +566,11 @@ osd_init(xosd_xft *osd) XSelectInput(osd->display, osd->window, ExposureMask); /* Xft. */ - if (init_color(osd, osd->settings.color, 0, &osd->color) == -1) { + if (init_color(osd, osd->settings.text_color, osd->settings.text_alpha, &osd->text_color) == -1) { FUNCTION_END(); return -1; } - if (init_color(osd, osd->settings.shadow_color, 0, &osd->shadow_color)) { + if (init_color(osd, osd->settings.shadow_color, osd->settings.shadow_alpha, &osd->shadow_color)) { FUNCTION_END(); return -1; } @@ -681,7 +683,7 @@ int osd_destroy(xosd_xft *osd) return 0; send_event(osd, XOSD_XFT_event_Exit); pthread_join(osd->event_thread, NULL); - XftColorFree(osd->display, osd->visual, osd->colormap, &osd->color); + XftColorFree(osd->display, osd->visual, osd->colormap, &osd->text_color); XftDrawDestroy(osd->draw); XDestroyWindow(osd->display, osd->window); XCloseDisplay(osd->display); @@ -747,11 +749,12 @@ void osd_set_padding(xosd_xft *osd, const char *padding) /* }}} */ -/* osd_set_color -- set color {{{ */ -void osd_set_color(xosd_xft *osd, const char *color) +/* osd_set_textcolor -- set text color {{{ */ +void osd_set_textcolor(xosd_xft *osd, const char *textcolor, unsigned int textalpha) { FUNCTION_START(); - osd->settings.color = color; + osd->settings.text_color = textcolor; + osd->settings.text_alpha = textalpha; if(osd->display != NULL) { send_event(osd, XOSD_XFT_event_Foreground); send_expose_event(osd); @@ -762,11 +765,11 @@ void osd_set_color(xosd_xft *osd, const char *color) /* }}} */ /* osd_set_bgcolor -- set background color {{{ */ -void osd_set_bgcolor(xosd_xft *osd, const char *bgcolor, unsigned int alpha) +void osd_set_bgcolor(xosd_xft *osd, const char *bgcolor, unsigned int bgalpha) { FUNCTION_START(); osd->settings.bg_color = bgcolor; - osd->settings.bg_alpha = alpha; + osd->settings.bg_alpha = bgalpha; if(osd->display != NULL) { send_event(osd, XOSD_XFT_event_Background); send_expose_event(osd); @@ -787,10 +790,11 @@ void osd_set_shadowoffset(xosd_xft *osd, int offset) /* }}} */ /* osd_set_shadowcolor -- set shadow color {{{ */ -void osd_set_shadowcolor(xosd_xft *osd, const char *shadowcolor) +void osd_set_shadowcolor(xosd_xft *osd, const char *shadowcolor, unsigned int shadowalpha) { FUNCTION_START(); osd->settings.shadow_color = shadowcolor; + osd->settings.shadow_alpha = shadowalpha; if(osd->display != NULL) { send_event(osd, XOSD_XFT_event_Shadow); send_expose_event(osd); diff --git a/src/osd-cat.c b/src/osd-cat.c index 75925a9..d3a7fb9 100644 --- a/src/osd-cat.c +++ b/src/osd-cat.c @@ -50,7 +50,7 @@ static struct option long_options[] = { /* Main options */ {"bg-alpha", 1, NULL, 'a'}, {"bg-color", 1, NULL, 'b'}, - {"color", 1, NULL, 'c'}, + {"text-color", 1, NULL, 'c'}, {"delay-in-millis", 1, NULL, 'd'}, #ifdef DEBUG {"debug", 1, NULL, 'D'}, @@ -78,7 +78,8 @@ xosd_xft *osd; /* Default Values */ char* font = "mono:size=12"; -char* color = "lightblue"; +char* text_color = "lightblue"; +int text_alpha = 100; char* bg_color = "black"; int bg_alpha = 100; char* padding = "10"; @@ -133,7 +134,7 @@ int main(int argc, char *argv[]) font = optarg; break; case 'c': - color = optarg; + text_color = optarg; break; case 'p': padding = optarg; @@ -210,7 +211,7 @@ int main(int argc, char *argv[]) osd_set_font(osd, font); osd_set_monitor(osd, monitor); osd_set_padding(osd, padding); - osd_set_color(osd, color); + osd_set_textcolor(osd, text_color, text_alpha); osd_set_bgcolor(osd, bg_color, bg_alpha); osd_set_xinerama(osd, use_xinerama); osd_set_xrandr(osd, use_xrandr); @@ -287,7 +288,7 @@ help(char **argv) " -D, --debug= The debug levels to be enabled\n" " : CSV of none function,locking,select,trace,value,update,all\n" #endif - "\n\n", geometry, text_align, font, color, padding, bg_color, bg_alpha, nlines ); + "\n\n", geometry, text_align, font, text_color, padding, bg_color, bg_alpha, nlines ); } /* vim: foldmethod=marker tabstop=2 shiftwidth=2 expandtab diff --git a/src/osd-demo.c b/src/osd-demo.c index 737f419..ba3d4ad 100644 --- a/src/osd-demo.c +++ b/src/osd-demo.c @@ -78,7 +78,8 @@ xosd_xft *osd; /* Default Values */ char* font = "mixed:size=36"; -char* color = "red"; +char* text_color = "red"; +int text_alpha = 100; char* bg_color = "black"; int bg_alpha = 100; char* padding = "0"; @@ -127,7 +128,7 @@ reset_osd(xosd_xft* osd, char** argv) osd_set_font(osd, font); osd_set_monitor(osd, monitor); osd_set_padding(osd, padding); - osd_set_color(osd, color); + osd_set_textcolor(osd, text_color, text_alpha); osd_set_bgcolor(osd, bg_color, bg_alpha); } @@ -244,7 +245,7 @@ demo_color(xosd_xft* osd, char **argv) } for(int i = 0; i < sizeof(colors)/sizeof(char*); i++) { printf("Colors { bg: %s, fg: %s }\n", bg_colors[i], colors[i]); - osd_set_color(osd, colors[i]); + osd_set_textcolor(osd, colors[i], text_alpha); osd_set_bgcolor(osd, bg_colors[i], bg_alpha); pause_demo(); } diff --git a/src/osd-echo.c b/src/osd-echo.c index e809b8b..20d24a2 100644 --- a/src/osd-echo.c +++ b/src/osd-echo.c @@ -81,10 +81,12 @@ xosd_xft *osd; /* Default Values */ char* font = "SauceCodePro Nerd Font:size=64:antialias=true"; -char* color = "ghostwhite"; +char* text_color = "ghostwhite"; +int text_alpha = 50; char* bg_color = "black"; int bg_alpha = 50; char* shadow_color = "lightgrey"; +int shadow_alpha = 50; int shadow_offset = 0; char* padding = "0"; int delay_millis = 1000; @@ -157,7 +159,7 @@ int main(int argc, char *argv[]) font = optarg; break; case 'c': - color = optarg; + text_color = optarg; break; case 'p': padding = optarg; @@ -242,9 +244,9 @@ int main(int argc, char *argv[]) osd_set_font(osd, font); osd_set_monitor(osd, monitor); osd_set_padding(osd, padding); - osd_set_color(osd, color); + osd_set_textcolor(osd, text_color, text_alpha); osd_set_bgcolor(osd, bg_color, bg_alpha); - osd_set_shadowcolor(osd, shadow_color); + osd_set_shadowcolor(osd, shadow_color, shadow_alpha); osd_set_shadowoffset(osd, shadow_offset); osd_set_xinerama(osd, use_xinerama); osd_set_xrandr(osd, use_xrandr); @@ -315,7 +317,7 @@ help(char **argv) " -D, --debug= The debug levels to be enabled\n" " : CSV of none function,locking,select,trace,value,update,all\n" #endif - "\n\n", geometry, text_align, font, color, padding, bg_color, bg_alpha ); + "\n\n", geometry, text_align, font, text_color, padding, bg_color, bg_alpha ); } /* vim: foldmethod=marker tabstop=2 shiftwidth=2 expandtab diff --git a/src/osd-example.c b/src/osd-example.c index 80112f6..c308428 100644 --- a/src/osd-example.c +++ b/src/osd-example.c @@ -37,7 +37,7 @@ int main(int argc, char *argv[]) } osd_set_geometry(osd, &g); osd_set_font(osd, "mono:size=16"); - osd_set_color(osd, "lightblue"); + osd_set_textcolor(osd, "lightblue", 100); osd_set_bgcolor(osd, "black", 100); char* message = "HELLO XOSD-XFT" ; diff --git a/src/xosd-xft.h b/src/xosd-xft.h index 26bf1ba..8359e52 100644 --- a/src/xosd-xft.h +++ b/src/xosd-xft.h @@ -99,7 +99,7 @@ xosd_xft *osd_create(); * ARGUMENTS * geometry The geometry string * textalign Text alignment string -* g Geometry object to fill +* g Geometry object to fill * RETURNS * NULL on error */ @@ -141,33 +141,35 @@ void osd_set_monitor(xosd_xft *osd, int monitor); */ void osd_set_padding(xosd_xft *osd, const char *padding); -/* osd_set_color -- Set the color for the OSD window +/* osd_set_textcolor -- Set the text color for the OSD window * * ARGUMENTS * osd A xosd_xft object -* color The color +* color The color +* alpha The alpha value (0-100) * */ -void osd_set_color(xosd_xft *osd, const char *color); +void osd_set_textcolor(xosd_xft *osd, const char *text_color, unsigned int textalpha); -/* osd_set_bgcolor -- Set the bgcolor and alpha for the OSD window +/* osd_set_bgcolor -- Set the background color and alpha for the OSD window * * ARGUMENTS * osd A xosd_xft object * bgcolor The background color -* alpha Tha alpha value (0-100) +* alpha The alpha value (0-100) * */ -void osd_set_bgcolor(xosd_xft *osd, const char *bgcolor, unsigned int alpha); +void osd_set_bgcolor(xosd_xft *osd, const char *bgcolor, unsigned int bgalpha); -/* osd_set_shadowcolor -- Set the shadowcolor for the OSD window +/* osd_set_shadowcolor -- Set the shadow color for the OSD window * * ARGUMENTS * osd A xosd_xft object * shadowcolor The shadow color +* alpha The alpha value (0-100) * */ -void osd_set_shadowcolor(xosd_xft *osd, const char *shadowcolor); +void osd_set_shadowcolor(xosd_xft *osd, const char *shadowcolor, unsigned int shadowalpha); /* osd_set_shadowoffset -- Set the offset for the shadow (0 - none) *