Обновить

Компактная кросс‑платформенная open source C++ библиотека для разработки приложений с графическим интерфейсом — Frenchie

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели11K
Всего голосов 12: ↑12 и ↓0+15
Комментарии5

Комментарии 5

Прошу прощения за занудство, но официальное название упоминаемой вами библиотеки Dear ImGui (не смотря на то, что в качестве префикса имен там используется просто ImGui).

Одним из следствий того, что immediate mode GUI библиотеки работают сильно иначе является то, что многие вещи, привычные в “традиционных” GUI тулкитах, здесь отсутствуют. Например, диалоговое окно для выбора файла (для реализации пунктов меню Open или Save As). Для Dear ImGui пришлось искать стороннюю библиотеку с такой функциональностью. А что у вас в библиотеке с такими вещами?

На данный момент, у Frenchie нет средств для открытия нативных диалогов ОС для выбора файла, но, этот функционал можно реализовать, используя std::filesystem::path + Frenchie. Аналогичным образом можно сделать и в Dear ImGUI.

Ограничением такого подхода будет то, что std::filesystem::path не видит подключенных переферийных и сетевых дисков. Поэтому, если вам нужен файловый диалог с доступом к вашим жестким дискам на компьютере, то можно использовать std::filesystem::path + Frenchie либо ImGUI, если нужен полноценный нативный файловый диалог, то его нужно будет открывать самостоятельно используя api ОС, либо искать стороннюю библиотеку.

Насколько просто добавить работу через другие render? Например через Linux FrameBuffer. Для embedded систем без X11 и проч. Сейчас для этого использую LVGL и в принципе доволен, но варианты это всегда хорошо (;

Frenchie также, как dear ImGUI выдает список API независимых rendering-комманд, в которых есть списки вершин рисуемых mesh-ей. У этих вершин есть свойства типа цвета, UV-координат и XYZ координат в пространстве. Если нужно использовать Linux FrameBuffer, то вам придется писать свой программный растерайзер, который будет конвертировать rendering команды Frenchie в пиксельный буфер, который вы потом сможете загружать в Linux Framebuffer. Также, вам каким-то образом нужно будет отлавливать события ввода/вывода.

Иными словами, задача интеграции Frenchie с Linux Framebuffer-ом заключается в написании кастомного rendering и platform backend-а. То, насколько это сложно зависит от того, насколько хорошо вы разбираетесь в том, как работает Linux FrameBuffer и ваша конкретная embedded платформа.

Также, при работе с Frenchie на embedded остается открытым вопрос к производительности, т.к на embedded платформах, использующих Linux FrameBuffer, как правило нет аппаратного ускорения, поэтому, неясно, насколько быстро будет работать растеризация на CPU (я так делать, по крайней мере не пробовал, но тема для меня очень и очень интересная). В общем, нужно экспериментировать. Для того же ImGUI, сделанном по похожему принципу, что и Frenchie, все нюансы касательно embedded, что я здесь описал, также актуальны.

Спасибо, понятно. Пока остаюсь на LVGL. У него нет проблем с производительностью даже на STM32F4 (;

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации