- Notifications
You must be signed in to change notification settings - Fork1.1k
A single-header ANSI C gui library
vurtun/nuklear
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Dear visitor,
this repository, issue tracker, etc. is abandoned in favor ofhttps://github.com/Immediate-Mode-UI/Nuklear . Any activity in this issue tracker, any pull requests, etc. will be ignored.
Looking forward to hearing from you inhttps://github.com/Immediate-Mode-UI/Nuklear
Nuklear community
This is a minimal state immediate mode graphical user interface toolkitwritten in ANSI C and licensed under public domain. It was designed as a simpleembeddable user interface for application and does not have any dependencies,a default render backend or OS window and input handling but instead provides a very modularlibrary approach by using simple input state for input and drawcommands describing primitive shapes as output. So instead of providing alayered library that tries to abstract over a number of platform andrender backends it only focuses on the actual UI.
- Immediate mode graphical user interface toolkit
- Single header library
- Written in C89 (ANSI C)
- Small codebase (~18kLOC)
- Focus on portability, efficiency and simplicity
- No dependencies (not even the standard library if not wanted)
- Fully skinnable and customizable
- Low memory footprint with total memory control if needed or wanted
- UTF-8 support
- No global or hidden state
- Customizable library modules (you can compile and use only what you need)
- Optional font baker and vertex buffer output
- Documentation
This library is self contained in one single header file and can be used eitherin header only mode or in implementation mode. The header only mode is usedby default when included and allows including this header in other headersand does not contain the actual implementation.
The implementation mode requires to define the preprocessor macroNK_IMPLEMENTATION inone .c/.cpp file before#includeing this file, e.g.:
#defineNK_IMPLEMENTATION#include"nuklear.h"
IMPORTANT: Every time you include "nuklear.h" you have to define the same optional flags.This is very important not doing it either leads to compiler errors or even worse stack corruptions.
/* init gui state */structnk_contextctx;nk_init_fixed(&ctx,calloc(1,MAX_MEMORY),MAX_MEMORY,&font);enum {EASY,HARD};staticintop=EASY;staticfloatvalue=0.6f;staticinti=20;if (nk_begin(&ctx,"Show",nk_rect(50,50,220,220),NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_CLOSABLE)) {/* fixed widget pixel width */nk_layout_row_static(&ctx,30,80,1);if (nk_button_label(&ctx,"button")) {/* event handling */ }/* fixed widget window ratio width */nk_layout_row_dynamic(&ctx,30,2);if (nk_option_label(&ctx,"easy",op==EASY))op=EASY;if (nk_option_label(&ctx,"hard",op==HARD))op=HARD;/* custom widget pixel width */nk_layout_row_begin(&ctx,NK_STATIC,30,2); {nk_layout_row_push(&ctx,50);nk_label(&ctx,"Volume:",NK_TEXT_LEFT);nk_layout_row_push(&ctx,110);nk_slider_float(&ctx,0,&value,1.0f,0.1f); }nk_layout_row_end(&ctx);}nk_end(&ctx);
There are a number of nuklear bindings for different languges created by other authors.I cannot atest for their quality since I am not necessarily proficient in either of theselanguages. Furthermore there are no guarantee that all bindings will always be kept up to date:
- Java by Guillaume Legris
- D by Mateusz Muszyński
- Golang bygolang-ui@github.com
- Rust bysnuk182@github.com
- Chicken bywasamasa@github.com
- Nim byzacharycarter@github.com
- Lua
- LÖVE-Nuklear by Kevin Harrison
- MoonNuklear by Stefano Trettel
- Python
- pyNuklear by William Emerison Six (ctypes-based wrapper)
- pynk bynathanrw@github.com (cffi binding)
- CSharp/.NET bycartman300@github.com
Developed by Micha Mettke and every direct or indirect contributor to the GitHub.
Embedsstb_texedit,stb_truetype andstb_rectpack by Sean Barrett (public domain)EmbedsProggyClean.ttf font by Tristan Grimmer (MIT license).
Big thank you to Omar Cornut (ocornut@github) for hisimgui library andgiving me the inspiration for this library, Casey Muratori for handmade heroand his original immediate mode graphical user interface idea and SeanBarrett for his amazing single headerlibraries which restored my faithin libraries and brought me to create some of my own. Finally Apoorva Joshi for his singe-headerfile packer.
------------------------------------------------------------------------------This software is available under 2 licenses -- choose whichever you prefer.------------------------------------------------------------------------------ALTERNATIVE A - MIT LicenseCopyright (c) 2017 Micha MettkePermission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copiesof the Software, and to permit persons to whom the Software is furnished to doso, subject to the following conditions:The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE.------------------------------------------------------------------------------ALTERNATIVE B - Public Domain (www.unlicense.org)This is free and unencumbered software released into the public domain.Anyone is free to copy, modify, publish, use, compile, sell, or distribute thissoftware, either in source code form or as a compiled binary, for any purpose,commercial or non-commercial, and by any means.In jurisdictions that recognize copyright laws, the author or authors of thissoftware dedicate any and all copyright interest in the software to the publicdomain. We make this dedication for the benefit of the public at large and tothe detriment of our heirs and successors. We intend this dedication to be anovert act of relinquishment in perpetuity of all present and future rights tothis software under copyright law.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ANACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTIONWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.-----------------------------------------------------------------------------About
A single-header ANSI C gui library
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.






