ZenGUI — графический интерфейс пользователя для движка ZenGL.
Текущая версия:
0.1a (альфа)
Необходимая версия ZenGL:
0.3.0+Преимущества:- Большое количество компонент. 16 стандартных, присутствует возможность реализации своих.
- Реализован на ООП. Можно создать свой компонент на основе любого имеющегося. Все объекты — referececounted (есть нюансы обращения).
- Оконный редактор из-коробки как в Delphi. Поддерживает RTTI, способен генерировать компилируемый паскалем код, с последующей возможностью эти файлы загружать для дальнейшего редактирования. Есть частичная поддержка событий (код события в редакторе править нельзя, но процедуры под события он генер��рует, остается только заполнить код в сгенерированном файле).
- Полная поддержка скинов. Все объекты — скинируемые. Скин представляет из себя zip-архив (только *.skin c файлом настроек и текстурами для отображения)
- Поддержка шрифтов. На любой объект можно назначить шрифт, есть дефолтный шрифт.
- State-машина. Пока-что примитивная, позволяет в один момент переключать текущие окна другими.
- Эффекты. На формы можно назначать эффекты появления. В коробке есть несколько эффектов (deZoomIn, deFadeIn, deSlideDown), но и свой эффект на основе других сделать несложно.
Кроме ручного создания объектов,
код создания можно сгенерировать редактором (подробнее):
- WSYIWSG-редактирование окошек как в Delphi. Все свойства компонент можно редактировать в инспекторе объектов.
- Генерирует файл GUI, который компилируется паскалем. Представляет удобочитаемый формат, который можно отредактировать и вручную. Всегда при сохранении делает *.bak файл, чтобы при возможном краше не испортить файл (альфа же).
- Поддерживает события, вроде клика по кнопке, можно назначить кнопке события, после чего редактор сгенерирует функцию, в которую останется только вставить код.
- Если указать рабочую директорию, умеет на лету подгружать графические файлы и шрифты для максимального WYSIWYG.
- Позволяет натягивать скин на лету, указав файл.
Скины:
- Скин ZenGUI — zip архив. Содержит файл config.ini, в котором указаны все настройки для каждой из текстур. Тектура имеет имя tx*.tga с очевидным для чего она именем.
- Скины можно перегружать на лету.
Пример использования:
Для начала, нужно создать объект GUI (предварительно загрузив скин и шрифты):
// Load font
fntMain := font_LoadFromFile('Data/Main.zfi');
// Create skin (file is a usual zip archive)
gSkin := zglTGuiSkin.Create('Data/main.skin');
// Creating an gui object (set skin, screen rect and
// default font(normal, active, disabled))
Gui := zglTGui.Create(gSkin, 0, 0, 800, 600,
zglTFontContainer.Create(
zglTFontObject.Create(fntMain, 1, $000000, 255),
zglTFontObject.Create(fntMain, 1, $101010, 255),
zglTFontObject.Create(fntMain, 1, $555555, 128)
));
Затем, если нужно, создавать объекты, и добавлять их в объект-родитель (например, форму в сам GUI):
// CREATE SOME FORM HERE
frmSome := zglTForm.Create(Gui, 10, 10, 400, 200, 'I am form', true);
// Move it to the screen center
frmSome.MoveToCenter;
// Make it resiziable
frmSome.CanResize := true;
// And moveable
frmSome.CanMove := true;
// Add it to the gui that draws last one
Gui.Items.Add(frmSome);И напоследок нужно вызвать методы Draw и Update(dt) когда нужно (здесь Draw и Update - процедуры прорисовки и апдейта ZenGL):
procedure Draw;
begin
// Draw gui (last)
Gui.Draw;
// and gui's mouse
Gui.DrawMouse;
end;
procedure Update(dt: Double);
begin
// Update Gui (first)
Gui.Update(dt);
end;Справка:
Справки по базовом использованию пока нет, но она скоро будет.
Скачать:
Для правильной работы и компиляции демок в статичном режиме gui должен быть положен рядом с другими папками ZenGL'а, например: bin, demos, doc, extra,
gui, headers, lib, src, tools и должен быть распакован без подпапок, внутри gui должно быть четыре папки: bin, demos, src, tools.
Внимание: ZenGUI в альфа-стадии, хоть и делался около полугода, возможны баги, если обнаружите такой, не стесняйтесь, пишите о них тут: я постараюсь их исправить.
Сверху вниз: Редактор, откомпилированный сгенерированный редактором файл, другой пример GUI (с другим скином).