2 /* Displays the currently loaded/played song by XMMS */
13 static Xmms_sn_settings xmms_sn_settings;
14 static SA_Image xmms_font;
15 static AquariumData *ad;
17 Xmms_sn_settings *xmms_sn_get_settings_ptr(void)
19 return &xmms_sn_settings;
22 void xmms_sn_exit(void)
24 if(xmms_font.pixbuf!=NULL)
25 g_object_unref(xmms_font.pixbuf);
27 memset(&xmms_font,0,sizeof(SA_Image));
30 void xmms_sn_init(void)
32 ad = aquarium_get_settings_ptr();
35 if(xmms_font.pixbuf!=NULL)
38 load_image("small_letters.png",&xmms_font,1);
40 /* Some changes cause this image is horizontal ordered */
42 xmms_font.frames = XMMS_SN_NUM_LETTERS;
43 xmms_font.width = xmms_font.width/xmms_font.frames;
45 change_colour_to(xmms_sn_settings.c.r,
49 xmms_font.pixbuf, FALSE);
53 void xmms_sn_update(int beforeorafter)
56 static float start_display = 0.0;
59 char *xmms_str, *disp_str;
61 if(beforeorafter!=xmms_sn_settings.draw)
64 if(!xmms_sn_settings.on)
67 if(!xmms_remote_is_running(session_id))
70 xmms_str = xmms_remote_get_playlist_title(session_id,
71 xmms_remote_get_playlist_pos(session_id));
75 disp_str = g_strdup_printf(" %d. %s (%d:%.2d) *** ",
76 xmms_remote_get_playlist_pos(session_id)+1,
78 xmms_remote_get_playlist_time(session_id,
79 xmms_remote_get_playlist_pos(session_id))/(60*1000),
80 xmms_remote_get_playlist_time(session_id,
81 xmms_remote_get_playlist_pos(session_id))/1000 %60);
86 if(xmms_sn_settings.direction == XMMS_SN_HORIZONTAL) {
88 if(xmms_sn_settings.fb == XMMS_SN_BACKWARDS){
89 if(((int)start_display) > (strlen(disp_str)-2)*xmms_font.width) start_display = 0.0;
92 if(start_display <0.0) start_display = (strlen(disp_str)-1)*xmms_font.width;
95 switch(xmms_sn_settings.vert){
100 y=ad->ymax/2-xmms_font.height/2;
103 y=ad->ymax-xmms_font.height-2;
106 x = -(((int)start_display) % xmms_font.width);
108 for(i=0;i<=(ad->xmax/xmms_font.width);i++){
109 if((strlen(disp_str)-1)==i) break;
110 a=((int)start_display)/xmms_font.width+i;
111 if(a>=strlen(disp_str)) a-=strlen(disp_str);
112 if(a<0) a=strlen(disp_str)-1;
113 if(disp_str[a]!=' ' && disp_str[a]<='z')
114 draw_image_alpha_h(x,y,((int)disp_str[a]-(int)'!'),xmms_sn_settings.c.alpha,&xmms_font);
120 if(xmms_sn_settings.fb == XMMS_SN_BACKWARDS){
121 if(((int)start_display) > (strlen(disp_str)-2)*xmms_font.height) start_display = 0.0;
124 if(start_display <0.0) start_display = (strlen(disp_str)-1)*xmms_font.height;
127 switch(xmms_sn_settings.horz){
132 x=ad->xmax/2-xmms_font.width/2;
135 x=ad->ymax-xmms_font.width-2;
139 y = -(((int)start_display) % xmms_font.height);
141 for(i=0;i<=(ad->ymax/xmms_font.height);i++){
142 if((strlen(disp_str)-1)==i) break;
143 a=((int)start_display)/xmms_font.height+i;
144 if(a>=strlen(disp_str)) a-=strlen(disp_str);
145 if(a<0) a=strlen(disp_str)-1;
147 if(disp_str[a]!=' ' && disp_str[a]<='z')
148 draw_image_alpha_h(x,y,((int)disp_str[a]-(int)'!'),xmms_sn_settings.c.alpha,&xmms_font);
153 if(xmms_sn_settings.fb == XMMS_SN_BACKWARDS)
154 start_display+=0.5*(float)xmms_sn_settings.speed/100.0;
156 start_display-=0.5*(float)xmms_sn_settings.speed/100.0;