Skip to content

hikogui/hikogui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.