Anzeige von Rating Bild im Image/Icon Folder

Begonnen von mexx, 30. November 2022, 15:52:42

Vorheriges Thema - Nächstes Thema

mexx

Vorab: Ich scheine hier wohl fast der Alleinunterhalter zu sein. Aber vielleicht finden sich andere Foobar Nutzer beim Umstieg auf v2 besser zurecht.  :-[

Mein Problem:

Ich habe grimes Script zum Anzeigen von flags für die Anzeige meiner Rating Bilder modifiziert, um mich auch mal mit dem Scripting zu befassen. Ich habe es dann als Konfiguration bei Icons rein kopiert.
Es gibt erst mal keine Fehleranzeige und der foobar path sowie der Rating folder werden korrekt angezeigt.

Leider erscheinen die Bilder nicht. Sie sind 1.svg, 2.svg usw. benannt. Auch gibt es ein norating.svg.
Die Einträge bei den Properties/Rating sind auc 1,2,3 bis 5.

Original Script:
//flag by grimes
//fb2k v2+, JScript Panel 3+
//DUI/CUI ready

// ==PREPROCESSOR==
// @name "flag"
// @version "2"
// @author "grimes"
// ==/PREPROCESSOR==


var cfg_foobarpath = window.GetProperty("foobar path:", fb.Profilepath);
var cfg_flag = window.GetProperty("flag folder:", "flags");
var svg_file = cfg_foobarpath + cfg_flag + "\\noflag.svg";
var svg_content = utils.ReadUTF8(svg_file);

var dui = window.IsDefaultUI;

var original = utils.LoadSVG(svg_file);

function on_paint(gr) {
    gr.FillRectangle(0, 0, window.Width, window.Height, dui == 1 ? window.GetColourDUI(1) : window.GetColourCUI(3)); 
    if (original) {
        var scale = 0;
        var x = 0,
            y = 0;
        var scale_w = window.Width / original.Width;
        var scale_h = window.Height / original.Height;

        if (scale_w <= scale_h) {
            scale = scale_w;
            y = (window.Height - original.Height * scale) / 2;
        } else {
            scale = scale_h;
            x = (window.Width - original.Width * scale) / 2;
        }
        gr.DrawImage(original, x, y, original.Width * scale, original.Height * scale, 0, 0, original.Width, original.Height);
    }
}

if(fb.IsPlaying || fb.IsPaused) {
    country = fb.TitleFormat("%country%").Eval();
    original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
    window.Repaint(); 
}
else {
    original = utils.LoadSVG(svg_file);
    window.Repaint();
}

function on_playback_new_track() {
    country = fb.TitleFormat("%country%").Eval();
    original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
    window.Repaint();
}

function on_playback_stop(reason) {
    original = utils.LoadSVG(svg_file);
    window.Repaint();
}

Mein angepasstes Script:
//flag by grimes
//fb2k v2+, JScript Panel 3+
//DUI/CUI ready

// ==PREPROCESSOR==
// @name "flag"
// @version "2"
// @author "grimes"
// ==/PREPROCESSOR==


var cfg_foobarpath = window.GetProperty("foobar path:", fb.Profilepath);
var cfg_rating = window.GetProperty("rating folder:", "rating");
var svg_file = cfg_foobarpath + cfg_rating + "\\norating.svg";
var svg_content = utils.ReadUTF8(svg_file);

var dui = window.IsDefaultUI;

var original = utils.LoadSVG(svg_file);

function on_paint(gr) {
    gr.FillRectangle(0, 0, window.Width, window.Height, dui == 1 ? window.GetColourDUI(1) : window.GetColourCUI(3)); 
    if (original) {
        var scale = 0;
        var x = 0,
            y = 0;
        var scale_w = window.Width / original.Width;
        var scale_h = window.Height / original.Height;

        if (scale_w <= scale_h) {
            scale = scale_w;
            y = (window.Height - original.Height * scale) / 2;
        } else {
            scale = scale_h;
            x = (window.Width - original.Width * scale) / 2;
        }
        gr.DrawImage(original, x, y, original.Width * scale, original.Height * scale, 0, 0, original.Width, original.Height);
    }
}

if(fb.IsPlaying || fb.IsPaused) {
    rating = fb.TitleFormat("%Rating%").Eval();
    original = utils.LoadSVG(cfg_foobarpath + cfg_rating + "\\" + rating + ".svg");
    window.Repaint(); 
}
else {
    original = utils.LoadSVG(svg_file);
    window.Repaint();
}

function on_playback_new_track() {
    rating = fb.TitleFormat("%Rating%").Eval();
    original = utils.LoadSVG(cfg_foobarpath + cfg_rating + "\\" + rating + ".svg");
    window.Repaint();
}

function on_playback_stop(reason) {
    original = utils.LoadSVG(svg_file);
    window.Repaint();
}

Irgendwo steckt da ein Fehler drin. Vielleicht muss Rating genauer definiert werden. Aber sowas geht dann doch über meine Script Kenntnisse hinaus.

grimes

Auf den ersten Blick sehe ich keine Fehler.

mexx

Ich hab jetzt alle möglichen Kombinationen (Groß- und Kleinschreibung, Änderung des foobar path u.ä.) probiert. Leider keine Veränderung.

Vielleicht liegt es daran, dass bei Country ein Text vorhanden ist (Länderbezeichnung), aber bei Rating eine Zahl.
Manchmal (z.b.in Excel) muss man, je nach Verwendung, eine Zahl als Text formatieren. Vielleicht liegt ja hier der Hund begraben...


mexx

Hallo grimes. Vielleicht kannst du mir mal bei diesem Script helfen.
Ich glaube es stammt sogar von dir.

Es kommt in ein WSH Panel Mod und die Rating Pics sollen sich dabei immer der Größe des Panel Fensters anpassen.

function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }

var imgPath = fb.FoobarPath + "images\\";
var rat0 = gdi.Image(imgPath + "images.jpg");
var rat1 = gdi.Image(imgPath + "images1.jpg");
var rat2 = gdi.Image(imgPath + "images2.jpg");
var rat3 = gdi.Image(imgPath + "images3.jpg");
var rat4 = gdi.Image(imgPath + "images4.jpg");
var rat5 = gdi.Image(imgPath + "images5.jpg");

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

function Rating (x,y,w,h){
    var star = fb.TitleFormat("%rating%");
   
    this.draw = function (gr) {
    if(star.eval()==0) gr.DrawImage(rat0, 0, 0, window.Width, window.Height, 0, 0, 80, 80);
        else {if(star.eval()==1) gr.DrawImage(rat1, 0, 0, window.Width, window.Height, 0, 0, 80, 80);
                  else {if(star.eval()==2) gr.DrawImage(rat2, 0, 0, window.Width, window.Height, 0, 0, 80, 80);
                              else {if(star.eval()==3) gr.DrawImage(rat3, 0, 0, window.Width, window.Height, 0, 0, 80, 80);
                                        else {if(star.eval()==4) gr.DrawImage(rat4, 0, 0, window.Width, window.Height, 0, 0, 80, 80);
                                                  else {if(star.eval()==5) gr.DrawImage(rat5, 0, 0, window.Width, window.Height, 0, 0, 80, 80);
                        else gr.DrawImage(rat0, 0, 0, window.Width, window.Height, 0, 0, 80, 80);
}}}}}
}
}

function on_paint(gr){
    rating.draw(gr);
}

function on_size(){
    ww = window.Width;
    wh = window.Height;
    rating = new Rating(0,0,ww,wh);
}


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

//EOF

Danke schon mal im Voraus.

grimes