О чём идет речь:
Spoiler:
Code: Select all
Подфункция 3 - получить стандартные цвета окон.
Параметры:
eax = 48 - номер функции
ebx = 3 - номер подфункции
ecx = указатель на буфер размером edx байт, куда будет записана таблица
edx = размер таблицы цветов (должен быть 40 байт для будущей совместимости)
Возвращаемое значение:
функция не возвращает значения
Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB
+0: dword: frames - цвет рамки
+4: dword: grab - цвет заголовка
+8: dword: grab_button - цвет кнопки на полосе заголовка
+12 = +0xC: dword: grab_button_text - цвет текста на кнопке на полосе заголовка
+16 = +0x10: dword: grab_text - цвет текста на заголовке
+20 = +0x14: dword: work - цвет рабочей области
+24 = +0x18: dword: work_button - цвет кнопки в рабочей области
+28 = +0x1C: dword: work_button_text - цвет текста на кнопке в рабочей области
+32 = +0x20: dword: work_text - цвет текста в рабочей области
+36 = +0x24: dword: work_graph - цвет графики в рабочей области
Доступ к новой спецификации: ЧИТАТЬ ОНЛАЙН
Скачать одним архивом: СКАЧАТЬ
Сама спецификация находится в процессе разработки, такой ранний доступ открыт для внесения коррективов и исправления недочетов, чтобы по 100 раз не перерисовывать визуальную составляющую.
Предварительный набросок формата файла скинов.
Spoiler:
Code: Select all
;=============================================================================;
; Спецификация New Skin для операционной системы Kolibri ;
;=============================================================================;
; header ---------------------------------------------------------------------;
struct data_header
header db 'KSKIN' ; +5 ;
version dw ? ; +7 ;
null db 0 ; +8 ;
ends
; data -----------------------------------------------------------------------;
struct SKIN_DATA
win.face dd ? ; - Фон обводки активного окна. ; +12 ;
win.inface dd ? ; - Фон обводки неактивного окна. ; +16 ;
win.frame dd ? ; - Цвет внешней рамки активного окна. ; +20 ;
win.inframe dd ? ; - Цвет внешней рамки неактивного окна. ; +24 ;
win.border dd ? ; - Цвет внутренней рамки активного окна. ; +28 ;
win.inborder dd ? ; - Цвет внутренней рамки неактивного окна. ; +32 ;
win.body dd ? ; - Фон клиентской части активного окна. ; +36 ;
win.title dd ? ; - Цвет текста полосы заголовка. ; +40 ;
win.text dd ? ; - Цвет текста в рабочей области окна. ; +44 ;
win.graytext dd ? ; - Цвет неактивного текста. ; +48 ;
child.body dd ? ; - Фон дочерних потоков и меню приложения. ; +52 ;
child.text dd ? ; - Цвет текста дочерних потоков и меню. ; +56 ;
panel.body dd ? ; - Фон панелей приложения. ; +60 ;
panel.text dd ? ; - Цвет текста панелей приложения. ; +64 ;
hint.body dd ? ; - Фон подсказки. ; +68 ;
hint.text dd ? ; - Цвет текста подсказки. ; +72 ;
btn.face dd ? ; - Фон кнопки. ; +76 ;
btn.inface dd ? ; - Фон неактивной кнопки. ; +80 ;
btn.fcface dd ? ; - Фон кнопки при наведении. ; +84 ;
btn.frame dd ? ; - Цвет рамки кнопки. ; +88 ;
btn.inframe dd ? ; - Цвет рамки неактивной кнопки. ; +92 ;
btn.fcframe dd ? ; - Цвет рамки кнопки при навдении. ; +96 ;
btn.text dd ? ; - Цвет текста кнопки. ; +100 ;
btn.intext dd ? ; - Цвет текста неактивной кнопки. ; +104 ;
btn.fctext dd ? ; - Цвет текста кнопки при наведении. ; +108 ;
3d.face dd ? ; - Основной цвет наложения тени (скролл). ; +112 ;
3d.dark dd ? ; - Теневая обводка. ; +116 ;
3d.light dd ? ; - Световая обводка. ; +120 ;
3d.shadow dd ? ; - Цвет тени для неактивных элементов. ; +124 ;
gui.face dd ? ; - Фон элементов. ; +128 ;
gui.inface dd ? ; - Фон неактивных элементов. ; +132 ;
gui.fcface dd ? ; - Фон элементов при наведении. ; +136 ;
gui.frame dd ? ; - Рамка элемента. ; +140 ;
gui.inframe dd ? ; - Рамка неактивного элемента. ; +144 ;
gui.fcframe dd ? ; - Рамка элемента при наведении. ; +148 ;
gui.text dd ? ; - Цвет текста элемента. ; +152 ;
gui.intext dd ? ; - Цвет текста неактивного элемента. ; +156 ;
gui.fctext dd ? ; - Цвет текста элемента при наведении. ; +160 ;
res.a dd ? ; - Зарезервированно. ; +164 ;
res.b dd ? ; - Зарезервированно. ; +168 ;
res.c dd ? ; - Зарезервированно. ; +172 ;
res.d dd ? ; - Зарезервированно. ; +176 ;
res.e dd ? ; - Зарезервированно. ; +180 ;
ends
; params ---------------------------------------------------------------------;
struct SKIN_PARAMS
use.3d db 0 ; - Использовать тени для элементов. (0 выкл) ; +181 ;
use.noangle db 0 ; - Не рисовать угловые пиксели элементов. ; +182 ;
use.winrad db 0 ; - Использовать скругленные края у окна. ; +183 ;
; 0 - нет; 1 - псевдо; 2 - альфа ; ;
use.focus db 0 ; - Отрисовывать наведение на элементы. ; +184 ;
use.face db 1 ; - Использовать ли обводку вокруг окна (1 вкл) ; +185 ;
face.w db 3 ; - Ширина обводки ; +186 ;
use.reserv dw ? ; - Зарезервированно ; +188 ;
ends
; title ----------------------------------------------------------------------;
struct SKIN_TITLE
text.align db 0 ; 0 - слева, 1 - середина, 2 - справа ; +189 ;
text.x dw ? ; Смещение относительно положения в пикселях. ; +191 ;
text.y dw ? ; Смещение относительно положения в пикселях. ; +193 ;
btn.align db 1 ; 0 - слева, 1 - справа; ; +194 ;
btn.w dw ? ; Ширина системных кнопок. ; +196 ;
btn.h dw ? ; Высота системных кнопок. ; +198 ;
btn.x dw ? ; Смещение относительно положения в пикселях. ; +200 ;
btn.y dw ? ; Смещение относительно положения в пикселях. ; +202 ;
btn.step db ? ; Расстояние между системными кнопками. ; +203 ;
height db ? ; Высота заголовка. ; +204 ;
alpha dd ? ; Цвет псевдо прозрачности ; +208 ;
reserved dd ? ; Зарезервированно. ; +212 ;
ends
; image ----------------------------------------------------------------------;
struct SKIN_ANGLE
ltop.w db ? ; Ширина левого верхнего изображения ; +213 ;
ltop.h db ? ; Высота левого верхнего изображения ; +214 ;
lbot.w db ? ; Ширина левого нижнего изображения ; +215 ;
lbot.h db ? ; Высота левого нижнего изображения ; +216 ;
rtop.w db ? ; Ширина правого верхнего изображения ; +217 ;
rtop.h db ? ; Высота правого верхнего изображения ; +218 ;
rbot.w db ? ; Ширина правого нижнего изображения ; +219 ;
rbot.h db ? ; Высота правого нижнего изображения ; +220 ;
ends
; buttons --------------------------------------------------------------------;
struct SKIN_BTN
file 'close.raw' ; btn.w * btn.h * 3 (BBGGRR) активное ;
file 'iclose.raw' ; btn.w * btn.h * 3 (BBGGRR) неактивное ;
file 'fclose.raw' ; btn.w * btn.h * 3 (BBGGRR) при наведении ;
file 'full.raw' ; btn.w * btn.h * 3 (BBGGRR) активное ;
file 'ifull.raw' ; btn.w * btn.h * 3 (BBGGRR) неактивное ;
file 'ffull.raw' ; btn.w * btn.h * 3 (BBGGRR) при наведении ;
file 'mini.raw' ; btn.w * btn.h * 3 (BBGGRR) активное ;
file 'imini.raw' ; btn.w * btn.h * 3 (BBGGRR) неактивное ;
file 'fmini.raw' ; btn.w * btn.h * 3 (BBGGRR) при наведении ;
; ЕСЛИ SKIN_PARAMS.use.winrad = 2 (полноценная альфа) ;
; ТО btn.w * btn.h * 4 (RRGGBBAA) ;
ends
; images ---------------------------------------------------------------------;
struct SKIN_IMAGE
file 'ltop.raw' ; ltop.w * ltop.h * 3 (BBGGRR) активное ;
file 'lbot.raw' ; lbot.w * lbot.h * 3 (BBGGRR) активное ;
file 'rtop.raw' ; rtop.w * rtop.h * 3 (BBGGRR) активное ;
file 'rbot.raw' ; rbot.w * rbot.h * 3 (BBGGRR) активное ;
file 'iltop.raw' ; iltop.w * iltop.h * 3 (BBGGRR) неактивное ;
file 'ilbot.raw' ; ilbot.w * ilbot.h * 3 (BBGGRR) неактивное ;
file 'irtop.raw' ; irtop.w * irtop.h * 3 (BBGGRR) неактивное ;
file 'irbot.raw' ; irbot.w * irbot.h * 3 (BBGGRR) неактивное ;
; ЕСЛИ SKIN_PARAMS.use.winrad = 2 (полноценная альфа) ;
; ТО xxxx.w * xxxx.h * 4 (RRGGBBAA) ;
ends
;=============================================================================;