libGUI

Discussing libraries simplifying applications development
Post Reply
User avatar
andrew_programmer
Posts: 896
Joined: Thu May 19, 2005 4:43 pm

libGUI

Post by andrew_programmer »

Я занимаюсь разработкой стандартной библиотеки GUI для KolibriOS.
В результате упорного программирования в течении семи дней я написал два GUI компонента.Это кнопки и скролеры.
Все компоненты могут отображаться в 2-х видах - 2D и 3D.
2D компоненты представляют из себя плоские GUI компоненты.
3D - это объёмные компоненты с красивыми градиентными заливками.
Цвет GUI компонентов зависит от скина.
Наример вот так выглядят 3D компоненты со скином Metal.skn:
http://www.menuetosgame.narod.ru/programs/libGUI_3D.PNG

А вот сама библиотека libGUI с демо-программами.
http://www.menuetosgame.narod.ru/programs/libGUI.7z
При компиляции программ не забудьте прописать путь к DLL-ке в исходниках(путь сделан для моего компьютера).

Хотелось бы ещё и меню сделать,но не знаю,хватит ли у меня на это времени(но всётаки постараюсь).

Высказывайтесь.Может что-то надо изменить,переделать.
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Mario79

Post by Mario79 »

andrew_programmer
Хорошая вещь, надо будет запихнуть в KFM.
User avatar
Heavyiron
Posts: 1073
Joined: Fri Jan 27, 2006 3:06 pm

Post by Heavyiron »

Еще один закос под ХРюшу?
User avatar
andrew_programmer
Posts: 896
Joined: Thu May 19, 2005 4:43 pm

Post by andrew_programmer »

Все элементы генерируются МАТЕМАТИЧЕСКИ !
Я посмотрел как сделано в XP - слишком мудрёно.
Посмотрел как сделано в Linux - довольно просто и понятно.За основу я взял идею из LINUX ,а не XP.Плюс ещё добавил свои идеи.Делал,что называется,на глаз.Изменял под свои идеи.

Запустите в XP экранную лупу и сравните элементы XP и мои - общего мало.
User avatar
Heavyiron
Posts: 1073
Joined: Fri Jan 27, 2006 3:06 pm

Post by Heavyiron »

Однако размерчик демок без сжатия впечатляет: 460 kb. И это только демки...
PS: Не знаю как под экранной лупой, но тот скриншот, что ты привел - один в один ХР.
User avatar
andrew_programmer
Posts: 896
Joined: Thu May 19, 2005 4:43 pm

Post by andrew_programmer »

>PS: Не знаю как под экранной лупой, но тот скриншот, что ты привел - один в один ХР.

В LINUX градиентная заливка начинается с серых тонов и заканчивается белыми, только поэтому они не смахивают на XP.
А у меня градиентная заливка начинается с цвета скина и заканчивается белым.Этот маленький нюанс и дедает похожесть на XP.В остальном алгоритм рисования объёмного прямоугольника во всех ОС ОДИНАКОВ.Разница только в цвете градиентной заливки ,в антианализинге и некоторых мелочах дизайна.


>Однако размерчик демок без сжатия впечатляет: 460 kb. И это только демки...

Я думал ты разбираешься в ассемблере.
В коде есть строка:

Picture:
file 'abc.raw'

abc.raw - это скролируемая картинка,которая подключается к коду программы, увеличивая его размер на 99%.
Размер примера без этой картинки 1.5 килобайта.

Размер скомпилированной DLL 42 килобайта.Но после сжатия упаковщиком(не путать с архиватором) она занимает 6 килобайт, что на 1 килобайт больше сжатой консоли.
User avatar
Heavyiron
Posts: 1073
Joined: Fri Jan 27, 2006 3:06 pm

Post by Heavyiron »

В исходники я не лазил пока, потому пишу только то, что вижу снаружи. ;) Dll можно паковать и kpack-ом, тогда она занимает 4,78 килобайт. А похожесть на ХР заключается еще и в черточках на полосах прокрутки и во внешнем виде кнопок со стрелками... Копия просто ;). Опять таки в алгоритм я не лазил. Кстати, кнопки со стрелками не работают в примерах.
YELLOW
Posts: 81
Joined: Wed Jul 05, 2006 9:00 am

Post by YELLOW »

Интересно, а что плохого в похожести на ХРюшку. Дизаин дизаином, но по теории юзабилити знакомое наоборот удобнее. Причем скроллеры в ХР не самые плохие. Молодец, andrew_programmer, сегодня посмотреть код и примеры в действии не смогу, уезжаю сейчас, а в понедельник гляну.
User avatar
andrew_programmer
Posts: 896
Joined: Thu May 19, 2005 4:43 pm

Post by andrew_programmer »

> Кстати, кнопки со стрелками не работают в примерах.

Правильно,не работают.Я их не сделал.Пока надобности в кнопках для скролеров - нет(пока и без них сойдёт).
Мне меню нужнее.

> Dll можно паковать и kpack-ом, тогда она занимает 4,78 килобайт.

Я про него и говорил.Только похоже с размером ошибся.
User avatar
andrew_programmer
Posts: 896
Joined: Thu May 19, 2005 4:43 pm

Post by andrew_programmer »

> А похожесть на ХР заключается еще и в черточках.

Можно было сделать как в Linux - рельефные точки.Но это увеличило бы число системных вызовов в несколько раз,что нагружает процессор.

Вообще попробуйте запускать демку с разными скинами в системе.Похожесть на XP будет меньше.
Mario79

Post by Mario79 »

Heavyiron
Почему ты решил, что стиль похожий на XP это плохо? В KDE аж 3 стиля основанных на виндах - и что это повод на них поругаться?
Никто ведь не заставляет тебя использовать эту вещь, не нравиться не используй или напиши свое.
User avatar
Heavyiron
Posts: 1073
Joined: Fri Jan 27, 2006 3:06 pm

Post by Heavyiron »

но по теории юзабилити знакомое наоборот удобнее
Кому знакомое, а кому и приедается везде одно и то же ;) Хотя это ИМХО.
А так хотел сказать, что начинание хорошее: отсутствие стандартных gui-компонентов сдерживает развитие многих программ.
Mario79

Post by Mario79 »

andrew_programmer
Заметил некоторые глюки:
1) В демках не работают горизонтальные скроллеры.
2) Обе демки невозможно перемещать по экрану.
3) Обе демки не хотят нормально завершиться и подвешивают Тинипад, который их скомпилировал и запустил.
Также неплохо бы разбить библиотеку на отдельные компоненты и чтобы не используемое отсутствовало.
User avatar
andrew_programmer
Posts: 896
Joined: Thu May 19, 2005 4:43 pm

Post by andrew_programmer »

1) Это не глюк.Я хотел сделать и горизонтальную прокрутку,но почему-то у меня не получилось(хотя я уже реализовывал этот алгоритм в ANIMAGE ).Поэтоу в названии файла присутствует слово "vertical".Может дело в том, что я писал это в 3-ем часу ночи.

2)Невозможно перемещать,потомучто окна неперемещаемые.Главный смысл демки в том, чтобы было понятно как пользоваться компонентами программисту.

3)Наконец-то нашёлся ещё один человек,наблюдающий те-же глюки,что и я уже давно наблюдаю.
Это не вина демок.Это вина: то-ли Колибри-FASM-а, то-ли ошибка в работе файловой системы(что мало вероятно), то-ли ещё что-то.

Когда diamond пофиксил этот баг,то я думал что простился с ним навсегда.Запущенные из Тинипад-а программы действительно перестали намертво вешать систему.Теперь они вешают только Тинипад.Причём это происходит не совсеми программами,а только с некоторыми(в числе которых и мои демки).

>Также неплохо бы разбить библиотеку на отдельные компоненты и чтобы не используемое отсутствовало.

Тоесть,чтобы не грузить в память всю DLL, а грузить DLL-ки с отдельными компонентами ?

Единственный выигрыш,который будет получен - это экономия оперативной памяти на 2-10 килобайт(в будущем до 50-ти килобайт).А вот на дискете эти маленькие DLL-ки займут лишние секторы.
К тому-же некоторые компоненты используют общие процедуры(например градиентные заливки).Это приведёт к дублированию части кода в DLL-ах с разными компонентами,что увеличит размер каждой из них на 1-3 килобайта.
Mario79

Post by Mario79 »

andrew_programmer
Единственный выигрыш,который будет получен - это экономия оперативной памяти на 2-10 килобайт(в будущем до 50-ти килобайт).А вот на дискете эти маленькие DLL-ки займут лишние секторы.
Если не иметь этой DLL в общей папке дистрибутива, то придется запихивать в отдельную папку для каждой программы, а это увеличит разеры еще больше. Я исходил из этих предпосылок когда писал эту идею.
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests