Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Dec 2, 2019. It is now read-only.
/nuklearPublic archive

A single-header ANSI C gui library

NotificationsYou must be signed in to change notification settings

vurtun/nuklear

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,712 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ALL DEVELOPMENT MOVED ELSEWHERE

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

Build Status

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.

Features

  • 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

Building

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.

Gallery

screenshotscreenscreen2nodeskinninggamepad

Example

/* 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);

example

Bindings

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:

Credits

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.

License

------------------------------------------------------------------------------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

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2026 Movatter.jp