A GUI technology with ...
- ... the API and widgets of Dear ImGui and ImPlot;
- ... a simple yet effective architecture similar to React Native (pre 0.76);
- ... a Skia rendering backend (same as Chrome, Firefox, Android, Flutter, LibreOffice).
This repository contains the C++ code needed to render ImZero GUI commands and generating ImZero user interaction events.
See imzero.go for a sample driver application using the ImZero go binding Boxer. The necessary patches for ImGui are available in here, see diff for summary of the neede changes.
- Develop native desktop GUI applications in managed languages (e.g. go, TypeScript) without relying on FFI, empowered by an immediate mode API (no callbacks, no retained scene-graph).
- Proper text layouting, shaping and rendering by relying on the capabilities of Skia (SkParagraph module).
- SVG screenshots suitable to manual post-processing (i.e. preserves text and primitives).
- State-of-the art hardware accelerated immediate mode 2D drawing by relying on Skia.
Assuming Ubuntu Linux and go >=1.22 installation:
git clone https://github.com/stergiotis/imzero_client_cpp
cd imzero_client_cpp
./scripts/install.sh
./scripts/install_ubuntu2204.sh
./imgui_glfw/build.sh
./scripts/demo.sh
Note that this clones the go library Boxer and uses a go.mod
directive to use it in the go build.
This ensures that the generated dispatch.h
files match the corresponding fffi idl code in boxer.
Currently, no third-party contributions are accepted.
The MIT License (MIT) 2024 - Panos Stergiotis. See LICENSE for the full license text.