Nuklear中文文檔(一)-介紹
來自專欄 Nuklear中文文檔
這是一個使用ANSI C編寫並在開源社區許可的小型即時模式的圖形用戶介面工具包。它被設計成為簡單可嵌入式用戶應用界面,也沒有任何的依賴關係,默認渲染後端或者操作系統窗口和輸入處理,而是通過使用簡單的輸入狀態去輸入和繪製命令描述原始形狀,提供一個非常模塊化的庫方法輸出。所以不是嘗試在多個平台上進行抽象並提供呈現的封層庫,而是僅僅關注實際的UI。
特點
- 即時模式的用戶圖形界面工具包
- 一個單獨的頭文件庫
- 使用C89編寫(ANSI C)
- 小代碼庫(~18kLOC)
- 專註於便攜型,效率和簡單性
- 沒有依賴關係(如果不想的話,甚至不是標準庫)
- 完全可換膚,可定製
- 佔用內存小,可根據需要或期望來進行總的內存控制
- 支持UTF-8
- 沒有全局或隱藏狀態
- 可定製的庫模塊(你可以只編譯和使用你需要的
- 可選的字體和頂點緩存輸出
- 官方文檔
Documentation
構建
該庫只包含在一個頭文件中,可以只在頭模式或者實現模式下使用。默認情況下使用頭模式
當包含或者允許包含其他頭文件,不包含實際的實現。
實現模式需要在此文件之前,在一個.c/.cpp文件之前導入這個文件,而且定義一個預處理宏,例如:
#define NK_IMPLEMENTATION#include "nuklear.h"
重要提示:你必須每次定義相同的可選標誌,每次包含"nuklear.h".這非常重要不會導致編譯錯誤或者堆棧損壞。
Example
/* init gui state */struct nk_context ctx;nk_init_fixed(&ctx, calloc(1, MAX_MEMORY), MAX_MEMORY, &font);enum {EASY, HARD};static int op = EASY;static float value = 0.6f;static int i = 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);
bindings:
有一些其他語言的綁定。
- Java by Guillaume Legris
- Golang by golang-ui@github.com
- Rust by snuk182@github.com
- Nim by zacharycarter@github.com
- Chicken by wasamasa@github.com
Lua
- L?VE-Nuklear by Kevin Harrison
- MoonNuklear by Stefano Trettel
Python
- pyNuklear by William Emerison Six (ctypes-based wrapper)
- pynk by nathanrw@github.com (cffi binding)
- CSharp/.NET by cartman300@github.com
推薦閱讀:
※貢獻方式及常見問題——Solidity中文文檔(13)
※一款APP的交互文檔從撰寫到交付
※通用產品需求文檔模板
※產品需求分析:從用戶到需求文檔的歷練
※「MDVC框架」應用實例以及簡單了解