Вышла новая версия Biography 0.2 beta для JScript Panel 1.1.0+ от WilB:
Еще бы не мусорил, цены бы ему не было...
Список разделов › foobar2000 › Секреты foobar2000
на какое ?а на определённое.
// ==PREPROCESSOR==
// @name "Peak meter (balls of fire)"
// @author "kgena_ua"
// @version "07102016"
// ==/PREPROCESSOR==
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
var font = gdi.Font("Arial",10,0);
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;
var ww = window.Width, wh = window.Height;
var on_mouse = false;
var color = [];
var combinedColor1 = [];
var combinedColor2 = [];
var separator;
var pos_x = 0, pos_y = 0;;
var VUMOffset_t, t_height, t_width;
var wheel = false;
var tooltip_timer;
ColorTypeCUI = {
text: 0,
selection_text: 1,
inactive_selection_text: 2,
background: 3,
selection_background: 4,
inactive_selection_background: 5,
active_item_frame: 6
}
function get_color(){
bgcolor = window.GetColorCUI(ColorTypeCUI.background);
c1 = bgcolor;
c2 = window.GetColorCUI(ColorTypeCUI.text);
c3 = window.GetColorCUI(ColorTypeCUI.inactive_selection_text);
c4 = window.GetColorCUI(ColorTypeCUI.selection_text);
color1 = [ c1, c2 ];
color2 = [ c3, c4 ];
window.Repaint();
}
get_color();
function on_colors_changed(){
get_color();
}
var dll;
var is_dll = utils.CheckComponent("\\user-components\\foo_vis_vumeter\\foo_vis_vumeter");
if (is_dll) {dll = false} else {dll = true};
if (dll) {VUMeter = new ActiveXObject("VUMeter")};
if (dll) {VUMeter.RegisterWindow(window.ID)}; // do not use for transparent mode
function ToDB(Level){
return Math.round(2000*Math.log(Level)/Math.LN10)/100;
}
var db = [-100,-90,-80,-70,-60,-55,-50,-40,-30,-20,-18,-16,-12,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10];
for (var i = 0; i <= db.length; i++) {
if (db[i] == 0) {separator = i};
}
var points = db.length;
var s1 = separator;
var s2 = points - s1;
for(var j = 0; j < s1; j++) {
combinedColor1.push(combineColors(color1[0], color1[1], j / s1));
}
for(var j = 0; j < s2; j++) {
combinedColor2.push(combineColors(color2[0], color2[1], j / s2));
}
color = combinedColor1.concat(combinedColor2);
var rLM = 0, xLM = 0, yLM = 0;
var rRM = 0, xRM = 0, yRM = 0;
var pm_row = window.GetProperty("pm row", 10);
var pm_height = window.GetProperty("pm height", 40);
var rk = window.GetProperty("radius", 0.8);
function on_paint(gr) {
gr.FillSolidRect(0, 0, ww, wh, bgcolor);
gr.SetSmoothingMode(4);
gr.SetInterpolationMode(7);
if (dll) {
L = VUMeter.LeftLevel;
R = VUMeter.RightLevel;
LM = VUMeter.LeftPeak;
RM = VUMeter.RightPeak;
}
if (fb.IsPlaying && dll) {
for (var i = 0; i <= points; i++) {
rLM = i * rk;
xLM = getRandomArbitary(0 + rLM/2, ww / 2);
yLM = getRandomArbitary(pm_row + rLM / 2, pm_row + pm_height - rLM / 2);
if (ToDB(LM) > db[i]) {
gr.DrawEllipse(xLM - rLM / 2, yLM - rLM / 2, rLM, rLM, 4, bgcolor);
gr.FillEllipse(xLM - rLM / 2, yLM - rLM / 2, rLM, rLM, color[i]);
}
rRM = i * rk;
xRM = getRandomArbitary(ww / 2, ww - rRM/2);
yRM = getRandomArbitary(pm_row + rRM / 2, pm_row + pm_height - rRM / 2);
if (ToDB(LM) > db[i]) {
gr.DrawEllipse(xRM - rRM / 2, yRM - rRM / 2, rRM, rRM, 4, bgcolor);
gr.FillEllipse(xRM - rRM / 2, yRM - rRM / 2, rRM, rRM, color[i]);
}
}
VUMOffset_t = Math.round(VUMeter.Offset) + " db";
t_height = gr.CalcTextHeight(VUMOffset_t, font) + 2;
t_width = gr.CalcTextWidth(VUMOffset_t, font) + 10;
wheel && gr.FillSolidRect(pos_x - t_width, pos_y - t_height + 0, t_width, t_height, bgcolor);
wheel && gr.GdiDrawText(VUMOffset_t, font, color2[0], pos_x - t_width, pos_y - t_height + 0, t_width, t_height, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS );
} else {
rLM = 0; xLM = 0; yLM = 0;
rRM = 0; xRM = 0; yRM = 0;
}
gr.GdiDrawText("", font, c4, 10, 10, ww, wh);
}
function on_size() {
ww = window.Width;
wh = window.Height;
}
function on_mouse_move(x,y) {
on_mouse = true;
pos_x = x <= t_width ? t_width : x;
pos_y = y <= t_height ? t_height : y;
window.SetCursor(32649);
window.Repaint();
}
function on_mouse_leave() {
on_mouse = false;
window.SetCursor(32512);
window.Repaint();
}
function on_mouse_wheel(step) {
wheel = true;
VUMeter.Offset = VUMeter.Offset + step;
window.Repaint();
tooltip_timer && window.ClearTimeout(tooltip_timer);
tooltip_timer = window.SetTimeout(function() {
wheel = false;
tooltip_timer && window.ClearTimeout(tooltip_timer);
}, 2000);
}
function combineColors(c1, c2, f){ // When fraction is 0, result is 100% color1, when f is 1, result is 100% color2.
var c1 = toRGB(c1);
var c2 = toRGB(c2);
var r = Math.round(c1[0] + f * (c2[0] - c1[0]));
var g = Math.round(c1[1] + f * (c2[1] - c1[1]));
var b = Math.round(c1[2] + f * (c2[2] - c1[2]));
return (0xff000000 | (r << 16) | (g << 8) | (b));
}
function toRGB(d){ // convert back to RGB values
var d = d-0xff000000;
var r = d >> 16;
var g = d >> 8 & 0xFF;
var b = d & 0xFF;
return [r,g,b];
}
function getRandomArbitary(min, max){
return Math.random() * (max - min) + min;
//return Math.floor(Math.random() * (max - min + 1)) + min;
}
var set_path = fb.ProfilePath + "\\maybe\\settings\\";
var elp_bg_file = set_path + "\\elp_bg_file\\";
if (!fso.FolderExists(elp_bg_file)) {fso.CreateFolder(elp_bg_file)};
function SaveFile(){
if (!fso.FolderExists(set_path) || !fso.FolderExists(elp_bg_file)) return;
if (fso.FileExists(elp_bg_file + "elp.png")) fso.DeleteFile(elp_bg_file + "elp.png");
var Img = new ActiveXObject("WIA.ImageFile.1");
var IP = new ActiveXObject("WIA.ImageProcess.1");
if (external.length > 0) {
for (var i = 0; i < external.length; i++) {
var name = external[i];
var lc_name = get_fn(name).toLowerCase()
if (lc_name.indexOf("front") >= 0 || lc_name.indexOf("cover") >= 0|| lc_name.indexOf("folder") >= 0 || name.indexOf(album) >= 0|| name.indexOf(artist) >= 0){
Img.LoadFile(name);
var img = gdi.Image(name);
IP.Filters.Add(IP.FilterInfos("Scale").FilterID);
IP.Filters(1).Properties("MaximumWidth") = img.Width > 500 ? 500 : img.Width;
IP.Filters(1).Properties("MaximumHeight") = img.Height > 500 ? 500 : img.Height;
Img = IP.Apply(Img);
Img.SaveFile(elp_bg_file + "elp.png");
break;
}
}
}
RefreshPSS();
}
function get_fn(p) {
return p.replace(/.*\\|\..*/g,'');
}
function RefreshPSS() {
if (fb.IsPlaying || fb.IsPaused) {
fb.PlayOrPause();
fb.PlayOrPause();
} else {
fb.Play();
fb.Stop();
}
}
Значит-ли это что сначала покажет картинки из папки с альбомом и затем уровнем выше, из папки с альбомами артиста ?kgena_ua:в текущей папке изображение front, cover, folder и тд. Но изображения могут находится в других папках.
Сначала покажет изображение обложки выбранного альбома, независимо от того, где находится. Имя файла обложки должно быть cover.*, front.*, folder.*, album.*, %album%.*, %artist%.*.vladj:Значит-ли это что сначала покажет картинки из папки с альбомом
Подтверждаю. Но это жесть : 3>@L !0@CE0=>2MC Web:происходит сбой в работе скрипта
n.replace(/[^a-zA-Z0-9а-яА-я\s-]/g,'')
n.replace(/[^a-zA-Z0-9а-яА-я\s-]/g,'')
Сижу и смеюсь с себя, вы же по этой теме всё расписали!kgena_ua:n.replace(/[^a-zA-Z0-9а-яА-я\s-]/g,'')
return n.replace(/[^a-zA-Z0-9а-яА-Я\s-&]/g,'')
Вернуться в Секреты foobar2000