OberonCore
https://forum.oberoncore.ru/

BlackBox на OpenGL
https://forum.oberoncore.ru/viewtopic.php?f=114&t=4287
Страница 5 из 7

Автор:  Пётр Кушнир [ Вторник, 16 Апрель, 2013 08:16 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Илья Ермаков писал(а):
В том месте фреймворка, где идёт вызов HandleCtrlMsg, сделать логику запоминания "базы" и продолжения (если при прошлом вызове HandleCtrlMsg был вызван Input). А внутри Input запоминать контекст потока, снимать со стека все кадры выше запомненной "базы".
И ещё неясно, поможет ли такой механизм решить проблему интерфейсов, ведь тот же Mechanisms.Hook.TrackToResize чисто по набору параметров представляется как синхронная процедура - вызвали, а в результате сразу получаем новые размеры отображения. И пусть весь мир подождёт.

Автор:  Иван Кузьмицкий [ Вторник, 16 Апрель, 2013 08:55 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Пётр Кушнир писал(а):
ведь тот же Mechanisms.Hook.TrackToResize чисто по набору параметров представляется как синхронная процедура - вызвали, а в результате сразу получаем новые размеры отображения. И пусть весь мир подождёт.
HostMechanisms.Hook.TrackToResize в цикле использует тот же Ports.Frame.Input, а значит, решив проблему с Input, есть надежда порешать и этот вопрос.

Автор:  Илья Ермаков [ Вторник, 16 Апрель, 2013 09:57 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Коллеги, скинул наработки по ЛС. Надеюсь, будут полезны :)

Автор:  Пётр Кушнир [ Вторник, 16 Апрель, 2013 10:35 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Патчи ядра это всегда хорошо :D

Автор:  ilovb [ Среда, 17 Апрель, 2013 19:11 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Цитата:
FTGL is a free cross-platform Open Source C++ library that uses Freetype2 to simplify rendering fonts in OpenGL applications. FTGL supports bitmaps, pixmaps, texture maps, outlines, polygon mesh, and extruded polygon rendering modes.

http://sourceforge.net/projects/ftgl/

http://ftgl.sourceforge.net/docs/html/f ... orial.html

Автор:  Пётр Кушнир [ Среда, 17 Апрель, 2013 20:44 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

спасибо, но это в ветку по шрифтам :)

Автор:  Пётр Кушнир [ Четверг, 18 Апрель, 2013 19:34 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

В очередной раз победили OpenGL и реализовали различные режимы маркировки областей порта. Интересный эффект, например, формы стали сразу похожи на оригинальные, ББ-шные.
Плюс к этому я потихоньку расковыриваю HostMechanisms, решил не спешить и пока запилить платформонезависимый способ перетаскивания в пределах одного фрейма. Правда, мышь на скриншот не попала, но вот эта синяя рамка это будущая позиция контрола.
Пока что использую старый режим с циклом вокруг f.Input.
Как оказалось, работа механизмов должна выполняться в пределах одного фрейма, то есть, если при перерисовке окна фреймы перестроятся, то старый фрейм исчезнет, и будет ошибка выполнения внутри Containers.
Эта ситуация пока мешает реализовать способ Ильи Ермакова применительно к механизмам. Я решил пока не ломать совместимость в этом плане и планирую использовать сохранение контекста процедуры для реализации пользовательских диалогов.
Изображение

Автор:  Пётр Кушнир [ Понедельник, 22 Апрель, 2013 20:55 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Сегодня мы отрастили важную фичу - контекстные меню выделения.
Конь-текстное меню контрола на форме:
Изображение
Контекстное меню текста внутри контейнера в красивой рамочке, как в оригинальном ББ.
Изображение

А так же обнаружилась интересная особенность механизма фреймов. Пока не могу со стопроцентной уверенностью сказать, но в целом, ситуация такая:
Любое отображение, которое встраивает в себя другие отображения выполняет процедуру Views.InstallFrame внутри метода Views.View.Restore. Ну, дальше, фрейм добавляется к дереву фреймов корневого фрейма окна, процедуры перестройки фреймов проходят по новым фреймам и т.д.
Так вот, дело в том, что в нашем хосте проявилась интересная штука, видимо, из-за частой перерисовки всей области окна (а как ещё быть в OpenGL) происходит накопление фреймов без их очистки, то есть, они не удаляются процедурой Views.RemoveFrames при отработке цепочки вызовов Windows.Window.Restore > Views.ValidateRoot. В принципе, самое очевидное решение, выполнять удаление старых фреймов видимой области отображения вручную, при входе в метод Views.View.Restore. И он даёт результат, но ведь проблема в том, что в старом ББ такое действие нигде не применялось, а всё вполне работало и без него.
Вот к примеру, красивая картинка, состоит из контейнера-доски и встроенных шашек. При открытии начинает нагло жрать память :)
Изображение
Такие вот новости.

Автор:  Info21 [ Вторник, 23 Апрель, 2013 02:45 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Параметр keepFrames там каким-нибудь боком не может сыграть?

Автор:  Пётр Кушнир [ Вторник, 23 Апрель, 2013 07:32 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

он играет, да, но из мест, которые нам недоступны, то есть, разработчики основного каркаса задумывали именно так - например, тексты и формы сами зачищают фреймы внутри себя, но это можно понять.

Автор:  Пётр Кушнир [ Понедельник, 29 Апрель, 2013 20:00 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Продолжаем развитие подсистемы нативных контролов.
Задача усложняется тем, что виндовая реализация, при всей её громоздкости всё же использовала готовые контролы, с готовыми отлаженными поведением и внешним видом. А тут приходится реализовывать всё самому. Впрочем, абстракции фрейма не дают уйти от запланированной функциональности слишком далеко. Опять же, во фрейм можно встраивать другие фреймы, как я и поступил с полем ввода, в который интегрировано обычное текстовое отображение.

Изображение

Автор:  Info21 [ Понедельник, 29 Апрель, 2013 22:59 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Да ладно, отображение. Вьюшка.

Автор:  Иван Денисов [ Вторник, 30 Апрель, 2013 06:07 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Подхвачу ваш офтоп.
Info21 писал(а):
Да ладно, отображение. Вьюшка.
Навязывание сленга имеет место быть.
Цитата:
В сленге программистов часто используется в качестве заимствования из английского — «вьюха», «вьюшка» wiki
модель контроллер отображение, в гугле 1 300 000
модель контроллер представление, в гугле 700 000
модель контроллер вид, в гугле 190 000
модель контроллер вьюшка, в гугле 7 000.

Автор:  Info21 [ Вторник, 30 Апрель, 2013 10:00 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Профессиональному учёному стыдно ссылаться на мнение толпы.
Вас извиняет то, что Вы ещё только начинающий.

Миллиарды речевых актов, не отягощённых задумчивостью, не имеют ни малейшего веса.

Всё было сказано в комментариях к переводу в ББ от Информатики-21.
Найдите там, почитайте и подумайте.

Автор:  Иван Кузьмицкий [ Вторник, 30 Апрель, 2013 10:14 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Я, как представитель толпы, считаю, что слово "вьюшка" годится для сленга, а как термин не катит совершенно.

Автор:  Роман М. [ Вторник, 30 Апрель, 2013 11:46 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Пётр, рад что есть продвижение.
Правда, у меня есть опасение, что для реализации интерфейса в процессе переноса ЧЯ на OpenGL приходится разрабатывать разные несовместимые друг с другом модификации велосипедов, что усложняет дальнейшее развите проекта.

В элементах управления интерфейса знаки "&" в надписях означают назначение горячих клавиш. Соответственно, знак "&" отображаться не должен.
"Le&vel" -> "Level"

Автор:  Роман М. [ Вторник, 30 Апрель, 2013 11:50 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Русское слово "вьюшка" не имеет ни малейшего отношения к переводу слова "view". Если взят за основу сленг, то тем более, не может являться приемлемым термином. Так что я поддерживаю оппонентов Info21.

А как насчёт выделить эту часть разговора отдельно от обсуждения темы?

Автор:  Пётр Кушнир [ Вторник, 30 Апрель, 2013 11:57 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Ухх, оффтоп ^^

Роман М. писал(а):
в процессе переноса ЧЯ на OpenGL приходится разрабатывать разные несовместимые друг с другом модификации велосипедов
В смысле? Конкретнее, то есть.

Роман М. писал(а):
Соответственно, знак "&" отображаться не должен.
Да, действительно, до этого пока руки не дошли :)

Автор:  Роман М. [ Вторник, 30 Апрель, 2013 12:47 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Я про модификацию каркаса ЧЯ, реализацию элементов интерфейса и их поведение в OpenGL.
Пока ничего конкретного, так как код не смотрел.

Автор:  Пётр Кушнир [ Вторник, 30 Апрель, 2013 13:31 ]
Заголовок сообщения:  Re: BlackBox на OpenGL

Аа, понял о чём вы.
Ну тут понятно, что для контролов уровня Windows или Qt нужен труд не только кодеров, но и дизайнеров, а с технической стороны нужен полный уход от примитивов Ports к полноценной работе с векторными форматами графики, отображаемой в OpenGL.

Сейчас я пробую воспроизвести основное поведение контролов используюя только платформонезависимые компоненты, в некоторых местах снабжая их хост-движком, как например всплывающие меню. Контролы нужны для дальнейшего развития основного проекта. Чтобы тестировать приложения с формами и прочим на новом хосте.

Всё равно надо освоить StdCFrames полностью, чтобы понимать, как работают все стандартные контролы. А для реализации чего-то крутого наверное нужен отдельный большой проект.

Страница 5 из 7 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/