OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 23:49

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
 Заголовок сообщения: Полностью рисованный интерфейс
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 11:51 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
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 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Есть проект модификации BlackBox с GUI на Sdl2 + OpenGL, там как раз такая схема. Да и в целом, тема уже не раз поднималась, всё равно, красивее чем в вебе уже никто не сможет нарисовать без капитальных вложений бабла и сил. Так что вот.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 12:21 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Да, я видел такой проект. Я, конечно, его не смотрел, могу только предполагать, что там тоже не абстрагированы стили и уровень, который рисует.

То есть хорошо бы иметь следующие уровни:
1) Абстрактный уровень GUI (приложение знает, что есть, допустим, такой контрол как кнопка, у него есть определенные координаты на окне и состояние: нажато или не нажато).
2) Уровень стиля (знает какие геометрические фигуры надо рисовать, чтобы показать кнопку в стиле Windows или Mac OS).
3) Уровень рисования (рисует геометрические фигуры с помощью примитивов WinApi, X11, OpenGL или браузера Хром).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 12:33 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 710
Откуда: Псков
Вообще-то примеры есть, тот же REBOL, если ничего не путаю, имеет свою платформонезависимую графику (и оконную систему). Сил, наверно, вложено немало, но малым числом участников, бабла - вряд ли.
PS.
Всё-таки путаю. Вроде бы использует AGG.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 13:57 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Предпочитаю Cairo, на нем GTK+ since 3.0 all rendering is done through Cairo .
Роман М. делал биндинг и вьюшку.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 14:01 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Rifat писал(а):
Да, я видел такой проект. Я, конечно, его не смотрел, могу только предполагать, что там тоже не абстрагированы стили и уровень, который рисует.

То есть хорошо бы иметь следующие уровни:
1) Абстрактный уровень GUI (приложение знает, что есть, допустим, такой контрол как кнопка, у него есть определенные координаты на окне и состояние: нажато или не нажато).
2) Уровень стиля (знает какие геометрические фигуры надо рисовать, чтобы показать кнопку в стиле Windows или Mac OS).
3) Уровень рисования (рисует геометрические фигуры с помощью примитивов WinApi, X11, OpenGL или браузера Хром).

В ББ уже абстрагировано всё это, вы поизучайте схему Controls + CFrames + HostCFrames, узнаете много нового.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 14:09 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Да, авторы ББ хотели продать миру идею автоматического look+feel'а, а купили ББ те, кому look+feel, в общем, по барабану.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 14:14 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Пётр Кушнир писал(а):
В ББ уже абстрагировано всё это, вы поизучайте схему Controls + CFrames + HostCFrames, узнаете много нового.

Это конечно хорошо, что абстрагировано. Хорошо бы еще хотя бы по 2 варианта реализации каждой абстракции было. Например, такие кнопочки и другие кнопочки. Если делать множественные реализации, то всплывают некоторые моменты, которые в разных реализациях реализовываются по-разному и, соответственно, иногда и абстрагирование нужно делать чуть-чуть по другому. Когда же есть только по 1 варианту реализации абстракции, то некоторые вещи бывают реализованы ad hoc, то есть так, как удобнее было в данном случае.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 14:31 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Я не хочу показаться назойливым, но ты посмотри проект, где GUI на OpenGL пытались делать, ты поймёшь, что в ББ нормально всё абстрагировано, по крайней мере, я помню, что кнопочки и инпуты я нарисовал легко и просто, оставаясь в рамках концепции CFrames, да и потом уже, после, Иван Денисов рисовал чекбоксы вручную, недавно была тема. Так что всё нормально в этом плане.

Проблема, опять повторюсь, в другом, в том, что сделать "просто" это быстро, но никому не понравится, а сделать "нормально", это просто технологически, но очень затратно технически и экономически (ну это моя личная оценка).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 14:43 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Спасибо, постараюсь посмотреть, когда время будем.
В начальном посте я писал, что проблема еще и в том, что не всё рисуется: скрол бары, внутренние окна для MDI и получается как бы смесь рисованного интерфейса и нативного интерефейса Windows, а из-за этого могут быть сложности с переносом на другие системы.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 15:28 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Ну опять же, нативный интерфейc просвечивает через HostCFrames, который по определению Host-часть, а в остальном, те же скролл-бары можно и самому нарисовать, и встроить в текущий ББ без проблем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 17:52 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Так эта, Оберон же был перенесен на кучу платформ, вместе со своими гаджетами.
Но сделать хорошо действительно трудно. И дело не в нарисовать красиво.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 18:13 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Есть хоть одна система, где не только один стиль?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 18:58 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну так в A2, вроде же, разные темы включаются.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 20:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Rifat писал(а):
Есть хоть одна система, где не только один стиль?

Делал альтернативный стиль CpcTabs http://oberoncore.ru/bbcc/subs/cpc/tabs

Рифат, если тебе это не просто ради теории интересно, то давай вместе работать. Я начал переносить элементы управления и уже многие перенес. Потом и до оконной системы доберемся в перспективе. У Петра с Иваном есть интересный опыт, есть от чего оттолкнуться.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 22:14 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
А, ну вот отличный пример, да, ypkHostTabFrames, вкладки рисованые. А работают вместо настоящих, плюс к ним CpcTabs и получится N стилей.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Ноябрь, 2017 23:23 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Trurl писал(а):
Так эта, Оберон же был перенесен на кучу платформ, вместе со своими гаджетами.
Но сделать хорошо действительно трудно. И дело не в нарисовать красиво.

Начать с того, что для одних задач интерфейс лучше представлять как MDI окно, а для других нужен фреймово-вкладочный интерфейс, и тогда документ - это вкладка. Плюс, нужна возможность комбинировать два интерфейса и закреплять некоторые вкладки/фреймы, чтобы создавать панели инструментов. Для использования нескольких мониторов должна быть возможность раскидать документы по нескольким окнам и переносить документы из одного окна в другое.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Ноябрь, 2017 22:16 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Случается нередко нам
И труд и мудрость видеть там,
Где стоит только догадаться
За дело просто взяться.

К кому-то принесли от мастера Ларец.
Отделкой, чистотой Ларец в глаза кидался;
Ну, всякий Ларчиком прекрасным любовался.
Вот входит в комнату механики мудрец.
Взглянув на Ларчик, он сказал: "Ларец с секретом,
Так; он и без замка;
А я берусь открыть; да, да, уверен в этом;
Не смейтесь так исподтишка!
Я отыщу секрет и Ларчик вам открою:
В механике и я чего-нибудь да стою".
Вот за Ларец принялся он:
Вертит его со всех сторон
И голову свою ломает;
То гвоздик, то другой, то скобку пожимает.
Тут, глядя на него, иной
Качает головой;
Те шепчутся, а те смеются меж собой.
В ушах лишь только отдается:
"Не тут, не так, не там!" Механик пуще рвется.
Потел, потел; но, наконец, устал,
От Ларчика отстал
И, как открыть его, никак не догадался:
А Ларчик просто открывался.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 14 Январь, 2018 16:50 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Я обеими руками "за". Мысль о том, что "всё своё ношу с собой" я многократно высказывал в "Телеграме" именно в таком виде. Если ББ будет сам себе кнопки и прокрутки рисовать -- это гарантированная переносимость.
Мне очень понравилась идея подвязать ББ под SDL2, вместо WinAPI. Снимаю шляпу перед светлыми головами!)
И зря остановили эту ветку. Сборочку бережно храню в укромном сухом тёмном месте недоступном для детей))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 30 Июль, 2019 18:18 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
Идея хороша. Привязка к SDL2 может быть и лишней для КП. А вот без FreeType / HarfBuzz не обойтись.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB