Список разделов › 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