int main (int argc, char *argv[]) { xosd *osd; int i; osd = xosd_create (10); xosd_set_font(osd, "fixed"); xosd_set_colour(osd, "LawnGreen"); xosd_set_timeout(osd, 3); xosd_set_shadow_offset(osd, 1); for(i = 0; i < 10; i ++) { xosd_display (osd, i, XOSD_printf, "Example XOSD output %d", i); } for(i = 0; i < 10; i ++) { sleep(1); printf("."); xosd_scroll(osd, 2); } xosd_wait_until_no_display(osd); xosd_destroy (osd); return 0; }
void volume_display(xosd *osd, int percent, int muted) { char vol_percent[25]; if (muted) snprintf(vol_percent, 22, "Volume - %i%% (Muted)", percent); else snprintf(vol_percent, 14, "Volume - %i%%", percent); xosd_set_timeout(osd, 5); xosd_display(osd, 0, XOSD_string, vol_percent); xosd_display(osd, 1, XOSD_slider, percent); }
int osd_init(char *progname, char *font, char *color, int x, int y, int shadow, int timeout) { #ifdef HAVE_XOSD /* osd = xosd_init(! font ? font : "fixed" , ! color ? color : "LawnGreen", timeout, XOSD_top, x, shadow, 1); if(!osd) { fprintf(stderr, "%s: OSD error\n", progname); return 0; } */ if (!(osd = xosd_create(1))) { fprintf(stderr, "%s: OSD error\n", progname); return 0; } if (font) { if (xosd_set_font(osd, font)) { fprintf(stderr, "%s: OSD font init error\n", progname); xosd_set_font(osd, "fixed"); } } else xosd_set_font(osd, "fixed"); if (color) { if (xosd_set_colour(osd, color)) { fprintf(stderr, "%s: OSD color init error\n", progname); xosd_set_colour(osd, "LawnGreen"); } } else xosd_set_colour(osd, "LawnGreen"); xosd_set_vertical_offset(osd, y); xosd_set_horizontal_offset(osd, x); xosd_set_shadow_offset(osd, shadow); xosd_set_timeout(osd, timeout); return 1; #else /* HAVE_XOSD */ printf("wmradio: warning - compiled without osd\n"); return 0; #endif /* HAVE_XOSD */ }
xosd * configure_osd(int lines) { xosd *osd; osd = xosd_create (NKEYS); xosd_set_font(osd, SK_FONT); xosd_set_pos(osd, SK_POS); xosd_set_align(osd, SK_ALIGN); xosd_set_colour(osd, SK_FG); xosd_set_outline_colour(osd, SK_OUTLINE); xosd_set_outline_offset(osd, SK_OFFSET); xosd_set_shadow_colour(osd, SK_SHADOW); xosd_set_shadow_offset(osd, SK_SHOFFSET); xosd_set_timeout(osd, SK_TIMEOUT); return osd; }
/***************************************************************************** * Open: initialize and create stuff *****************************************************************************/ static int Open( vlc_object_t *p_this ) { intf_thread_t *p_intf = (intf_thread_t *)p_this; intf_sys_t *p_sys; xosd *p_osd; char *psz_font, *psz_colour; if( getenv( "DISPLAY" ) == NULL ) { msg_Err( p_intf, "no display, please set the DISPLAY variable" ); return VLC_EGENERIC; } /* Allocate instance and initialize some members */ p_sys = p_intf->p_sys = malloc( sizeof( intf_sys_t ) ); if( p_sys == NULL ) return VLC_ENOMEM; /* Initialize library */ psz_font = config_GetPsz( p_intf, "xosd-font" ); psz_colour = config_GetPsz( p_intf, "xosd-colour" ); p_osd = xosd_create( 1 ); if( p_osd == NULL ) { msg_Err( p_intf, "couldn't initialize libxosd" ); free( psz_colour ); free( psz_font ); free( p_sys ); return VLC_EGENERIC; } p_sys->p_osd = p_osd; /* Set user preferences */ xosd_set_outline_colour( p_osd, "black" ); xosd_set_font( p_osd, psz_font ); xosd_set_colour( p_osd, psz_colour ); xosd_set_timeout( p_osd, 3 ); xosd_set_pos( p_osd, config_GetInt( p_intf, "xosd-position" ) ? XOSD_bottom: XOSD_top ); xosd_set_horizontal_offset( p_osd, config_GetInt( p_intf, "xosd-text-offset" ) ); xosd_set_vertical_offset( p_osd, config_GetInt( p_intf, "xosd-text-offset" ) ); xosd_set_shadow_offset( p_osd, config_GetInt( p_intf, "xosd-shadow-offset" )); /* Initialize to NULL */ xosd_display( p_osd, 0, XOSD_string, "XOSD interface initialized" ); free( psz_colour ); free( psz_font ); // Initialize mutex and condition variable before adding the callbacks vlc_mutex_init( &p_sys->lock ); vlc_cond_init( &p_sys->cond ); // Add the callbacks playlist_t *p_playlist = pl_Hold( p_intf ); var_AddCallback( p_playlist, "item-current", PlaylistNext, p_this ); var_AddCallback( p_playlist, "item-change", PlaylistNext, p_this ); pl_Release( p_intf ); p_sys->b_need_update = true; p_intf->pf_run = Run; return VLC_SUCCESS; }
/***************************************************************************** * Open: initialize and create stuff *****************************************************************************/ static int Open( vlc_object_t *p_this ) { intf_thread_t *p_intf = (intf_thread_t *)p_this; xosd *p_osd; /* Allocate instance and initialize some members */ p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) ); if( p_intf->p_sys == NULL ) { msg_Err( p_intf, "out of memory" ); return VLC_ENOMEM; } if( getenv( "DISPLAY" ) == NULL ) { msg_Err( p_intf, "no display, please set the DISPLAY variable" ); return VLC_EGENERIC; } /* Initialize library */ #if defined(HAVE_XOSD_VERSION_0) || defined(HAVE_XOSD_VERSION_1) p_osd = p_intf->p_sys->p_osd = xosd_init( config_GetPsz( p_intf, "xosd-font" ), config_GetPsz( p_intf,"xosd-colour" ), 3, XOSD_top, 0, 1 ); if( p_intf->p_sys->p_osd == NULL ) { msg_Err( p_intf, "couldn't initialize libxosd" ); return VLC_EGENERIC; } #else p_osd = p_intf->p_sys->p_osd = xosd_create( 1 ); if( p_osd == NULL ) { msg_Err( p_intf, "couldn't initialize libxosd" ); return VLC_EGENERIC; } xosd_set_colour( p_osd, config_GetPsz( p_intf,"xosd-colour" ) ); xosd_set_timeout( p_osd, 3 ); #endif playlist_t *p_playlist = (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) { return VLC_EGENERIC; } var_AddCallback( p_playlist, "playlist-current", PlaylistNext, p_this ); var_AddCallback( p_playlist, "item-change", PlaylistNext, p_this ); vlc_object_release( p_playlist ); /* Set user preferences */ xosd_set_font( p_intf->p_sys->p_osd, config_GetPsz( p_intf, "xosd-font" ) ); xosd_set_outline_colour( p_intf->p_sys->p_osd,"black" ); #ifdef HAVE_XOSD_VERSION_2 xosd_set_horizontal_offset( p_intf->p_sys->p_osd, config_GetInt( p_intf, "xosd-text-offset" ) ); xosd_set_vertical_offset( p_intf->p_sys->p_osd, config_GetInt( p_intf, "xosd-text-offset" ) ); #else xosd_set_offset( p_intf->p_sys->p_osd, config_GetInt( p_intf, "xosd-text-offset" ) ); #endif xosd_set_shadow_offset( p_intf->p_sys->p_osd, config_GetInt( p_intf, "xosd-shadow-offset" )); xosd_set_pos( p_intf->p_sys->p_osd, config_GetInt( p_intf, "xosd-position" ) ? XOSD_bottom: XOSD_top ); /* Initialize to NULL */ xosd_display( p_osd, 0, XOSD_string, "XOSD interface initialized" ); p_intf->pf_run = Run; p_intf->p_sys->b_need_update = VLC_TRUE; return VLC_SUCCESS; }
--screen-height Specify screen height\n\n"; int main(int argc, char** argv) { signal(SIGINT, intHandler); xosd *osd; Display* d=XOpenDisplay(":0"); int screenCount = ScreenCount(d); fprintf(stderr, "\nNumber of screens: %d\n", screenCount); int i; for (i=0; i<screenCount ; i++) { fprintf(stderr, " %d: %dx%x\n", i, DisplayWidth(d, i), DisplayHeight(d, i)); } int timeout; char* color="LawnGreen"; char* font="-*-fixed-*-*-*-*-15-140-*-*-*-*-*-*"; FILE* input=stdin; int delayShowMax=10000; int delayShowMin=1000; int delayWordMax=50; int delayWordMin=10; int screenWidthOverride=0; int screenHeightOverride=0; int ret; while((ret=getopt_long(argc, argv, ASublimOptString, lopts, NULL)) != -1) { switch(ret) { case 'S': delayShowMax=atoi(optarg); break; case 's': delayShowMin=atoi(optarg); break; case 'D': delayWordMax=atoi(optarg); break; case 'd': delayWordMin=atoi(optarg); break; case 't': timeout=atoi(optarg); break; case 'f': font=strncpy(malloc(strlen(optarg)+1), optarg, strlen(optarg)+1); break; case 'c': color=malloc(strlen(optarg)); color=strncpy(malloc(strlen(optarg)+1), optarg, strlen(optarg)+1); break; case 'F': input=fopen(optarg, "r"); if(errno) { fprintf(stderr, "File error! Defaulting to stdin.\n"); input=stdin; } break; case 'w': screenWidthOverride=atoi(optarg); break; case 'y': screenHeightOverride=atoi(optarg); break; case 'h': case '?': fprintf(stderr, "Usage: %s %s", argv[0], helpstr); exit(0); break; } } osd = xosd_create(1); if(xosd_set_font(osd, font)==-1) { fprintf(stderr, "Font not found\n"); exit(1); } if(xosd_set_colour(osd, color)==-1) { fprintf(stderr, "Color set error\n"); exit(1); } if(xosd_set_timeout(osd, timeout)==-1) { fprintf(stderr, "Timeout set error\n"); exit(1); } xosd_set_shadow_offset(osd, 3); srand48(time(NULL)); char* buf=calloc(1025, sizeof(char)); int height=screenHeightOverride; int width=screenWidthOverride; ret=fscanf(input, "%1024s", buf); while(buf[0]!=EOF && ret>0) { int screen = lrand48() % screenCount; if (!(screenWidthOverride && screenHeightOverride)) { height= DisplayHeight(d, screen); width= DisplayWidth(d, screen); } xosd_set_vertical_offset(osd, lrand48()%height); xosd_set_horizontal_offset(osd, lrand48()%width); xosd_display(osd, screen, XOSD_string, buf); xosd_show(osd); usleep((unsigned int)((lrand48()%(delayShowMax-delayShowMin)))+delayShowMin); xosd_hide(osd); ret=fscanf(input, "%1024s", buf); usleep((unsigned int)((lrand48()%(delayWordMax-delayWordMin)))+delayWordMin); } xosd_wait_until_no_display(osd); xosd_destroy(osd); return 0; }
/* * Apply changed from configuration dialog. */ static void configure_apply_cb (gpointer data) { ConfigFile *cfgfile; show_volume=isactive(vol_on); show_balance=isactive(bal_on); show_pause=isactive(pause_on); show_trackname=isactive(trackname_on); show_stop=isactive(stop_on); show_repeat=isactive(repeat_on); show_shuffle=isactive(shuffle_on); if (colour) g_free (colour); if (font) g_free (font); colour = g_strdup (gtk_entry_get_text (GTK_ENTRY (colour_entry))); font = g_strdup (gtk_entry_get_text (GTK_ENTRY (font_entry))); timeout = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (timeout_spin)); offset = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (offset_spin)); shadow_offset = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (shadow_spin)); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (pos_top))) pos = XOSD_top; else pos = XOSD_bottom; if (osd) { xosd_set_colour (osd, colour); if (xosd_set_font (osd, font) == -1) { DEBUG("invalid font"); DEBUG(font); } xosd_set_timeout (osd, timeout); xosd_set_offset (osd, offset); xosd_set_shadow_offset (osd, shadow_offset); xosd_set_pos (osd, pos); } cfgfile = xmms_cfg_open_default_file(); xmms_cfg_write_string(cfgfile, "osd", "colour", colour); xmms_cfg_write_string(cfgfile, "osd", "font", font); xmms_cfg_write_int(cfgfile, "osd", "timeout", timeout); xmms_cfg_write_int(cfgfile, "osd", "offset", offset); xmms_cfg_write_int(cfgfile, "osd", "shadow_offset", shadow_offset); xmms_cfg_write_int(cfgfile, "osd", "pos", pos); xmms_cfg_write_int (cfgfile, "osd", "show_volume", show_volume ); xmms_cfg_write_int (cfgfile, "osd", "show_balance", show_balance ); xmms_cfg_write_int (cfgfile, "osd", "show_pause", show_pause ); xmms_cfg_write_int (cfgfile, "osd", "show_trackname", show_trackname ); xmms_cfg_write_int (cfgfile, "osd", "show_stop", show_stop ); xmms_cfg_write_int (cfgfile, "osd", "show_repeat", show_repeat ); xmms_cfg_write_int (cfgfile, "osd", "show_shuffle", show_shuffle ); xmms_cfg_write_default_file(cfgfile); xmms_cfg_free(cfgfile); }
int main (int argc, char *argv[]) { /* if(argc < 2) { fprintf(stderr, "Usage: %s server-ip\n", argv[0]); exit(1); } servaddr = strdup(argv[1]); */ #ifdef USE_XOSD int ch; xosd *osd; while ((ch = getopt(argc, argv, "f:t:o:c:sa:")) != -1) { switch(ch) { case 'f': XOSD_FONT = strdup(optarg); break; case 'a': /* align... tr == top right bl == bottomleft */ if(strlen(optarg) != 2) { fprintf(stderr, "-a error\n"); exit(-1); } if(*optarg == 'b') vert = 0; if(optarg[1] == 'l') horiz = 0; break; case 't': XOSD_TIMEOUT = atoi(optarg); if(XOSD_TIMEOUT < 1) XOSD_TIMEOUT = DEF_XOSD_TIMEOUT; break; case 'o': XOSD_VOFFSET = atoi(optarg); break; case 'c': XOSD_COLOUR = strdup(optarg); break; case 's': test = 1; break; case '?': default: usage(); exit(-1); } } argc -= optind; argv += optind; if(test) { osd = xosd_create(2); xosd_set_font(osd, XOSD_FONT); xosd_set_colour(osd, XOSD_COLOUR); xosd_set_timeout(osd, XOSD_TIMEOUT); xosd_set_pos(osd, vert ? XOSD_top : XOSD_bottom); xosd_set_align(osd, horiz ? XOSD_right : XOSD_left); xosd_set_vertical_offset(osd, XOSD_VOFFSET); xosd_set_shadow_offset(osd, 1); xosd_display(osd, 0, XOSD_printf, "Welcome to xcid!"); xosd_wait_until_no_display(osd); xosd_destroy(osd); } #endif start_netloop (); #ifdef USE_XOSD free(XOSD_COLOUR); free(XOSD_FONT); #endif return 0; }