Nuklear中文文檔(一)-介紹

Nuklear中文文檔(一)-介紹

來自專欄 Nuklear中文文檔

這是一個使用ANSI C編寫並在開源社區許可的小型即時模式的圖形用戶介面工具包。它被設計成為簡單可嵌入式用戶應用界面,也沒有任何的依賴關係,默認渲染後端或者操作系統窗口和輸入處理,而是通過使用簡單的輸入狀態去輸入和繪製命令描述原始形狀,提供一個非常模塊化的庫方法輸出。所以不是嘗試在多個平台上進行抽象並提供呈現的封層庫,而是僅僅關注實際的UI。

特點

  • 即時模式的用戶圖形界面工具包
  • 一個單獨的頭文件庫
  • 使用C89編寫(ANSI C)
  • 小代碼庫(~18kLOC)
  • 專註於便攜型,效率和簡單性
  • 沒有依賴關係(如果不想的話,甚至不是標準庫)
  • 完全可換膚,可定製
  • 佔用內存小,可根據需要或期望來進行總的內存控制
  • 支持UTF-8
  • 沒有全局或隱藏狀態
  • 可定製的庫模塊(你可以只編譯和使用你需要的
  • 可選的字體和頂點緩存輸出
  • 官方文檔

Documentation?

rawgit.com

構建

該庫只包含在一個頭文件中,可以只在頭模式或者實現模式下使用。默認情況下使用頭模式

當包含或者允許包含其他頭文件,不包含實際的實現。

實現模式需要在此文件之前,在一個.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框架」應用實例以及簡單了解

TAG:需求文檔 | 開發文檔 | 文檔 |