Skip to content

insearcher/guimp

Repository files navigation

guimp

Мини GIMP, созданный для того, чтобы показать возможности LIBUI

Demo Video

Как работать с libui:

В json-e пользователь создает сколько угодно окон, в ручную присваивая им id, позицию, размер и ивенты.

Для каждого окна, пользователь создает элементы интерфейса в виде дерева: изначальный элемент (канвас) присваивается как родитель новым элементам, в свою очередь элементы, чей родитель канвас, также могут быть заданы как родители для других элементов, и т.д., таким образом строится дерево элементов интерфейса, и отрисовывая это дерево, обходя его в ширину (bfs) получается так, что дочерние элементы перекрывают родительские и таким образом пользователь выбирает, что и как должно перекрываться (то есть так реализованы слои).

Для каждого элемента пользователь задает его id, позицию, размер, ивенты, текстуры, параметры и, естественно, родителя (если это не канвас).

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

Что такое параметры элементов - это их функционал, элемент может быть невидимым, может не отлавливать мышь, может быть не зависимым от родителя и т.д.

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published