Page 3 of 5
Posted: Mon Feb 20, 2006 3:27 am
by Sаsh
Выкладываю 3 практически готовых скина
http://gorsash.at.tut.by/kol_skin/aqua/aqua.7z
http://gorsash.at.tut.by/kol_skin/aqua/aqua.rar
http://gorsash.at.tut.by/kol_skin/metallic/metallic.7z
http://gorsash.at.tut.by/kol_skin/metallic/metallic.rar
http://gorsash.at.tut.by/kol_skin/sky/sky.7z
http://gorsash.at.tut.by/kol_skin/sky/sky.rar
Для их корректной работы нужно перекомпилировать ядро (файл skindata.inc прилагается).
В процессе тестирования обнаружилось, что очень мало программ поддерживают произвольную высоту скина (т. е. используют функцию 48 ). Поэтому пришлось делать все скины примерно той же высоты, что и стандартный, иначе выглядело некрасиво

. Кнопки максимизации сделаны с расчётом на будщее, как и картинки для неактивного окна.
Posted: Mon Feb 20, 2006 4:02 am
by mike.dld
Для
Sash,
Count_Raven_Amiant и других, кто занимается созданием скинов. Начиная с версии 0.5.3.0 будет введён новый формат скинов, позволяющий отделить их от ядра. С новым форматом, перекомпиляция и в принципе какие либо изменения ядра не понадобятся. Все данные о скине будут находиться в одном файле (и это естественно будет не файл ядра

).
Для создания файла скина понадобится FASM. Пример описания скина в новом формате (
7z|
zip):
Code: Select all
include 'me_skin.inc'
SKIN_PARAMS \
height = bmp_base.height, \ ; высота скина
margins = [5:1:43:1], \ ; поля заголовка, [слева:сверху:справа:снизу]
colors active = [binner=0x00081d: \ ; цвет внутренней линии границы окна
bouter=0x00081d: \ ; цвет внешней линии границы окна
bframe=0x0054e7],\ ; цвет границы окна
colors inactive = [binner=0x00081d: \ ; то же самое,
bouter=0x00081d: \ ; только для неактивных
bframe=0x1a8acc],\ ; окон
dtp = 'myblue.dtp' ; dtp файл цветов для окон без скина
SKIN_BUTTONS \
close = [-21:3][16:16],\ ; положение кнопок на заголовке
minimize = [-39:3][16:16] ; [слева:сверху][ширина:высота]
SKIN_BITMAPS \
left active = bmp_left, \ ; ассоциация битмапов
left inactive = bmp_left1,\ ; ясно, что один битмап может
oper active = bmp_oper, \ ; быть использован несколько раз,
oper inactive = bmp_oper1,\ ; тем самым можно уменьшить размер скина
base active = bmp_base, \ ; (например, отображение части окна
base inactive = bmp_base1 ; одинаково в активном и неактивном состоянии)
BITMAP bmp_left ,'left.bmp' ; битмапы
BITMAP bmp_oper ,'oper.bmp' ; формат: BMP, 24 бита
BITMAP bmp_base ,'base.bmp'
BITMAP bmp_left1,'left_1.bmp'
BITMAP bmp_oper1,'oper_1.bmp'
BITMAP bmp_base1,'base_1.bmp'
Posted: Mon Feb 20, 2006 12:01 pm
by willow
Круто, особенно получение размеров BMP файла во время компиляции. Так держать!
Posted: Mon Feb 20, 2006 2:45 pm
by Sаsh
Наконец-то нормальный формат скинов. Заодно экономится место на диске, потому что каждый маленький файл не занимает отдельный кластер. И вообще на каждый скин один файл - это правильно
Posted: Mon Feb 20, 2006 2:49 pm
by mike.dld
Спасибо за лестные отзывы. Значит не зря старался. Хотел ещё добавить, что т.к. скин теперь будет практически исходником, можно использовать и директивы условной компиляции. Не знаю зачем, но можно

Posted: Mon Feb 20, 2006 3:00 pm
by Sаsh
Я заметил, что тут есть такая вещь, как margins. Не совсем понятно, что они обозначают: позицию центральной картинки, позицию всех картинок или размеры полей, за которые можно будет взяться мышкой и изменить размер окна?
Posted: Mon Feb 20, 2006 3:52 pm
by ipr
Скины имхо рулёзные, вот только кнопку закрытия окна надо отодвинуть чуть дальше от остальных. Это сократит вероятность случайного нажатия на неё.
Posted: Mon Feb 20, 2006 4:59 pm
by Sаsh
ipr wrote:Скины имхо рулёзные, вот только кнопку закрытия окна надо отодвинуть чуть дальше от остальных. Это сократит вероятность случайного нажатия на неё.
На данный момент средняя кнопка (развернуть) всё равно не работает, поэтому нет смысла на неё нажимать. Когда появится её поддержка, тогда, может, и переделаю
Posted: Mon Feb 20, 2006 5:00 pm
by mike.dld
Sash
Margins - это "поля заголовка", т.е. если у тебя есть координаты заголовка окна (а они есть, и равны [0:0:window width:skin height]), и от каждой координаты отнять соответствуюшее число из margins, то получатся координаты прямоугольника, в котором должен располагаться текст заголовка. Для получения этих margins будет введена новая системная функция (видимо, 48/7). Также, margins будут использоваться самим ядром после введения функции установки заголовка окна, при этом ядро само будет рисовать заголовок в нужном месте, и с "..." если нужно. Пока же это будут делать сами приложения (если захотят, конечно). Очень рекомендую этими margins пользоваться, как дизайнерам, так и программистам.
Posted: Thu Feb 23, 2006 10:59 pm
by ipr
Sash
А почему бы её тогда не убрать временно?
Posted: Thu Feb 23, 2006 11:48 pm
by Heavyiron
Насколько я знаю, она скоро уже будет работать, тока т-с-с!
Posted: Fri Feb 24, 2006 4:35 pm
by ipr
Heavyiron
Ладно, никому не скажу

Posted: Fri Mar 03, 2006 6:01 pm
by diamond
Насколько я понял, теперь dtp-файл (таблица стандартных цветов) включен прямо в файл скина. Если так, то есть предложение удалить нафиг приложение GRSCREEN, а в autorun.dat заменить его на JPEGVIEW с параметром BOOT. Вот все, что делает grscreen:
- загружает /rd/1/myblue.dtp (игнорируя ошибки)
- устанавливает таблицу стандартных цветов (функция 48::2)
- устанавливает отрисовку фона как "растянуть" (функция 15::4)
- запускает /rd/1/jpegview BOOT
- ждет 1 секунду
- завершается
После чего JPEGVIEW сам загружает файл /rd/1/default.dtp и устанавливает таблицу цветов оттуда. Отрисовка фона также устанавливается в jpegview.
Posted: Sat Mar 04, 2006 1:54 pm
by Mario79
diamond
Не в той теме ты написал, но идея хорошая. Сам я бы не допер до этого еще некоторое время.

Пожалуй, так и сделаю.
Posted: Fri Mar 31, 2006 9:51 am
by goglus
а когда однофайловые скины будут в жизни реализуемы или я старый дистр юзаю