// vi:set ft=javascript ff=dos ts=4 sts=4 sw=4 et: // This is just a demo so is buggy. var g_theme = window.CreateThemeManager("PROGRESS"); var g_bar_height = 15; var g_cycles = 0; var ww = 0, wh = 0; var __w; var top = 0; var g_pos = 0; var g_drag = false; var g_length = 1; function clamp(x, l, h) { return (x < l) ? l : ((x > h) ? h : x); } H_padding = 15; function on_size() { wh = window.Height; __w = window.Width; ww = __w-2*H_padding; top = (wh - g_bar_height) >> 1; } function on_paint(gr) { g_theme.SetPartAndStateID(1, 0); g_theme.DrawThemeBackground(gr, H_padding, top, ww, g_bar_height); if (fb.IsPlaying && g_length > 0) { g_theme.SetPartAndStateID(5, fb.IsPaused ? 3 : 1); g_theme.DrawThemeBackground(gr, H_padding, top, g_pos, g_bar_height); } } function on_mouse_lbtn_down(x, y) { if(x__w-H_padding) return; if (g_length > 0) { g_drag = true; on_mouse_move(x, y); } } function on_mouse_lbtn_up(x, y) { if (g_length > 0 && g_drag) { g_drag = false; fb.PlaybackTime = g_length * g_pos / ww; on_mouse_move(x, y); } } function on_mouse_move(x, y) { if (g_drag) { g_pos = clamp(x-H_padding, 0, ww); window.Repaint(); } } function on_mouse_wheel(delta) { fb.PlaybackTime = fb.PlaybackTime + delta * 2; } function on_playback_time(time) { if (!g_drag) { if (g_length > 0) g_pos = ww * time / g_length; window.Repaint(); } } function on_playback_seek() { if (!g_drag && g_length > 0) window.Repaint(); } function on_playback_pause() { window.Repaint(); } function on_playback_stop() { g_length = 0; g_pos = 0; g_drag = false; window.Repaint(); } function on_playback_new_track() { g_length = fb.PlaybackLength; g_pos = 0; g_drag = false; window.Repaint(); } if (fb.IsPlaying) on_playback_new_track();