Advertisement
ExtremeHunter

reel-to-reel example (WSH panel mod)

Jan 27th, 2013
427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ================================================== //
  2. // @name "reel-to-reel example (Jan 27, 2013)"
  3. // @author "eXtremeHunter"
  4. // ================================================== //
  5. function RGB(r, g, b) {
  6.     return (0xff000000 | (r << 16) | (g << 8) | (b));
  7. }
  8.  
  9. var disc = gdi.Image(fb.FoobarPath + "images\\disc.png");
  10. var margin = window.GetProperty("Margin", 50);
  11.  
  12. var angle = 0;
  13.  
  14. var rotationInterval = 50;
  15. var rotationTimer;
  16. var rotationTimerStarted = false;
  17.  
  18. var reverse = true;
  19.  
  20. var discX = margin;
  21. var discY = margin;
  22. var discW = 300;
  23. var discH = discW;
  24. var disc = disc && disc.resize(discW, discH);
  25. var discAlpha = 100; // disc transparency 0-255.
  26. var pad = 80;
  27.  
  28. var tapeColor = RGB(60,50,40);
  29.  
  30. // ============================== //
  31. function on_paint(gr) {
  32.  
  33.     var fillStart = discW/4;
  34.     var fillEnd = discW + 10;
  35.     var fill = discW-(fillEnd-fillStart);
  36.     fill = (fill * (fb.PlaybackTime / fb.PlaybackLength));
  37.    
  38.     if(!isNaN(fill)){
  39.    
  40.     gr.SetSmoothingMode(2);
  41.     var pos = discW - 10 - fill;
  42.     gr.FillEllipse(discX+pos, discY+pos, discW-pos*2, discH-pos*2, tapeColor);
  43.     var pos =  fillStart - fill;
  44.     gr.FillEllipse(discX + discW + pad + pos, discY+pos, discW-pos*2, discH-pos*2, tapeColor);
  45.    
  46.     }
  47.    
  48.     disc && gr.DrawImage(disc, discX, discY, discW, discH, 0, 0, disc.Width, disc.Height, reverse ? -angle : angle, discAlpha);
  49.     disc && gr.DrawImage(disc, discX + discW + pad, discY, discW, discH, 0, 0, disc.Width, disc.Height, reverse ? -angle : angle, discAlpha);
  50.  
  51. }
  52.  
  53. // ============================== //
  54. (function onRotationTimer() {
  55.  
  56.     if (!fb.IsPlaying || fb.IsPaused) {
  57.         return;
  58.     }
  59.  
  60.     if (!rotationTimerStarted) {
  61.  
  62.         rotationTimer = window.SetInterval(function () {
  63.                
  64.             if (angle >= 360) angle = 0;
  65.            
  66.             reverse ? angle += 10.1 : angle += 10; // point one for eliminating jumping in reverse mode.
  67.            
  68.             window.Repaint()
  69.  
  70.         }, rotationInterval);
  71.  
  72.         rotationTimerStarted = true;
  73.        
  74.        
  75.     }
  76.  
  77. })();
  78. // ============================== //
  79. function stopRotationTimer() {
  80.  
  81.     window.ClearInterval(rotationTimer);
  82.     rotationTimerStarted = false;
  83.  
  84. }
  85. // ============================== //
  86. function on_playback_stop(reason) {
  87.  
  88.     if (reason != 2) {
  89.         stopRotationTimer();
  90.        
  91.     }
  92. }
  93. // ============================== //
  94. function on_playback_pause(state) {
  95.  
  96.     state ? stopRotationTimer() : onRotationTimer();
  97.  
  98. }
  99. // ============================== //
  100. function on_playback_new_track() {
  101.  
  102.     onRotationTimer();
  103.  
  104. }
  105. // ============================== //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement