Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » foobar2000 (часть 3)

Модерирует : gyra, Maz

Maz (21-12-2016 17:42): foobar2000 (часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Xant1k



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
/**
 * Seekbar script
 * This is the seekbar script that updates the seekbar every second a
 * track is played. Also the elapsed and total length of a track is implemented
 * here.
 *
 * Always check your script with jslint!
 */
 
// ------------------------------------------------------------ Properties
 
var align_top = 2;
var align_middle = 1;
var align_bottom = 2;
 
var align_left = 0;
var align_center = 1;
var align_right = 2;
 
var trim_no = 0;
var trim_chara = 1;
var trim_word = 2;
var trim_elips_chara = 3;
var trim_elips_word = 4;
var trim_elips_path = 5;
 
var flag_rtl = 0x0001;
var flag_vert = 0x0002;
var flag_nofit = 0x0004;
var flag_dispctrl = 0x0020;
var flag_nofallback = 0x0400;
var flag_trailspace = 0x0800;
var flag_nowrap = 0x1000;
var flag_linelimit = 0x2000;
var flag_noclip = 0x4000;
 
// ------------------------------------------------------------ Font properties
// gdi.Font is changed, the last paramter is style flags
// FontStyleRegular = 0,
// FontStyleBold = 1,
// FontStyleItalic = 2,
// FontStyleBoldItalic = 3,
// FontStyleUnderline = 4,
// FontStyleStrikeout = 8
// Here is 0, means FontStyleRegular
 
var g_font = gdi.Font("Segoe UI", 10, 0);
var g_drag = 0;
var g_drag_seek = 0;
 
// ------------------------------------------------------------ Helper methods
 
function StringFormat(alignH, alignV, trim, flag) {
    return ((alignH << 28) | (alignV << 24) | (trim << 20) | flag);
}
 
function RGB(r, g, b) {
    return (0xff000000 | (r << 16) | (g << 8) | (b));
}
 
// ------------------------------------------------------------ Time methods
 
function TimeFmt(t) {
    var zpad = function (n) {
            var str = n.toString();
            return (str.length < 2) ? "0" + str : str;
        };
    var h = Math.floor(t / 3600);
    t -= h * 3600;
    var m = Math.floor(t / 60);
    t -= m * 60;
    var s = Math.floor(t);
    if (h > 0) {
        return h.toString() + ":" + zpad(m) + ":" + zpad(s);
    }
    return m.toString() + ":" + zpad(s);
}
 
// ------------------------------------------------------------ Frame dimensions
 
function get_txt_length() {
    if (!fb.PlaybackLength) {
        return 148;
    }
    return Math.floor((TimeFmt(fb.PlaybackLength) + " / " + TimeFmt(fb.PlaybackLength)).length * 5);
}
 
function get_window_width() {
    return window.Width - get_txt_length();
}
 
// ------------------------------------------------------------ Seekbar
 
function on_paint(gr) {
    // Collect images
    var sb_bg_img = gdi.Image(fb.FoobarPath + "skin\\mono_lite\\sb_bg.bmp");
    var knob_img = gdi.Image(fb.FoobarPath + "skin\\mono_lite\\sb_knob.png");
    
    // Collect information
    var length = fb.PlaybackLength;
    var txt = "foobar2000 1.1.6 Fleshgrinder";
    var ww = get_window_width();
    var wh = window.Height;
    var bh = 4;
    var pos = 0;
    //var g_titlefmt = fb.TitleFormat("%codec% @ %bitrate% kbps");
 
    // Calculate playback time elapsed and total
    if (length > 0) {
        if (g_drag) {
            pos = parseInt(ww * g_drag_seek, 10);
            txt = TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
        }
        else {
            pos = parseInt(ww * (fb.PlaybackTime / length), 10);
            txt = TimeFmt(fb.PlaybackTime) + " / " + TimeFmt(length);
        }
    }
 
    // Calculate seekbar position
    if (pos < 5) {
        pos = 0;
    }
    else if (pos > (ww - 5)) {
        pos = ww - 10;
    }
    else {
        pos -= 5;
    }
 
    // Draw seekbar
    gr.DrawImage(sb_bg_img, 0, wh - 7, ww, bh, 0, 0, 500, bh);
    gr.FillSolidRect(0, wh - 6, pos, 2, RGB(160, 160, 160));
    gr.DrawImage(knob_img, pos, wh - 10, 10, 10, 0, 0, 10, 10);
 
    // ClearType
    gr.SetTextRenderingHint(5);
    // Anti-Alias
    gr.SetSmoothingMode(4);
    // Codec and bitrate
    //gr.DrawString(g_titlefmt.Eval(), g_font, RGB(160, 160, 160), 0, 0, ww, wh, StringFormat(align_right, align_top, trim_no, flag_nowrap | flag_noclip));
    // Time elapsed / total time
    gr.DrawString(txt, g_font, RGB(160, 160, 160), get_txt_length(), 0, ww, wh, StringFormat(align_right, align_top, trim_no, flag_nowrap | flag_noclip));
}
 
// ------------------------------------------------------------ User interaction methods
 
function on_size() {
    // Do nothing
}
 
function on_focus(focused) {
    //fb.trace("focus " + focused);
}
 
function on_key_down(key) {
    //fb.trace("key " + key);
}
 
function on_mouse_lbtn_down(x, y) {
    g_drag = 1;
}
 
function on_mouse_lbtn_up(x, y) {
    if (g_drag) {
        g_drag = 0;
        g_drag_seek = x / get_window_width();
        g_drag_seek = (g_drag_seek < 0) ? 0 : (g_drag_seek < 1) ? g_drag_seek : 1;
        fb.PlaybackTime = fb.PlaybackLength * g_drag_seek;
    }
}
 
function on_mouse_move(x, y) {
    if (g_drag) {
        g_drag_seek = x / get_window_width();
        g_drag_seek = (g_drag_seek < 0) ? 0 : (g_drag_seek < 1) ? g_drag_seek : 1;
        window.Repaint();
    }
}
 
function on_mouse_wheel(delta) {
    //fb.trace("wheel " + delta);
}
 
// ------------------------------------------------------------ State change methods
 
function on_playback_starting(cmd, paused) {
    // Do nothing
}
 
function on_playback_new_track(info) {
    window.Repaint();
}
 
function on_playback_stop() {
    window.Repaint();
}
 
function on_playback_seek(time) {
    window.Repaint();
}
 
function on_playback_pause(state) {
    // Do nothing
}
 
function on_playback_edited() {
    // Do nothing
}
 
function on_playback_dynamic_info() {
    // Do nothing
}
 
function on_playback_dynamic_info_track() {
    // Do nothing
}
 
function on_playback_time(time) {
    window.Repaint();
}
 
function on_volume_change(val) {
    // Do nothing
}
 
//EOF

Всего записей: 2918 | Зарегистр. 20-02-2009 | Отправлено: 13:23 09-05-2012
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » foobar2000 (часть 3)
Maz (21-12-2016 17:42): foobar2000 (часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru