Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ================================================== //
- // @name "reel-to-reel example (Jan 27, 2013)"
- // @author "eXtremeHunter"
- // ================================================== //
- function RGB(r, g, b) {
- return (0xff000000 | (r << 16) | (g << 8) | (b));
- }
- var disc = gdi.Image(fb.FoobarPath + "images\\disc.png");
- var margin = window.GetProperty("Margin", 50);
- var angle = 0;
- var rotationInterval = 50;
- var rotationTimer;
- var rotationTimerStarted = false;
- var reverse = true;
- var discX = margin;
- var discY = margin;
- var discW = 300;
- var discH = discW;
- var disc = disc && disc.resize(discW, discH);
- var discAlpha = 100; // disc transparency 0-255.
- var pad = 80;
- var tapeColor = RGB(60,50,40);
- // ============================== //
- function on_paint(gr) {
- var fillStart = discW/4;
- var fillEnd = discW + 10;
- var fill = discW-(fillEnd-fillStart);
- fill = (fill * (fb.PlaybackTime / fb.PlaybackLength));
- if(!isNaN(fill)){
- gr.SetSmoothingMode(2);
- var pos = discW - 10 - fill;
- gr.FillEllipse(discX+pos, discY+pos, discW-pos*2, discH-pos*2, tapeColor);
- var pos = fillStart - fill;
- gr.FillEllipse(discX + discW + pad + pos, discY+pos, discW-pos*2, discH-pos*2, tapeColor);
- }
- disc && gr.DrawImage(disc, discX, discY, discW, discH, 0, 0, disc.Width, disc.Height, reverse ? -angle : angle, discAlpha);
- disc && gr.DrawImage(disc, discX + discW + pad, discY, discW, discH, 0, 0, disc.Width, disc.Height, reverse ? -angle : angle, discAlpha);
- }
- // ============================== //
- (function onRotationTimer() {
- if (!fb.IsPlaying || fb.IsPaused) {
- return;
- }
- if (!rotationTimerStarted) {
- rotationTimer = window.SetInterval(function () {
- if (angle >= 360) angle = 0;
- reverse ? angle += 10.1 : angle += 10; // point one for eliminating jumping in reverse mode.
- window.Repaint()
- }, rotationInterval);
- rotationTimerStarted = true;
- }
- })();
- // ============================== //
- function stopRotationTimer() {
- window.ClearInterval(rotationTimer);
- rotationTimerStarted = false;
- }
- // ============================== //
- function on_playback_stop(reason) {
- if (reason != 2) {
- stopRotationTimer();
- }
- }
- // ============================== //
- function on_playback_pause(state) {
- state ? stopRotationTimer() : onRotationTimer();
- }
- // ============================== //
- function on_playback_new_track() {
- onRotationTimer();
- }
- // ============================== //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement