Представлена в виде двух fcl-файлов конфига bento с разными плейлистами: EsPlaylist и ELPlaylist.
- Скачать
- Сборка
Изменения: foobar2000 v1.3.5, кодек qaac, скины без кнопки внизу и немного измененными скриптами
Список разделов › foobar2000 › Сборки › Релизы сборок
// ==PREPROCESSOR==
// @name "Seekbar"
// @author "Alex Realist"
// ==/PREPROCESSOR==
var g_img1 = gdi.Image(fb.FoobarPath + "skins\\bento\\seek-knob.png");
var g_img2 = gdi.Image(fb.FoobarPath + "skins\\bento\\seek-knob-hot.png");
var g_img_background_file = gdi.Image(fb.FoobarPath + "skins\\bento\\back-seekbar.png");
var g_img_lenght = 29;
var g_img_offset = g_img_lenght/2;
var g_over = 0;
var g_drag = 0;
var g_drag_seek = 0;
var tooltip = window.CreateTooltip();
var old_x = -1;
var g_img_background =null;
set_images();
function RGB(r,g,b){
return (0xff000000|(r<<16)|(g<<8)|(b));
}
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);
}
function set_images(){
if(g_img_background) g_img_background.Dispose();
g_img_background = gdi.CreateImage(219, 8);
var gp = g_img_background.GetGraphics();
gp.DrawImage(g_img_background_file, 0, 0, 219, 8, 0, 0, 219, 8);
g_img_background.ReleaseGraphics(gp);
}
function on_paint(gr){
var ww = window.Width-g_img_lenght;
var pos = 0;
var length = Math.floor(fb.PlaybackLength);
if(length>0){
var percent = fb.PlaybackTime/length;
if(percent>=0.995) pos = ww;
else pos = Math.round(ww*percent);
if(g_drag) var pos_drag = Math.round(ww*g_drag_seek);
}
gr.DrawImage(g_img_background, 0, 0, 219, 8, 0, 0, 219, 8);
var line_lenght = pos-2;
gr.FillSolidRect(2, 3, line_lenght, 1, RGB(156,169,173));
if((line_lenght)>0) gr.FillSolidRect(2, 3, 1, 1, RGB(109,126,132));
gr.FillSolidRect(2, 4, line_lenght, 1, RGB(88,107,113));
gr.DrawImage((g_over) ? g_img2 : g_img1, pos, 0, g_img_lenght, 8, 0, 0, g_img_lenght, 8);
if(g_drag) gr.DrawImage(g_img1, pos_drag, 0, g_img_lenght, 8, 0, 0, g_img_lenght, 8, 0, 128);
}
function on_mouse_lbtn_down(x,y){
g_drag = 1;
old_x = -1;
}
function on_mouse_lbtn_up(x,y){
if(g_drag){
g_drag = 0;
g_drag_seek = (x-g_img_offset)/(window.Width-g_img_lenght);
g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
fb.PlaybackTime = Math.floor(fb.PlaybackLength)*g_drag_seek;
}
}
function on_mouse_move(x,y){
window.SetCursor(32649);
g_over = 1;
if(g_drag){
g_drag_seek = (x-g_img_offset)/(window.Width-g_img_lenght);
g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
}
window.Repaint();
if(x!=old_x){
old_x=x;
if(fb.PlaybackLength>0){
var seek_me = (x-g_img_offset)/(window.Width-g_img_lenght);
seek_me = (seek_me<0) ? 0 : (seek_me<1) ? seek_me : 1;
tooltip.Text = TimeFmt(Math.round(fb.PlaybackLength)*seek_me);
tooltip.Activate();
}
}
}
function on_mouse_leave(){
g_over = 0;
window.Repaint();
tooltip.Deactivate();
old_x = -1;
}
function on_playback_new_track(info){
window.Repaint();
tooltip.Deactivate();
}
function on_playback_stop(){
window.Repaint();
tooltip.Deactivate();
}
function on_playback_seek(time){
window.Repaint();
}
function on_playback_time(time){
window.Repaint();
}
//EOF
не надо ничего рисовать. Сам по себе этот компонент достаточно большой. Его просто надо растянуть. В данной же сборке он просто сжат. А сжатие без интерполяции приводит к артефактам в виде ребристости (перешарп).alex_realist:3. Analog VU Meter. Да был косяк с +20 db. Исправлено. Что касается нечеткого его отображения, ну нарисуйте кто-нибудь стоящее, я его с удовольствием добавлю в сборку со ссылкой на автора.
Ну и ладно. И так все нормально в принципе. но если все таки появится big-версия, то это будет отличная новость.alex_realist:в том виде в котором скин сейчас VU Meter некуда увеличивать как впрочем и обложку, а переделывать скин я не буду... Да и не вшивай обложки.
О! То что надо. Получше стало.DRON:Вот вам с интерполяцией.
А что с этим файлом делать?DRON:Вот вам с интерполяцией.
на 6 существующих серверах нет российских исполнителей и ближнего зарубежьяvladj:Разработчик плагина туда сервера вписывает, нам никак... Интересно откуда источник взялся,
который поставить захотелось ? Там что, больше всего текстов ? Которых на 6 существующих нет ?