An independent and hardcore UI framework written on modern C++ for embedded devices
- Classic OOP-based approach without bullshit
- Tons of components like buttons, sliders, switches, spinners, text fields & scroll views
- Fully automatic layouts
- Animations & rendering transforms
- Event system for external peripherals like touch screens & keyboards
- Compact image & font format with a nice tool to convert your dick pics into production-ready projects
- A clear distinction between UI, renderers and rendering targets (screens, desktop windows, etc.), all of which can be used separately
- Monochrome, RGB 565/666/888, ARGB & indexed colors support
- Out-of-box drivers for the most popular displays like ILI9341, ST7789, ST7565, GC9A01, and SH1106
- HAL for easy integration of third-party MCUs
- SFML support for cross-platform testing
First, you must enable RTTI (run-time type information), since complex components like keyboard and
selectors utilize multi-inheritance and dynamic_cast. RTTI is disabled by default on ESP-IDF to save some flash memory,
but since we’re using a fucking UI framework, a few bytes is a ridiculously small price
to pay for such immense power. RTTI itself can be enabled via
idf.py menuconfig > Compiler options > Enable C++ run-time type info (RTTI)
After that, you can clone the library into your project. It would be wise to use submodules to do this:
git submodule add https://github.com/IgorTimofeev/YOBA.git components/YOBA
Don't forget to add YOBA component to your CMakeLists.txt. It should look like this:
file(GLOB_RECURSE my_sources "*.cpp")
idf_component_register(
SRCS ${my_sources}
INCLUDE_DIRS "."
REQUIRES YOBA
)
include_directories(.)Since YOBA is hardware-independent, I thought it would be fun to add support for running it on Windows and Linux.
And SFML is perfect for such shit!
Just clone an example project and play around in your favourite IDE:
git clone https://github.com/IgorTimofeev/YOBASFMLExample.git