Ru-Board.club
← Вернуться в раздел «Программы»

» foobar2000 (часть 3)

Автор: Xant1k
Дата сообщения: 09.05.2012 12:23
Товарищи, подскажите как скрыть надпись в скине
http://s017.radikal.ru/i408/1205/4c/c86e10fb3384.png
сам файл скрипта
[more=клик]/**
* Seekbar script
* This is the seekbar script that updates the seekbar every second a
* track is played. Also the elapsed and total length of a track is implemented
* here.
*
* Always check your script with jslint!
*/

// ------------------------------------------------------------ Properties

var align_top = 2;
var align_middle = 1;
var align_bottom = 2;

var align_left = 0;
var align_center = 1;
var align_right = 2;

var trim_no = 0;
var trim_chara = 1;
var trim_word = 2;
var trim_elips_chara = 3;
var trim_elips_word = 4;
var trim_elips_path = 5;

var flag_rtl = 0x0001;
var flag_vert = 0x0002;
var flag_nofit = 0x0004;
var flag_dispctrl = 0x0020;
var flag_nofallback = 0x0400;
var flag_trailspace = 0x0800;
var flag_nowrap = 0x1000;
var flag_linelimit = 0x2000;
var flag_noclip = 0x4000;

// ------------------------------------------------------------ Font properties
// gdi.Font is changed, the last paramter is style flags
// FontStyleRegular = 0,
// FontStyleBold = 1,
// FontStyleItalic = 2,
// FontStyleBoldItalic = 3,
// FontStyleUnderline = 4,
// FontStyleStrikeout = 8
// Here is 0, means FontStyleRegular

var g_font = gdi.Font("Segoe UI", 10, 0);
var g_drag = 0;
var g_drag_seek = 0;

// ------------------------------------------------------------ Helper methods

function StringFormat(alignH, alignV, trim, flag) {
    return ((alignH << 28) | (alignV << 24) | (trim << 20) | flag);
}

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

// ------------------------------------------------------------ Time methods

function TimeFmt(t) {
    var zpad = function (n) {
            var str = n.toString();
            return (str.length < 2) ? "0" + str : str;
        };
    var h = Math.floor(t / 3600);
    t -= h * 3600;
    var m = Math.floor(t / 60);
    t -= m * 60;
    var s = Math.floor(t);
    if (h > 0) {
        return h.toString() + ":" + zpad(m) + ":" + zpad(s);
    }
    return m.toString() + ":" + zpad(s);
}

// ------------------------------------------------------------ Frame dimensions

function get_txt_length() {
if (!fb.PlaybackLength) {
return 148;
}
    return Math.floor((TimeFmt(fb.PlaybackLength) + " / " + TimeFmt(fb.PlaybackLength)).length * 5);
}

function get_window_width() {
    return window.Width - get_txt_length();
}

// ------------------------------------------------------------ Seekbar

function on_paint(gr) {
    // Collect images
    var sb_bg_img = gdi.Image(fb.FoobarPath + "skin\\mono_lite\\sb_bg.bmp");
    var knob_img = gdi.Image(fb.FoobarPath + "skin\\mono_lite\\sb_knob.png");
    
    // Collect information
    var length = fb.PlaybackLength;
var txt = "foobar2000 1.1.6 Fleshgrinder";
    var ww = get_window_width();
    var wh = window.Height;
    var bh = 4;
    var pos = 0;
    //var g_titlefmt = fb.TitleFormat("%codec% @ %bitrate% kbps");

    // Calculate playback time elapsed and total
    if (length > 0) {
        if (g_drag) {
            pos = parseInt(ww * g_drag_seek, 10);
            txt = TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
        }
        else {
            pos = parseInt(ww * (fb.PlaybackTime / length), 10);
            txt = TimeFmt(fb.PlaybackTime) + " / " + TimeFmt(length);
        }
    }

    // Calculate seekbar position
    if (pos < 5) {
        pos = 0;
    }
    else if (pos > (ww - 5)) {
        pos = ww - 10;
    }
    else {
        pos -= 5;
    }

    // Draw seekbar
    gr.DrawImage(sb_bg_img, 0, wh - 7, ww, bh, 0, 0, 500, bh);
    gr.FillSolidRect(0, wh - 6, pos, 2, RGB(160, 160, 160));
    gr.DrawImage(knob_img, pos, wh - 10, 10, 10, 0, 0, 10, 10);

    // ClearType
    gr.SetTextRenderingHint(5);
    // Anti-Alias
    gr.SetSmoothingMode(4);
    // Codec and bitrate
    //gr.DrawString(g_titlefmt.Eval(), g_font, RGB(160, 160, 160), 0, 0, ww, wh, StringFormat(align_right, align_top, trim_no, flag_nowrap | flag_noclip));
    // Time elapsed / total time
    gr.DrawString(txt, g_font, RGB(160, 160, 160), get_txt_length(), 0, ww, wh, StringFormat(align_right, align_top, trim_no, flag_nowrap | flag_noclip));
}

// ------------------------------------------------------------ User interaction methods

function on_size() {
    // Do nothing
}

function on_focus(focused) {
    //fb.trace("focus " + focused);
}

function on_key_down(key) {
    //fb.trace("key " + key);
}

function on_mouse_lbtn_down(x, y) {
    g_drag = 1;
}

function on_mouse_lbtn_up(x, y) {
    if (g_drag) {
        g_drag = 0;
        g_drag_seek = x / get_window_width();
        g_drag_seek = (g_drag_seek < 0) ? 0 : (g_drag_seek < 1) ? g_drag_seek : 1;
        fb.PlaybackTime = fb.PlaybackLength * g_drag_seek;
    }
}

function on_mouse_move(x, y) {
    if (g_drag) {
        g_drag_seek = x / get_window_width();
        g_drag_seek = (g_drag_seek < 0) ? 0 : (g_drag_seek < 1) ? g_drag_seek : 1;
        window.Repaint();
    }
}

function on_mouse_wheel(delta) {
    //fb.trace("wheel " + delta);
}

// ------------------------------------------------------------ State change methods

function on_playback_starting(cmd, paused) {
    // Do nothing
}

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

function on_playback_stop() {
    window.Repaint();
}

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

function on_playback_pause(state) {
    // Do nothing
}

function on_playback_edited() {
    // Do nothing
}

function on_playback_dynamic_info() {
    // Do nothing
}

function on_playback_dynamic_info_track() {
    // Do nothing
}

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

function on_volume_change(val) {
    // Do nothing
}

//EOF[/more]
если закомментировать "var txt = "foobar2000 1.1.6 Fleshgrinder";" пишет краш скрипта
Автор: xChe
Дата сообщения: 09.05.2012 13:35
Xant1k
Может просто прописать var txt = " "
Автор: The Unforgiven
Дата сообщения: 09.05.2012 13:43
xChe
Я тоже хотел это предложить, да не написал... Потому что полоска прогресса (seek bar) остаётся такой
же длины. А как песню начинаешь проигрывать, сразу меняет длину. Некрасиво
Как же сделать, чтобы она всегда была одной длины?..
Автор: Xant1k
Дата сообщения: 09.05.2012 14:26
The Unforgiven
Подождём экспертов
Автор: webern
Дата сообщения: 09.05.2012 22:58
The Unforgiven
Xant1k
Как уже правильно сказали, переменную "txt" НЕЛЬЗЯ комментировать, т.к. в дальнейшем она используется в скрипте , иначе краш.

Скрипт использует переменную "txt" для вывода информации всего в двух разных случаях:

1. Когда трек не воспроизводится, то всегда выводится надпись "Foobar2000 1.1.6 Fleshgrinder", под которую изначально жестко выделено пустое пространство шириной 148 пикселей для вывода текста некой длины. Для краткости назову это пространство "ячейкой".

Это задано здесь (строка 81 скрипта):
Код: function get_txt_length() {
if (!fb.PlaybackLength) {
return 148; // "ячейка" в 148 пикселей для надписи "foobar2000 1.1.6 Fleshgrinder"
}
return Math.floor((TimeFmt(fb.PlaybackLength) + " / " + TimeFmt(fb.PlaybackLength)).length * 5);
}
Автор: The Unforgiven
Дата сообщения: 10.05.2012 00:36
webern
Спасибо вам большое, что вы так понятно и доходчиво всё объяснили!
Получается такая занятная штука - чтобы полоса прогресса всегда оставалась одной длины,
для песен разной длины нужны разные значения function get_txt_length()
Если у нас трёхзначное значение, т.е. трек продолжительностью менее 10 минут
и в ячейке показывается что-то вроде 0:01 / 4:30 - то идеально подходит значение return 55;
Если четырёхзначное значение - например в ячейке 25:24 / 50:28 - то подходит return 65;
Ну а если длинные треки со шестизначными цифрами, и в ячейке, например, 4:56:09 / 10:05:28
- то тогда идеально подходит return 95;
А иначе, если цифра "не подходит", после нажатия на Play (когда проигрывание остановлено),
получаем "прыгающую в длину" полоску прогресса воспроизведения.
Автор: Xant1k
Дата сообщения: 10.05.2012 05:31
Спасибо за доходчивое разъяснение. Я сейчас до лета не смогу пошуркать скрипт(работа и сессия), но где-то в середине июня возьмусь переделать его. Возможно получится полоску прогресса вытянуть со скрипта Monolite_plus_mod.
Автор: webern
Дата сообщения: 10.05.2012 10:21
The Unforgiven

Цитата:
...занятная штука - чтобы полоса прогресса всегда оставалась одной длины, для песен разной длины нужны разные значения

Да, всё верно. Так устроен данный скин. Видимо, это оправдано с дизайнерской точки зрения.
Это одна из причин, по которой я, например, не использую скины, и у себя текст вывожу в центре сикбара, что кажется мне более оптимальным.

Если не нравится пустое пространство в 95 пикселей, то Вы можете его визуально выделить, нарисовав на этом месте сплошной прямоугольник другого цвета - получится некая плашка-фон:
в строку 143 скрипта перед
Код: gr.DrawString(txt, g_font, RGB(160, 160, 160), get_txt_length(), 0, ww, wh, StringFormat(align_right, align_top, trim_no, flag_nowrap | flag_noclip));
Автор: Xant1k
Дата сообщения: 11.05.2012 07:43
Пришло письмо на почту...

Цитата:
Форум foobar2000 восстановлен (всерьёз и надолго)


foobar2000.org.ru (там же подробности о произошедшем).

Возвращаемся

Надеюсь ответов там будет больше чем вопросов
Автор: SAT31
Дата сообщения: 11.05.2012 19:42
foobar2000 1.1.12 beta 6

Цитата:
- Improved ID3v2.3 specification compliance for TXXX and TCON (genre) frames
- COMM frames with a description now show as “COMMENT <description>”.
- Certain broken APIC (cover art) frames are now visible.
- APEv2 tag writing: relaxed tracknumber/discnumber field content restrictions
- Fixed Converter having trouble locating oggenc.exe
Автор: SAT31
Дата сообщения: 12.05.2012 08:28
Русификатор foobar2000 1.1.11 от StCnt
----
наконец-то без сборок
Автор: XPOHOMETP
Дата сообщения: 12.05.2012 20:00
А я все плагины скачивал с сайта Audiophile's Software. Там есть и полностью снаряжённый портативный вариант. Попробовал - всё работает.
Автор: holdvit69
Дата сообщения: 13.05.2012 12:04
вопрос наверняка уже поднимался, дайте ссылку плиз... как добиться корректного отображения кириллицы в подкасте ?
Автор: Kullbass
Дата сообщения: 16.05.2012 10:37
А ни у кого не завалялось пресетов для Graphic Equalizer?
Автор: Dimmick
Дата сообщения: 16.05.2012 10:55
Kullbass http://tech-buzz.net/uploads/EqualizerPresets.zip оно?
Автор: Kullbass
Дата сообщения: 16.05.2012 16:50
Dimmick
Нет,к сожалению.Это пресеты для дефолтного эквалайзера,а я устанавил Graphic Equalizer и никак не найду ему пресеты в формате .xgeq ...,
но за ответ - спасибо!

Добавлено:
А вот нашел один...
https://www.box.com/s/76n1uzaaxh5nsmhs89of
Если правильно понял-это для наушников
Автор: holdvit69
Дата сообщения: 18.05.2012 18:28
Воспроизвожу Windows Media Playlist(.asx). Не читаются русские тэги. Есть ли решение проблемы?
Автор: andeti
Дата сообщения: 25.05.2012 21:16
v 1.1.6 как повесить на клавишу del удалить mp3 файл с диска в корзину, не могу найти.
Автор: zszmv
Дата сообщения: 26.05.2012 11:07
Еще есть интересная сборка, портативная версия.
Foobar2000 - DarkOne v.3.0.1
http://s1.ipicture.ru/uploads/20120526/thumbs/MixRfpqu.jpg
http://narod.ru/disk/18515702001/foobar%202000%20-%20DarkOne%20v.3.0.1.rar.html
Автор: webern
Дата сообщения: 26.05.2012 12:01
zszmv

Цитата:
Еще есть интересная сборка

...в которую также уложены твои, тов. тролль, плейлисты и 250Mb абсолютно бессмысленного wave-кэша от компонента wave_seekbar.

Автор: SAT31
Дата сообщения: 26.05.2012 12:29
Все сборки обсуждаются в соответствующей теме. Не нужно тут сорить этим хламом.
Автор: Xant1k
Дата сообщения: 26.05.2012 17:29
А вот и финал Foobar2000 v1.1.12

Список изменении:

Цитата:

Fixed Musepack HTTP streaming bugs.
Fixed incorrect MP3 decoder behavior on certain rare files.
Fixed crash reporter dialog crash (duh).
Detection of proxy server settings from Internet Explorer.
Fixed multi-channel FLAC encoding (channel mask now gets preserved).
Fixed multi-channel WavPack decoding (channel mask now gets preserved).
Now possible to use HDCD & DTS decoder components with ALAC.
Changed MP3 tag reading behaviors when multiple tags are present.
ID3v2 content now takes priority over APE and then ID3v1.
Various time-consuming operations such as conversion or ReplayGain-scanning now prevent the computer from automatically going to sleep (opt-out).
Tuned ReplayGain scanner for fast multicore CPU / slow HDD scenarios (beta 4).
Fixed Converter misbehavior on files with misplaced “cuesheet” tags (beta 4).
Improved performance when playing MP3 files from internet HTTP sources (beta 4).
Improved compatibility with Apple's HFS driver (beta 4).
ID3v2 handling improvements (beta 5):
Fixed TXXX field name sometimes incorrectly written.
No longer possible to write multiple values per ID3v2.3 frame in various scenarios.
Improved ID3v2.3 specification compliance for TXXX and TCON (genre) frames (beta 6).
COMM frames with a description now show as “COMMENT <description>”.
Certain broken APIC (cover art) frames are now visible.
APEv2 tag writing: relaxed tracknumber/discnumber field content restrictions (beta 5).
Fixed Converter having trouble locating oggenc.exe (beta 6).
Fixed WAV handling exploits affecting versions 1.1.9-1.1.12b6.
Thanks to FuzzMyApp for the report and samples.
Files with .M4R (MP4 ringtones) extension are now recognized (1.1.12 final).
Fixed incorrect handling of hidden files with certain Media Library configurations (1.1.12 final).

Автор: AntonVA1
Дата сообщения: 26.05.2012 20:02
Xant1k
шапку обновил.
Автор: XPOHOMETP
Дата сообщения: 27.05.2012 09:02
Обновление: foobar2000 v1.1.12a
Автор: benyalux
Дата сообщения: 27.05.2012 10:44
Установил какую-то сборку. После её полного удаления установил стандартный Foobar.
После этого исчезла возможность добавлять компоненты c помощью inslall в настройках.
Он их не видит. Вручную добавляются. Можно как-то поправить ?
Windows 7 x32 Ultimate.- Foobar 1.1.11 - 1.1.12
Автор: SAT31
Дата сообщения: 27.05.2012 10:58
XPOHOMETP

Цитата:
Обновление: foobar2000 v1.1.12a

чейндж

Цитата:
- Hot fix: foobar2000 v1.1.12a has been released. This version corrects a regression in 1.1.12 final.
Автор: Logvinoff
Дата сообщения: 28.05.2012 05:02
Скажите пожалуйста, есть ли плагин, который бы позволил управлять плеером с bluetooth гарнитуры (плей, пауза, вперед, назад)?
Автор: Dimmick
Дата сообщения: 28.05.2012 06:00
Logvinoff lastfmtools.ru/foobar-bluetooth-hid-sony-ericsson/ что-то про это как раз.
Автор: Logvinoff
Дата сообщения: 28.05.2012 07:23
Dimmick
Это совсем не то. То что по ссылке - это управление foobar2000 через мобильный телефон. Иначе говоря телефон - пульт ДУ. А я ищу то, что я попросил

Цитата:
управлять плеером с bluetooth гарнитуры

Вы хоть читайте, что советуете.
Автор: Dimmick
Дата сообщения: 28.05.2012 09:25
Logvinoff я прекрасно вижу что вы хотите, принцип просто похож, но врятли такое возможно.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184

Предыдущая тема: Плагины MyIE2 / Maxthon


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.