Board.KolibriOS.org
http://board.kolibrios.org/

Области пустоты в окне.
http://board.kolibrios.org/viewtopic.php?f=36&t=2671
Страница 2 из 2

Автор:  lev [ Чт апр 17, 2014 5:14 pm ]
Заголовок сообщения:  Re: Области пустоты в окне.

В данный момент при ресайзе окон или, если недорасчитать координаты, выводимые элементы интерфейса могут налезать на нижнюю или правую рамки окна (для окон с рамками). Варианты решения: 1) при окончании перерисовок обновлять нижнюю и правую рамки (перерисовывать поверх), 2) Завести дубль функции PutPixel, которая будет учитывать все рамки окна и рисовать ей элементы, а основной функцией шапку окна и рамки, 3) Возможно функция дырозаполнения сможет учитывать все рамки окна и косвенно повлияет и на другие функции рисования.

Вложения:
frame.gif
frame.gif [ 1.63 КБ | 1037 просмотров ]

Автор:  Mario_r4 [ Чт апр 17, 2014 6:09 pm ]
Заголовок сообщения:  Re: Области пустоты в окне.

lev писал(а):
Возможно функция дырозаполнения сможет учитывать все рамки окна и косвенно повлияет и на другие функции рисования.

Нет, моя идея подразумевала лишь добавление списка прямоугольных областей пустоты в заливке фона. То что ты предлагаешь никак не связано с моей идеей. Границы областей пустоты это по сути границы элементов, которые отрисовываются после заливки фона. Тупо составляется список этих областей и скармливается ф.0, а она уже ориентируясь по ним заливает или не заливает фон по определенным областям.

Вообще, то что ты предлагает уже делается, но только для всего окна - происходит отсечка и ничего не рисуется за пределы окна. Выводить все через PutPixel это будет очень медленно работать. В общем вопрос простым способом не решается. Тупо повторно выводить рамки - будет моргание (blink), хоть это тоже метод решения, но в случае когда нет порчи границ это лишняя отрисовка, на которую тратится время.

Автор:  0CodErr [ Пт апр 18, 2014 8:39 pm ]
Заголовок сообщения:  Re: Области пустоты в окне.

Serge писал(а):
Цитата:
В WinAPI такая фича с пустотами есть, чем мы хуже?
Фича есть, используется редко, когда надо что-то совсем нестандартное
Ну у нас-то не как у них :) Здесь, может быть, наоборот, часто будет использоваться.

Тут ещё неизвестно, что быстрее получится: для варианта Mario нужен будет только один системный вызов, а если рисовать множество прямоугольников самому, то, соответственно, несколько системных вызовов.
Наверное, быстрее всего было бы сразу рисовать всё в буфер, и выводить его одним системным вызовом, но, к сожалению, например, box_lib не умеет рисовать компоненты в буфер. То есть, я имею в виду: залили буфер нужным цветом, нарисовали в буфер компоненты, вывели буфер на экран.

Mario_r4 писал(а):
В общем все как обычно - в 90% случаев, когда предложишь новую полезную вещь, которая старых вещей не затрагивает, начинаются реакционные настроения.
Тот, кому это не нужно, просто не будет это использовать, а вот те, кому нужно, будут только рады.

Реализация этой идеи могла бы помочь избавиться от лишнего кода.
Оффтопик: Например, для того, чтобы избавится от мерцания в fNav(список теперь совсем не мерцает), мне потребовалось около килобайта дополнительного несжатого кода. Если попытаться это оптимизировать, то код будет совсем нечитаемый. А вот если бы у меня была возможность использовать пока ещё идею Mario, то -1K кода и +читаемость\понятность, возможно, в зависимости от реализации, это было бы даже быстрее.

Mario_r4 писал(а):
Вообще, то что ты предлагает уже делается, но только для всего окна - происходит отсечка и ничего не рисуется за пределы окна.
А неужели так сложно при отсечении учесть ещё и window.BORDER_SIZE?

Автор:  Mario_r4 [ Пт апр 18, 2014 8:53 pm ]
Заголовок сообщения:  Re: Области пустоты в окне.

0CodErr писал(а):
А неужели так сложно при отсечении учесть ещё и window.BORDER_SIZE?

Наверное можно, но нужно перерабатывать код ядра под новые границы. К сожалению это будет не просто, потому что много зависимого друг от друга кода. Меняешь одно место и нужно корректировать несколько других, чтобы тупо не "разъехалось".

Страница 2 из 2 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/