kgena_ua, при попытке замены gr.DrawImage на gr.GdiDrawBitmap выдаёт ошибку.
- Спойлер
Список разделов › foobar2000 › Общая информация
var g_img_default = gdi.Image(fb.FoobarPath + "images/similar_wmp_mod/nocover.png");
//var g_img_default = gdi.Image(fb.FoobarPath + "\\maybe\\textures\\nocover\\nocover 2.png");
var WshShell = new ActiveXObject("WScript.Shell");
var g_focus_metadb = null;
function on_paint(gr){
g_focus_metadb = fb.GetFocusItem();
if(g_focus_metadb==null){
var g_img = g_img_default;
gr.FillSolidRect(0, 0, window.Width, window.Height, window.GetColorCUI(3));
}
else{
var g_img = utils.GetAlbumArtV2(g_focus_metadb, 0);
if (g_img==null){
g_img = g_img_default;
gr.FillSolidRect(0, 0, window.Width, window.Height, window.GetColorCUI(3));
}
}
var scale_w = ww / g_img.Width;
var scale_h = wh / g_img.Height;
var scale = Math.min(scale_w, scale_h);
var pos_x = 0;
var pos_y = 0;
if (scale_w < scale_h) pos_y = (wh - g_img.Height * scale) / 2;
else if (scale_w > scale_h) pos_x = (ww - g_img.Width * scale) / 2;
g_img = g_img.CreateRawBitmap();
gr.GdiDrawBitmap(g_img, pos_x, pos_y, g_img.Width * scale, g_img.Height * scale, 0, 0, g_img.Width, g_img.Height);
}
function on_item_focus_change(){
window.Repaint();
}
function on_mouse_lbtn_dblclk(){
if(g_focus_metadb==null) {} else utils.GetAlbumArtAsync(window.ID, g_focus_metadb, 0);
}
function on_get_album_art_done(metadb, art_id, image, image_path){
switch (image_path){
case "": break;
case fb.TitleFormat("%path%").EvalWithMetadb(metadb): break;
default: WshShell.run('"'+image_path+'"');
}
}
function on_size(){
ww = window.Width;
wh = window.Height;
}
//EOF
То есть скрипт, сохраняя пропорции, подгоняет изображение под ширину панели, игнорируя высоту, я правильно понимаю?LUR:положение обложки может вылазить за пределы панели
Этот скрипт писал не я, мои познания на данном поприще весьма минимальные.LUR:скрипт довольно кривой у вас
function on_paint(gr) {
gr.FillSolidRect(0, 0, ww, wh, dui ==1 ? window.GetColorDUI(1) : window.GetColorCUI(3));
var Img, size;
if (Img = CurImage) {
currentopacity = opacity;
size = CurSize;
gr.DrawImage(Img, size.x, size.y, size.width, size.height, 0, 0, Img.width, Img.height, 0, opacity);
}
if (Img = NewImage) {
currentopacity = 255-opacity;
size = NewSize;
gr.DrawImage(Img, size.x, size.y, size.width, size.height, 0, 0, Img.width, Img.height, 0, 255-opacity);
}
if(dui == 1) {
gr.DrawRect(0,0, window.Width, window.Height, 1.0, RGB(160,160,160));
}
Buttons.OnPaint && Buttons.OnPaint(gr);
}
$findfile($replace(%path%,%filename_ext%,)\Covers\artist.*,$replace(%path%,%filename_ext%,)\Cover\artist.*,$replace(%path%,%filename_ext%,)..\Artwork\artist.*,$replace(%path%,%filename_ext%,)artist.*)
// Глобальная переменная поиска внешней обложки.
$set_ps_global(do.artist.pic,$findfile($replace(%path%,%filename_ext%,)\Covers\artist.*,$replace(%path%,%filename_ext%,)\Cover\artist.*,$replace(%path%,%filename_ext%,)..\Artwork\artist.*,$replace(%path%,%filename_ext%,)artist.*))
// Отображение внешней или вшитой обложки.
$ifequal(%do.playlist.switch%,1,
$if(%ps_isplaying%,
$if2($drawimage($get(center.x),120,$get(center.w),$sub(%ps_height%,119),%do.artist.pic%,wc,,50),
$drawimage($get(center.x),120,$get(center.w),$sub(%ps_height%,119),%path%,artreader_artist,,50))
)
,
)