Я занимаюсь разработкой стандартной библиотеки 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-ке в исходниках(путь сделан для моего компьютера).
Хотелось бы ещё и меню сделать,но не знаю,хватит ли у меня на это времени(но всётаки постараюсь).
Высказывайтесь.Может что-то надо изменить,переделать.
libGUI
-
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
andrew_programmer
Хорошая вещь, надо будет запихнуть в KFM.
Хорошая вещь, надо будет запихнуть в KFM.
Еще один закос под ХРюшу?
Все элементы генерируются МАТЕМАТИЧЕСКИ !
Я посмотрел как сделано в XP - слишком мудрёно.
Посмотрел как сделано в Linux - довольно просто и понятно.За основу я взял идею из LINUX ,а не XP.Плюс ещё добавил свои идеи.Делал,что называется,на глаз.Изменял под свои идеи.
Запустите в XP экранную лупу и сравните элементы XP и мои - общего мало.
Я посмотрел как сделано в XP - слишком мудрёно.
Посмотрел как сделано в Linux - довольно просто и понятно.За основу я взял идею из LINUX ,а не XP.Плюс ещё добавил свои идеи.Делал,что называется,на глаз.Изменял под свои идеи.
Запустите в XP экранную лупу и сравните элементы XP и мои - общего мало.
Однако размерчик демок без сжатия впечатляет: 460 kb. И это только демки...
PS: Не знаю как под экранной лупой, но тот скриншот, что ты привел - один в один ХР.
PS: Не знаю как под экранной лупой, но тот скриншот, что ты привел - один в один ХР.
>PS: Не знаю как под экранной лупой, но тот скриншот, что ты привел - один в один ХР.
В LINUX градиентная заливка начинается с серых тонов и заканчивается белыми, только поэтому они не смахивают на XP.
А у меня градиентная заливка начинается с цвета скина и заканчивается белым.Этот маленький нюанс и дедает похожесть на XP.В остальном алгоритм рисования объёмного прямоугольника во всех ОС ОДИНАКОВ.Разница только в цвете градиентной заливки ,в антианализинге и некоторых мелочах дизайна.
>Однако размерчик демок без сжатия впечатляет: 460 kb. И это только демки...
Я думал ты разбираешься в ассемблере.
В коде есть строка:
Picture:
file 'abc.raw'
abc.raw - это скролируемая картинка,которая подключается к коду программы, увеличивая его размер на 99%.
Размер примера без этой картинки 1.5 килобайта.
Размер скомпилированной DLL 42 килобайта.Но после сжатия упаковщиком(не путать с архиватором) она занимает 6 килобайт, что на 1 килобайт больше сжатой консоли.
В LINUX градиентная заливка начинается с серых тонов и заканчивается белыми, только поэтому они не смахивают на XP.
А у меня градиентная заливка начинается с цвета скина и заканчивается белым.Этот маленький нюанс и дедает похожесть на XP.В остальном алгоритм рисования объёмного прямоугольника во всех ОС ОДИНАКОВ.Разница только в цвете градиентной заливки ,в антианализинге и некоторых мелочах дизайна.
>Однако размерчик демок без сжатия впечатляет: 460 kb. И это только демки...
Я думал ты разбираешься в ассемблере.
В коде есть строка:
Picture:
file 'abc.raw'
abc.raw - это скролируемая картинка,которая подключается к коду программы, увеличивая его размер на 99%.
Размер примера без этой картинки 1.5 килобайта.
Размер скомпилированной DLL 42 килобайта.Но после сжатия упаковщиком(не путать с архиватором) она занимает 6 килобайт, что на 1 килобайт больше сжатой консоли.
В исходники я не лазил пока, потому пишу только то, что вижу снаружи. Dll можно паковать и kpack-ом, тогда она занимает 4,78 килобайт. А похожесть на ХР заключается еще и в черточках на полосах прокрутки и во внешнем виде кнопок со стрелками... Копия просто . Опять таки в алгоритм я не лазил. Кстати, кнопки со стрелками не работают в примерах.
Интересно, а что плохого в похожести на ХРюшку. Дизаин дизаином, но по теории юзабилити знакомое наоборот удобнее. Причем скроллеры в ХР не самые плохие. Молодец, andrew_programmer, сегодня посмотреть код и примеры в действии не смогу, уезжаю сейчас, а в понедельник гляну.
> Кстати, кнопки со стрелками не работают в примерах.
Правильно,не работают.Я их не сделал.Пока надобности в кнопках для скролеров - нет(пока и без них сойдёт).
Мне меню нужнее.
> Dll можно паковать и kpack-ом, тогда она занимает 4,78 килобайт.
Я про него и говорил.Только похоже с размером ошибся.
Правильно,не работают.Я их не сделал.Пока надобности в кнопках для скролеров - нет(пока и без них сойдёт).
Мне меню нужнее.
> Dll можно паковать и kpack-ом, тогда она занимает 4,78 килобайт.
Я про него и говорил.Только похоже с размером ошибся.
> А похожесть на ХР заключается еще и в черточках.
Можно было сделать как в Linux - рельефные точки.Но это увеличило бы число системных вызовов в несколько раз,что нагружает процессор.
Вообще попробуйте запускать демку с разными скинами в системе.Похожесть на XP будет меньше.
Можно было сделать как в Linux - рельефные точки.Но это увеличило бы число системных вызовов в несколько раз,что нагружает процессор.
Вообще попробуйте запускать демку с разными скинами в системе.Похожесть на XP будет меньше.
Heavyiron
Почему ты решил, что стиль похожий на XP это плохо? В KDE аж 3 стиля основанных на виндах - и что это повод на них поругаться?
Никто ведь не заставляет тебя использовать эту вещь, не нравиться не используй или напиши свое.
Почему ты решил, что стиль похожий на XP это плохо? В KDE аж 3 стиля основанных на виндах - и что это повод на них поругаться?
Никто ведь не заставляет тебя использовать эту вещь, не нравиться не используй или напиши свое.
Кому знакомое, а кому и приедается везде одно и то же Хотя это ИМХО.но по теории юзабилити знакомое наоборот удобнее
А так хотел сказать, что начинание хорошее: отсутствие стандартных gui-компонентов сдерживает развитие многих программ.
andrew_programmer
Заметил некоторые глюки:
1) В демках не работают горизонтальные скроллеры.
2) Обе демки невозможно перемещать по экрану.
3) Обе демки не хотят нормально завершиться и подвешивают Тинипад, который их скомпилировал и запустил.
Также неплохо бы разбить библиотеку на отдельные компоненты и чтобы не используемое отсутствовало.
Заметил некоторые глюки:
1) В демках не работают горизонтальные скроллеры.
2) Обе демки невозможно перемещать по экрану.
3) Обе демки не хотят нормально завершиться и подвешивают Тинипад, который их скомпилировал и запустил.
Также неплохо бы разбить библиотеку на отдельные компоненты и чтобы не используемое отсутствовало.
1) Это не глюк.Я хотел сделать и горизонтальную прокрутку,но почему-то у меня не получилось(хотя я уже реализовывал этот алгоритм в ANIMAGE ).Поэтоу в названии файла присутствует слово "vertical".Может дело в том, что я писал это в 3-ем часу ночи.
2)Невозможно перемещать,потомучто окна неперемещаемые.Главный смысл демки в том, чтобы было понятно как пользоваться компонентами программисту.
3)Наконец-то нашёлся ещё один человек,наблюдающий те-же глюки,что и я уже давно наблюдаю.
Это не вина демок.Это вина: то-ли Колибри-FASM-а, то-ли ошибка в работе файловой системы(что мало вероятно), то-ли ещё что-то.
Когда diamond пофиксил этот баг,то я думал что простился с ним навсегда.Запущенные из Тинипад-а программы действительно перестали намертво вешать систему.Теперь они вешают только Тинипад.Причём это происходит не совсеми программами,а только с некоторыми(в числе которых и мои демки).
>Также неплохо бы разбить библиотеку на отдельные компоненты и чтобы не используемое отсутствовало.
Тоесть,чтобы не грузить в память всю DLL, а грузить DLL-ки с отдельными компонентами ?
Единственный выигрыш,который будет получен - это экономия оперативной памяти на 2-10 килобайт(в будущем до 50-ти килобайт).А вот на дискете эти маленькие DLL-ки займут лишние секторы.
К тому-же некоторые компоненты используют общие процедуры(например градиентные заливки).Это приведёт к дублированию части кода в DLL-ах с разными компонентами,что увеличит размер каждой из них на 1-3 килобайта.
2)Невозможно перемещать,потомучто окна неперемещаемые.Главный смысл демки в том, чтобы было понятно как пользоваться компонентами программисту.
3)Наконец-то нашёлся ещё один человек,наблюдающий те-же глюки,что и я уже давно наблюдаю.
Это не вина демок.Это вина: то-ли Колибри-FASM-а, то-ли ошибка в работе файловой системы(что мало вероятно), то-ли ещё что-то.
Когда diamond пофиксил этот баг,то я думал что простился с ним навсегда.Запущенные из Тинипад-а программы действительно перестали намертво вешать систему.Теперь они вешают только Тинипад.Причём это происходит не совсеми программами,а только с некоторыми(в числе которых и мои демки).
>Также неплохо бы разбить библиотеку на отдельные компоненты и чтобы не используемое отсутствовало.
Тоесть,чтобы не грузить в память всю DLL, а грузить DLL-ки с отдельными компонентами ?
Единственный выигрыш,который будет получен - это экономия оперативной памяти на 2-10 килобайт(в будущем до 50-ти килобайт).А вот на дискете эти маленькие DLL-ки займут лишние секторы.
К тому-же некоторые компоненты используют общие процедуры(например градиентные заливки).Это приведёт к дублированию части кода в DLL-ах с разными компонентами,что увеличит размер каждой из них на 1-3 килобайта.
andrew_programmer
Если не иметь этой DLL в общей папке дистрибутива, то придется запихивать в отдельную папку для каждой программы, а это увеличит разеры еще больше. Я исходил из этих предпосылок когда писал эту идею.Единственный выигрыш,который будет получен - это экономия оперативной памяти на 2-10 килобайт(в будущем до 50-ти килобайт).А вот на дискете эти маленькие DLL-ки займут лишние секторы.
Who is online
Users browsing this forum: No registered users and 0 guests