OberonCore https://forum.oberoncore.ru/ |
|
Полностью рисованный интерфейс https://forum.oberoncore.ru/viewtopic.php?f=86&t=6168 |
Страница 1 из 1 |
Автор: | Rifat [ Пятница, 17 Ноябрь, 2017 11:51 ] |
Заголовок сообщения: | Полностью рисованный интерфейс |
BlackBox многие контролы рисует самостоятельно. Раньше это мне казалось минусом, так как эти контролы казались немного устаревшими. Затем на форуме читал эпопею по переносу BlackBox на Linux и как я понял, там использовали сначала GTK для рисования некоторых контролов, а затем некоторые из них были переделаны на ручное рисование. Тем не менее, какие-то проблемы там оставились: была проблема с циклом сообщений, который крутился внутри GTK, а не внутри BlackBox, также была проблема с MDI (так как Linux ее, похоже, нативно не поддерживает). Сейчас я понимаю, что проблема не в том, что BlackBox рисует некоторые контролы самостоятельно, а в том, что BlackBox НЕ РИСУЕТ ВСЕ КОНТРОЛЫ САМОСТОЯТЕЛЬНО (то есть он в каких вещах опирается на Windows: на MDI, на отображение меню, возможно, что на отображение скролл баров и т.д.). Если бы BlackBox рисовал все самостоятельно: внутренние MDI окна, скролл бары, меню и т.д, то перенос на другие платформы был бы тривиален. Нужно было бы просто научиться рисовать примитивы и обрабатывать сообщения от системы. Самое главное нужно абстрагировать дизайнерский стиль от системных вещей, связанных с перерисовкой и обработкой сообщений. Например, можно создать несколько модулей, которые рисуют контролы под разные стили. Например, можно было бы рисовать кнопки как в Windows, Linux, Mac OS, BlueBottle, Android и т.д. И даже можно было бы проводить интересные эксперименты, например, можно было бы запустить приложение на Windows, с контролами как на Mac OS. Также я думаю, что рисовать все - это перспективная идея, в том плане, что легко можно будет перенести интерфейс на embedded устройство, у которого очень примитивное API для рисования, также можно будет делать интерфейс и под Android, iPhone и т.д, думаю, что примитивные интерфейсы рисования чего угодно и получения сообщений от системы они также предоставляют. Также, думаю, что современный Web тоже движется примерно в эту же сторону: браузер будет предоставлять интерфейс по рисованию чего угодно. В принципе - это не что-то новое. QT примерно для этого и создан. Но у QT есть недостаток, то что он написан на C++. Нужен простенький, легковесный QT, написанный на Обероне!!! |
Автор: | Пётр Кушнир [ Пятница, 17 Ноябрь, 2017 12:03 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Есть проект модификации BlackBox с GUI на Sdl2 + OpenGL, там как раз такая схема. Да и в целом, тема уже не раз поднималась, всё равно, красивее чем в вебе уже никто не сможет нарисовать без капитальных вложений бабла и сил. Так что вот. |
Автор: | Rifat [ Пятница, 17 Ноябрь, 2017 12:21 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Да, я видел такой проект. Я, конечно, его не смотрел, могу только предполагать, что там тоже не абстрагированы стили и уровень, который рисует. То есть хорошо бы иметь следующие уровни: 1) Абстрактный уровень GUI (приложение знает, что есть, допустим, такой контрол как кнопка, у него есть определенные координаты на окне и состояние: нажато или не нажато). 2) Уровень стиля (знает какие геометрические фигуры надо рисовать, чтобы показать кнопку в стиле Windows или Mac OS). 3) Уровень рисования (рисует геометрические фигуры с помощью примитивов WinApi, X11, OpenGL или браузера Хром). |
Автор: | albobin [ Пятница, 17 Ноябрь, 2017 12:33 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Вообще-то примеры есть, тот же REBOL, если ничего не путаю, имеет свою платформонезависимую графику (и оконную систему). Сил, наверно, вложено немало, но малым числом участников, бабла - вряд ли. PS. Всё-таки путаю. Вроде бы использует AGG. |
Автор: | Дмитрий Дагаев [ Пятница, 17 Ноябрь, 2017 13:57 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Предпочитаю Cairo, на нем GTK+ since 3.0 all rendering is done through Cairo . Роман М. делал биндинг и вьюшку. |
Автор: | Пётр Кушнир [ Пятница, 17 Ноябрь, 2017 14:01 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Rifat писал(а): Да, я видел такой проект. Я, конечно, его не смотрел, могу только предполагать, что там тоже не абстрагированы стили и уровень, который рисует. То есть хорошо бы иметь следующие уровни: 1) Абстрактный уровень GUI (приложение знает, что есть, допустим, такой контрол как кнопка, у него есть определенные координаты на окне и состояние: нажато или не нажато). 2) Уровень стиля (знает какие геометрические фигуры надо рисовать, чтобы показать кнопку в стиле Windows или Mac OS). 3) Уровень рисования (рисует геометрические фигуры с помощью примитивов WinApi, X11, OpenGL или браузера Хром). В ББ уже абстрагировано всё это, вы поизучайте схему Controls + CFrames + HostCFrames, узнаете много нового. |
Автор: | Info21 [ Пятница, 17 Ноябрь, 2017 14:09 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Да, авторы ББ хотели продать миру идею автоматического look+feel'а, а купили ББ те, кому look+feel, в общем, по барабану. |
Автор: | Rifat [ Пятница, 17 Ноябрь, 2017 14:14 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Пётр Кушнир писал(а): В ББ уже абстрагировано всё это, вы поизучайте схему Controls + CFrames + HostCFrames, узнаете много нового. Это конечно хорошо, что абстрагировано. Хорошо бы еще хотя бы по 2 варианта реализации каждой абстракции было. Например, такие кнопочки и другие кнопочки. Если делать множественные реализации, то всплывают некоторые моменты, которые в разных реализациях реализовываются по-разному и, соответственно, иногда и абстрагирование нужно делать чуть-чуть по другому. Когда же есть только по 1 варианту реализации абстракции, то некоторые вещи бывают реализованы ad hoc, то есть так, как удобнее было в данном случае. |
Автор: | Пётр Кушнир [ Пятница, 17 Ноябрь, 2017 14:31 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Я не хочу показаться назойливым, но ты посмотри проект, где GUI на OpenGL пытались делать, ты поймёшь, что в ББ нормально всё абстрагировано, по крайней мере, я помню, что кнопочки и инпуты я нарисовал легко и просто, оставаясь в рамках концепции CFrames, да и потом уже, после, Иван Денисов рисовал чекбоксы вручную, недавно была тема. Так что всё нормально в этом плане. Проблема, опять повторюсь, в другом, в том, что сделать "просто" это быстро, но никому не понравится, а сделать "нормально", это просто технологически, но очень затратно технически и экономически (ну это моя личная оценка). |
Автор: | Rifat [ Пятница, 17 Ноябрь, 2017 14:43 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Спасибо, постараюсь посмотреть, когда время будем. В начальном посте я писал, что проблема еще и в том, что не всё рисуется: скрол бары, внутренние окна для MDI и получается как бы смесь рисованного интерфейса и нативного интерефейса Windows, а из-за этого могут быть сложности с переносом на другие системы. По поводу того, что красиво рисовать очень дорого я согласен. Многие интерфейсы переусложнены (дизайнерами, которые не смыслят в том, как это будет работать на низком уровне), лично я хотел бы получить такой графический интерфейс, который можно было бы назвать "дешево и сердито" (один из наиболее близких эталонов - это windows 2000). |
Автор: | Пётр Кушнир [ Пятница, 17 Ноябрь, 2017 15:28 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Ну опять же, нативный интерфейc просвечивает через HostCFrames, который по определению Host-часть, а в остальном, те же скролл-бары можно и самому нарисовать, и встроить в текущий ББ без проблем. |
Автор: | Trurl [ Пятница, 17 Ноябрь, 2017 17:52 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Так эта, Оберон же был перенесен на кучу платформ, вместе со своими гаджетами. Но сделать хорошо действительно трудно. И дело не в нарисовать красиво. |
Автор: | Rifat [ Пятница, 17 Ноябрь, 2017 18:13 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Есть хоть одна система, где не только один стиль? |
Автор: | Илья Ермаков [ Пятница, 17 Ноябрь, 2017 18:58 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Ну так в A2, вроде же, разные темы включаются. |
Автор: | Иван Денисов [ Пятница, 17 Ноябрь, 2017 20:21 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Rifat писал(а): Есть хоть одна система, где не только один стиль? Делал альтернативный стиль CpcTabs http://oberoncore.ru/bbcc/subs/cpc/tabs Рифат, если тебе это не просто ради теории интересно, то давай вместе работать. Я начал переносить элементы управления и уже многие перенес. Потом и до оконной системы доберемся в перспективе. У Петра с Иваном есть интересный опыт, есть от чего оттолкнуться. |
Автор: | Пётр Кушнир [ Пятница, 17 Ноябрь, 2017 22:14 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
А, ну вот отличный пример, да, ypkHostTabFrames, вкладки рисованые. А работают вместо настоящих, плюс к ним CpcTabs и получится N стилей. |
Автор: | Иван Денисов [ Пятница, 17 Ноябрь, 2017 23:23 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Trurl писал(а): Так эта, Оберон же был перенесен на кучу платформ, вместе со своими гаджетами. Но сделать хорошо действительно трудно. И дело не в нарисовать красиво. Начать с того, что для одних задач интерфейс лучше представлять как MDI окно, а для других нужен фреймово-вкладочный интерфейс, и тогда документ - это вкладка. Плюс, нужна возможность комбинировать два интерфейса и закреплять некоторые вкладки/фреймы, чтобы создавать панели инструментов. Для использования нескольких мониторов должна быть возможность раскидать документы по нескольким окнам и переносить документы из одного окна в другое. |
Автор: | Kubanych [ Вторник, 21 Ноябрь, 2017 22:16 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Случается нередко нам И труд и мудрость видеть там, Где стоит только догадаться За дело просто взяться. К кому-то принесли от мастера Ларец. Отделкой, чистотой Ларец в глаза кидался; Ну, всякий Ларчиком прекрасным любовался. Вот входит в комнату механики мудрец. Взглянув на Ларчик, он сказал: "Ларец с секретом, Так; он и без замка; А я берусь открыть; да, да, уверен в этом; Не смейтесь так исподтишка! Я отыщу секрет и Ларчик вам открою: В механике и я чего-нибудь да стою". Вот за Ларец принялся он: Вертит его со всех сторон И голову свою ломает; То гвоздик, то другой, то скобку пожимает. Тут, глядя на него, иной Качает головой; Те шепчутся, а те смеются меж собой. В ушах лишь только отдается: "Не тут, не так, не там!" Механик пуще рвется. Потел, потел; но, наконец, устал, От Ларчика отстал И, как открыть его, никак не догадался: А Ларчик просто открывался. |
Автор: | prospero78 [ Воскресенье, 14 Январь, 2018 16:50 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Я обеими руками "за". Мысль о том, что "всё своё ношу с собой" я многократно высказывал в "Телеграме" именно в таком виде. Если ББ будет сам себе кнопки и прокрутки рисовать -- это гарантированная переносимость. Мне очень понравилась идея подвязать ББ под SDL2, вместо WinAPI. Снимаю шляпу перед светлыми головами!) И зря остановили эту ветку. Сборочку бережно храню в укромном сухом тёмном месте недоступном для детей)) |
Автор: | hothing [ Вторник, 30 Июль, 2019 18:18 ] |
Заголовок сообщения: | Re: Полностью рисованный интерфейс |
Идея хороша. Привязка к SDL2 может быть и лишней для КП. А вот без FreeType / HarfBuzz не обойтись. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |