Skip to content

Declarative UI toolkit for modern C++20

License

MPL-2.0, MPL-2.0 licenses found

Licenses found

MPL-2.0
LICENSE
MPL-2.0
COPYING
Notifications You must be signed in to change notification settings

aui-framework/aui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

AUI (Advanced Universal Interface)

build badge Codacy Badge

logo

Cross-platform high performance efficient module-based framework for developing and deploying hardware accelerated graphical desktop applications using modern C++20.

The project aims to provide developers with the best possible experience (including, but not limited to: dependency management, packaging, ui building, styling, debugger visualizing).

Documentation | Getting started | News | Discussions

Quickstart

Linux dependencies

If you are using Linux, install following dependencies:

Ubuntu

sudo apt install pkg-config libfontconfig-dev libxcursor-dev libxi-dev libxrandr-dev libglew-dev libstdc++-static libpulse-dev libdbus-1-dev

Fedora

sudo dnf install fontconfig-devel libXi libglvnd-devel libstdc++-static glew-devel pulseaudio-libs-devel

Your project CMake script

To link AUI to your project, use the following CMake script:

# Standard routine
cmake_minimum_required(VERSION 3.16)
project(aui_app)


# Tip: in a production project don't use branch name, use a specific name tag (i.e. v1.1.1),
# but for a sandbox project branch name is perfectly enough
set(AUI_VERSION master)

# Use AUI.Boot
file(
        DOWNLOAD
        https://raw.githubusercontent.com/aui-framework/aui/${AUI_VERSION}/aui.boot.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/aui.boot.cmake)
include(${CMAKE_CURRENT_BINARY_DIR}/aui.boot.cmake)

# import AUI
auib_import(aui https://github.com/aui-framework/aui
        COMPONENTS core views
        VERSION ${AUI_VERSION})


# Create the executable. This function automatically links all sources from the src/ folder,
# creates CMake target and places the resulting executable to bin/ folder.
aui_executable(${PROJECT_NAME})

# Link required libs
aui_link(${PROJECT_NAME} PRIVATE aui::core aui::views)

Key features

  • Extended common types (containers, strings, streams, etc...)
  • Graphical User Interfaces, including framework tools for fast declarative UI producing using modern C++ capabilities
  • Resource compiler (assets)
  • Internationalization (i18n)
  • DPI support
  • CMake deployment scripts
  • Model binding and ORM
  • Encryption
  • IO streams
  • Networking, including http(s) requests
  • DBMS integration including SQL query builder
  • Both asynchronous and synchronous application architecture support

Module list

  • aui.core - basic types (containers, strings, streams, etc...)
  • aui.crypt - wrapper around OpenSSL for encryption functionality
  • aui.curl - wrapper around libcurl for http/https requests
  • aui.designer - UI Designer (in dev)
  • aui.data - DBMS interface and ORM
  • aui.image - popular image format loader
  • aui.json - JSON parser
  • aui.mysql - MySQL driver for aui.data
  • aui.network - networking
  • aui.sqlite - SQLite driver for aui.data
  • aui.svg - SVG image loader
  • aui.toolbox - resource compiler
  • aui.views - UI toolkit
  • aui.xml - XML parser

Feature support

  • - equals unsupported
  • ? equals planned
  • + equals almost completely supported
  • # equals fully supported
Feature or module Windows Vista/7/8/8.1/10 Windows XP Linux Android MacOS iOS
aui.core # # # # # #
aui.crypt # # # # # #
aui.curl # # # # # #
aui.data # # # # # #
aui.designer ? ? ? - ? -
aui.image # # # # # #
aui.json # # # # # #
aui.mysql # # # # ? ?
aui.network # # # # + +
aui.sqlite # # # # # #
aui.svg # # # # # #
aui.toolbox # # # - # -
aui.views # ? + + + +
aui.xml # # # # # #
Assets # # # # + +
Filesystem # # # # + +
Process creation # # # - ? -
Compiler Support
MSVC 19+ (Visual Studio 20+) Full
gcc (8+) Full
MinGW (8+) Partial
Cross-compile MinGW Partial
clang Full

Used libraries

  • libcurl for http/https requests
  • OpenSSL for encryption
  • OpenGL as graphics hardware acceleration backend
  • glm for linear algebra
  • stbimage for image loading
  • freetype2 for font rendering

Examples

Check the examples/ folder.

Fractal

Views

Minesweeper

Licensing

Please refer to LICENSE.

Our project is published under Mozilla Public License Version 2.0 (the License). In short, you can use AUI for free in your private (i.e, that does not go outside your company) projects.

If you would like to publish your project (including, but not limited to: sell, sign, release in software stores like Google Play or App Store), does not matter open source, closed source or proprietary, the License obligates you to:

  • Mention your project uses "AUI Framework" in your legal notice.
  • Release your changes to AUI (if any) under the same terms (the License).

As for the latter, you are welcome to upstream your changes (i.e., propose your changes to this repository). If you decided to not do so, please keep in mind that the License allows us to take your changes and upstream them.

Maintaining

The AUI framework is maintained by Alexey Titov (Alex2772, alex2772sc 'at' gmail.com) with contributions from many other people.

Let us know if your contribution is not listed or mentioned incorrectly, and we'll make it right.

Contributing

You are welcome to open issues and pull requests on our GitHub repository. This project is maintained by a team of volunteers on a reasonable-effort basis. As such, we can accept your issue, but we can't guarantee resolution. It's all depends on severity and our own needs. In fact, we'd be happy if you submit a pull request. In this case we'll do our best to help you merge your changes to upstream.

Please refer to CONTRIBUTING.md