Скрипты для foo_uie_wsh_panel_mod

Список разделов foobar2000 Секреты foobar2000

Описание: Кнопочки, конфиги, секреты, советы.

Сообщение #1 pvmail » 04.05.2009, 19:04

На Hydrogenaudio Forums есть интересные конфиги для foo_uie_wsh_panel_mod, а именно:
Volume bar
в директорию foobar\images положить графическую "метку" Volume.png:


Код: Выделить всё
function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }
var g_font = gdi.Font("Tahoma", 12, 0);
var g_drag = 0;
var ww;
var hofset = 10;
var wh = 12;
var vofset;
var grad;

function on_paint(gr){
vofset = (window.Height-wh)/2;
grad = Math.pow((100+fb.Volume)/100,2);
ww = 5*Math.floor((window.Width - 2*hofset)/5);
var i = 0;
while (i < ww) {
var col = (grad<=0) ? RGB(168,168,168) : (i<=grad*ww) ? RGB(32+128*i/ww,164*(1-i/ww),32*(1-i/ww)) : RGB(168,168,168);
gr.FillSolidRect(hofset+1+i,vofset,4,wh, col);
i = i +5;
}
gr.DrawRect(hofset,vofset, i, wh, 1.0, RGB(192,192,192));
}
function on_mouse_lbtn_down(x,y){
g_drag = 1;
}
function on_mouse_lbtn_up(x,y){
on_mouse_move(x,y);
g_drag = 0;
}
function on_mouse_move(x,y){
if(g_drag){
var v = (x-hofset)/ww;
v = (v<0) ? 0 : (v<1) ? v : 1;
v = 100 * (Math.pow(v,1/2) - 1);
fb.Volume = v;
}
}
function on_mouse_wheel(delta){
if(delta>0)
fb.VolumeUp();
else
fb.VolumeDown();
}
function on_volume_change(val){
window.Repaint();
}
function on_playback_time(time){
window.Repaint();
}
//EOF

Seekbar
в директорию foobar\images положить графические "ползунки" Cursor.png и Cursor-paused.png

Код: Выделить всё
function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }
var g_font = gdi.Font("Tahoma", 12, 0);
var g_drag = 0;
//var ww = 340;
var hofset = 12;
var is = 14;
var wh = 4;
var vofset;
var length;
var grad;
var col = RGB(24,24,92);
var img = gdi.image(fb.FoobarPath + "Images\\Cursor.png");

function on_paint(gr){
vofset = (window.Height-wh)/2;
ww = window.Width - 2*hofset;
// fb.trace("ww="+ww);
length = fb.PlaybackLength;
grad = 0;
if (length > 0) grad = fb.PlaybackTime/fb.PlaybackLength;

gr.FillGradRect(hofset+1,vofset, ww*grad, wh, 90, col, RGB(255,255,255));

gr.FillGradRect(hofset+ww*grad+1,vofset, ww*(1-grad)-1,wh, 90, RGB(92,92,92), RGB(255,255,255));
gr.DrawRect(hofset,vofset, ww, wh+1, 1, RGB(192,192,192));

gr.DrawImage(img, hofset+ww*grad-is/2, (window.Height-is)/2, is, is, 0, 0,is, is);







}
function on_mouse_lbtn_down(x,y){
g_drag = 1;
}
function on_mouse_lbtn_up(x,y){
on_mouse_move(x,y);
g_drag = 0;
}
function on_mouse_move(x,y){
if(g_drag){
var v = (x-hofset)/ww;
v = (v<0) ? 0 : (v<1) ? v : 1;
fb.PlaybackTime = fb.PlaybackLength * v;



}

}
function on_mouse_wheel(delta){
if(delta>0)
fb.PlaybackTime = fb.PlaybackTime + delta;
else
fb.PlaybackTime = fb.PlaybackTime + delta;
}
function on_playback_new_track(info){
window.Repaint();
}
function on_playback_stop(){
img = gdi.image(fb.FoobarPath + "Images\\Cursor" +".png");
window.Repaint();
}
function on_playback_seek(time){
window.Repaint();
}

function on_playback_time(time){
window.Repaint();
}
function on_playback_pause(state) {
img = gdi.image(fb.FoobarPath + "Images\\Cursor" + (state ? "-paused" : "") +".png");
col = state ? RGB(24,24,24) : RGB(24,24,92);
window.Repaint();
}

всё хорошо, вот только динамика движения ползунков смазаная.

какие есть соображения по сим?

Интересны новые конфиги.

Ребята сори - при вставке конфигов изменилось форматирование.

первоисточник
http://www.hydrogenaudio.org/forums/index.php?showtopic=70363&st=50
Вложения
Volume.png
Volume.png (134 байт) Просмотров: 54463
Cursor.png
Cursor.png (168 байт) Просмотров: 54442
Cursor-paused.png
Cursor-paused.png (199 байт) Просмотров: 54458
Последний раз редактировалось evil 11.07.2009, 20:53, всего редактировалось 1 раз.
pvmail
Автор темы
Аватара
Репутация: 0
С нами: 17 лет 10 месяцев

Сообщение #2 evil » 23.05.2009, 11:23

Имею такой Seekbar:
Код: Выделить всё
// This is helper function, used in DrawString()/MeasureString()
// args: h_align, v_align, trimming, flags
function StringFormat() {
   var h_align = 0, v_align = 0, trimming = 0, flags = 0;
   switch (arguments.length)
   {
   // fall-thru
   case 4:
      flags = arguments[3];
   case 3:
      trimming = arguments[2];
   case 2:
      v_align = arguments[1];
   case 1:
      h_align = arguments[0];
      break;
   default:
      return 0;
   }
   return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
}

// h_align/v_align:
// http://msdn.microsoft.com/en-us/library/ms534177(VS.85).aspx
StringAlignment = {
   Near: 0,
   Center: 1,
   Far: 2
};

// trimming:
// http://msdn.microsoft.com/en-us/library/ms534403(VS.85).aspx
StringTrimming = {
   None: 0,
   Character: 1,
   Word: 2,
   EllipsisCharacter: 3,
   EllipsisWord: 4,
   EllipsisPath: 5
};

// flags, can be combined of:
// http://msdn.microsoft.com/en-us/library/ms534181(VS.85).aspx
StringFormatFlags = {
   DirectionRightToLeft: 0x00000001,
   DirectionVertical: 0x00000002,
   NoFitBlackBox: 0x00000004,
   DisplayFormatControl: 0x00000020,
   NoFontFallback: 0x00000400,
   MeasureTrailingSpaces: 0x00000800,
   NoWrap: 0x00001000,
   LineLimit: 0x00002000,
   NoClip: 0x00004000
};

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);
}

// APPLICATION - START
g_focus_metadb = fb.GetFocusItem();
g_font = gdi.Font("Segoe UI", 12, 0);
g_tfo = fb.TitleFormat("[%album artist% - ][$if2(%track artist%,%performer%) - ]%title% '['$if(%ispaused%,Paused,%playback_time% / %length%)']'");
g_stringformat = StringFormat(StringAlignment.Center, StringAlignment.Center);
var g_drag = 0;

// Key point
function on_item_focus_change() {
   g_focus_metadb = fb.GetFocusItem();
   var info = g_focus_metadb.GetFileInfo();
}

function on_playback_new_track(metadb) {   
   window.Repaint();
}

function on_playback_starting(cmd, is_paused) {
   window.Repaint();
}

function on_playback_stop(){
   window.Repaint();
}

function on_playback_seek(time){
   window.Repaint();
}

function on_playback_time(time){
   window.Repaint();
}

function on_playback_pause(state){
   window.Repaint();
}

function on_paint(gr) {
   gr.SetTextRenderingHint(5);
   var ww = window.Width;
   var wh = window.Height;
   var pos = 0   
   var length = fb.PlaybackLength;
   var txt;

   if(length > 0){
      if(g_drag){
         pos = window.Width * g_drag_seek;
         txt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
      }
      else{
         pos = window.Width * (fb.PlaybackTime / length);
         //проигрываемая композиция
         txt = g_tfo.Eval();
         //следящий за фокусом курсора
         //txt = g_tfo.EvalWithMetadb(g_focus_metadb);
         //время, прогресс
         //txt += " " + TimeFmt(fb.PlaybackTime) + " / " + TimeFmt(length - fb.PlaybackTime) + " [" +TimeFmt(length) + "]";
         //txt += " " + Math.floor(fb.PlaybackTime / length * 100).toString() + "%";
      }
   }  else if (fb.IsPlaying) {
      txt = "Streaming...";
   }
   
   //if(fb.IsPaused) { txt += " [Paused]" }
   
   gr.FillGradRect(0, 0, pos, wh, 90, RGB(240,240,240), RGB(208,128,18));
   gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(240,240,240), RGB(190,190,190));
   // Draw info
   if (g_focus_metadb) {
      gr.DrawString(txt, g_font, RGB(0,0,0), 0, 0, window.Width, window.Height, g_stringformat);
   }
   gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(150,150,150));
}

function on_mouse_lbtn_down(x,y){
   g_drag = 1;
}

function on_mouse_lbtn_up(x,y){
   on_mouse_move(x,y);
   g_drag = 0;
}

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 / 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 / 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.PlaybackTime += delta;
}
// APPLICATION - END

Иногда выдаёт SCRIPT ERROR, никто не видит ошибку?
evil M
Репутация: 67
С нами: 17 лет 10 месяцев

Сообщение #3 Максим » 24.05.2009, 09:46

evil
Подправил. Попробуй:
Код: Выделить всё
function StringFormat() {
   var h_align = 0, v_align = 0, trimming = 0, flags = 0;
   switch (arguments.length)
   {
   // fall-thru
   case 4:
      flags = arguments[3];
   case 3:
      trimming = arguments[2];
   case 2:
      v_align = arguments[1];
   case 1:
      h_align = arguments[0];
      break;
   default:
      return 0;
   }
   return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
}

StringAlignment = {
   Near: 0,
   Center: 1,
   Far: 2
};

StringTrimming = {
   None: 0,
   Character: 1,
   Word: 2,
   EllipsisCharacter: 3,
   EllipsisWord: 4,
   EllipsisPath: 5
};

StringFormatFlags = {
   DirectionRightToLeft: 0x00000001,
   DirectionVertical: 0x00000002,
   NoFitBlackBox: 0x00000004,
   DisplayFormatControl: 0x00000020,
   NoFontFallback: 0x00000400,
   MeasureTrailingSpaces: 0x00000800,
   NoWrap: 0x00001000,
   LineLimit: 0x00002000,
   NoClip: 0x00004000
};

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);
}

// APPLICATION - START

g_font = gdi.Font("Segoe UI", 12, 0);
g_tfo = fb.TitleFormat("[%album artist% - ][$if2(%track artist%,%performer%) - ]%title% '['$if(%ispaused%,Paused,%playback_time% / %length%)']'");
g_stringformat = StringFormat(StringAlignment.Center, StringAlignment.Center);
var g_drag = 0;

// Key point



function on_playback_stop(){
   window.Repaint();
}

function on_playback_seek(time){
   window.Repaint();
}

function on_playback_time(time){
   window.Repaint();
}

function on_playback_pause(state){
   window.Repaint();
}

function on_paint(gr) {
   gr.SetTextRenderingHint(5);
   var ww = window.Width;
   var wh = window.Height;
   var pos = 0   
   var length = fb.PlaybackLength;
   var txt;

   if(length > 0){
      if(g_drag){
         pos = window.Width * g_drag_seek;
         txt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
      }
      else{
         pos = window.Width * (fb.PlaybackTime / length);
         //проигрываемая композиция
         txt = g_tfo.Eval();
         //следящий за фокусом курсора
         //txt = g_tfo.EvalWithMetadb(g_focus_metadb);
         //время, прогресс
         //txt += " " + TimeFmt(fb.PlaybackTime) + " / " + TimeFmt(length - fb.PlaybackTime) + " [" +TimeFmt(length) + "]";
         //txt += " " + Math.floor(fb.PlaybackTime / length * 100).toString() + "%";
      }
   }  else if (fb.PlaybackTime) {
      txt = "Streaming...";
   }
   
   //if(fb.IsPaused) { txt += " [Paused]" }
   
   gr.FillGradRect(0, 0, pos, wh, 90, RGB(240,240,240), RGB(208,128,18));
   gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(240,240,240), RGB(190,190,190));
   // Draw info
   gr.DrawString(txt, g_font, RGB(0,0,0), 0, 0, window.Width, window.Height, g_stringformat);
   gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(150,150,150));
}

function on_mouse_lbtn_down(x,y){
   g_drag = 1;
   on_mouse_move(x,y);
}


function on_mouse_lbtn_up(x,y){
   if(g_drag){
      g_drag = 0;
      g_drag_seek = x / 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;
      g_drag = 0;
   }
}

function on_mouse_move(x,y){
   if(g_drag){
      g_drag_seek = x / 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.PlaybackTime += delta;
}
// APPLICATION - END
Максим M
Аватара
Репутация: 93
С нами: 16 лет 11 месяцев

вопрос по WSH

Сообщение #4 mans » 30.06.2009, 15:22

задача через wsh_panel вызывать внешнюю программу с переданным параметром путь
код выглядит так
WshShell.run('"C:\\Program Files\\MusicBrainz Picard\\picard.exe"' +fb.TitleFormat("$replace(%path%,' ','_')").Eval(true));
программа вызыватеся параметр передается  но возникает ошибка:
D:\Music\Artist\название песни.mp3 Ошибка: [Errno 2] no such file or directory D:\\Music\\Artist\\название песни.mp3
вероятно проблема в двойных слэшах но как их убрать я так и не понял.
mans
Репутация: 0
С нами: 16 лет 5 месяцев

Сообщение #5 Максим » 30.06.2009, 22:25

mans
Путь нужно взять в кавычки. Подчеркивания ни к чему.

Код: Выделить всё
WshShell.run('"C:\\Program Files\\MusicBrainz Picard\\picard.exe"' + '"' + fb.TitleFormat("%path%").Eval(true) + '"');
Последний раз редактировалось Sp1ke 30.06.2009, 23:15, всего редактировалось 1 раз.
Максим M
Аватара
Репутация: 93
С нами: 16 лет 11 месяцев

Сообщение #6 mans » 01.07.2009, 00:08

все работает, спасибо  :)
mans
Репутация: 0
С нами: 16 лет 5 месяцев

Сообщение #7 hpcs » 06.07.2009, 18:05

Максим, а не подскажете как сменить цвет seekbar на стандартный вистовский цвет selected item?
hpcs
Аватара
Репутация: 0
С нами: 15 лет 2 месяца

Сообщение #8 Максим » 06.07.2009, 18:54

hpcs
Подскажу, если увижу код.
Максим M
Аватара
Репутация: 93
С нами: 16 лет 11 месяцев

Сообщение #9 hpcs » 06.07.2009, 19:17

Код: Выделить всё
function StringFormat() {
   var h_align = 0, v_align = 0, trimming = 0, flags = 0;
   switch (arguments.length)
   {
   // fall-thru
   case 4:
      flags = arguments[3];
   case 3:
      trimming = arguments[2];
   case 2:
      v_align = arguments[1];
   case 1:
      h_align = arguments[0];
      break;
   default:
      return 0;
   }
   return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
}

StringAlignment = {
   Near: 0,
   Center: 1,
   Far: 2
};

StringTrimming = {
   None: 0,
   Character: 1,
   Word: 2,
   EllipsisCharacter: 3,
   EllipsisWord: 4,
   EllipsisPath: 5
};

StringFormatFlags = {
   DirectionRightToLeft: 0x00000001,
   DirectionVertical: 0x00000002,
   NoFitBlackBox: 0x00000004,
   DisplayFormatControl: 0x00000020,
   NoFontFallback: 0x00000400,
   MeasureTrailingSpaces: 0x00000800,
   NoWrap: 0x00001000,
   LineLimit: 0x00002000,
   NoClip: 0x00004000
};

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);
}

// APPLICATION - START

g_font = gdi.Font("Segoe UI", 12, 0);
g_tfo = fb.TitleFormat("[%album artist% - ][$if2(%track artist%,%performer%) - ]%title% '['$if(%ispaused%,Paused,%playback_time% / %length%)']'");
g_stringformat = StringFormat(StringAlignment.Center, StringAlignment.Center);
var g_drag = 0;

// Key point



function on_playback_stop(){
   window.Repaint();
}

function on_playback_seek(time){
   window.Repaint();
}

function on_playback_time(time){
   window.Repaint();
}

function on_playback_pause(state){
   window.Repaint();
}

function on_paint(gr) {
   gr.SetTextRenderingHint(5);
   var ww = window.Width;
   var wh = window.Height;
   var pos = 0   
   var length = fb.PlaybackLength;
   var txt;

   if(length > 0){
      if(g_drag){
         pos = window.Width * g_drag_seek;
         txt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
      }
      else{
         pos = window.Width * (fb.PlaybackTime / length);
         //проигрываемая композиция
         txt = g_tfo.Eval();
         //следящий за фокусом курсора
         //txt = g_tfo.EvalWithMetadb(g_focus_metadb);
         //время, прогресс
         //txt += " " + TimeFmt(fb.PlaybackTime) + " / " + TimeFmt(length - fb.PlaybackTime) + " [" +TimeFmt(length) + "]";
         //txt += " " + Math.floor(fb.PlaybackTime / length * 100).toString() + "%";
      }
   }  else if (fb.PlaybackTime) {
      txt = "Streaming...";
   }
   
   //if(fb.IsPaused) { txt += " [Paused]" }
   
   gr.FillGradRect(0, 0, pos, wh, 90, RGB(240,240,240), RGB(208,128,18));
   gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(240,240,240), RGB(190,190,190));
   // Draw info
   gr.DrawString(txt, g_font, RGB(0,0,0), 0, 0, window.Width, window.Height, g_stringformat);
   gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(150,150,150));
}

function on_mouse_lbtn_down(x,y){
   g_drag = 1;
   on_mouse_move(x,y);
}


function on_mouse_lbtn_up(x,y){
   if(g_drag){
      g_drag = 0;
      g_drag_seek = x / 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;
      g_drag = 0;
   }
}

function on_mouse_move(x,y){
   if(g_drag){
      g_drag_seek = x / 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.PlaybackTime += delta;
}
// APPLICATION - END
ваш исправленный
hpcs
Аватара
Репутация: 0
С нами: 15 лет 2 месяца

Сообщение #10 Максим » 06.07.2009, 19:40

Измененный код:
Код: Выделить всё
function StringFormat() {
   var h_align = 0, v_align = 0, trimming = 0, flags = 0;
   switch (arguments.length)
   {
   // fall-thru
   case 4:
      flags = arguments[3];
   case 3:
      trimming = arguments[2];
   case 2:
      v_align = arguments[1];
   case 1:
      h_align = arguments[0];
      break;
   default:
      return 0;
   }
   return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
}

StringAlignment = {
   Near: 0,
   Center: 1,
   Far: 2
};

StringTrimming = {
   None: 0,
   Character: 1,
   Word: 2,
   EllipsisCharacter: 3,
   EllipsisWord: 4,
   EllipsisPath: 5
};

StringFormatFlags = {
   DirectionRightToLeft: 0x00000001,
   DirectionVertical: 0x00000002,
   NoFitBlackBox: 0x00000004,
   DisplayFormatControl: 0x00000020,
   NoFontFallback: 0x00000400,
   MeasureTrailingSpaces: 0x00000800,
   NoWrap: 0x00001000,
   LineLimit: 0x00002000,
   NoClip: 0x00004000
};

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);
}

// APPLICATION - START

g_font = gdi.Font("Segoe UI", 12, 0);
g_tfo = fb.TitleFormat("[%album artist% - ][$if2(%track artist%,%performer%) - ]%title% '['$if(%ispaused%,Paused,%playback_time% / %length%)']'");
g_stringformat = StringFormat(StringAlignment.Center, StringAlignment.Center);
var g_drag = 0;

// Key point



function on_playback_stop(){
   window.Repaint();
}

function on_playback_seek(time){
   window.Repaint();
}

function on_playback_time(time){
   window.Repaint();
}

function on_playback_pause(state){
   window.Repaint();
}

function on_paint(gr) {
   gr.SetTextRenderingHint(5);
   var ww = window.Width;
   var wh = window.Height;
   var pos = 0   
   var length = fb.PlaybackLength;
   var txt;

   if(length > 0){
      if(g_drag){
         pos = window.Width * g_drag_seek;
         txt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
      }
      else{
         pos = window.Width * (fb.PlaybackTime / length);
         //проигрываемая композиция
         txt = g_tfo.Eval();
         //следящий за фокусом курсора
         //txt = g_tfo.EvalWithMetadb(g_focus_metadb);
         //время, прогресс
         //txt += " " + TimeFmt(fb.PlaybackTime) + " / " + TimeFmt(length - fb.PlaybackTime) + " [" +TimeFmt(length) + "]";
         //txt += " " + Math.floor(fb.PlaybackTime / length * 100).toString() + "%";
      }
   }  else if (fb.PlaybackTime) {
      txt = "Streaming...";
   }
   
   //if(fb.IsPaused) { txt += " [Paused]" }

   gr.FillGradRect(0, 0, pos, wh, 90, RGB(241,251,255), RGB(191,240,255));

   gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(240,240,240), RGB(190,190,190));
   // Draw info
   gr.DrawString(txt, g_font, RGB(0,0,0), 0, 0, window.Width, window.Height, g_stringformat);
   gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(150,150,150));
}

function on_mouse_lbtn_down(x,y){
   g_drag = 1;
   on_mouse_move(x,y);
}


function on_mouse_lbtn_up(x,y){
   if(g_drag){
      g_drag = 0;
      g_drag_seek = x / 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;
      g_drag = 0;
   }
}

function on_mouse_move(x,y){
   if(g_drag){
      g_drag_seek = x / 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.PlaybackTime += delta;
}
// APPLICATION - END

Править нужно эту строку:
Код: Выделить всё
gr.FillGradRect(0, 0, pos, wh, 90, RGB(241,251,255), RGB(191,240,255));
Последний раз редактировалось Sp1ke 06.07.2009, 19:44, всего редактировалось 1 раз.
Максим M
Аватара
Репутация: 93
С нами: 16 лет 11 месяцев

Сообщение #11 hpcs » 06.07.2009, 19:48

хм...спасибо за оперативность, но к сожалению не совсем то, что я хотел...один в один есть возможность сделать?
Изображение
hpcs
Аватара
Репутация: 0
С нами: 15 лет 2 месяца

Сообщение #12 Максим » 06.07.2009, 19:58

Тогда так:
Код: Выделить всё
function StringFormat() {
   var h_align = 0, v_align = 0, trimming = 0, flags = 0;
   switch (arguments.length)
   {
   // fall-thru
   case 4:
      flags = arguments[3];
   case 3:
      trimming = arguments[2];
   case 2:
      v_align = arguments[1];
   case 1:
      h_align = arguments[0];
      break;
   default:
      return 0;
   }
   return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
}

StringAlignment = {
   Near: 0,
   Center: 1,
   Far: 2
};

StringTrimming = {
   None: 0,
   Character: 1,
   Word: 2,
   EllipsisCharacter: 3,
   EllipsisWord: 4,
   EllipsisPath: 5
};

StringFormatFlags = {
   DirectionRightToLeft: 0x00000001,
   DirectionVertical: 0x00000002,
   NoFitBlackBox: 0x00000004,
   DisplayFormatControl: 0x00000020,
   NoFontFallback: 0x00000400,
   MeasureTrailingSpaces: 0x00000800,
   NoWrap: 0x00001000,
   LineLimit: 0x00002000,
   NoClip: 0x00004000
};

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);
}

// APPLICATION - START

g_font = gdi.Font("Segoe UI", 12, 0);
g_tfo = fb.TitleFormat("[%album artist% - ][$if2(%track artist%,%performer%) - ]%title% '['$if(%ispaused%,Paused,%playback_time% / %length%)']'");
g_stringformat = StringFormat(StringAlignment.Center, StringAlignment.Center);
var g_drag = 0;

// Key point



function on_playback_stop(){
   window.Repaint();
}

function on_playback_seek(time){
   window.Repaint();
}

function on_playback_time(time){
   window.Repaint();
}

function on_playback_pause(state){
   window.Repaint();
}

function on_paint(gr) {
   gr.SetTextRenderingHint(5);
   var ww = window.Width;
   var wh = window.Height;
   var pos = 0   
   var length = fb.PlaybackLength;
   var txt;

   if(length > 0){
      if(g_drag){
         pos = window.Width * g_drag_seek;
         txt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
      }
      else{
         pos = window.Width * (fb.PlaybackTime / length);
         //проигрываемая композиция
         txt = g_tfo.Eval();
         //следящий за фокусом курсора
         //txt = g_tfo.EvalWithMetadb(g_focus_metadb);
         //время, прогресс
         //txt += " " + TimeFmt(fb.PlaybackTime) + " / " + TimeFmt(length - fb.PlaybackTime) + " [" +TimeFmt(length) + "]";
         //txt += " " + Math.floor(fb.PlaybackTime / length * 100).toString() + "%";
      }
   }  else if (fb.PlaybackTime) {
      txt = "Streaming...";
   }
   
   //if(fb.IsPaused) { txt += " [Paused]" }


   gr.FillGradRect(0, 0, pos, wh, 90, RGB(243,248,250), RGB(210,236,249));

   gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(247,248,250), RGB(241,242,244));
   // Draw info
   gr.DrawString(txt, g_font, RGB(0,0,0), 0, 0, window.Width, window.Height, g_stringformat);
   gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(150,220,250));
}

function on_mouse_lbtn_down(x,y){
   g_drag = 1;
   on_mouse_move(x,y);
}


function on_mouse_lbtn_up(x,y){
   if(g_drag){
      g_drag = 0;
      g_drag_seek = x / 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;
      g_drag = 0;
   }
}

function on_mouse_move(x,y){
   if(g_drag){
      g_drag_seek = x / 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.PlaybackTime += delta;
}
// APPLICATION - END
Максим M
Аватара
Репутация: 93
С нами: 16 лет 11 месяцев

Сообщение #13 hpcs » 06.07.2009, 20:03

ок, спасибо...
hpcs
Аватара
Репутация: 0
С нами: 15 лет 2 месяца

Сообщение #14 pvmail » 06.07.2009, 22:19

для разнообразия выкладываю ещё один код
Код: Выделить всё
function StringFormat() {
   var h_align = 0, v_align = 0, trimming = 0, flags = 0;
   switch (arguments.length)
   {
   // fall-thru
   case 4:
      flags = arguments[3];
   case 3:
      trimming = arguments[2];
   case 2:
      v_align = arguments[1];
   case 1:
      h_align = arguments[0];
      break;
   default:
      return 0;
   }
   return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
}

StringAlignment = {
   Near: 0,
   Center: 1,
   Far: 2
};

StringTrimming = {
   None: 0,
   Character: 1,
   Word: 2,
   EllipsisCharacter: 3,
   EllipsisWord: 4,
   EllipsisPath: 5
};

StringFormatFlags = {
   DirectionRightToLeft: 0x00000001,
   DirectionVertical: 0x00000002,
   NoFitBlackBox: 0x00000004,
   DisplayFormatControl: 0x00000020,
   NoFontFallback: 0x00000400,
   MeasureTrailingSpaces: 0x00000800,
   NoWrap: 0x00001000,
   LineLimit: 0x00002000,
   NoClip: 0x00004000
};

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);
}

// APPLICATION - START

g_font = gdi.Font("Tahoma", 11, 0);
g_tfo = fb.TitleFormat("$if(%ispaused%,Paused  '//'  ,)[%album artist%[ / %track artist%] — ]%title% '   *   '%playback_time%  /  %length%'   *   '");
g_stringformat = StringFormat(StringAlignment.Center, StringAlignment.Center);
var g_drag = 0;

// Key point



function on_playback_stop(){
   window.Repaint();
}

function on_playback_seek(time){
   window.Repaint();
}

function on_playback_time(time){
   window.Repaint();
}

function on_playback_pause(state){
   window.Repaint();
}

function on_paint(gr) {
   gr.SetTextRenderingHint(0);
   var ww = window.Width;
   var wh = window.Height;
   var pos = 0   
   var length = fb.PlaybackLength;
   var txt;

   if(length > 0){
      if(g_drag){
         pos = window.Width * g_drag_seek;
         txt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
      }
      else{
         pos = window.Width * (fb.PlaybackTime / length);
         //проигрываемая композиция
         txt = g_tfo.Eval();
         //следящий за фокусом курсора
         //txt = g_tfo.EvalWithMetadb(g_focus_metadb);
         //время, прогресс
         //txt += " " "$if(%ispaused%,Paused  '//'  ,)[%album artist%[ / %track artist%] — ]%title% '   *   '%playback_time%/%length%'   *   '")"]";
         //txt += " " + Math.floor(fb.PlaybackTime / length * 100).toString() + "%";
      }
   }  else if (fb.PlaybackTime) {
      txt = "Streaming...";
   }
   
   //if(fb.IsPaused) { txt += " [Paused]" }
   
   gr.FillGradRect(0, 0, pos, wh, 90, RGB(137,170,146), RGB(6,6,80));
   gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(240,240,240), RGB(46,48,63));
   // Draw info
   gr.DrawString(txt, g_font, RGB(255,255,255), 0, -1, window.Width, window.Height, g_stringformat);
   gr.DrawRect(-1,0, ww+1, wh-1, 1.5, RGB(100,100,100));
}

function on_mouse_lbtn_down(x,y){
   g_drag = 1;
   on_mouse_move(x,y);
}


function on_mouse_lbtn_up(x,y){
   if(g_drag){
      g_drag = 0;
      g_drag_seek = x / 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;
      g_drag = 0;
   }
}

function on_mouse_move(x,y){
   if(g_drag){
      g_drag_seek = x / 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.PlaybackTime += delta;
}
// APPLICATION - END




http://pic.ipicture.ru/uploads/090706/jN4HK25qjn.png

http://pic.ipicture.ru/uploads/090706/PdW1gVUcki.png
Последний раз редактировалось pvmail 06.07.2009, 22:38, всего редактировалось 1 раз.
pvmail
Автор темы
Аватара
Репутация: 0
С нами: 17 лет 10 месяцев

Сообщение #15 Schwitters » 07.07.2009, 11:43

А можно seekbar и volume совместить в одной wsh панеле?
Schwitters
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #16 meDveD » 07.07.2009, 12:29

Schwitters

by Максим

Код: Выделить всё
var align_top   =0;
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;

function StrFmt(alignH,alignV,trim,flag){ return ((alignH<<28)|(alignV<<24)|(trim<<20)|flag); }
//--------
function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r,g,b,a){ return ((a<<24)|(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);
}
//----------------------------------------------------------------------------

var g_font = gdi.Font("Tahoma", 13, 0);
//var g_font = gdi.Font("Calibri", 14, 1);
//var g_font = gdi.Font("Segoe UI", 14);

var g_titlefmt = fb.TitleFormat("$if(%ispaused%,Paused  '//'  ,)[%album artist%[ / %track artist%] — ]%title% '['%playback_time%/%length%']'");
var g_fileinfo = null;
var g_colors = new Array(RGB(105,105,140), RGB(80,80,80), RGB(64,64,84), RGB(64,64,64));

var g_drag = 0;
var g_drag_seek = 0;

var g_bar = 1;

function on_paint(gr){

   var ww = window.Width;
   var wh = window.Height;
   var pos = 0;
   var length = fb.PlaybackLength;
   var volume = fb.Volume;
   var txt;

   if(length > 0){
      if(g_drag){
         if (g_bar == 1) {
            pos = window.Width * g_drag_seek;
            txt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
         }
         else if (g_bar == 2) {
            pos = window.Width * ((100+volume)/100);
            txt = "Volume " + (Math.ceil(volume)) + " dB";
         }
      }
      else if (g_bar == 1) {
         pos = window.Width * (fb.PlaybackTime / length);
         txt = g_titlefmt.Eval();
      }
      else if (g_bar == 2) {
         pos = window.Width * ((100+volume)/100);
         txt = "Volume " + (Math.ceil(volume)) + " dB";
      }
   }

   //gr.FillGradRect( 0, 0, pos, wh, 90, g_colors[g_bar-1], g_colors[g_bar+1]);
   //gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(0,0,0), RGB(0,0,0));

   //gr.DrawString(txt, g_font, RGB(255,255,255), 0, 0, ww, wh,
      //StrFmt(align_center, align_middle, trim_no, flag_nowrap | flag_noclip));

   //gr.DrawRect(-1,0, ww+1, wh-1, 1.0, RGB(100,100,100));


   //gr.FillGradRect(  0, 0,    pos, wh, 90, RGB(240,240,240), RGB(120,190,240));
   //gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(240,240,240), RGB(190,190,220));
   //gr.DrawString(txt, g_font, RGB(64,64,128), 0, 0, ww, wh, 0x11005000);
   //gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(150,150,150));
   
   gr.FillGradRect(  0, 0,    pos, wh, 90, RGB(92,96,126), RGB(46,48,63));
   gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(240,240,240), RGB(46,48,63));
   gr.DrawString(txt, g_font, RGB(255,255,255), 0, 0, ww, wh,
      StrFmt(align_center, align_middle, trim_no, flag_nowrap | flag_noclip));
   gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(150,150,150));


}

function on_size(){
}

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 ) {
      if ( g_bar == 1 ) {
         g_drag = 0;
         g_drag_seek = x / 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;
      }
      else if (g_bar == 2) {
         on_mouse_move(x,y);
         g_drag = 0;
      }
   }
}

function on_mouse_move(x,y) {
   if(g_drag) {
      if ( g_bar == 1 ) {
         g_drag_seek = x / window.Width;
         g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
         window.Repaint();
      }
      else if (g_bar == 2) {
         var v = x / window.Width;
         v = (v<0) ? 0 : (v<1) ? v : 1;
         v = -100 * (1-v);
         if(fb.Volume != v)
            fb.Volume = v;
      }
   }
}

function on_mouse_wheel(delta){
   if ( delta > 0 ) {
      g_bar = 1;
      window.Repaint();
   }
   else {
      g_bar = 2;
      window.Repaint();
   }
}
//--------
function on_playback_starting(cmd, paused){
}

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){
   window.Repaint();
}

function on_playback_edited(){
}

function on_playback_dynamic_info(){
}

function on_playback_dynamic_info_track(){
}

function on_playback_time(time){
   window.Repaint();
}
function on_volume_change(val){
   window.Repaint();
}

//EOF
meDveD M
Откуда: SPb
Репутация: 52
С нами: 17 лет 3 месяца

Сообщение #17 Schwitters » 07.07.2009, 13:06

2meDveD, спасибо.
Schwitters
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #18 Максим » 07.07.2009, 17:00

Schwitters

Ещё один вариант:

Код: Выделить всё
// Flags
var DT_CENTER = 0x00000001;
var DT_VCENTER = 0x00000004;
var DT_SINGLELINE = 0x00000020;

//--------
function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r,g,b,a){ return ((a<<24)|(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);
}
//----------------------------------------------------------------------------

var g_font = gdi.Font("Tahoma", 11);
var g_titlefmt = fb.TitleFormat("$if(%ispaused%,Paused  '//'  ,)%playback_time%  /  %length%");
var g_fileinfo = null;
var g_colors = new Array(RGB(0,120,0), RGB(0,110,0), RGB(0,75,0), RGB(0,65,0));

var g_drag = 0;
var g_drag_seek = 0;
var g_hover;
var g_bar = 0;
var Tooltip = window.CreateTooltip();


function on_paint(gr){

   var ww = window.Width;
   var wh = window.Height;
   var spos = 0;
   var length = fb.PlaybackLength;
   var volume = fb.Volume;
   var vpos = (window.Width / 5) * ((100+volume)/100);
   var stxt;
   var vtxt = "Volume " + (Math.ceil(volume)) + " dB";
   

   if(length > 0) {
      if ( g_drag && g_drag_seek && g_bar == 1) {
            spos = (window.Width - window.Width/5) * g_drag_seek;
            stxt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
      }
      else if ( g_drag && g_bar == 2) {
            vpos = (window.Width / 5) * ((100+volume)/100);
            vtxt = "Volume " + (Math.ceil(volume)) + " dB";
      }
      if ( g_bar != 1 ) {
         spos = (window.Width - window.Width/5) * (fb.PlaybackTime / length);
         stxt = g_titlefmt.Eval();
      }
   }
   else if ( fb.PlaybackTime ) { stxt = "Streaming..."; }



   gr.FillSolidRect(0, 0, ww, wh, RGB(0,0,0));
   gr.FillGradRect( 0, 0, spos, wh, 90, g_colors[0], g_colors[2]);


   gr.FillGradRect( ww-ww/5, 0, vpos, wh, 90, g_colors[1], g_colors[3]);
   gr.FillGradRect(4*ww/5+vpos, 0, ww-vpos, wh, 90, RGB(0,0,0), RGB(0,0,0));

   gr.GdiDrawText(stxt, g_font, RGB(255,255,255), 0, 0, 4*ww/5, wh, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
   gr.GdiDrawText(vtxt, g_font, RGB(255,255,255), 4*ww/5, 0, ww/5, wh, DT_CENTER | DT_VCENTER | DT_SINGLELINE);

   gr.DrawRect( 4*ww/5-1, 0, 1, wh, 1.0, RGB(0,100,0));
   gr.DrawRect(-1,0, ww+1, wh-1, 1.0, RGB(0,100,0));
   
   if( g_hover && !g_drag ) { Tooltip.Text = g_hover; Tooltip.Activate(); }

}

function on_size(){
}

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;
   if ( x <= 4*window.Width/5) g_bar = 1;
   else if ( x > 4*window.Width/5 ) g_bar = 2;
   on_mouse_move(x,y);

}

function on_mouse_lbtn_up(x,y){
   if( g_drag ) {
      if ( g_bar == 1 ) {
         g_drag = 0;
         g_drag_seek = x / (4*window.Width/5);
         g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
         fb.PlaybackTime = fb.PlaybackLength * g_drag_seek;
         g_bar = 0;
      }
      else if (g_bar == 2) {
         on_mouse_move(x,y);
         g_drag = 0;
      }
   }
}

function on_mouse_move(x,y) {

   if(g_drag) {
      if ( g_bar == 1 ) {
         g_drag_seek = x / (4*window.Width/5);
         g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
         window.Repaint();
      }
      else if ( g_bar == 2 ) {
         var v = x / (window.Width/5);
         v -= 4;
         v = (v<0) ? 0 : (v<1) ? v : 1;
         v = -100 * (1-v);
         if(fb.Volume != v)
            fb.Volume = v;
      }
   }
   else {
      if ( x <= 4*window.Width/5) {
         g_hover = x / (4*window.Width/5);
         g_hover = (g_hover<0) ? 0 : (g_hover<1) ? g_hover : 1;
         g_hover = TimeFmt( g_hover * fb.PlaybackLength );
      }
      else if ( x > 4*window.Width/5 ) {
         var v = x / (window.Width/5);
         v -= 4;
         v = (v<0) ? 0 : (v<1) ? v : 1;
         v = -100 * (1-v);
         g_hover = Math.ceil(v) + " dB";
      }
      window.Repaint();
   }

}

function on_mouse_leave() {
   Tooltip.Deactivate();
}

function on_mouse_wheel(delta){
      if(delta<0)
         fb.VolumeUp();
      else
         fb.VolumeDown();
}
//--------
function on_playback_starting(cmd, paused){
}

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){
   window.Repaint();
}

function on_playback_edited(){
}

function on_playback_dynamic_info(){
}

function on_playback_dynamic_info_track(){
}

function on_playback_time(time){
   window.Repaint();
}

function on_volume_change(val){
   window.Repaint();
}

//EOF
Максим M
Аватара
Репутация: 93
С нами: 16 лет 11 месяцев

Сообщение #19 Schwitters » 07.07.2009, 17:06

2Максим, спасибо, пригодится.
Schwitters
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #20 dollkingdom » 09.07.2009, 13:58

:)А можно ли сотворить такой прогрессбар: с циклическим прокручиванием заголовка композиции, ну вообще любого тэга, как в Winamp?
dollkingdom M
Аватара
Репутация: 0
С нами: 14 лет 11 месяцев

След.

Вернуться в Секреты foobar2000