Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ================================================== //
- // @name "Spinning Disc Image Viewer (for pre 1.5 WSH) (08.08.2013)"
- // @author "eXtremeHunter"
- // ================================================== //
- function RGB(r, g, b) {
- return (0xff000000 | (r << 16) | (g << 8) | (b));
- }
- window.DlgCode = 0x0001; // arrow keys for DUI
- var defaultDisc = gdi.Image(fb.FoobarPath + "images\\disc.jpg");
- var margin = window.GetProperty("Margin", 50);
- var zoomStep = window.GetProperty("Zoom Step", 30);
- var useDiscMask = window.GetProperty("Use Disc Mask", true);
- var angle = 0;
- var minSize = 20;
- var disc = defaultDisc;
- var rotationInterval = 50;
- var rotationTimer;
- var rotationTimerStarted = false;
- // ============================== //
- function on_paint(gr) {
- gr.FillGradRect(0, 0, ww, wh, 65, RGB(50, 50, 50), RGB(105, 105, 105), 0.5);
- disc && gr.DrawImage(resizedDisc, discX, discY, discW, discH, 0, 0, resizedDisc.Width, resizedDisc.Height, angle);
- }
- // ============================== //
- function on_mouse_wheel(step) {
- if (utils.IsKeyPressed(16)) {
- if (step == -1 && discW <= minSize) return;
- var s = step * zoomStep;
- margin = margin -= s;
- window.SetProperty("Margin", margin);
- on_size();
- window.Repaint();
- }
- }
- // ============================== //
- function on_key_down(vkey) {
- if (vkey == 38) on_mouse_wheel(1) //UP ARROW
- if (vkey == 40) on_mouse_wheel(-1); //DOWN ARROW
- }
- // ============================== //
- function on_size() {
- ww = window.Width;
- wh = window.Height;
- discW = Math.max(minSize, ww - margin);
- discH = Math.max(minSize, wh - margin);
- if (discH < discW) discW = discH;
- else if (discW < discH) discH = discW;
- discX = ww / 2 - discW / 2;
- discY = wh / 2 - discH / 2;
- resizedDisc = disc.resize(discW, discH);
- if (useDiscMask) {
- var discMask = gdi.CreateImage(discW, discH);
- var g = discMask.GetGraphics();
- g.FillSolidRect(0, 0, discW, discH, 0xffffffff);
- g.SetSmoothingMode(2);
- g.FillEllipse(1, 1, discW - 2, discH - 2, 0xff000000);
- discMask.ReleaseGraphics(g);
- resizedDisc.ApplyMask(discMask);
- discMask.Dispose();
- }
- }
- // ============================== //
- (function onRotationTimer() {
- getDiscImage();
- if (!fb.IsPlaying || fb.IsPaused) {
- return;
- }
- if (!rotationTimerStarted) {
- rotationTimer = window.CreateTimerInterval(rotationInterval);
- rotationTimerStarted = true;
- }
- })();
- // ============================== //
- function stopRotationTimer() {
- window.KillTimer(rotationTimer);
- rotationTimerStarted = false;
- }
- // ============================== //
- function on_timer(id) {
- if (rotationTimer && id == rotationTimer.ID) {
- if (angle >= 360) angle = 0;
- angle += 10;
- (discW >= ww || discH >= wh) ? window.Repaint() : window.RepaintRect(discX, discY, discW, discH);
- }
- }
- // ============================== //
- function on_playback_stop(reason) {
- if (reason != 2) {
- stopRotationTimer();
- getDiscImage();
- }
- }
- // ============================== //
- function on_playback_pause(state) {
- state ? stopRotationTimer() : onRotationTimer();
- }
- // ============================== //
- function on_playback_new_track() {
- onRotationTimer();
- }
- // ============================== //
- var tempAlbum;
- function getDiscImage() {
- var nowPlayingDisc;
- var metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();
- if (!metadb) return;
- var currentAlbum = fb.TitleFormat("%album%").EvalWithMetadb(metadb);
- if (currentAlbum == tempAlbum) return;
- nowPlayingDisc = utils.GetAlbumArtV2(metadb, 2);
- nowPlayingDisc ? disc = nowPlayingDisc : disc = defaultDisc;
- tempAlbum = currentAlbum;
- on_size();
- window.Repaint();
- }
- // ============================== //
- function on_selection_changed(metadb) {
- if (!fb.IsPlaying) getDiscImage();
- }
- // ============================== //
- function on_playlist_items_removed() {
- if (!plman.PlaylistItemCount(plman.ActivePlaylist)) disc = defaultDisc;
- on_size();
- window.Repaint();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement