GL2D_GUI
1.0.0
Собрано на Delphi 10.4 community
p.s:
Отрисовка использует старый формат вывода изображения через glBegin/glEnd, в принципе для своих задач он подходит, вершин которые передаются с CPU->GPU не так много как с 3D объектами. Возможно когда нибудь и будет переделываться на буффер VBO
Список файлов (актуально для версии 2.14):
| Файл | Описание |
|---|---|
GUIv2 |
Основная папка |
| dlGUIFont.pas | Работа со шрифтами |
| dlGUIForm.pas | Форма со списком компонентов |
| dlGUIFormList.pas | Управление списком форм в т.ч. отображением их (FormList.Draw) |
| dlGUIObject.pas | Основной класс от которого наследованы компоненты и формы |
| dlGUIMouse.pas | Компонент для отображения курсора мыши |
| dlGUIPaletteHelper.pas | Модуль для работы с палитрой, по координатам определяет цвет в палитре |
| dlGUITypes.pas | Типы и классы которые используются в модулях |
| dlGUIVertexController.pas | Модуль для работы с вершинами в объектах (компонентах) |
| dlGUIXMLSerial.pas | Сериализация "Классов GUI" в формат XML |
components |
Компоненты |
| componentsdlGUIBevel.pas | Рамка |
| componentsdlGUICheckBox.pas | Чекбокс (переключатель) |
| componentsdlGUIComboBox.pas | Раскрывающийся список |
| componentsdlGUIEditBox.pas | Текстовое поле ввода (однострочное) |
| componentsdlGUIImage.pas | Изображение |
| componentsdlGUILabel.pas | Текст (может быть многострочным) |
| componentsdlGUIListBox.pas | Список строк |
| componentsdlGUIMainMenu.pas | Главное меню |
| componentsdlGUIPanel.pas | Панель без компонентов, может быть заменено Bevel (рамкой) |
| componentsdlGUIProgressBar.pas | Индикатор загрузки |
| componentsdlGUIRadioButton.pas | Переключатели выбора |
| componentsdlGUITable.pas | Таблица |
| componentsdlGUITrackBar.pas | Выбор числового значения с помощью ползунка |
| componentsdlGUITracker.pas | Трекер (горизонтальный/вертикальный) используется для компонентов таких как (ComboBox, ListBox, Table)... |
Textures |
Модули для работы с текстурами |
| TexturesdlTextureLoader.pas | Модуль для загрузки текстур формата (BMP, JPG, JPEG, TGA, PNG) |
| TexturesdlTextureList.pas | Управление текстурами (поиск, добавление, удаление) |
OpenGL |
Модуль для работы с OpenGL |
| OpenGLdlOpenGL.pas | Работа с фреймворком OpenGL |
Image |
Список изображений |
| ImageLogo.png | Логотип |
| ImageGUIPalette.bmp | Палитра для компонентов |
| ImageConsolas | Шрифт consolas |
| ImagesGadugi | Шрифт Gadugi |
| ImagesVerdana | Шрифт Verdana |
Все компоненты унаследованы от класса dlGUIObject.TGUIObject Для загрузки текстуры используются модули
Для начала использования GUI необходимо
Форма:
uses dlGUIForm;
...
var Form : TGUIForm; //Класс формы
...
//Загрузка текстур
TextureList.Add('GUI', '.ImageGUIPallette.bmp', GL_RGB, GL_MODULATE, GL_NEAREST, True, RGB(252, 52, 252));
TextureList.Add('GUIFont' , '.ImageVerdanaVerdana 8.fgl.png', GL_RGBA, GL_MODULATE, GL_LINEAR);
...
Form:= TGUIForm.Create('FormName', TextureList.Search('GUI')); //Создание класса формы
Form.Caption:= 'Заголовок формы';
Form.SetRect(0, 0, 200, 100); //Начальная позиция и размер формы
Form.Font.SetTextureLink(TextureList.Search('GUIFont')); //Установка шрифта формы
//Добавление формы в список форм
FormList.AddForm(Form);
... (render)
FormList.Draw;При добавлении на форму компонентов если у компонента не указана текстура и шрифт, то она назначается такой же как у формы
Кнопка (Button):
uses dlGUIButton;
...
var Button: TGUIButton;
...
Button:= TGUIButton.Create; //Создание класса кнопки
Button.SetRect(10, 10, 200, 10); //Позиция и размер кнопки
Button.Caption:= 'Текст кнопки'; //Текст
Button.OnClick:= Proc; //Вызываемая процедура
//Включить всплывающую подсказку
Button.Hint.Enable:= True;
Button.Hint.Text := 'Текст всплывающей подсказки';
Button.Flat := False; // Скрыть/Показать рамку кнопки
//Если добавляем на форму
Form.AddComponent(Button);
//Если просто нужно отобразить
Button.Draw;Поле ввода:
uses dlGUIEditBox;
...
var EditBox: TGUIEditBox;
...
EditBox:= TGUIEditBox.Create;
EditBox.SetPos(10, 10, 200, 20);
Form.AddComponent(EditBox);