Неплохо вписывается, не хватает только регулировки размера индикатора колесиком мышки.kgena_ua:овый экспромт.
Вспомнил такой индикатор
- Спойлер
Список разделов › foobar2000 › Секреты foobar2000
Неплохо вписывается, не хватает только регулировки размера индикатора колесиком мышки.kgena_ua:овый экспромт.
Вспомнил такой индикатор
MC Web, но колесе VUMeter.Offset. Можно сделать Shift +MC Web:не хватает только регулировки размера индикатора колесиком мышки
Так то да, если бы не видел вживую. Для полного кайфа немного объемности не хватает.kgena_ua:А вообще хороший индикатор - в ретро стиле и большой диапазон от -100 db.
Скинул в личку, правда не нашёл того .psd, что был изначально.AHAPXICT:А у тебя остался проект Mitsubishi в .psd?
Ставил, не много поигрался и удалил. Локальные клипы не смотрю, да их у меня и нет. Короче себе пока ставить не буду.AHAPXICT:А ты mpv не ставил себе, или планы может имеешь?
// ==PREPROCESSOR==
// @name "Peak meter 6Е5С"
// @author "kgena_ua"
// @version "16102020"
// ==/PREPROCESSOR==
function RGB(r,g,b) {
return (0xff000000|(r<<16)|(g<<8)|(b));
}
var font = gdi.Font("Arial", 11, 0);
DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_NOPREFIX = 0x00000800;
var ww, wh;
var on_mouse = false;
var VUMOffset_t;
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
}
ColorTypeDUI = {
text: 0,
background: 1,
highlight: 2,
selection: 3
}
function get_color(){
try {
if (window.InstanceType == 0){
bgcolor = window.GetColorCUI(ColorTypeCUI.background);
c1 = window.GetColorCUI(ColorTypeCUI.inactive_selection_text);
c2 = window.GetColorCUI(ColorTypeCUI.text);
c3 = window.GetColorCUI(ColorTypeCUI.selection_text);
} else if (window.InstanceType == 1) {
bgcolor = window.GetColorDUI(ColorTypeDUI.background);
c1 = window.GetColorDUI(ColorTypeDUI.highlight);
c2 = window.GetColorDUI(ColorTypeDUI.text);
}
} catch(e){};
try {
if (window.InstanceType == 0){
bgcolor = window.GetColourCUI(ColorTypeCUI.background);
c1 = window.GetColourCUI(ColorTypeCUI.inactive_selection_text);
c2 = window.GetColourCUI(ColorTypeCUI.text);
} else if (window.InstanceType == 1) {
bgcolor = window.GetColourDUI(ColorTypeDUI.background);
c1 = window.GetColourDUI(ColorTypeDUI.highlight);
c2 = window.GetColourDUI(ColorTypeDUI.text);
}
} catch(e){};
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)};
function ToDB(Level){
return Math.round(2000*Math.log(Level)/Math.LN10)/100;
}
var panel_on = true;
var x = window.Width / 2;
var y = window.Width / 2;
var steps = 360;
var r1 = window.GetProperty("radius", 50);
var r2 = r1 * 0.5;
var d1 = r1 * 2;
var d2 = r2 * 2;
var scale_on = window.GetProperty("scale on", true);
var c2 = RGB(0, 255, 127);
var c1 = combineColors(c2, RGB(255, 255, 255), 0.7)
var c3 = combineColors(c2, bgcolor, 0.5)
var color = [];
for(var j = 0; j < 10; j++) {
color.push(combineColors(c1, bgcolor, j / 10)); /// bgcolor
}
var anglLP = 0;
var anglRP = 0;
var anglLP_p = 180;
var anglRP_p = 180;
var anglLP_stop = 180;
var anglRP_stop = 180;
var Lk = Rk = 0;
function on_paint(gr) {
gr.FillSolidRect(0, 0, ww, wh, bgcolor);
if (dll && panel_on) {
L = VUMeter.LeftLevel;
R = VUMeter.RightLevel;
LM = VUMeter.LeftPeak;
RM = VUMeter.RightPeak;
gr.SetSmoothingMode(4);
for (var i = 180; i < 360; i++) {
xP1 = (r1 * Math.cos(Math.PI * i / steps * 2 - Math.PI / 2));
yP1 = (r1 * Math.sin(Math.PI * i / steps * 2 - Math.PI / 2));
xP2 = (r2 * Math.cos(Math.PI * i / steps * 2 - Math.PI / 2));
yP2 = (r2 * Math.sin(Math.PI * i / steps * 2 - Math.PI / 2));
LP = ToDB(LM);
wwwLP = Math.pow(10,((LP + 100) / 50));
anglLP = Math.round(180 + (wwwLP * 130 / 100));
if (anglLP > 180 || anglLP_p > 190) {
if (anglLP_stop > 180){ // stop or pause
anglLP_stop = anglLP_stop > 180 ? anglLP_stop - 0.02 : 180;
anglLP = Math.round(anglLP_stop);
}
if (anglLP > i){
c = i < 310 ? c2 : c1;
gr.DrawLine(x + xP1, y + yP1, x + xP2, y + yP2, 2, c);
}
if (wwwLP > 0 && anglLP_p >= anglLP){
Lk = Lk * 1.0005;
anglLP_p = anglLP_p - Lk;
} else {
Lk = 0.005;
anglLP_p = anglLP;
}
if (Math.round(anglLP_p) == i){
c = i < 310 ? c2 : c1;
gr.DrawLine(x + xP1, y + yP1, x + xP2, y + yP2, 3, c);
}
}
xL1 = ((r1 + 8) * Math.cos(Math.PI * i / steps * 2 - Math.PI / 2));
yL1 = ((r1 + 8) * Math.sin(Math.PI * i / steps * 2 - Math.PI / 2));
xL2 = ((r1 + 4) * Math.cos(Math.PI * i / steps * 2 - Math.PI / 2));
yL2 = ((r1 + 4) * Math.sin(Math.PI * i / steps * 2 - Math.PI / 2));
LL = Math.pow(10,((ToDB(L) + 100) / 50));
anglLL = Math.round(180 + (LL * 180 / 100))
if (anglLL > i){
gr.DrawLine(x + xL1, y + yL1, x + xL2, y + yL2, 2, c3);
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
for (var j = 0; j < 180; j++) {
xP1 = (r1 * Math.cos(Math.PI * j / steps * 2 - Math.PI / 2));
yP1 = (r1 * Math.sin(Math.PI * j / steps * 2 - Math.PI / 2));
xP2 = (r2 * Math.cos(Math.PI * j / steps * 2 - Math.PI / 2));
yP2 = (r2 * Math.sin(Math.PI * j / steps * 2 - Math.PI / 2));
RP = Math.round(ToDB(RM));
wwwRP = Math.pow(10,((RP + 100) / 50));
anglRP = 180 - Math.round((wwwRP * 130 / 100));
if (anglRP < 180 || anglRP_p < 160) {
if (anglRP_stop < 180){ // stop or pause
anglRP_stop = anglRP_stop < 180 ? anglRP_stop + 0.02 : 180;
anglRP = Math.round(anglRP_stop);
}
if (anglRP < j){
c = j > 50 ? c2 : c1;
gr.DrawLine(x + xP1, y + yP1, x + xP2, y + yP2, 2, c);
}
if (wwwRP > 0 && anglRP_p <= anglRP){
Rk = Rk * 1.0005;
anglRP_p = anglRP_p + Rk;
} else {
Rk = 0.005;
anglRP_p = anglRP;
}
if (Math.round(anglRP_p) == j){
c = j > 50 ? c2 : c1;
gr.DrawLine(x + xP1, y + yP1, x + xP2, y + yP2, 3, c);
}
}
xL1 = ((r1 + 8) * Math.cos(Math.PI * j / steps * 2 - Math.PI / 2));
yL1 = ((r1 + 8) * Math.sin(Math.PI * j / steps * 2 - Math.PI / 2));
xL2 = ((r1 + 4) * Math.cos(Math.PI * j / steps * 2 - Math.PI / 2));
yL2 = ((r1 + 4) * Math.sin(Math.PI * j / steps * 2 - Math.PI / 2));
RL = Math.pow(10,((ToDB(R) + 100) / 50));
anglRL = Math.round(180 - (RL * 180 / 100))
if (anglRL < j){
gr.DrawLine(x + xL1, y + yL1, x + xL2, y + yL2, 2, c3);
}
}
th = gr.CalcTextHeight("0", font);
for (var i = 0; i < 360; i++) {
if (scale_on){
xPt = ((r1 + 17) * Math.cos(Math.PI * i / steps * 2 - Math.PI / 2));
yPt = ((r1 + 17) * Math.sin(Math.PI * i / steps * 2 - Math.PI / 2));
if (i == 351 || i == 9){
tw = gr.CalcTextWidth(" 6", font);
gr.GdiDrawText(" 6", font, c2, x + xPt - tw / 2, y + yPt - th / 2, tw, th, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
if (i == 329 || i == 31){
tw = gr.CalcTextWidth(" 3", font);
gr.GdiDrawText(" 3", font, c2, x + xPt - tw / 2, y + yPt - th / 2, tw, th, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
if (i == 310 || i == 50){
tw = gr.CalcTextWidth(" 0", font);
gr.GdiDrawText(" 0", font, c2, x + xPt - tw / 2, y + yPt - th / 2, tw, th, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
if (i == 293 || i == 67){
tw = gr.CalcTextWidth(" -3", font);
gr.GdiDrawText(" -3", font, c2, x + xPt - tw / 2, y + yPt - th / 2, tw, th, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
if (i == 266 || i == 94){
tw = gr.CalcTextWidth(" -9", font);
gr.GdiDrawText(" -9", font, c2, x + xPt - tw / 2, y + yPt - th / 2, tw, th, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
if (i == 232 || i == 128){
tw = gr.CalcTextWidth("-20", font);
gr.GdiDrawText("-20", font, c2, x + xPt - tw / 2, y + yPt - th / 2, tw, th, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
if (i == 193 || i == 167){
tw = gr.CalcTextWidth("-50", font);
gr.GdiDrawText("-50", font, c2, x + xPt - tw / 2, y + yPt - th / 2, tw, th, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
}
}
gr.DrawLine(x, y - r1 - 8, x, y + r1 + 8, 2, bgcolor); /// bgcolor
//gr.DrawEllipse(x - r1 - 5, y - r1 - 5, d1 + 10, d1 + 10, 2, c3);
gr.DrawEllipse(x - r2 + 5, y - r2 + 5, d2 - 10, d2 - 10, 2, c3);
if (wheel) {
VUMOffset_t = Math.round(VUMeter.Offset) + " db";
th = gr.CalcTextHeight(VUMOffset_t, font);
tw = gr.CalcTextWidth(VUMOffset_t, font);
gr.GdiDrawText(VUMOffset_t, font, c2, x - tw / 2, y - th / 2, tw, th, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
}
}
var plback = false;
var pause = false;
function on_playback_stop(reason) {
anglLP_stop = anglLP;
anglRP_stop = anglRP;
plback = false;
window.Repaint();
}
function on_playback_pause(state) {
anglLP_stop = anglLP;
anglRP_stop = anglRP;
pause = state;
window.Repaint();
}
function on_size() {
ww = window.Width;
wh = window.Height;
x = ww / 2;
y = wh / 2;
}
function on_mouse_move(x,y) {
on_mouse = true;
window.SetCursor(32649);
}
function on_mouse_leave() {
on_mouse = false;
window.SetCursor(32512);
}
function on_mouse_wheel(step) {
wheel = true;
VUMeter.Offset = VUMeter.Offset + step;
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 print(msg) {
try {
fb.trace(msg);
} catch(e){console.log(msg);};
}
function on_playback_starting(cmd, is_paused){
anglLP_stop = 180;
anglRP_stop = 180;
anglLP_p = 180;
anglRP_p = 180;
plback = true;
window.Repaint();
}
Вернуться в Секреты foobar2000