Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пн дек 11, 2017 8:58 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 66 сообщений ]  На страницу 1 2 3 4 5 След.
Автор Сообщение
СообщениеДобавлено: Ср июл 03, 2013 7:55 pm 
Не в сети
KSoC/GSoC Student

Зарегистрирован: Ср июл 11, 2012 3:17 am
Сообщения: 224
Тема побудившая к созданию обсуждения: http://board.kolibrios.org/viewtopic.php?f=26&t=2331
О чём идет речь:
Спойлер: Показать
Код:
Подфункция 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 - цвет графики в рабочей области

Речь идет об изменении размера таблицы цветов функции 48 подфункций 2 и 3.

Доступ к новой спецификации: ЧИТАТЬ ОНЛАЙН
Скачать одним архивом: СКАЧАТЬ

Сама спецификация находится в процессе разработки, такой ранний доступ открыт для внесения коррективов и исправления недочетов, чтобы по 100 раз не перерисовывать визуальную составляющую.

Предварительный набросок формата файла скинов.
Спойлер: Показать
Код:
;=============================================================================;
; Спецификация 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
;=============================================================================;


Последний раз редактировалось Akyltist Чт май 29, 2014 7:09 pm, всего редактировалось 4 раза.

Вернуться к началу
СообщениеДобавлено: Ср июл 03, 2013 8:34 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
А выложить архивом прикрепленным к посту мешают обстоятельства непреодолимой силы?

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
СообщениеДобавлено: Ср июл 03, 2013 8:38 pm 
Не в сети
KSoC/GSoC Student

Зарегистрирован: Ср июл 11, 2012 3:17 am
Сообщения: 224
Mario_r4 писал(а):
А выложить архивом прикрепленным к посту мешают обстоятельства непреодолимой силы?

да нет, просто там процентов 7 работы, смысл забивать место на хостинге. Однако учел, линк на архив приложил.


Вернуться к началу
СообщениеДобавлено: Пт июл 05, 2013 9:55 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 18, 2007 11:11 pm
Сообщения: 125
Стукнула ностальгия, заглянул на огонёк :D

Akyltist писал(а):
Речь идет об изменении размера таблицы цветов функции 48 подфункций 2 и 3.


Есть замечание.
Я бы не трогал функции 48.2 и 48.3 , иначе практически все приложения, использующие системную палитру придётся переписывать с увеличением размера буфера. Я бы обозначил этих 10 цветов как основные а прочие как дополнительные и подвесил их на новые подфункции. А лучше на новые подфункции подвесить доступ ко всей расширенной палитре, а 48.2, 48.3 объявить устаревшими :) (Это уже вошло в практику колибри)

Ещё мысль, стоит ли передавать приложению весь буфер цветовой палитры, (половина ему все равно не нужна) может быть проще будет читать каждый цвет по отдельности (по номеру в палитре), а вот устанавливать уже скопом.

Вообще если ряд системных переменных, то бишь как цвета, позиция мыши, размер экрана, рабочая область экрана, дата/время, и некоторые другие , не представляющие системной тайны :D , скомпоновать на одной странице памяти и монтировать в адресное пространство процессов по фиксированному адресу. Тогда приложения смогут сэкономить на обращении к ядру :wink:

P.S. Ээээ я хотел сказать монтировать в режиме для чтения :oops:

_________________
Заглянул на огонёк


Последний раз редактировалось Alver Пт июл 05, 2013 10:13 pm, всего редактировалось 1 раз.

Вернуться к началу
СообщениеДобавлено: Пт июл 05, 2013 10:11 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Alver писал(а):
Ещё мысль, стоит ли передавать приложению весь буфер цветовой палитры, (половина ему все равно не нужна) может быть проще будет читать каждый цвет по отдельности (по номеру в палитре)

Каждое лишнее переключение с Ring3 на Ring0 и обратно - это бесполезная трата ресурсов.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
СообщениеДобавлено: Пт июл 05, 2013 10:18 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 18, 2007 11:11 pm
Сообщения: 125
Mario_r4 писал(а):
Каждое лишнее переключение с Ring3 на Ring0 и обратно - это бесполезная трата ресурсов.


Тогда включать страничку с переменными для чтения процессам, и вообще никакого переключения ringов для целой кучи бывших сисфункций :)

_________________
Заглянул на огонёк


Вернуться к началу
СообщениеДобавлено: Пт июл 05, 2013 10:48 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Alver
L4. У меня тоже такие идеи были.


Вернуться к началу
СообщениеДобавлено: Сб июл 20, 2013 5:22 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Akyltist
Прогресс 50%? Процесс встал?

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
СообщениеДобавлено: Пн июл 22, 2013 9:18 am 
Не в сети
KSoC/GSoC Student

Зарегистрирован: Ср июл 11, 2012 3:17 am
Сообщения: 224
чур тебя))
сдал ин яз и философию, еще спец предмет и месяц "свободных" вечеров)...

PS: надо доделать!


Вернуться к началу
СообщениеДобавлено: Ср июл 31, 2013 3:06 pm 
Не в сети
KSoC/GSoC Student

Зарегистрирован: Ср июл 11, 2012 3:17 am
Сообщения: 224
сдал все экзамены на отлично!

Обновил архив и онлайн чтение, теперь есть визуальное отображение всех элементов и описание 6 элементов из 16.
Доступ к новой спецификации: ЧИТАТЬ ОНЛАЙН
Скачать одним архивом: СКАЧАТЬ

Надеюсь в ближайшие дни полностью закончу, так как появилась уйма "свободного" времени!

PS: 24 августа женюсь!


Вернуться к началу
СообщениеДобавлено: Ср июл 31, 2013 3:45 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Спойлер: Показать
Изображение
Сдал сопромат?Можешь жениться!

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
СообщениеДобавлено: Вс авг 11, 2013 5:23 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4227
В документации указана кодировка charset=windows-1251 по факту там UTF-8.

_________________
Через тернии к звездам


Вернуться к началу
СообщениеДобавлено: Чт окт 03, 2013 1:24 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Видимо медовый месяц затянулся.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
СообщениеДобавлено: Чт окт 03, 2013 7:35 pm 
Не в сети
KSoC/GSoC Student

Зарегистрирован: Ср июл 11, 2012 3:17 am
Сообщения: 224
Mario_r4 писал(а):
Видимо медовый месяц затянулся.

Прошу прощения, обновил.

Window, Edit, Memo, ListBox, CheckBox, ComboBox, ProgressBar, PopupMenu, Panel, Button, TreeViewer, TabSet, TrackBar, ScrollBar, SelectBox, ValueBox.

Цитата:
В документации указана кодировка charset=windows-1251 по факту там UTF-8.

поправил


Вернуться к началу
СообщениеДобавлено: Чт окт 03, 2013 9:00 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Akyltist писал(а):
Прошу прощения, обновил.

Да, ничего страшного - я просто вслух подумал. :)

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 66 сообщений ]  На страницу 1 2 3 4 5 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB