Advertisement
ExtremeHunter

Spinning Disc Image Viewer for WSH panel mod

Jan 23rd, 2013
452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ================================================== //
  2. // @name "Spinning Disc Image Viewer  (Jan 23, 2013)"
  3. // @author "eXtremeHunter"
  4. // ================================================== //
  5.  
  6. window.DlgCode = 0x0001; // arrow keys for DUI
  7. var vinylImage = gdi.Image(fb.FoobarPath + "images\\vinyl.jpg");
  8. var margin = window.GetProperty("Margin", 50);
  9. var zoomStep = window.GetProperty("Zoom Step", 30);
  10. var angle = 0;
  11. var minSize = 20;
  12.  
  13. function on_paint(gr) {
  14.  
  15.     gr.DrawImage(resizedVinylImage, vinylX, vinylY, vinylW, vinylH, 0, 0, resizedVinylImage.Width, resizedVinylImage.Height, angle);
  16.  
  17. }
  18.  
  19. function on_mouse_wheel(step) {
  20.  
  21.     if (utils.IsKeyPressed(16)) {
  22.  
  23.         if (step == -1 && vinylW <= minSize) return;
  24.  
  25.         var s = step * zoomStep;
  26.         margin = margin -= s;
  27.         window.SetProperty("Margin", margin);
  28.         on_size();
  29.  
  30.         window.Repaint();
  31.  
  32.     }
  33.  
  34. }
  35.  
  36. function on_key_down(vkey) {
  37.    
  38.     if (vkey == 38) on_mouse_wheel(1) //UP ARROW
  39.     if (vkey == 40) on_mouse_wheel(-1); //DOWN ARROW
  40.    
  41. }
  42.  
  43. function on_size() {
  44.  
  45.     ww = window.Width;
  46.     wh = window.Height;
  47.  
  48.     vinylW = Math.max(minSize, ww - margin);
  49.     vinylH = Math.max(minSize, wh - margin);
  50.  
  51.     if (vinylH < vinylW) vinylW = vinylH;
  52.     else if (vinylW < vinylH) vinylH = vinylW;
  53.  
  54.     vinylX = ww / 2 - vinylW / 2;
  55.     vinylY = wh / 2 - vinylH / 2;
  56.  
  57.     resizedVinylImage = vinylImage.resize(vinylW, vinylH);
  58.  
  59. }
  60.  
  61. var rotationInterval = 50;
  62. var rotationTimer;
  63. var rotationTimerStarted = false;
  64.  
  65. (function onRotationTimer() {
  66.  
  67.     if (!rotationTimerStarted) {
  68.  
  69.         rotationTimer = window.SetInterval(function () {
  70.  
  71.             if (angle >= 360) angle = 0;
  72.             angle += 10;
  73.             (vinylW >= ww || vinylH >= wh) ? window.Repaint() : window.RepaintRect(vinylX, vinylY, vinylW, vinylH);
  74.  
  75.         }, rotationInterval);
  76.  
  77.         rotationTimerStarted = true;
  78.     }
  79.  
  80. })();
  81.  
  82. function stopRotationTimer() {
  83.  
  84.     window.ClearInterval(rotationTimer);
  85.     rotationTimerStarted = false;
  86.  
  87. }
  88.  
  89. function on_playback_stop(reason) {
  90.  
  91.     if (reason != 2) {
  92.  
  93.         stopRotationTimer();
  94.  
  95.     }
  96.  
  97. }
  98.  
  99. function on_playback_pause(state) {
  100.  
  101.     state ? stopRotationTimer() : onRotationTimer();
  102.  
  103. }
  104.  
  105. function on_playback_new_track() {
  106.  
  107.     onRotationTimer();
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement