На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Софт » Чем слушать и смотреть

Гибкий WinAmp

Что такое WinAmp, я думаю, никому объяснять не надо. Сейчас он есть практически на любом компьютере, иногда даже там, где нет звуковой карты :-). И человек, который ничего о нем не слышал, можно сказать, отстал от жизни. Сколько их, пользователей этой чудо-программульки, страшно себе и представить. А сколько из них таких, которые пытались подойти к вопросу по-хозяйски и что-нибудь с ней сделать? М-м-м?..

Итак, что можно сделать с WinAmp'ом? Чтобы разобраться в этом вопросе идем на http://www.winamp.com/ и читаем. Список возможностей поражает богатством и разнообразием (да-да, не смейтесь!):

• Создать скин.

• Написать плагин.

• Написать программу, которая будет манипулировать проигрывателем во время его работы.

Последний пункт включает в себя запуск winamp.exe с определенными параметрами командной строки и управление уже запущенным проигрывателем с помощью посылаемых ему виндовых сообщений. В этой статье мы займемся скинами.

Скины, как известно, представлены набором txt-, bmp- и cur-файлов. Текстовых файлов должно быть 3, графических — 16, курсоров — 28. Их может быть и меньше, просто в таком случае элементы, за которые «отвечают» отсутствующие файлы, будут заменены соответствующими из «скина по умолчанию». Особенно влияют на внешний вид окна проигрывателя bmp-файлы, поэтому начнем именно с них. В этих файлах хранятся различные фрагменты WinAmp'овых окон, причем в каждом файле может быть один или несколько таких фрагментов. При запуске или смене скина WinAmp считывает файл, описывающий структуру привязки этих фрагментов к условным координатам интерфейса — вдаваться в подробности я не буду, исчерпывающую инфу можно найти на winamp.com в разделе NSDN (Nullsoft Development Network). Все фрагменты прямоугольные и отображаются на экране в том виде, в каком они есть, что немного неудобно. Ведь гораздо проще нарисовать круглую кнопку на однотонном фоне, который посчитается прозрачным и будет убран, чем рисовать эту кнопку на фоне прямоугольного фрагмента, который нужно взять из файла, изображающего то, что находится под этой кнопкой. Но это, по-моему, не очень пугает создателей скинов. В отношении скиновых bmp-файлов у WinAmp'а есть еще одна особенность: при отсутствии некоторых из них программа заменяет неописанные элементы фрагментами из других файлов. Так, например, при отсутствии balance.bmp регулятор баланса рисуется с использованием фрагментов из файла volume.bmp, изображающего регулятор громкости. Но у этой полезной функции есть и недостаток: если я, например, хочу регулятор баланса оставить из «скина по умолчанию», а регулятор громкости нарисовать свой, то придется качать с winamp.com «скин по умолчанию» или мастырить регулятор баланса методом «PrintScreen» :-).

Теперь рассмотрим основные принципы хранения фрагментов. Вот они:

1) Заголовки окон хранятся в двух положениях: «активном» и «неактивном».

2) Переключатели хранятся в четырех положениях: «выключено и не нажато», «выключено и нажато», «включено и не нажато» и «включено и нажато».

3) Регуляторы громкости, баланса и тембра (в эквалайзере) хранятся в виде множества прямоугольников, описывающих фон в разных положениях ползунка и непосредственно сам ползунок в двух положениях: «ухваченном» и свободном.

4) PosBar (или SeekBar, кому как удобно) хранится в виде фона и двух ползунков — «ухваченного» и «неухваченного» — в файле posbar.bmp.

5) И где-нибудь, конечно, обязательно хранится фон ко всему этому хозяйству — основа окна. Это файлы main.bmp, eqmain.bmp, pledit.bmp, mb.bmp, avs.bmp.

6) Два файла — nums_ex.bmp и text.bmp — хранят цифры для отображения elapsed/remaining и символы внутреннего шрифта соответственно.

7) Основы окон, которые могут менять свой размер (playlist, minibrowser), хранятся в разобранном в виде: четыре угла, находящаяся между ними «серединка» и фрагменты, вставляемые между краями и «серединкой» при растяжении.

И еще одна интересная особенность: main window описывается одиннадцатью файлами, эквалайзер — двумя, остальные окна — по одному. А ведь main window не намного «пестрее» эквалайзера! На мой взгляд, ему бы хватило файлов трех-четырех.

А теперь немного о багах. Вы думали, WinAmp их лишен? Нет, Закон о Вездесущности Багов не предусматривает исключений! И программисты из Nullsoft тоже совершают ошибки. Программа криво считывает некоторые фрагменты из bmp-файлов. Первое, что я заметил, это неправильное считывание из файла titlebar.bmp активного и неактивного свернутого в полоску main window. У них одна общая строка пикселей. Видите на рис. 1 две черные точки, которые на активном окне снизу, а на неактивном — сверху?

Рис. 1     Рис. 2

Вторым замеченным мною багом было неправильное считывание «пустой ячейки» из nums_ex.bmp. Это заметно при нажатой паузе, когда elapsed/remaining «моргает» (рис. 2).

Последняя пакость относится к окну эквалайзера. При нажатии кнопки, сворачивающей его в полосочку, изображение этой кнопки меняется на изображение кнопки, разворачивающей эквалайзер из этого состояний — изображение же, которое там должно появиться в качестве нажатой кнопки сворачивания, по-моему, вообще не предусмотрено (рис. 3). Где его надо рисовать? Правда, может, это вовсе и не баги... так и должно быть? Кто его знает.

Разобравшись с графическими, давайте займемся текстовыми файлами. Их в составе скина, как уже упоминалось выше, должно быть три. Первый называется viscolor.txt и описывает цвета spectrum analyzer'а и oscilliscope'а. Он состоит из двадцати четырех строк, каждая из которых содержит информацию о цвете соответствующего ей фрагмента экрана визуализации. Эта информация о цвете представляет собой три числа, записанные через запятую и определяющие количество красного, зеленого и синего компонентов цвета соответственно. Числа находятся в диапазоне [0;255]. Все, что написано в строке после чисел, WinAmp'ом Рис. 3игнорируется. Теперь о том, что эти строки означают:

• 1 строка — цвет фона;

• 2 строка — цвет «крапинок» фона;

• 3-18 строки — цвета spectrum analyzer'а в зависимости от интенсивности частотной полосы;

• 19-23 — цвета oscilliscop’а, аналогично;

• 24 строка — цвет пиков, остающихся после частотного всплеска.

Файл pledit.txt тоже описывает цвета: цвета playlist'а и minibrowser'а. Он имеет тот же формат, что и виндовые ini-файлы. Цвета в нем, в отличие от viscilor.txt, задаются шестнадцатеричным значением RGB, как в HTML. Вот как он выглядит (пример взят с winamp.com):

Последний файл — region.txt — позволяет создавать прозрачные области в главном окне и окне эквалайзера. Он тоже имеет формат виндовых ini. Состоит из четырех секций:

[Normal] — задает регионы для main window;

[WindowShade] — для свернутого в полосочку main window (режим window shade);

[Equalizer] — для главного окна эквалайзера;

[EqualizerWS] — для свернутого эквалайзера.

Внутри каждой секции с помощью переменных NumPoints и PointList описываются многоугольники, которые должны быть нарисованы. Для наглядности привожу пример:

Разберемся, что здесь к чему. NumPoints задает количество вершин в каждом из многоугольников: в данном примере два многоугольника по четыре вершины в каждом. Переменная PointList содержит координаты вершин всех этих многоугольников. В данном примере описывается восемь вершин, по четыре на каждый из двух многоугольников. Координаты вершин отсчитываются от левого верхнего угла, то есть точка (0;0) находится в левом верхнем углу, ось X Рис. 4направлена вправо, а Y — вниз. Результат — на рис. 4.

О cur-файлах, пожалуй, говорить нечего: с ними и так все ясно. Они заменяют встроенные в WinAmp курсоры.

Все материалы для этой статьи взяты с winamp.com и сдобрены собственным опытом. За всеми деталями скиноделания обращайтесь на вышеупомянутый сайт, только там все на английском . Ну, а если захотите скачать скин, запечатленный на скриншотах, добро пожаловать на мой сайт!

Дмитрий ЛИТВИНОВ aka Dim@Lit
Мой Компьютер Weekly

Другие разделы
Чем слушать и смотреть
ПО для Интернет
Офисные приложения
Системные утилиты
Чем записывать диски
Красивости
Графика
Web-мастеру
Сетевые утилиты
Защита
Бизнес/Финансы
Новое в разделе
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100