Advertisement
Guest User

Scrolling Text with Scrollbar

a guest
Jun 13th, 2010
384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var g_timer;
  3. var i = 0;
  4. var interval = 20;
  5. var tw = 0;
  6.  
  7. //--------
  8. var weight_normal =400;
  9. var weight_bold =800;
  10. var italic_no =0;
  11. var italic =1;
  12. var uline_no =0;
  13. var uline =1;
  14. //--------
  15. var align_top =0;
  16. var align_middle=1;
  17. var align_bottom=2;
  18.  
  19. var align_left =0;
  20. var align_center=1;
  21. var align_right =2;
  22.  
  23. var trim_no =0;
  24. var trim_chara =1;
  25. var trim_word =2;
  26. var trim_elips_chara =3;
  27. var trim_elips_word =4;
  28. var trim_elips_path =5;
  29.  
  30. var flag_rtl =0x0001;
  31. var flag_vert =0x0002;
  32. var flag_nofit =0x0004;
  33. var flag_dispctrl =0x0020;
  34. var flag_nofallback =0x0400;
  35. var flag_trailspace =0x0800;
  36. var flag_nowrap =0x1000;
  37. var flag_linelimit =0x2000;
  38. var flag_noclip =0x4000;
  39.  
  40. function StrFmt(alignH,alignV,trim,flag){ return ((alignH<<28)|(alignV<<24)|(trim<<20)|flag); }
  41. //--------
  42. function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }
  43. function RGBA(r,g,b,a){ return ((a<<24)|(r<<16)|(g<<8)|(b)); }
  44. //--------
  45. function TimeFmt(t){
  46. var zpad = function(n){
  47. var str = n.toString();
  48. return (str.length<2) ? "0"+str : str;
  49. }
  50. var h = Math.floor(t/3600); t-=h*3600;
  51. var m = Math.floor(t/60); t-=m*60;
  52. var s = Math.floor(t);
  53. if(h>0) return h.toString()+":"+zpad(m)+":"+zpad(s);
  54. return m.toString()+":"+zpad(s);
  55. }
  56. //----------------------------------------------------------------------------
  57.  
  58. var g_font = gdi.Font( "bitstream vera sans mono",40);
  59. var g_font1 = gdi.Font( "bitstream vera sans mono",40);
  60. var g_timeFmt = fb.TitleFormat("%playback_time%[ / %length%]");
  61. var g_titleFmt = fb.TitleFormat("%ARTIST% - %title%");
  62. var g_fileinfo = null;
  63.  
  64. var g_drag = 0;
  65. var g_drag_seek = 0;
  66.  
  67. var tic_ArtistAlbumText= { size:26, step:1};
  68. var tic_SongTimeText= { size:20, step: 2};
  69.  
  70. function on_paint(gr){
  71.  
  72. var pos = 0;
  73. var length = fb.PlaybackLength;
  74. var songTimeText;
  75. var artistAlbumText;
  76. if(length > 0){
  77. if(g_drag){
  78. pos = window.Width * g_drag_seek;
  79. songTimeText= "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
  80. } else{
  81. pos = window.Width * (fb.PlaybackTime / length);
  82. songTimeText= g_timeFmt.Eval();
  83. artistAlbumText = g_titleFmt.Eval();
  84. }
  85. }
  86.  
  87. gr.FillGradRect( 0, 50, pos, wh, 90, RGB(5,150,35), RGB(5,100,35)); //green scroll
  88. gr.FillGradRect(pos, 50, ww-pos, wh, 90, RGB(0,0,0), RGB(0,0,0)); //black background
  89.  
  90. if(songTimeText==null) songTimeText= "";
  91. gr.DrawString(getScrolledText(songTimeText, tic_SongTimeText), g_font1, RGB(255,255,255), 0, 50, ww-20, wh-50, StrFmt(align_right, align_center, trim_no, flag_nowrap | flag_noclip));
  92. //-----------
  93. var g_font = gdi.font("Tahoma", 34, 0);
  94. gr.SetTextRenderingHint(5);
  95.  
  96. var text = fb.TitleFormat("%title% - %artist% - %album%").Eval();
  97.  
  98. tw = gr.CalcTextWidth(text, g_font);
  99.  
  100.      gr.FillGradRect(0,0,ww,50, 90, RGB(5,150,35), RGB(55,200,85));
  101.      
  102. if (fb.IsPlaying) {
  103.  
  104. if (g_timer) {
  105.    
  106.     gr.GdiDrawText(text, g_font, RGB(255,255,255), ww - i, 4, ww + tw, g_font.height + 5, format = 0)
  107.  
  108. }
  109.  
  110. }
  111. //----------
  112.  
  113.  
  114. }
  115.  
  116. function getScrolledText(txt,tic) {
  117. if(txt.length<=tic.size)
  118. return txt;
  119. if(tic.val>=(txt.length+tic.spacer.length))
  120. tic.val= 0;
  121. else
  122. tic.val+= tic.step;
  123. return (txt+tic.spacer+txt).substring(tic.val, tic.val+tic.size);
  124. }
  125.  
  126.  
  127.  
  128. function on_size(){
  129.    
  130. ww = window.Width;
  131. wh = window.Height;
  132.  
  133. if (i == ww + tw) i = 0;
  134.  
  135. if (i == 0 && !g_timer) g_timer = window.CreateTimerInterval(interval);
  136. }
  137.  
  138. function on_focus(focused){
  139. //fb.trace("focus " + focused);
  140. }
  141. function on_key_down(key){
  142. //fb.trace("key " + key);
  143. }
  144. function on_mouse_lbtn_down(x,y){
  145. g_drag = 1;
  146. }
  147. function on_mouse_lbtn_up(x,y){
  148. if(g_drag){
  149. g_drag = 0;
  150. g_drag_seek = x / window.Width;
  151. g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
  152. fb.PlaybackTime = fb.PlaybackLength * g_drag_seek;
  153. }
  154. }
  155. function on_mouse_move(x,y){
  156. if(g_drag){
  157. g_drag_seek = x / window.Width;
  158. g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
  159. window.Repaint();
  160. }
  161. }
  162. function on_mouse_wheel(delta){
  163. //fb.trace("wheel " + delta);
  164. }
  165. //--------
  166. function on_playback_starting(cmd, paused){
  167.  
  168. }
  169. function on_playback_new_track(info){
  170.    
  171.   i = 0;
  172.  
  173. window.Repaint();
  174. }
  175. function on_playback_stop(reason){
  176.  
  177. window.Repaint();
  178. }
  179. function on_playback_seek(time){
  180. window.Repaint();
  181. }
  182. function on_playback_pause(state){
  183. }
  184. function on_playback_edited(){
  185. }
  186. function on_playback_dynamic_info(){
  187. }
  188. function on_playback_dynamic_info_track(){
  189. }
  190. function on_playback_time(time){
  191. window.RepaintRect(0,50,ww,wh);
  192. }
  193. function on_volume_change(val){
  194. }
  195. //EOF
  196.  
  197. //================================0
  198.  
  199.  
  200. function on_timer(id) {
  201.  
  202. i = i + 1 * 1;
  203. if (i == ww + tw) i = 0;
  204. window.RepaintRect(ww - i ,0, tw + 20, 50);
  205.  
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement