johnfound
Пользовательский код будет выглядеть примерно так:
Code: Select all
add_gui win_init, Xleft, Ytop, Xright, Ybottom, skin, boxcolor, win_title
add_gui tag_moveto, X0, Y0
add_gui tag_setcolor, 0x0203010
add_gui tag_lineto, X1, Y1
add_qui tag_lineto, X2, Y2
...
add_gui tag_moveto, X3, Y3
add_qui tag_text, asciiz_string1
...
Как можно догадаться, win_init и add_gui - макросы, вставляющие в GUI-список новый элемент с соответствующими данных тэгами и полями данных.
В Круге 0 по запросу оконного менеджера (при необходимости перерисовки окна или всего экрана)
1) происходит чтение GUI-списка задачи,
2) тэги проверяются на корректность, а координаты - на попадание в видимую зону экрана,
3) формируется метафайл - плоский набор тэгов и данных, не содержащий невидимых, вложенных элементов и меток.
4) парсер отрисовывает в один проход все видимые элементы всех окон.
идея сырая, принимаются любые конструктивные предложения.
Serge
Я имею в виду полную ревизию GUI-функций системы, включая элементы управления.
С линиями просто (с них можно начинать уже сейчас), с окнами и вложенными тэгами - сложнее, с кнопками пока много неясного.