Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Nov 21, 2019 8:21 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 66 posts ]  Go to page 1 2 3 4 5 Next
Author Message
PostPosted: Wed Jul 03, 2013 7:55 pm 
Offline
KSoC/GSoC Student

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

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


Last edited by Akyltist on Thu May 29, 2014 7:09 pm, edited 4 times in total.

Top
   
PostPosted: Wed Jul 03, 2013 8:34 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
А выложить архивом прикрепленным к посту мешают обстоятельства непреодолимой силы?

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


Top
   
PostPosted: Wed Jul 03, 2013 8:38 pm 
Offline
KSoC/GSoC Student

Joined: Wed Jul 11, 2012 3:17 am
Posts: 224
Mario_r4 wrote:
А выложить архивом прикрепленным к посту мешают обстоятельства непреодолимой силы?

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


Top
   
PostPosted: Fri Jul 05, 2013 9:55 pm 
Offline
User avatar

Joined: Fri May 18, 2007 11:11 pm
Posts: 125
Стукнула ностальгия, заглянул на огонёк :D

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


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

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

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

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

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


Last edited by Alver on Fri Jul 05, 2013 10:13 pm, edited 1 time in total.

Top
   
PostPosted: Fri Jul 05, 2013 10:11 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Alver wrote:
Ещё мысль, стоит ли передавать приложению весь буфер цветовой палитры, (половина ему все равно не нужна) может быть проще будет читать каждый цвет по отдельности (по номеру в палитре)

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

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


Top
   
PostPosted: Fri Jul 05, 2013 10:18 pm 
Offline
User avatar

Joined: Fri May 18, 2007 11:11 pm
Posts: 125
Mario_r4 wrote:
Каждое лишнее переключение с Ring3 на Ring0 и обратно - это бесполезная трата ресурсов.


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

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


Top
   
PostPosted: Fri Jul 05, 2013 10:48 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Alver
L4. У меня тоже такие идеи были.


Top
   
PostPosted: Sat Jul 20, 2013 5:22 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Akyltist
Прогресс 50%? Процесс встал?

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


Top
   
PostPosted: Mon Jul 22, 2013 9:18 am 
Offline
KSoC/GSoC Student

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

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


Top
   
PostPosted: Wed Jul 31, 2013 3:06 pm 
Offline
KSoC/GSoC Student

Joined: Wed Jul 11, 2012 3:17 am
Posts: 224
сдал все экзамены на отлично!

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

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

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


Top
   
PostPosted: Wed Jul 31, 2013 3:45 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Spoiler: Show
Image
Сдал сопромат?Можешь жениться!

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


Top
   
PostPosted: Sun Aug 11, 2013 5:23 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5066
В документации указана кодировка charset=windows-1251 по факту там UTF-8.

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


Top
   
PostPosted: Thu Oct 03, 2013 1:24 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Видимо медовый месяц затянулся.

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


Top
   
PostPosted: Thu Oct 03, 2013 7:35 pm 
Offline
KSoC/GSoC Student

Joined: Wed Jul 11, 2012 3:17 am
Posts: 224
Mario_r4 wrote:
Видимо медовый месяц затянулся.

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

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

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

поправил


Top
   
PostPosted: Thu Oct 03, 2013 9:00 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Akyltist wrote:
Прошу прощения, обновил.

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 66 posts ]  Go to page 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited