Code Monkey home page Code Monkey logo

HikoGUI GUI library Build on Windows Version License

A portable, low latency, retained-mode GUI framework written in C++

I started this library to make a portable, low latency and modern looking UI framework, which may also be used in proprietary (closed source) applications.

It is specifically designed to display information with low-latency, and at the screen's refresh rate. Special care is taken for making it easy for GUI element to observe and modify data external to the GUI.

You can find a lot more information, documentation, example code, news and blog posts on the main web site: https://hikogui.org/

Features

  • High level API to make simple desktop applications.
  • Modern C++20 library.
  • Retained-mode GUI.
  • GUI will dynamically track the state of the application.
  • Localization and translation.
  • Animation at the screen's refresh rate.
  • Themes; including light/dark support.
  • Editable key-bindings.

Themes with dark and light mode

  • Most or all drawing is GPU accelerated with Vulkan.
  • Text is drawn using kerning, perceptional correct blending and subpixel anti-aliasing.
  • High dynamic range and high gamut color handling.

Subpixel anti-aliasing

  • Automatic application preferences storage.
  • Many support systems:
    • logging,
    • statistics,
    • text handling,
    • text template language,
    • expression language,
    • dynamic type system.

Example

Here is some example code for an application with three radio buttons, who form a set by sharing a single value observer.

int hi_main(int argc, char *argv[])
{
    observer<int> value = 0;

    auto gui = hi::gui_system::make_unique();
    auto &window = gui.make_window(txt("Radio button example"));
    window.content().emplace<label_widget>("A1", txt("radio buttons:"));
    window.content().emplace<radio_button_widget>("B1", txt("one"), value, 1);
    window.content().emplace<radio_button_widget>("B2", txt("two"), value, 2);
    window.content().emplace<radio_button_widget>("B3", txt("three"), value, 3);

    return gui->loop();
}

Platform support

The following platforms are supported:

  • MSVC - Windows 10 (or newer) - x64

For hardware support see: hardware_support

Installation, Building and Contributing

You can find the install and build instruction for your favorite IDE in the INSTALL.md document.

You can find instruction on how to contribute to the HikoGUI library in the CONTRIBUTING.md document.

If you want to use HikoGUI as a library for your own application you can find instructions in the hikogui_hello_world example application's README.

Sponsors

If you like to become a sponsor, please contribute to Take Vos the main developer of the HikoGUI.

The following people and companies are platinum sponsors:

There are currently no platinum sponsors.

For more sponsors please see SPONSORS.

hikogui's Projects

hikotest icon hikotest

Simple unit-test framework used by HikoGUI.

tooling-bugs icon tooling-bugs

This is a collection of simple examples of bugs for different tools like compilers and IDEs.

unused icon unused

Good quality generic functionality that is no longer used by HikoGUI.

vcpkg icon vcpkg

C++ Library Manager for Windows, Linux, and MacOS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.