Список разделов › foobar2000 › Секреты foobar2000
// ==PREPROCESSOR==
// @name "Analog VUMeter automation demo"
// @version "1.0"
// ==/PREPROCESSOR==
// --- VUMeter BEGIN
VUMeter = new ActiveXObject("VUMeter");
VUMeter.RegisterWindow(window.ID);
var VUWidth=200,VUHeight=100;
var ww = 0, wh = 0;
var color_vu = RGB(255,255,255);
function on_size() {
ww = window.Width;
wh = window.Height;
}
function ToDB(Level){
return (20*Math.log(Level)/Math.LN10).toFixed(2);
}
function on_mouse_wheel(step) {
VUMeter.Offset+=step;
}
var Delta=0;
function on_paint(gr) {
var L=VUMeter.LeftLevel;
var R=VUMeter.RightLevel;
var LM=VUMeter.LeftPeak;
var RM=VUMeter.RightPeak;
var D=Delta*0.95+VUMeter.UpdatePeriod*0.05;
Delta=D;
var text="Period:"+Math.round(D*1000)+ " ms\nLeft:"+ToDB(L)+"\nRight:"+ToDB(R)+"\nOffset:"+VUMeter.Offset+" dB";
gr.FillSolidRect(0, 100, 1000, 200, RGB(0, 0, 0));
var text_vuL = "m";
var text_vuR = "k";
var maxL=10*L;
var maxR=10*R;
for (var j = 0; j < maxL-1; j++){
text_vuL = text_vuL + "x";
}
for (var j = 0; j < maxR-1; j++){
text_vuR = text_vuR + "x";
}
gr.DrawString(text_vuL,gdi.Font("Technics HiFi", 60, 0), color_vu,
0,
100,
1000,
50,
0x00100000
);
gr.DrawString(text_vuR,gdi.Font("Technics HiFi", 60, 0), color_vu,
0,
150,
1000,
50,
0x00100000
);
var maxL=10*LM;
var maxR=10*RM;
for (var j = 0; j < maxL-1; j++){
text_vuL = text_vuL + "x";
}
for (var j = 0; j < maxR-1; j++){
text_vuR = text_vuR + "x";
}
gr.DrawString(text_vuL,gdi.Font("Technics HiFi", 60, 0), color_vu,
0,
200,
1000,
50,
0x00100000
);
gr.DrawString(text_vuR,gdi.Font("Technics HiFi", 60, 0), color_vu,
0,
250,
1000,
50,
0x00100000
);
gr.GdiDrawText(text, g_font, g_textcolor, 5, 5, ww, wh, DT_CALCRECT | DT_NOPREFIX);
}
// -- predefined functions
function RGBA(r, g, b, a) {
r &= 0xff;
g &= 0xff;
b &= 0xff;
a &= 0xff;
return ((a << 24) | (r << 16) | (g << 8) | (b));
}
function RGB(r, g, b) {
return RGBA(r, g, b, 0xff);
}
// {{
var DT_TOP = 0x00000000;
var DT_CENTER = 0x00000001;
var DT_VCENTER = 0x00000004;
var DT_WORDBREAK = 0x00000010;
var DT_CALCRECT = 0x00000400;
var DT_NOPREFIX = 0x00000800;
// }}
// {{
// Used in window.GetColorCUI()
ColorTypeCUI = {
text: 0,
selection_text: 1,
inactive_selection_text: 2,
background: 3,
selection_background: 4,
inactive_selection_background: 5,
active_item_frame: 6
};
// Used in window.GetFontCUI()
FontTypeCUI = {
items: 0,
labels: 1
};
// Used in window.GetColorDUI()
ColorTypeDUI = {
text: 0,
background: 1,
highlight: 2,
selection: 3
};
// Used in window.GetFontDUI()
FontTypeDUI = {
defaults: 0,
tabs: 1,
lists: 2,
playlists: 3,
statusbar: 4,
console: 5
};
//}}
var g_instancetype = window.InstanceType;
var g_font = null;
var g_textcolor = 0, g_textcolor_hl = 0;
var g_backcolor = 0;
var g_hot = false;
function get_font() {
if (g_instancetype == 0) { // CUI
g_font = window.GetFontCUI(FontTypeCUI.items);
} else if (g_instancetype == 1) { // DUI
g_font = window.GetFontDUI(FontTypeDUI.defaults);
} else {
// None
}
}
get_font();
function get_colors() {
if (g_instancetype == 0) { // CUI
g_textcolor = window.GetColorCUI(ColorTypeCUI.text);
g_textcolor_hl = window.GetColorCUI(ColorTypeCUI.text);
g_backcolor = window.GetColorCUI(ColorTypeCUI.background);
} else if (g_instancetype == 1) { // DUI
g_textcolor = window.GetColorDUI(ColorTypeDUI.text);
g_textcolor_hl = window.GetColorDUI(ColorTypeDUI.highlight);
g_backcolor = window.GetColorDUI(ColorTypeDUI.background);
} else {
// None
}
}
Не в обиду, но подобные kgena_ua и другие предлагали:iprad:Есть идея. В основном для световых индикаторов
Там я понимаю в 3D, а тут такого эффекта не будет.iprad:Ну например тот же RT909. Скин vu для него примерно 4 МБ и грузится долго.
Вернуться в Секреты foobar2000