Minimalistic GUI library for OpenGL

Related tags

GUI nanogui
Overview

NanoGUI

Docs Travis Build Status Appveyor Build Status

NanoGUI is a minimalistic cross-platform widget library for OpenGL 3.x or higher. It supports automatic layout generation, stateful C++11 lambdas callbacks, a variety of useful widget types and Retina-capable rendering on Apple devices thanks to NanoVG by Mikko Mononen. Python bindings of all functionality are provided using pybind11.

Note: this repository is currently in maintenance-only mode. A new and significantly modernized/refactored version of NanoGUI with features such as Metal/GLES/WebAssembly support is available here.

Example screenshot

Screenshot of Example 1.

Description

NanoGUI builds on GLFW for cross-platform OpenGL context creation and event handling, GLAD to use OpenGL 3.x or higher Windows, Eigen for basic vector types, and NanoVG to draw 2D primitives.

Note that the dependency library NanoVG already includes some basic example code to draw good-looking static widgets; what NanoGUI does is to flesh it out into a complete GUI toolkit with event handling, layout generation, etc.

NanoGUI currently works on Mac OS X (Clang) Linux (GCC or Clang) and Windows (Visual Studio ≥ 2015); it requires a recent C++11 capable compiler. All dependencies are jointly built using a CMake-based build system.

Creating widgets

NanoGUI makes it easy to instantiate widgets, set layout constraints, and register event callbacks using high-level C++11 code. For instance, the following two lines from the included example application add a new button to an existing window window and register an event callback.

Button *b = new Button(window, "Plain button");
b->setCallback([] { cout << "pushed!" << endl; });

The following lines from the example application create the coupled slider and text box on the bottom of the second window (see the screenshot).

/* Create an empty panel with a horizontal layout */
Widget *panel = new Widget(window);
panel->setLayout(new BoxLayout(BoxLayout::Horizontal, BoxLayout::Middle, 0, 20));

/* Add a slider and set defaults */
Slider *slider = new Slider(panel);
slider->setValue(0.5f);
slider->setFixedWidth(80);

/* Add a textbox and set defaults */
TextBox *textBox = new TextBox(panel);
textBox->setFixedSize(Vector2i(60, 25));
textBox->setValue("50");
textBox->setUnits("%");

/* Propagate slider changes to the text box */
slider->setCallback([textBox](float value) {
    textBox->setValue(std::to_string((int) (value * 100)));
});

The Python version of this same piece of code looks like this:

# Create an empty panel with a horizontal layout
panel = Widget(window)
panel.setLayout(BoxLayout(BoxLayout.Horizontal, BoxLayout.Middle, 0, 20))

# Add a slider and set defaults
slider = Slider(panel)
slider.setValue(0.5f)
slider.setFixedWidth(80)

# Add a textbox and set defaults
textBox = TextBox(panel)
textBox.setFixedSize(Vector2i(60, 25))
textBox.setValue("50")
textBox.setUnits("%")

# Propagate slider changes to the text box
def cb(value):
    textBox.setValue("%i" % int(value * 100))
slider.setCallback(cb)

"Simple mode"

Christian Schüller contributed a convenience class that makes it possible to create AntTweakBar-style variable manipulators using just a few lines of code. For instance, the source code below was used to create the following example application.

Screenshot

/// dvar, bar, strvar, etc. are double/bool/string/.. variables

FormHelper *gui = new FormHelper(screen);
ref<Window> window = gui->addWindow(Eigen::Vector2i(10, 10), "Form helper example");
gui->addGroup("Basic types");
gui->addVariable("bool", bvar);
gui->addVariable("string", strvar);

gui->addGroup("Validating fields");
gui->addVariable("int", ivar);
gui->addVariable("float", fvar);
gui->addVariable("double", dvar);

gui->addGroup("Complex types");
gui->addVariable("Enumeration", enumval, enabled)
   ->setItems({"Item 1", "Item 2", "Item 3"});
gui->addVariable("Color", colval);

gui->addGroup("Other widgets");
gui->addButton("A button", [](){ std::cout << "Button pressed." << std::endl; });

screen->setVisible(true);
screen->performLayout();
window->center();

Compiling

Clone the repository and all dependencies (with git clone --recursive), run CMake to generate Makefiles or CMake/Visual Studio project files, and the rest should just work automatically.

On Debian/Ubuntu, make sure that you have installed the following packages

$ apt-get install cmake xorg-dev libglu1-mesa-dev

To also get the Python bindings, you'll need to run

$ apt-get install python-dev

On RedHat/Fedora, make sure that you have installed the following packages

$ sudo dnf install cmake mesa-libGLU-devel libXi-devel libXcursor-devel libXinerama-devel libXrandr-devel xorg-x11-server-devel

To also get the Python bindings, you'll need to run

$ sudo dnf install python3-devel

License

NanoGUI is provided under a BSD-style license that can be found in the LICENSE file. By using, distributing, or contributing to this project, you agree to the terms and conditions of this license.

NanoGUI uses Daniel Bruce's Entypo+ font for the icons used on various widgets. This work is licensed under a CC BY-SA 4.0 license. Commercial entities using NanoGUI should consult the proper legal counsel for how to best adhere to the attribution clause of the license.

Comments
  • Launching nanogui Screen in a separate thread

    Launching nanogui Screen in a separate thread

    I would like to launch a nanogui Screen in a thread of its own. This works as intended on Linux, but crashes and burns on a Mac. Any suggestions and pointers would be very welcome.

    #include <iostream>
    #include <thread>
    #include <nanogui/screen.h>
    
    namespace ng = nanogui;
    
    int main(int argc, char *argv[])
    {
        std::thread t([]()
        {
            try
            {
                nanogui::init();
    
                ng::Screen* app = new ng::Screen(ng::Vector2i { 800, 600 }, "Test");
    
                app->drawAll();
                app->setVisible(true);
    
                nanogui::mainloop();
    
                delete app;
    
                nanogui::shutdown();
            } catch (const std::runtime_error &e)
            {
                std::string error_msg = std::string("Caught a fatal error: ") + std::string(e.what());
                #if defined(WIN32)
                    MessageBoxA(nullptr, error_msg.c_str(), NULL, MB_ICONERROR | MB_OK);
                #else
                    std::cerr << error_msg << '\n';
                #endif
                return -1;
            }
        });
        t.join();
    
        return 0;
    }
    
    opened by mrzv 38
  • GLCanvas widget

    GLCanvas widget

    Added a widget for displaying an OpenGL scene within in, separately from the main GLFW window.

    selection_081

    If there is anything crucial missing, I'm happy to add it. Serialization should work and with time, I'll add a couple more options (like drawing the border or not and setting callback functions for click, drag, release, etc.).

    The widget itself right now just allows a callback (lambda) to be defined where the actual GL drawing code resides. No configuration effort beyond that, except maybe the background color.

    Resizing does not yet change the GL texture; I didn't find any best practice in the other widgets on how to do that yet. This is a must though and I'll add it later on.

    I also added example4 which just shows this widget in action. Could be added to one of the other examples as well instead, but they seemed a bit crowded already.

    opened by fairlight1337 32
  • Custom fonts

    Custom fonts

    Replaces #282 with a much cleaner history.

    BEFORE MERGE

    • [x] Update the docs
    • [x] Test windows build.
    • [x] Place popup theme setting responsibility to parent (with docs indicating this). So ComboBox and PopupButton.
    • [x] Get rid of FontWidget and put that all in Widget.
    • [x] ~~Allow support for .otf in addition to .ttf.~~ redacted since requires libfreetype.
    • [x] Fix the checkbox bindings
    • [x] Add tooltip opacity theme override
    • [x] restructure obtuse mFont / mFontExplicit logic.
    • [x] post-mortem / rewrite history

    This PR is large, but solves once and for all the ability to embed custom fonts. I will add a review highlighting the 2 problems. I'm opening up the PR for review now, docs and Windows testing TBD after I finish the docs on the subsidiary repos (there's an automated icon font generation repo!).

    1. bin2c generates to ${CMAKE_CURRENT_BINARY_DIR}/nanogui. Makes installation easier (nanogui_resources.h was not being installed), and keeps the NANOGUI_EXTRA_INCS clean.
    2. ~~No font names are hard-coded in any implementation, except Screen::tooltipFont.~~ Changed, Widget::mTooltipFont defines this per-widget now.
    3. Theme defines the default fonts.
    4. ~~Any class that was drawing non-icon font now inherits from FontWidget.~~ It's all in Widget now.
    5. Python bindings with custom icon fonts was a little contrived, but (a) I don't think many people will use it, it's there to allow projects that really cannot use CC-BY-SA 4.0 from Entypo+, (b) there are numerous safeguards in place.

    For build system changes, see first commit message.

    opened by svenevs 22
  • Build fails: no matching function for call to 'file_dialog'

    Build fails: no matching function for call to 'file_dialog'

    /usr/ports/x11-toolkits/nanogui/work/nanogui-3e0b2c8/src/common.cpp:206:19: error: no matching function for call to 'file_dialog'
        auto result = file_dialog(filetypes, save, false);
                      ^~~~~~~~~~~
    /usr/ports/x11-toolkits/nanogui/work/nanogui-3e0b2c8/src/common.cpp:205:13: note: candidate function not viable: requires 2 arguments, but 3 were provided
    std::string file_dialog(const std::vector<std::pair<std::string, std::string>> &filetypes, bool save) {
                ^
    

    clang-4.0

    opened by yurivict 22
  • Y-Mouse offset in the examples (Ubuntu 14.04)

    Y-Mouse offset in the examples (Ubuntu 14.04)

    Hi,

    When running the examples (example1, example2, example3), I have a mouse offset in positive Y direction for all widgets. Also when I move a window inside nanogui up to the upper border with that offset present, it is not drawn properly on that border. See pictures for details.

    ng1 ng2

    When I compile my own applications with nanogui, that doesn't happen. So something is off in the example code.

    opened by fairlight1337 21
  • [Suggestion] Add a step-by-step guide on including it into an existing project.

    [Suggestion] Add a step-by-step guide on including it into an existing project.

    I have tried for hours to start with an empty project and then adding nanogui to it but it did not work. I tried mirroring the configuration properties, but the included examples are so different from a default empty project, so if I want to add it to an existing project I am affraid I will mess up other parts.

    I have no idea what the issue could be or what I should pay attention to. This makes troubleshooting very difficult. I expected it to be straightforward (adding header and library directories, including nanogui/nanogui.h and linking nanogui.lib) but it is not. Perhaps someone could add a HOWTO on adding it to a VS project to get a minimal working example?

    opened by jmorez 21
  • how to build nanogui from source [WINDOWS]

    how to build nanogui from source [WINDOWS]

    hey, i tried build from source but i get this error The NanoGUI dependency repositories (GLFW, etc.) are missing! You probably did not clone the project with --recursive. It is possible to recover by calling "git submodule update --init --recursive"

    What should i do?

    opened by navaneeth-dev 19
  • Entypo+ and associated defs, many new docs, colorpicker, updated examples

    Entypo+ and associated defs, many new docs, colorpicker, updated examples

    Definitely squash this, there was a lot of intermediate commits for the entypo stuff that have now been reverted or destroyed.

    ~~NOTE: I'm going through and doing a PR review right now. Don't review until this is gone since this is a huge update and most of it is just noise from doc comments.~~

    1. It would be kind of tedious to separate this out into multiple PRs, but it can be done if you prefer. Things like docs links got added in a few different locations relating to entypo.

    2. See annotations in PR review. Basically, this all boils down to the following:

      • Entypo+ updates
      • ColorPicker has been modified
        • I believe the new functionality makes sense. These changes came about from writing the docs and not understanding how it worked. The callback gets executed too frequently. Since it's used in the form helper, I decided it needed to change ;)
      • Sad face. Docs required getting rid of using for eigen vector types :/
    3. I'm going to split off onto another branch now for the remaining docs updates. I made a serializer example, but that and the changes made for the docs will be in their own self-contained PR because they aren't exactly trivial changes.

    The rest is just docs updates really. Highlight of fake docs build entypo.h :)

    P.S. In future merge, you may need to wipe the environment for RTD to build it right because of the change in requirements.txt and more specifically if exhale.pyc is still floating around it will complain about no setup(app) "are you sure it is a sphinx extension" because it wasn't.

    opened by svenevs 16
  • Fix windows issues

    Fix windows issues

    I faced build failures and runtime crashes on windows build.

    And I fixed them with this PR. Please review it.

    Problems about Eigen

    I faced build failures in example2 and example3. Error messages are these.

    Severity	Code	Description	Project	File	Line	Suppression State
    Error	C2719	'<_Args_0>': formal parameter with requested alignment of 16 won't be aligned	example3	C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional	276	
    Error	C2719	'v': formal parameter with requested alignment of 16 won't be aligned	example2	C:\Users\omochi\work\github\wjakob\nanogui\include\nanogui\formhelper.h	183	
    Error	C2719	'<_Args_0>': formal parameter with requested alignment of 16 won't be aligned	example2	C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\functional	276	
    Error	C2719	'v': formal parameter with requested alignment of 16 won't be aligned	example3	C:\Users\omochi\work\github\wjakob\nanogui\include\nanogui\formhelper.h	183	
    

    I faced runtime crash in example1.

    In example1, program crashes after launch it immediately with this message.

    Assertion `(reinterpret_cast<size_t>(array) & (sizemask)) == 0 && "this assertion
    is explained here: http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html
         READ THIS WEB PAGE !!! ****"' failed.
    

    They are both from this Eigen design.

    Details is explained at this page.

    https://eigen.tuxfamily.org/dox/group__TopicUnalignedArrayAssert.html

    I fixed them by following workaround in this article.

    Commits are these.

    • add alignment control for eigen problem 98c4ff3
    • fix Arcball pybind type parameter bf99ec1
    • change setter to const-ref for eigen types a716aab
    • const-ref in pybind a329718

    Problem about OpenGL

    In example3, program crashes after launch it immediately at first OpenGL function calls without any messages. This is from lack of setting up GLAD for windows.

    I fixed it in this commit.

    • add glad init for windows b00670f

    Problem about build python binding

    In my environment, cmake does not detect python library for pybind module.

    I solved problem with this.

    • fix CMakeLists to build with python for windows bd1e7ef

    I don't understand deeply it and cmake. Sorry. And I could not find out about original value ${MITSUBA_PYTHON_VERSION}.


    I checked commits by building and running examples 1 to 4 with my windows PC and Mac.

    My environment is below.

    windows

    • Windows 10
    • Visual Studio Community 2015

    mac

    • macOS Sierra
    opened by omochi 15
  • Vscrollpanel popup follow fix

    Vscrollpanel popup follow fix

    popup.cpp#L65 to 67 are questionable, but the anchor height always seems to be a fixed value (previously).

    Adjusting this changes the offset of the anchor (which we update when the vscrollpanel is scrolled)

    opened by willxinc 13
  • quick edit for IntBox, FloatBox and ComboBox

    quick edit for IntBox, FloatBox and ComboBox

    Hi Wenzel,

    I added some simple features to more quickly edit the value of IntBox, FloatBox and ComboBox using scrolling and dragging which makes it much more convenient than typing a value. Here are the full list:

    • added scrollEvent support for ComboBox
    • added right dragging control for IntBox and FloatBox (à la Blender)
    • added scrollEvent for same effect
    • added double right click to reset to default value for TextBox

    Let me know if you have some feedback for improvements. You can easily test these features on Example 1 or 2. Also I did not add the Python bindings for these. When you approve the changes, you or I can add them quickly to the PR.

    Thanks, Romain

    opened by romp13 12
  • How to include Custom Fonts?

    How to include Custom Fonts?

    I just want to use a new ttf Font, because the default font do not support CJK. but I do not find any API to load a new font, so How to include Custom Fonts?

    in NanoGUI document, I find something.

    # Including Custom Fonts
    
    NanoGUI uses the [Roboto](https://fonts.google.com/specimen/Roboto) font for text, and [Entypo](http://www.entypo.com/) font for icons. If you wish to add your own custom font, all you need is a True Type file (a .ttf extension). NanoGUI will glob all fonts found in resources by expanding resources/*.ttf. So if you had the directory structure
    
    myproject/
        CMakeLists.txt      <- where this code is
        fonts/
            superfont.ttf
        ext/
            nanogui/
                resources/
    
    You simply need to copy the superfont.ttf to NanoGUI’s resources directory:
    
    file(
      COPY ${CMAKE_CURRENT_SOURCE_DIR}/fonts/superfont.ttf
      DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/ext/nanogui/resources/superfont.ttf
    )
    
    When you build the code, there should be a file nanogui_resources.h generated. If everything worked, your new font should have been included.
    

    Does this mean I have to recomplie NanoGUI? but I don't want to recomplie this library, who can help me please。 /(ㄒoㄒ)/~~

    opened by Hankyin 1
  • colorwheel.cpp.obj: too many sections (32966) or colorwheel.cpp.obj: File too big

    colorwheel.cpp.obj: too many sections (32966) or colorwheel.cpp.obj: File too big

    when i use clion (cmake) build example1,it was fail at 85% and throw the error : i don't know what should i do now . can every one help me ? thanks !!!

    -Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/as.exe: CMakeFiles\nanogui-obj.dir\src\colorwheel.cpp.obj: too many sections (32966)
    C:\Users\majiao\AppData\Local\Temp\cckNLntO.s: Assembler messages:
    C:\Users\majiao\AppData\Local\Temp\cckNLntO.s: Fatal error: can't write CMakeFiles\nanogui-obj.dir\src\colorwheel.cpp.obj: File too big
    C:/PROGRA~2/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/as.exe: CMakeFiles\nanogui-obj.dir\src\colorwheel.cpp.obj: too many sections (32966)
    C:\Users\majiao\AppData\Local\Temp\cckNLntO.s: Fatal error: can't close CMakeFiles\nanogui-obj.dir\src\colorwheel.cpp.obj: File too big
    mingw32-make.exe[3]: *** [CMakeFiles/nanogui-obj.dir/src/colorwheel.cpp.obj] Error 1
    mingw32-make.exe[2]: *** [CMakeFiles/nanogui-obj.dir/all] Error 2
    CMakeFiles\nanogui-obj.dir\build.make:412: recipe for target 'CMakeFiles/nanogui-obj.dir/src/colorwheel.cpp.obj' failed
    CMakeFiles\Makefile2:173: recipe for target 'CMakeFiles/nanogui-obj.dir/all' failed
    CMakeFiles\Makefile2:288: recipe for target 'CMakeFiles/example3.dir/rule' failed
    Makefile:247: recipe for target 'example3' failed
    mingw32-make.exe[1]: *** [CMakeFiles/example3.dir/rule] Error 2
    mingw32-make.exe: *** [example3] Error 2
    
    
    opened by majiaoliya 0
  • cmake error in clion

    cmake error in clion

    i download zip and unzip, use clion open dir and project, the clion cmake auto run, and back a error my os is windows10.

    "H:\mysoft\clion\clionInstall\CLion 2021.1.3\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" G:\Xubuntu_Work_Space\From_Xubuntu\codeTest_2019_2_21\git\gitclone\nanogui-master
    CMake Error at CMakeLists.txt:15 (message):
      The NanoGUI dependency repositories (GLFW, etc.) are missing! You probably
      did not clone the project with --recursive.  It is possible to recover by
      calling "git submodule update --init --recursive"
    
    
    -- Configuring incomplete, errors occurred!
    See also "G:/Xubuntu_Work_Space/From_Xubuntu/codeTest_2019_2_21/git/gitclone/nanogui-master/cmake-build-debug/CMakeFiles/CMakeOutput.log".
    
    [Finished]
    
    

    what should i do now ? thanks !!!

    opened by majiaoliya 0
  • Identifier 'gluniform1i' is not defined

    Identifier 'gluniform1i' is not defined

    I compiled the nanogui library and used it as a third-party library in the project. I also imported include and lib, but the error of undefined identifier "gluniform1i" occurred during generation. How can I solve it? Is it because the nanogui library is not compiled well?

    opened by qiuchun 2
  • msvc and vcpkg static build compiles, but runtime fails without nanogui.dll

    msvc and vcpkg static build compiles, but runtime fails without nanogui.dll

    Using vcpkg version 2020.06.15 with command vcpkg install nanogui:x64-windows-static, also had to rename occurrences <Eigen/...> to <eigen3/Eigen/...> to compile the executable, but running it fails without nanogui.dll in target directory

    opened by Slazzo 0
Owner
Wenzel Jakob
Assistant professor leading EPFL's Realistic Graphics Lab. My research involves inverse graphics, material appearance modeling and physically based rendering.
Wenzel Jakob
NanoGUI is a minimalistic cross-platform widget library for OpenGL 3.x/DirectX11[12]/Vulkan

NanoGUI NanoGUI is a minimalistic cross-platform widget library for OpenGL 3.x/DirectX11[12]/Vulkan. It supports automatic layout generation, stateful

dalerank 73 Dec 22, 2022
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.4k Jan 2, 2023
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI

ImGui Goodies This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI. Currently, th

null 95 Nov 19, 2022
AttoUI – minimalistic C UI toolkit for Wayland

AttoUI – minimalistic UI toolkit for Wayland AttoUI is library that makes creating GUI programs for Wayland in C as simple and bloatless as it can. Th

MasFlam 5 Jan 8, 2022
Elements C++ GUI library

Elements C++ GUI library Introduction Elements is a lightweight, fine-grained, resolution independent, modular GUI library. Elements is designed with

Cycfi Research 2.5k Dec 30, 2022
A single-header ANSI C immediate mode cross-platform GUI library

Nuklear This is a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed a

Immediate Mode UIs, Nuklear, etc. 6.7k Dec 24, 2022
A library for creating native cross-platform GUI apps

Yue A library for creating native cross-platform GUI apps. Getting started Documentations FAQ Development Examples Sample apps (with screenshots) Muba

Yue 2.8k Jan 7, 2023
A barebones single-header GUI library for Win32 and X11.

luigi A barebones single-header GUI library for Win32 and X11. Building example Windows Update luigi_example.c to #define UI_WINDOWS at the top of the

Nakst 235 Dec 30, 2022
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 6.6k Jan 8, 2023
raygui is a simple and easy-to-use immediate-mode-gui library.

raygui is a simple and easy-to-use immediate-mode-gui library.

Ray 2k Dec 30, 2022
Cross-platform GUI library

Harbour Nuklear backend This backend provides support for Nuklear. It works on on all supported platforms with an OpenGL backend, including iOS and An

Rafał Jopek 2 Jan 19, 2022
Fishui - CutefishOS GUI library, based on Qt Quick.

FishUI FishUI is a GUI library based on QQC2 (Qt Quick Controls 2), every Cutefish application uses it. Features Light and Dark Mode Borderless window

CutefishOS 200 Dec 30, 2022
libui-ng: a portable GUI library for C

libui-ng: a portable GUI library for C Fork of andlabs/libui. This README is being written. Status See CHANGELOG.md Old announcements can be found in

null 289 Jan 7, 2023
Nana is a C++ standard-like GUI library

Nana C++ Library Linux (gcc 8.3.0 and 9.2) including (nana-demos) Windows (Microsoft (R) Build Engine version 15.9.21) Nana is a C++ standard-like GUI

Jinhao 2.1k Jan 3, 2023
Examples, tutorials and applications for the LVGL embedded GUI library

Examples, tutorials and applications for the LVGL embedded GUI library

LVGL 441 Nov 11, 2022
Addon widgets for GUI library Dear ImGui.

ImGui-Addons Addon widgets for GUI library Dear ImGui. File Dialog A simple cross-platform file dialog that uses dirent interface for reading director

null 286 Jan 7, 2023
GWork is a skinnable, embeddable GUI library with an extensive control set

GWork is a skinnable, embeddable GUI library with an extensive control set. Control rendering is abstracted, and can be implemented by any application wishing to use the library. Gwork (pronounced "gw-orc") is a fork of the GUI library GWEN. It was forked to fix issues with GWEN and add new features.

Bill Quith 198 Nov 24, 2022
The HorusUI library allows you to quickly develop GUIs for your applications by leveraging the ease of use provided by immediate mode GUI concepts.

Immediate Mode Graphical User Interface for Tools OVERVIEW The HorusUI library allows you to quickly develop GUIs for your applications by leveraging

null 133 Dec 12, 2022
HastyBadger is a branch of the excellent widget and GUI library Turbo Badger.

Branch Notice - HastyBadger Hasty is not Turbo. HastyBadger is a branch of the excellent widget and GUI library Turbo Badger. Notabe additions are c++

Michael Tesch 38 Nov 17, 2022