Description
Elements is a lightweight, fine-grained, resolution independent, modular GUI library.
Elements C++ GUI library alternatives and similar libraries
Based on the "GUI" category.
Alternatively, view Elements C++ GUI library alternatives based on common mentions on social networks and blogs.
-
libui
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports. [MIT] -
webview
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and MSHTML (Windows) -
Stacer
Linux System Optimizer and Monitoring - https://oguzhaninan.github.io/Stacer-Web -
wxWidgets
A C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base. [Own LGPL] -
nuklear
A single-header ANSI C gui library. [PublicDomain] -
GacUI
GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. [Ms-PL] -
Sciter
Sciter is an embeddable HTML/CSS/scripting engine aimed to be used as an UI layer of modern desktop applications. [Free/Commercial] -
copperspice
CopperSpice is of a set of C++ libraries used to develop cross-platform software applications. -
PDCurses
Public domain curses library with both source code and pre-compiled library available. [PublicDomain] -
Turbo Vision
A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support. -
cuda-api-wrappers
Thin C++-flavored wrappers for the CUDA Runtime API -
gtkmm
The official C++ interface for the popular GUI library GTK+. [LGPL] -
QCustomPlot
Qt plotting widget without further dependencies. [GPLv3] -
fox-toolkit
No description, website, or topics provided. -
QwtPlot3D
A feature-rich Qt/OpenGL-based C++ programming library, providing essentially a bunch of 3D-widgets. [zlib]
Get performance insights in less than 4 minutes
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of Elements C++ GUI library or a related project?
README
[Elements-Logo](docs/assets/images/elements.png) Elements C++ GUI library
[alt Photon Sampler](docs/assets/images/photon_sampler.jpg)
Introduction
Elements is a lightweight, fine-grained, resolution independent, modular GUI library. Elements is designed with these requirements in mind:
- It should be open source with a liberal, non-viral license.
- It should be usable in any application and should play well with other GUI libraries and frameworks.
- Corollary to the second requirement is that it can also be used to develop plugins. It should not own the event loop and should be able to co-exist with components within a plugin host such as VST and AU.
- It should be resolution independent and allow for HDPI displays.
- Should not rely on a “visual” GUI editor or code generator.
- It should have a declarative API using modern C++. Declarative C++ code tells you what rather than how (imperative). The GUI should be declared in C++ code.
- Keep it simple. Make it easy to use right out of the box, with a lot of examples.
- Porting to a new host target should be as easy as possible, requiring porting of only a few files.
Elements, is extremely lightweight… and modular. You compose very fine-grained, flyweight “elements” to form deep element hierarchies using a declarative interface with heavy emphasis on reuse.
Status
Please take note that Elements is still very much in flux as we are inching closer towards a version 1.0 release. The API and code is still undergoing continuous changes, and for that matter, Elements is not yet "production ready". But that should not prevent you from using Elements now! It is already in a very usable form, and more people using it will ultimately make it more robust when bugs are reported and fixed. API and usability matters and I very much welcome suggestions and contributions. Hey, this is an open source project! If you like the design, concepts and ideas behind Elements, I very much welcome collaboration.
News
- 25 September 2020: Added thumbwheels.
- 12 September 2020: Linux Artist 2D Canvas Library port feature complete.
- 10 September 2020: Linux Artist 2D Canvas Library port feature complete.
- 7 September 2020: MacOS Artist 2D Canvas Library port feature complete.
- 22 June 2020: Removed dependency on Boost. This requires some API changes to
the
app
with additional arguments. See examples. - 26 May 2020: Introducing the Artist 2D Canvas Library. The Artist library will eventually replace Element's 2d canvas implementation.
- 23 May 2020: Work in progress
notebook
gallery factory (notebook
branch). - 8 April 2020: Simplified installation (Infra and Json are now header-only submodules)
- 11 March 2020: Added Layout documentation.
- 3 March 2020: Added Design Aspects documentation.
- 23 February 2020: Setup and Installation guide updated for Windows and Linux.
- 22 February 2020: Improved font support
- 01 September 2019: Linux port completed
- 12 August 2019: Windows port completed
Discord
Feel free to join the discord channel for discussion and chat with the developers.
Documentation
Documentation is work in progress. Stay tuned...
About the Author
Joel got into electronics and programming in the 80s because almost everything in music, his first love, is becoming electronic and digital. Since then, he builds his own guitars, effect boxes and synths. He enjoys playing distortion-laden rock guitar, composes and produces his own music in his home studio.
Joel de Guzman is the principal architect and engineer at Cycfi Research and a consultant at Ciere Consulting. He is a software engineer specializing in advanced C++ and an advocate of Open Source. He has authored a number of highly successful Open Source projects such as Boost.Spirit, Boost.Phoenix and Boost.Fusion. These libraries are all part of the Boost Libraries, a well respected, peer-reviewed, Open Source, collaborative development effort.
Copyright (c) 2014-2020 Joel de Guzman. All rights reserved. Distributed under the MIT License
*Note that all licence references and agreements mentioned in the Elements C++ GUI library README section above
are relevant to that project's source code only.