Board.KolibriOS.org

Official KolibriOS board
It is currently Tue May 21, 2019 8:00 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 240 posts ]  Go to page Previous 112 13 14 15 16 Next
Author Message
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 11:07 am 
Атауальпа
Нижепреведенное исключительно мое личное мнение и не претендует звание абсолютной истины (это я написал для тех кто готов вцепится в мой широкий зад, стоит только повернуться к ним спиной)...

Понимаешь программы бывают 2-х видов:
1) Написано чтобы работало, потому особых свистоперделок не наблюдается, из примеров: Miranda (базовая комплектация), Apollo, Total Commander, Far, Unreal Commander, Notepad++, FileZilla FTP ... в общем примеров достаточно.
2) Написано чтобы было красиво, со свистоперделками, рюшечками, раскладными подставкам для ног, встроенными холодильниками и вообще что Бог на душу положит...
Программы второй категории делятся на:
2.1) Те которые вопреки свистоперделкам (но никак не благодаря) работают: Opera, FastStone Image Viewer, Foxit, KMplayer, Tortoise SVN... в общем примеров достаточно.
2.2) Те которые благодаря свистоперделкам работают криво или жрут ресурсы немерянно. Я не буду их перечислять потому что пользователи этих программ с пеной у рта начнут доказывать что я не прав. (У ти моя пусечка, у ти моя хорошая - мы еще с тобой захватим этот поганый мир и установим в нем мир и справедлиовость по нашему разумению, которое априори самое правильное...)


Last edited by Mario on Fri Sep 18, 2009 11:23 am, edited 1 time in total.

Top
   
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 11:19 am 
andrew_programmer
Quote:
Не всё так просто. Контролы могут покрывать не всю площадь окна. Если не рисовать фон, то окно окажется "дырявым". В окне вообще может быть только 2-3 контрола. Один контрол выводит сообщение пользователю, а остальные предлагают выбрать варианты действий.
Поэтому нужно отключать рисование фона под контролами, но при этом библиотека должна сама вычислять "дыры"(если они есть) и заполнять их цветом фона. Этот алгоритм пока ещё не реализован, поэтому фон под контролами отрисовываеться.

Это уже забота программиста приложения, всех вариантов заранее не предусмотришь - есть дырка вызывай 13 функцию и заливай, или вызывай 65 и заливай скином.
Quote:
У меня ScrollBar так и рисуется. И ProgressBar также рисовался, только текст поверх него мигал, вот я и ввёл буферизацию. К тому же если выводить текст на ProgressBar-е масштабируемым шрифтом, то нужно производить сглаживание геометрических примитивов, чтобы шрифт казался ровным и гладким. Без буферизации изображения ScrollBar-а этого не сделать. Так что я одним решением избавился сразу от двух проблем.

Абсолютно не понял причем тут скроллбар применительно к тексту? На нем то текст не рисуется.
Quote:
Если количество этих дыр велико, то нужно будет рисовать множество прямоугольников на экране, что потребует немалой загрузки процессора. Лучше уж рисовать в буфере, тем более, что у меня буферы динамические. То есть после использования(после вывода на экран) он освобождается, а не остаётся "висеть" в памяти занимая её.

Но согласись должна быть соблюдена золотая середина. Если можно обойтись без буфера (пусть даже динамически выделяемого), то почему бы и не обойтись. В BoxLib только один элемент использует буфер это MenuBar, остальные отрисовываются без взсяких буферов. Согласен, что твой прогресбар с надписью требует буферизации, но скроллбар то можно и без буфера. :-)


Top
   
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 11:22 am 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
andrew_programmer wrote:
Не всё так просто. Контролы могут покрывать не всю площадь окна. Если не рисовать фон, то окно окажется "дырявым". В окне вообще может быть только 2-3 контрола. Один контрол выводит сообщение пользователю, а остальные предлагают выбрать варианты действий.
Поэтому нужно отключать рисование фона под контролами, но при этом библиотека должна сама вычислять "дыры"(если они есть) и заполнять их цветом фона. Этот алгоритм пока ещё не реализован, поэтому фон под контролами отрисовываеться.

По-хорошему, контролы должны быть дочерними окнами, и за тем, чтобы отрисовка фона в основном окне их не затрагивала, должен следить оконный менеджер (как сейчас он отслеживает, что отрисовка не трогает соседние окна).

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 11:24 am 
Offline
User avatar

Joined: Thu Mar 01, 2007 7:57 pm
Posts: 835
Mario, что плохого в возможности менять темы оформления? GTK и QT давно умеют, и вопреки этому всё-таки работают :)

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


Top
   
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 11:30 am 
Ну, дык я и говрю - если автору не лень будет отлаживать это дело то хорошо, а если будет написано исключительно ради красоты и плевать на стабильность. производительность и потребление памяти, то печально будет.


Top
   
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 11:34 am 
Offline
User avatar

Joined: Thu Mar 01, 2007 7:57 pm
Posts: 835
В данном случае радует серьёзное отношение автора к делу. Так что сделает, скорее всего, хорошо))
А в идеале хорошо бы для Колибри вообще новую графическую оболочку...

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


Top
   
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 1:16 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Quote:
Согласен, что твой прогресбар с надписью требует буферизации, но скроллбар то можно и без буфера. :-)


Он и рисуется без буфера. Я имел ввиду, что рисуется он на экране без всяких лишних перерисовок. При первичной отрисовке рисуется весь контрол. Потом рисуются только меняющиеся части. То есть полоса до ползунка с одной стороны, ползунок и полоса после ползунка.

Quote:
По-хорошему, контролы должны быть дочерними окнами, и за тем, чтобы отрисовка фона в основном окне их не затрагивала, должен следить оконный менеджер (как сейчас он отслеживает, что отрисовка не трогает соседние окна).


Только не при том оконном менеджере, который сейчас есть в Колибри. Он восстанавливает фон под окном полной перерисовкой всех нижележащих окон(хоть и не затрагивая перекрывающиеся области). Проведите эксперимент. Запустите, например, файловый менеджер. Поверх него поместите окно Tinypad-а. А потом быстро походите по его менюшкам. В результате увидите мигания при перерисовке окон, расположенных под меню. И это на современном компьютере. Я когда проделал это на старом, то наблюдал крайне неприятное слайд-шоу. Из-за примитивного метода восстановления фона под окнами, возникают мигания при перерисовке и сами меню выбираются медленно.
В windows и linux мы не наблюдаем миганий и тормозов. Незнаю насчёт windows, но в linux для отрисовки исползуется буферизация. Оконный менеджер Kolibri позволяет экономить память, но при этом возникают проблемы со скоростью работы и качеством перерисовки. Как говорят ,"палка о двух концах". Хочешь экономить память, рисуй без буфера, но с мерцаниями, хочеш мез мерцаний - используй буффер. Кстати, в VESA курсор нужно рисовать не напрямую на экране, а в буфере, накладывая его изображение на часть скопированного в память изображения фона. И выводить наложенный курсор на экран. Так и делает X-сервер. Потому там курсор в VESA и не мигает.

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Top
   
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 1:23 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Атауальпа
Quote:
А в идеале хорошо бы для Колибри вообще новую графическую оболочку...


Термин "Графическая оболочка" используется, если рисованием графики и окон в системе руководит процесс, работающий в user-mode, а не ядро операционной системы. В KolibrOS отрисовкой графичиских объектов и управлением окнами занимается ядро операционной системы. То есть графика встроена в ядро и никакой оболочки нет.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Top
   
 Post subject: Re: libGUI
PostPosted: Fri Sep 18, 2009 6:51 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
"То есть графика встроена в ядро и никакой оболочки нет." то что нет никакой оболочки, не значит что нельзя создать новую (она сама по себе будет новой), так что в словах Атауальпы никакой ошибки нет, и я к ним присоединяюсь)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
 Post subject: Re: libGUI
PostPosted: Sat Sep 19, 2009 1:22 pm 
andrew_programmer
У меня конструктивное предложение - возможно имеет смысл переместить libGUI в папку libraries, которая находится рядом. Все таки логичней соблюдать некоторые правила, чтобы уменьшить рост энтропии. :mrgreen:


Top
   
 Post subject: Re: libGUI
PostPosted: Sat Sep 19, 2009 1:27 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Я о том же самом подумал. Думаю буду вносить новые изменения в библиотеку и перемещу её в папку libraries. Делать перенос в папку отдельной ревизией что-то не хочется.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Top
   
 Post subject: Re: libGUI
PostPosted: Sat Sep 19, 2009 7:36 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Хорошая работа. Main впечатлила.

Quote:
Почему KlbInWin не может загрузить библиотеку - я не знаю.


Странно библиотека прерасно грузится KlbInWin, надо только положить её в директорию lib, в той папке которую ты выделил под рамдиск.


Top
   
 Post subject: Re: libGUI
PostPosted: Sat Sep 19, 2009 8:46 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Quote:
Странно библиотека прерасно грузится KlbInWin, надо только положить её в директорию lib, в той папке которую ты выделил под рамдиск.


У меня не работает. Наверное из-за Windows. Она у меня ужасно глючит. Каждый второй запуск приводит к внезапному вылетанию в перезагрузку. А переустановить windows нельзя иначе у меня grub затрёться и я не смогу грузить linux.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Top
   
 Post subject: Re: libGUI
PostPosted: Sun Sep 20, 2009 4:41 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5047
У меня тоже не работало (я перешёл с Windows на MacOS).

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


Top
   
 Post subject: Re: libGUI
PostPosted: Sun Sep 20, 2009 7:45 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Offtopic:
andrew_programmer wrote:
А переустановить windows нельзя иначе у меня grub затрёться и я не смогу грузить linux.
это миф - GRUB можно восстановить. лучше, конечно сделать загрузочную дискету (диск) заранее, но можно и потом (просто мороки больше). я дважды восстанавливал GRUB. самый простой случай, когда у меня была Mandriva - вставить загрузочный диск и выбрать восстановление загрузчика. второй случай, когда я подрос, поставил Slackware, и после переустановки винды пришлось записывать дискету с GRUB и восстанавливать загрузчик с помощью команд.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 240 posts ]  Go to page Previous 112 13 14 15 16 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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:  
cron
Powered by phpBB® Forum Software © phpBB Limited