seriousstas , приветствую.
Добавлено спустя 2 часа 35 минут:
Я думаю на Last.fm будут еще изменения - там какая-то каша.
Список разделов › foobar2000 › Секреты foobar2000
Нет таких проблем.ssbest777:Слетел русский текст и фото артиста
А он есть на сайте Last.fm на русском?ssbest777:при выборе ru txt -текст остается на английском
JScript Panel v2.2.2.1 (Get Covers (Artwork) radio logos v12072018 by kgena_ua)
Ошибка выполнения Microsoft JScript:
Переполнение
File: <main>
Line: 573, Col: 9
MC Web, будет удаление элемента списка "История" и очистка всего списка.MC Web:Хотел узнать, планируется ли добавление очистки Истории .....
kgena_ua, приветствую!kgena_ua:"Get Covers (Artwork) radio logos"
"21072019"
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
var font = gdi.Font("Segoe UI 10pt",13,32);
var ww,wh;
var txt_row = 0;
var s = 10, step, step1 = window.Width, step2 = window.Width;
var text1, text2, t_width, t_width1, t_width2, dir, mode, sw = 2;
var t1 = "", t2 = "", t3 = "", ti = "";
var show1, show2, show3, showi, showr;
function on_paint(gr) {
gr.FillSolidRect (0, 0, ww, wh, RGB(0,0,0));
show1 = window.GetProperty("show1",1);
show2 = window.GetProperty("show2",1);
show3 = window.GetProperty("show3",1);
mode = window.GetProperty("mode",1);
showi = window.GetProperty("showi",1);
if (show1 == 1) {t1 = fb.TitleFormat("$upper([%title%])").Eval();
} else {t1 = "";}
if (show2 == 1) {t2 = fb.TitleFormat("$upper([%artist%])").Eval();
} else {t2 = "";}
if (show3 == 1) {t3 = fb.TitleFormat("$upper([%album%])[ ▪ %date%]").Eval();
} else {t3 = "";}
if (showi == 1) {ti = fb.TitleFormat("[$info(encoding)][ ▪ $info(codec)][ $info(codec_profile)][ ▪ $info(bitrate) kbps][ ▪ $info(samplerate) Hz][ ▪ $info(bitspersample) bps][ ▪ $channels()]$if($stricmp($ext(%filename_ext%),cue), '['cue']',[ ▪ %filesize_natural%])$if($strcmp($info(cue_embedded),yes),' ['embedded cue']',)").Eval();
} else {ti = "";}
text1 = t1 + (show1 > 0 && t2 != "" ? " ▪ " : "") + t2 + ((show1 > 0 || show2 > 0) && t3 != "" ? " ▪ " : "") + t3;
text2 = showi == 1 ? ti : text1;
text1 = showi == 1 && text1 == "" ? text2 : text1;
t_width2 = gr.CalcTextWidth(text2, font);
t_width1 = gr.CalcTextWidth(text1, font);
if (mode == 1) {
step = sw == 1 ? step1 : step2;
t_width = sw == 1 ? t_width1 : t_width2;
if (sw == 1) {step2 = ww};
if (sw == 2) {step1 = ww};
if (t_width < ww - s * 2) {
if (step >= ww) {dir = "left"; step = ww };
if (step + t_width >= ww - s) {dir = "left"};
if (step <= 0 + s) {dir = "right"};
} else {
if (step + t_width <= ww - s) {dir = "right"};
if (step >= 0 + s) {dir = "left"};
}
}
if (mode == 0) { dir = "left";
if (sw == 1) {
if (step1 + t_width1 > ww/2) {step2 = ww};
if (step1 + t_width1 <= 0) {step1 = ww; sw = 2};
} else {
if (step2 + t_width2 > ww/2) {step1 = ww};
if (step2 + t_width2 <= 0) {step2 = ww; sw = 1};
}
}
gr.GdiDrawText( text1, font, RGB(221,221,221), step1, txt_row, t_width1, wh);
gr.GdiDrawText( text2, font, RGB(221,221,221), step2, txt_row, t_width2, wh);
}
function on_size(){
ww = window.Width;
wh = window.Height;
}
var seek_timer;
function on_playback_new_track(info) {
seek_timer && window.ClearInterval(seek_timer);
seek_timer = window.SetInterval(function() {
if (dir == "right") {step1 = step1 + 1};
if (dir == "right") {step2 = step2 + 1};
if (dir == "left") {step1 = step1 - 1};
if (dir == "left") {step2 = step2 - 1};
window.Repaint();
}, 50 );
}
function on_playback_stop() {
window.ClearInterval(seek_timer);
window.Repaint();
}
function on_playback_time(){
if(!seek_timer) on_playback_new_track();
}
function on_mouse_lbtn_up (x, y){
var _menu = window.CreatePopupMenu();
var i = 1;
_menu.AppendMenuItem(0x00000000, i++, "title");
_menu.CheckMenuItem(i-1, show1);
_menu.AppendMenuItem(0x00000000, i++, "artist");
_menu.CheckMenuItem(i-1, show2);
_menu.AppendMenuItem(0x00000000, i++, "album");
_menu.CheckMenuItem(i-1, show3);
_menu.AppendMenuItem(0x00000000, i++, "info");
_menu.CheckMenuItem(i-1, showi);
_menu.AppendMenuItem(0x00000000, i++, "scrolling mode: " + (mode == 0 ? "L-R" : "L"));
ret = _menu.TrackPopupMenu(x, y);
if (ret == 0) return;
switch (ret) {
case 1:
window.SetProperty("show1", show1 == 0 ? 1 : 0);
break;
case 2:
window.SetProperty("show2", show2 == 0 ? 1 : 0);
break;
case 3:
window.SetProperty("show3", show3 == 0 ? 1 : 0);
break;
case 4:
window.SetProperty("showi", showi == 0 ? 1 : 0);
break;
case 5:
window.SetProperty("mode", mode == 0 ? 1 : 0);
break;
}
_menu.Dispose();
return true;
}
А что за стиль у шрифта 32? (первое что в сообщении в глаза бросилось). Ну а если по теме, у меня есть адаптированный из сборки, но по моему никто не загонялся раньше с центрированием, это можно сделать по типу у= столько-то. Я сейчас заремил кое что на скорую руку, кое чего добавил. И да, я уже не помню причину, но сейчас вместо gr.GdiDrawText использую gr.DrawString. там по моему были какие-то косяки с отображением.SergPuh.68:gdi.Font("Segoe UI 10pt",13,32)
// ==PREPROCESSOR==
// @name "Scroll Text"
// @author "kgena_ua"
// @version "2.2"
// @feature "v1.4"
// @feature "watch-metadb"
// @feature "dragdrop"
// @import "%fb2k_component_path%docs\flags.txt"
// @import "%fb2k_component_path%docs\helpers.txt"
// ==/PREPROCESSOR==
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r, g, b, a) {return ((a << 24) | (r << 16) | (g << 8) | (b));}
MF_SEPARATOR = 0x00000800;
MF_STRING = 0x00000000;
var font = gdi.Font("Segoe UI 10pt",13,0); //FONT
var block_rgb, font_rgb = window.GetProperty("|6| Color", 1);
var ww,wh;
var txt_row = 0;
var s = 10, step, step1 = window.Width, step2 = window.Width;
var text1, text2, t_width, t_width1, t_width2, dir, mode, sw = 1;
var t1 = "", t2 = "", t3 = "", ti = "";
var show1, show2, show3, showi, showr;
get_color();
function on_paint(gr) {
show1 = window.GetProperty("|1| Title",1);
show2 = window.GetProperty("|2| Artist",1);
show3 = window.GetProperty("|3| Album",1);
mode = window.GetProperty("|5| Mode",0);
showi = window.GetProperty("|4| Info",0);
if (show1 == 1) {t1 = fb.TitleFormat("$upper([[%tracknumber%. ]%title%])").Eval();
} else {t1 = "";}
if (show2 == 1) {t2 = fb.TitleFormat("$upper([%artist%])").Eval();
} else {t2 = "";}
if (show3 == 1) {t3 = fb.TitleFormat("$upper([%album%])[ - %date%]").Eval();
} else {t3 = "";}
if (showi == 1) {ti = fb.TitleFormat("[$info(encoding)]$if(%__hdcd%, | HDCD,)[ | $info(codec)][ $info(codec_profile)][ | $info(bitrate) kbps][ | $info(samplerate) Hz][ | $info(bitspersample) bps][ | $channels()]$if($stricmp($ext(%filename_ext%),cue), | '['cue']',[ | %filesize_natural%])$if($strcmp($info(cue_embedded),yes), | '['embedded cue']',)").Eval();
} else {ti = "";}
text1 = t1 + (show1 > 0 && t2 != "" ? " - " : "") + t2 + ((show1 > 0 || show2 > 0) && t3 != "" ? " - " : "") + t3;
text2 = showi == 1 ? ti : text1;
text1 = showi == 1 && text1 == "" ? text2 : text1;
text1 = fb.IsPaused ? "- PAUSE -" : text1;
text2 = fb.IsPaused ? "- PAUSE -" : text2;
t_width2 = gr.CalcTextWidth(text2, font);
t_width1 = gr.CalcTextWidth(text1, font);
if (mode == 1) {
step = sw == 1 ? step1 : step2;
t_width = sw == 1 ? t_width1 : t_width2;
if (sw == 1) {step2 = ww};
if (sw == 2) {step1 = ww};
if (t_width < ww - s * 2) {
if (step >= ww) {dir = "left"; step = ww };
if (step + t_width >= ww - s) {dir = "left"};
if (step <= 0 + s) {dir = "right"};
} else {
if (step + t_width <= ww - s) {dir = "right"};
if (step >= 0 + s) {dir = "left"};
}
}
if (mode == 0) { dir = "left";
if (sw == 1) {
if (step1 + t_width1 > ww/2) {step2 = ww};
if (step1 + t_width1 <= 0) {step1 = ww; sw = 2};
} else {
if (step2 + t_width2 > ww/2) {step1 = ww};
if (step2 + t_width2 <= 0) {step2 = ww; sw = 1};
}
}
String.prototype.repeat = function(n) {
return new Array(n + 1).join(this);
}
// ========BACKGROUND & BLOCKS======== //
gr.FillSolidRect (0, 0, ww, wh, RGB(0,0,0));
// gr.FillGradRect(0, 0, ww, 85, 90, RGBA(18, 29, 37, 255), RGBA(26, 47, 66, 195));
// gr.GdiDrawText( "\u2598".repeat(18), font, block_rgb, 0, txt_row, ww, wh);
// ========TEXT======== //
d = gr.CalcTextWidth("0000", font);
gr.SetTextRenderingHint(4);
gr.DrawString( text1, font, font_rgb, step1, txt_row, t_width1 + d, wh, StringFormat(1, 1, 0, 0x00001000 | 0x00004000));
gr.DrawString( text2, font, font_rgb, step2, txt_row, t_width2 + d, wh, StringFormat(1, 1, 0, 0x00001000 | 0x00004000));
}
function on_size(){
ww = window.Width;
wh = window.Height;
}
var seek_timer;
var speed = window.GetProperty("|7| Speed Scroll", 50);
function on_playback_new_track(info) {
seek_timer && window.ClearInterval(seek_timer);
seek_timer = window.SetInterval(function() {
if (dir == "right") {step1 = step1 + 1};
if (dir == "right") {step2 = step2 + 1};
if (dir == "left") {step1 = step1 - 1};
if (dir == "left") {step2 = step2 - 1};
window.Repaint();
}, speed );
}
function on_playback_stop() {
window.ClearInterval(seek_timer);
window.Repaint();
}
function on_playback_time(){
if(!seek_timer) on_playback_new_track();
}
function on_mouse_lbtn_up (x, y){
var _menu = window.CreatePopupMenu();
var i = 1;
_menu.AppendMenuItem(0x00000000, i++, "title");
_menu.CheckMenuItem(i-1, show1);
_menu.AppendMenuItem(0x00000000, i++, "artist");
_menu.CheckMenuItem(i-1, show2);
_menu.AppendMenuItem(0x00000000, i++, "album");
_menu.CheckMenuItem(i-1, show3);
_menu.AppendMenuItem(0x00000000, i++, "info");
_menu.CheckMenuItem(i-1, showi);
_menu.AppendMenuItem(0x00000000, i++, "scrolling mode: " + (mode == 0 ? "L-R" : "L"));
ret = _menu.TrackPopupMenu(x, y);
if (ret == 0) return;
switch (ret) {
case 1:
window.SetProperty("|1| Title", show1 == 0 ? 1 : 0);
break;
case 2:
window.SetProperty("|2| Artist", show2 == 0 ? 1 : 0);
break;
case 3:
window.SetProperty("|3| Album", show3 == 0 ? 1 : 0);
break;
case 4:
window.SetProperty("|4| Info", showi == 0 ? 1 : 0);
break;
case 5:
window.SetProperty("|5| Mode", mode == 0 ? 1 : 0);
break;
}
_menu.Dispose();
return true;
}
// ========Menu======== //
var rbtnDown, ShiftDown;
function on_mouse_rbtn_down(x, y, vkey){
rbtnDown = true;
ShiftDown = vkey==6 ? true : false;
}
function on_mouse_rbtn_up(x, y, vkey){
if (!rbtnDown) return true;
rbtnDown = false;
if (ShiftDown)
return;
}
function on_mouse_rbtn_up(x, y) {
var _menu = window.CreatePopupMenu();
_menu.AppendMenuItem(MF_STRING, 1, "Default");
_menu.AppendMenuItem(MF_STRING, 2, "Blue");
_menu.AppendMenuItem(MF_STRING, 3, "Green");
_menu.AppendMenuItem(MF_STRING, 4, "Red");
_menu.AppendMenuItem(MF_STRING, 5, "White");
_menu.AppendMenuItem(MF_STRING, 6, "Yellow")
_menu.AppendMenuItem(MF_STRING, 7, "Grey")
_menu.CheckMenuRadioItem(1, 7, window.GetProperty("|6| Color", 1));
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0)
_menu.AppendMenuItem(MF_STRING, 8, "Properties...");
if (ShiftDown){
_menu.AppendMenuItem(MF_STRING, 9, "Configure...");
}
idx = _menu.TrackPopupMenu(x, y);
switch (idx) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
ch_color(idx);
break;
case 8:
window.ShowProperties();
break;
case 9:
window.ShowConfigure();
break;
}
_menu.Dispose();
return true
}
var block_rgb, font_rgb;
function get_color() {
if (window.GetProperty("|6| Color") == 1) font_rgb = RGB(191,228,255), block_rgb = RGB(24,37,46); //Default
if (window.GetProperty("|6| Color") == 2) font_rgb = RGB(128,192,255), block_rgb = RGB(22,36,46); //Blue
if (window.GetProperty("|6| Color") == 3) font_rgb = RGB(0,255,0), block_rgb = RGB(18,38,38); //Green
if (window.GetProperty("|6| Color") == 4) font_rgb = RGB(255,0,0), block_rgb = RGB(38,26,34); //Red
if (window.GetProperty("|6| Color") == 5) font_rgb = RGB(255,255,255), block_rgb = RGB(26,38,46); //White
if (window.GetProperty("|6| Color") == 6) font_rgb = RGB(255,255,0), block_rgb = RGB(26,38,38); //Yellow
if (window.GetProperty("|6| Color") == 7) font_rgb = RGB(85,136,171), block_rgb = RGB(22,36,45); //Grey
}
function getRed(color) {
return ((color >> 16) & 0xff);
}
function getGreen(color) {
return ((color >> 8) & 0xff);
}
function getBlue(color) {
return (color & 0xff);
}
var g_timer;
function ch_color(idx) {
get_color();
old_R = getRed(font_rgb);
old_G = getGreen(font_rgb);
old_B = getBlue(font_rgb);
window.SetProperty("|6| Color", idx);
get_color();
new_R = getRed(font_rgb);
new_G = getGreen(font_rgb);
new_B = getBlue(font_rgb);
step_R = (new_R - old_R)/255; step_G = (new_G - old_G)/255; step_B = (new_B - old_B)/255;
g_timer = window.SetInterval(function() {
old_R = old_R + step_R; old_G = old_G + step_G; old_B = old_B + step_B;
R = old_R; G = old_G; B = old_B;
font_rgb = RGB(R,G,B)
window.Repaint();
if (
step_R < 0 && R <= new_R || step_G < 0 && G <= new_G || step_B < 0 && B <= new_B ||
step_R > 0 && R >= new_R || step_G > 0 && G >= new_G || step_B > 0 && B >= new_B
) {window.ClearInterval(g_timer); R = new_R; G = new_G; B = new_B; font_rgb = RGB(R,G,B)};
}, 5);
}
//--END
Пример из моего скрипта:SergPuh.68:И ещё как сделать что бы "бегущая строка" позиционировалась строго по середине панели по вертикали?
var DT_VCENTER = 0x00000004;
var DT_SINGLELINE = 0x00000020;
var DT_CALCRECT = 0x00000400;
var DT_NOPREFIX = 0x00000800;
gr.GdiDrawText(_text, g_font, g_textcolor, _textPos, 0, textWidth, _wh, DT_VCENTER | DT_SINGLELINE | DT_CALCRECT | DT_NOPREFIX);
Вспомнил, в этой теме как раз обсуждали. gr.GdiDrawText не справлялся с некоторыми символами по типу "крючка" &AHAPXICT:вместо gr.GdiDrawText использую gr.DrawString
У меня после таких сообщений начинаются мозговые бури.SergPuh.68:они соеденились скрипт остался старый а свойства ваши
А это контрольный в голову. Пошёл я, куда нибудь, выпущу пар.SergPuh.68:ещё бы знать что такое флаги
Вернуться в Секреты foobar2000