Skip to content

Rendering of ImZero GUI library commands, generating of ImZero input commands.

License

Notifications You must be signed in to change notification settings

stergiotis/imzero_client_cpp

Repository files navigation

ImZero Clients

A GUI technology with ...

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.

Screenshots

SVG "screenshot" Unedited SVG (generated by Skia): skia svg Text rendered as path: skia nofont svg
For comparison: Plain ImGui renderer with Freetype imgui png
Sketching graphical effect filter Screenshot: sketch png SVG: sketch png

Features

  1. 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).
  2. Proper text layouting, shaping and rendering by relying on the capabilities of Skia (SkParagraph module).
  3. SVG screenshots suitable to manual post-processing (i.e. preserves text and primitives).
  4. State-of-the art hardware accelerated immediate mode 2D drawing by relying on Skia.

Running the demo

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.

Contributing

Currently, no third-party contributions are accepted.

License

The MIT License (MIT) 2024 - Panos Stergiotis. See LICENSE for the full license text.

About

Rendering of ImZero GUI library commands, generating of ImZero input commands.

Resources

License

Stars

Watchers

Forks

Packages

No packages published