Fixes #2; text and shadow alpha can now be set
This commit is contained in:
parent
b5bfb66e5b
commit
059b035203
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -29,3 +29,8 @@ src/osd-echo
|
|||
src/osd-echo.o
|
||||
src/utf8.o
|
||||
xosd-xft.pc
|
||||
|
||||
# Code::Blocks files
|
||||
obj/
|
||||
*.depend
|
||||
*.layout
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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=<level> The debug levels to be enabled\n"
|
||||
" <level>: 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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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=<level> The debug levels to be enabled\n"
|
||||
" <level>: 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
|
||||
|
|
|
@ -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" ;
|
||||
|
|
|
@ -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)
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue