Skip to content

A-GUI - C++ based graphical user interface for games

License

Notifications You must be signed in to change notification settings

andreasdr/a-gui

Repository files navigation

License: MIT NIX Build Status MacOSX Build Status Windows/MSC Build Status Coverity Scan Build Status

LOGO

This is the home of A-GUI - C++ based graphical user interface for games

This document and repository is WIP. Expect a BETA release around 2025-03-01. See section 3. for BETA release TODO list.

1. Introduction

A-GUI is developed as part of our TDME2 3D Engine to match the requirements for stunning game graphical user interfaces.

2. Features

  • borrows some ideas from Nifty-GUI regarding XML and layouting
  • borrows some ideas from AngularJS like
    • all nodes are in the GUI node tree and can be made visible or unvisible depending on conditions
  • adds some improvements like
    • support auto keyword with nodes width and height attributes
    • layouting on demand in combination with conditions
  • supported primitive nodes from which compounds are built of
    • element
    • gradient
    • image(plus framebuffer and texture image nodes)
    • input
    • layer
    • layout
    • panel
    • scrollbars
    • space
    • table
    • text + multiline/styled text
    • video
  • supports custom templates and compound elements defined by templates and its controllers
    • compound elements
      • button
      • checkbox
      • dropdown
      • grid (needs some love still)
      • image button
      • input
      • knob
      • menu
      • progress bar
      • radio button
      • scrollarea
      • selectbox including tree view
      • selector horizontal
      • slider horizontal
      • slider vertical
      • tabs
      • moveable
    • supports custom templates in general
    • supports overriding used template of a compound element while using its controller
    • so TDME2 GUI is fully customizable in terms of appearance by modifying or adding XML template definitions
  • includes a simple script language
    • to react on events with like on-mouse-click, ... and on-change for elements
    • to manipulate conditions of elements, values of element controller and node properties
  • a MiniScript script can be attached to screen nodes
    • to react on events
    • to modify the gui nodes tree or gui nodes state
    • to implement GUI application flow(WIP)
  • supports position and color based effects in combination with conditions that can also be defined via XML
  • unicode support via UTF8

3. What is WIP or planned for first BETA

  • GUI effects via XML definitions (already working, needs bugfixes)
  • Some UI elements need some focus/disabled fixes
  • ...

4. Technology

  • targeted platforms and its current state
    • Windows/MINGW(port completed)
    • Windows/MSC(port completed)
    • Linux(port completed)
    • MacOSX(port completed)
    • FreeBSD(port completed)
    • NetBSD(port completed)
    • OpenBSD(port completed)
    • Haiku(port completed)
    • Android(port pending)
    • iOS(port pending)

5. Links

6. Collaboration

  • Interested in collaboration? Then drop me a line via mail or use the issues section on a-gui@github

7. Donation

  • I have to pay my bills, beer and stuff, so if you have any use for this open source project, like educational, productive or fun, ..., consider a donation here PayPal, here GitHub Sponsors or via Amazon Wishlist

About

A-GUI - C++ based graphical user interface for games

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published