Files
coah80-LegacyVulkEdition/docs/nuklear-api-reference.md

48 KiB

Nuklear API Quick Reference

Extracted from Minecraft.Client/ThirdParty/nuklear/nuklear.h.


Core Structs

struct nk_color  { nk_byte r, g, b, a; };
struct nk_colorf { float r, g, b, a; };
struct nk_vec2   { float x, y; };
struct nk_vec2i  { short x, y; };
struct nk_rect   { float x, y, w, h; };
struct nk_recti  { short x, y, w, h; };

Constructors

struct nk_vec2 nk_vec2(float x, float y);
struct nk_vec2 nk_vec2i(int x, int y);
struct nk_vec2 nk_vec2iv(const int *xy);
struct nk_rect nk_rect(float x, float y, float w, float h);
struct nk_rect nk_recti(int x, int y, int w, int h);
struct nk_rect nk_get_null_rect(void);
struct nk_vec2 nk_rect_pos(struct nk_rect);
struct nk_vec2 nk_rect_size(struct nk_rect);

Context (Init / Shutdown)

nk_bool nk_init_default(struct nk_context*, const struct nk_user_font*);
nk_bool nk_init_fixed(struct nk_context*, void *memory, nk_size size, const struct nk_user_font*);
nk_bool nk_init(struct nk_context*, const struct nk_allocator*, const struct nk_user_font*);
nk_bool nk_init_custom(struct nk_context*, struct nk_buffer *cmds, struct nk_buffer *pool, const struct nk_user_font*);
void    nk_clear(struct nk_context*);
void    nk_free(struct nk_context*);

Input

void nk_input_begin(struct nk_context*);
void nk_input_motion(struct nk_context*, int x, int y);
void nk_input_key(struct nk_context*, enum nk_keys, nk_bool down);
void nk_input_button(struct nk_context*, enum nk_buttons, int x, int y, nk_bool down);
void nk_input_scroll(struct nk_context*, struct nk_vec2 val);
void nk_input_char(struct nk_context*, char);
void nk_input_glyph(struct nk_context*, const nk_glyph);
void nk_input_unicode(struct nk_context*, nk_rune);
void nk_input_end(struct nk_context*);

Input Query

nk_bool nk_input_has_mouse_click(const struct nk_input*, enum nk_buttons);
nk_bool nk_input_has_mouse_click_in_rect(const struct nk_input*, enum nk_buttons, struct nk_rect);
nk_bool nk_input_has_mouse_click_in_button_rect(const struct nk_input*, enum nk_buttons, struct nk_rect);
nk_bool nk_input_has_mouse_click_down_in_rect(const struct nk_input*, enum nk_buttons, struct nk_rect, nk_bool down);
nk_bool nk_input_is_mouse_click_in_rect(const struct nk_input*, enum nk_buttons, struct nk_rect);
nk_bool nk_input_is_mouse_click_down_in_rect(const struct nk_input *i, enum nk_buttons id, struct nk_rect b, nk_bool down);
nk_bool nk_input_any_mouse_click_in_rect(const struct nk_input*, struct nk_rect);
nk_bool nk_input_is_mouse_prev_hovering_rect(const struct nk_input*, struct nk_rect);
nk_bool nk_input_is_mouse_hovering_rect(const struct nk_input*, struct nk_rect);
nk_bool nk_input_is_mouse_moved(const struct nk_input*);
nk_bool nk_input_mouse_clicked(const struct nk_input*, enum nk_buttons, struct nk_rect);
nk_bool nk_input_is_mouse_down(const struct nk_input*, enum nk_buttons);
nk_bool nk_input_is_mouse_pressed(const struct nk_input*, enum nk_buttons);
nk_bool nk_input_is_mouse_released(const struct nk_input*, enum nk_buttons);
nk_bool nk_input_is_key_pressed(const struct nk_input*, enum nk_keys);
nk_bool nk_input_is_key_released(const struct nk_input*, enum nk_keys);
nk_bool nk_input_is_key_down(const struct nk_input*, enum nk_keys);

Input Enums

enum nk_keys {
    NK_KEY_NONE, NK_KEY_SHIFT, NK_KEY_CTRL, NK_KEY_DEL, NK_KEY_ENTER,
    NK_KEY_TAB, NK_KEY_BACKSPACE, NK_KEY_COPY, NK_KEY_CUT, NK_KEY_PASTE,
    NK_KEY_UP, NK_KEY_DOWN, NK_KEY_LEFT, NK_KEY_RIGHT,
    NK_KEY_TEXT_INSERT_MODE, NK_KEY_TEXT_REPLACE_MODE, NK_KEY_TEXT_RESET_MODE,
    NK_KEY_TEXT_LINE_START, NK_KEY_TEXT_LINE_END, NK_KEY_TEXT_START, NK_KEY_TEXT_END,
    NK_KEY_TEXT_UNDO, NK_KEY_TEXT_REDO, NK_KEY_TEXT_SELECT_ALL,
    NK_KEY_TEXT_WORD_LEFT, NK_KEY_TEXT_WORD_RIGHT,
    NK_KEY_SCROLL_START, NK_KEY_SCROLL_END, NK_KEY_SCROLL_DOWN, NK_KEY_SCROLL_UP,
    NK_KEY_MAX
};

enum nk_buttons {
    NK_BUTTON_LEFT, NK_BUTTON_MIDDLE, NK_BUTTON_RIGHT,
    NK_BUTTON_DOUBLE, NK_BUTTON_X1, NK_BUTTON_X2, NK_BUTTON_MAX
};

Command Iteration (Software Rendering)

const struct nk_command* nk__begin(struct nk_context*);
const struct nk_command* nk__next(struct nk_context*, const struct nk_command*);
#define nk_foreach(c, ctx) for((c) = nk__begin(ctx); (c) != 0; (c) = nk__next(ctx, c))

Vertex Buffer Output (Hardware Rendering)

nk_flags nk_convert(struct nk_context*, struct nk_buffer *cmds, struct nk_buffer *vertices, struct nk_buffer *elements, const struct nk_convert_config*);
const struct nk_draw_command* nk__draw_begin(const struct nk_context*, const struct nk_buffer*);
const struct nk_draw_command* nk__draw_end(const struct nk_context*, const struct nk_buffer*);
const struct nk_draw_command* nk__draw_next(const struct nk_draw_command*, const struct nk_buffer*, const struct nk_context*);

Window

Window Flags (nk_panel_flags)

NK_WINDOW_BORDER, NK_WINDOW_MOVABLE, NK_WINDOW_SCALABLE, NK_WINDOW_CLOSABLE,
NK_WINDOW_MINIMIZABLE, NK_WINDOW_NO_SCROLLBAR, NK_WINDOW_TITLE,
NK_WINDOW_SCROLL_AUTO_HIDE, NK_WINDOW_BACKGROUND, NK_WINDOW_SCALE_LEFT,
NK_WINDOW_NO_INPUT

Begin / End

nk_bool nk_begin(struct nk_context *ctx, const char *title, struct nk_rect bounds, nk_flags flags);
nk_bool nk_begin_titled(struct nk_context *ctx, const char *name, const char *title, struct nk_rect bounds, nk_flags flags);
void    nk_end(struct nk_context *ctx);

Window Query

struct nk_window*         nk_window_find(const struct nk_context *ctx, const char *name);
struct nk_rect            nk_window_get_bounds(const struct nk_context *ctx);
struct nk_vec2            nk_window_get_position(const struct nk_context *ctx);
struct nk_vec2            nk_window_get_size(const struct nk_context *ctx);
float                     nk_window_get_width(const struct nk_context *ctx);
float                     nk_window_get_height(const struct nk_context *ctx);
struct nk_panel*          nk_window_get_panel(const struct nk_context *ctx);
struct nk_rect            nk_window_get_content_region(const struct nk_context *ctx);
struct nk_vec2            nk_window_get_content_region_min(const struct nk_context *ctx);
struct nk_vec2            nk_window_get_content_region_max(const struct nk_context *ctx);
struct nk_vec2            nk_window_get_content_region_size(const struct nk_context *ctx);
struct nk_command_buffer* nk_window_get_canvas(const struct nk_context *ctx);
void                      nk_window_get_scroll(const struct nk_context *ctx, nk_uint *offset_x, nk_uint *offset_y);
nk_bool                   nk_window_has_focus(const struct nk_context *ctx);
nk_bool                   nk_window_is_hovered(const struct nk_context *ctx);
nk_bool                   nk_window_is_collapsed(const struct nk_context *ctx, const char *name);
nk_bool                   nk_window_is_closed(const struct nk_context *ctx, const char *name);
nk_bool                   nk_window_is_hidden(const struct nk_context *ctx, const char *name);
nk_bool                   nk_window_is_active(const struct nk_context *ctx, const char *name);
nk_bool                   nk_window_is_any_hovered(const struct nk_context *ctx);
nk_bool                   nk_item_is_any_active(const struct nk_context *ctx);

Window Manipulation

void nk_window_set_bounds(struct nk_context *ctx, const char *name, struct nk_rect bounds);
void nk_window_set_position(struct nk_context *ctx, const char *name, struct nk_vec2 pos);
void nk_window_set_size(struct nk_context *ctx, const char *name, struct nk_vec2 size);
void nk_window_set_focus(struct nk_context *ctx, const char *name);
void nk_window_set_scroll(struct nk_context *ctx, nk_uint offset_x, nk_uint offset_y);
void nk_window_close(struct nk_context *ctx, const char *name);
void nk_window_collapse(struct nk_context *ctx, const char *name, enum nk_collapse_states state);
void nk_window_collapse_if(struct nk_context *ctx, const char *name, enum nk_collapse_states state, int cond);
void nk_window_show(struct nk_context *ctx, const char *name, enum nk_show_states state);
void nk_window_show_if(struct nk_context *ctx, const char *name, enum nk_show_states state, int cond);

Layout

void        nk_layout_set_min_row_height(struct nk_context*, float height);
void        nk_layout_reset_min_row_height(struct nk_context*);
struct nk_rect nk_layout_widget_bounds(const struct nk_context *ctx);
float       nk_layout_ratio_from_pixel(const struct nk_context *ctx, float pixel_width);

// simple rows
void nk_layout_row_dynamic(struct nk_context *ctx, float height, int cols);
void nk_layout_row_static(struct nk_context *ctx, float height, int item_width, int cols);

// manual row building
void nk_layout_row_begin(struct nk_context *ctx, enum nk_layout_format fmt, float row_height, int cols);
void nk_layout_row_push(struct nk_context*, float value);
void nk_layout_row_end(struct nk_context*);
void nk_layout_row(struct nk_context*, enum nk_layout_format, float height, int cols, const float *ratio);

// template rows
void nk_layout_row_template_begin(struct nk_context*, float row_height);
void nk_layout_row_template_push_dynamic(struct nk_context*);
void nk_layout_row_template_push_variable(struct nk_context*, float min_width);
void nk_layout_row_template_push_static(struct nk_context*, float width);
void nk_layout_row_template_end(struct nk_context*);

// absolute positioning
void        nk_layout_space_begin(struct nk_context*, enum nk_layout_format, float height, int widget_count);
void        nk_layout_space_push(struct nk_context*, struct nk_rect bounds);
void        nk_layout_space_end(struct nk_context*);
struct nk_rect nk_layout_space_bounds(const struct nk_context *ctx);
struct nk_vec2 nk_layout_space_to_screen(const struct nk_context *ctx, struct nk_vec2 vec);
struct nk_vec2 nk_layout_space_to_local(const struct nk_context *ctx, struct nk_vec2 vec);
struct nk_rect nk_layout_space_rect_to_screen(const struct nk_context *ctx, struct nk_rect bounds);
struct nk_rect nk_layout_space_rect_to_local(const struct nk_context *ctx, struct nk_rect bounds);

Groups

nk_bool nk_group_begin(struct nk_context*, const char *title, nk_flags);
nk_bool nk_group_begin_titled(struct nk_context*, const char *name, const char *title, nk_flags);
void    nk_group_end(struct nk_context*);

nk_bool nk_group_scrolled_offset_begin(struct nk_context*, nk_uint *x_offset, nk_uint *y_offset, const char *title, nk_flags flags);
nk_bool nk_group_scrolled_begin(struct nk_context*, struct nk_scroll *off, const char *title, nk_flags);
void    nk_group_scrolled_end(struct nk_context*);

void nk_group_get_scroll(struct nk_context*, const char *id, nk_uint *x_offset, nk_uint *y_offset);
void nk_group_set_scroll(struct nk_context*, const char *id, nk_uint x_offset, nk_uint y_offset);

Tree

Macros (preferred)

#define nk_tree_push(ctx, type, title, state)
#define nk_tree_push_id(ctx, type, title, state, id)
#define nk_tree_image_push(ctx, type, img, title, state)
#define nk_tree_image_push_id(ctx, type, img, title, state, id)
#define nk_tree_element_push(ctx, type, title, state, sel)
#define nk_tree_element_push_id(ctx, type, title, state, sel, id)

Functions

nk_bool nk_tree_push_hashed(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states initial_state, const char *hash, int len, int seed);
nk_bool nk_tree_image_push_hashed(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states initial_state, const char *hash, int len, int seed);
void    nk_tree_pop(struct nk_context*);

nk_bool nk_tree_state_push(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states *state);
nk_bool nk_tree_state_image_push(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states *state);
void    nk_tree_state_pop(struct nk_context*);

nk_bool nk_tree_element_push_hashed(struct nk_context*, enum nk_tree_type, const char *title, enum nk_collapse_states initial_state, nk_bool *selected, const char *hash, int len, int seed);
nk_bool nk_tree_element_image_push_hashed(struct nk_context*, enum nk_tree_type, struct nk_image, const char *title, enum nk_collapse_states initial_state, nk_bool *selected, const char *hash, int len, int seed);
void    nk_tree_element_pop(struct nk_context*);

Widget Utilities

enum nk_widget_layout_states nk_widget(struct nk_rect*, const struct nk_context*);
enum nk_widget_layout_states nk_widget_fitting(struct nk_rect*, const struct nk_context*, struct nk_vec2);
struct nk_rect nk_widget_bounds(const struct nk_context*);
struct nk_vec2 nk_widget_position(const struct nk_context*);
struct nk_vec2 nk_widget_size(const struct nk_context*);
float   nk_widget_width(const struct nk_context*);
float   nk_widget_height(const struct nk_context*);
nk_bool nk_widget_is_hovered(const struct nk_context*);
nk_bool nk_widget_is_mouse_clicked(const struct nk_context*, enum nk_buttons);
nk_bool nk_widget_has_mouse_click_down(const struct nk_context*, enum nk_buttons, nk_bool down);
void    nk_spacing(struct nk_context*, int cols);
void    nk_spacer(struct nk_context *ctx);
void    nk_widget_disable_begin(struct nk_context *ctx);
void    nk_widget_disable_end(struct nk_context *ctx);

Text / Labels

Text Alignment

enum nk_text_align {
    NK_TEXT_ALIGN_LEFT     = 0x01,
    NK_TEXT_ALIGN_CENTERED = 0x02,
    NK_TEXT_ALIGN_RIGHT    = 0x04,
    NK_TEXT_ALIGN_TOP      = 0x08,
    NK_TEXT_ALIGN_MIDDLE   = 0x10,
    NK_TEXT_ALIGN_BOTTOM   = 0x20
};
enum nk_text_alignment {
    NK_TEXT_LEFT     = NK_TEXT_ALIGN_MIDDLE | NK_TEXT_ALIGN_LEFT,
    NK_TEXT_CENTERED = NK_TEXT_ALIGN_MIDDLE | NK_TEXT_ALIGN_CENTERED,
    NK_TEXT_RIGHT    = NK_TEXT_ALIGN_MIDDLE | NK_TEXT_ALIGN_RIGHT
};

nk_text

void nk_text(struct nk_context*, const char*, int, nk_flags);
void nk_text_colored(struct nk_context*, const char*, int, nk_flags, struct nk_color);
void nk_text_wrap(struct nk_context*, const char*, int);
void nk_text_wrap_colored(struct nk_context*, const char*, int, struct nk_color);

nk_label

void nk_label(struct nk_context*, const char*, nk_flags align);
void nk_label_colored(struct nk_context*, const char*, nk_flags align, struct nk_color);
void nk_label_wrap(struct nk_context*, const char*);
void nk_label_colored_wrap(struct nk_context*, const char*, struct nk_color);

nk_labelf (printf-style)

void nk_labelf(struct nk_context*, nk_flags, const char*, ...);
void nk_labelf_colored(struct nk_context*, nk_flags, struct nk_color, const char*, ...);
void nk_labelf_wrap(struct nk_context*, const char*, ...);
void nk_labelf_colored_wrap(struct nk_context*, struct nk_color, const char*, ...);
void nk_labelfv(struct nk_context*, nk_flags, const char*, va_list);
void nk_labelfv_colored(struct nk_context*, nk_flags, struct nk_color, const char*, va_list);
void nk_labelfv_wrap(struct nk_context*, const char*, va_list);
void nk_labelfv_colored_wrap(struct nk_context*, struct nk_color, const char*, va_list);

nk_value (debug display)

void nk_value_bool(struct nk_context*, const char *prefix, int);
void nk_value_int(struct nk_context*, const char *prefix, int);
void nk_value_uint(struct nk_context*, const char *prefix, unsigned int);
void nk_value_float(struct nk_context*, const char *prefix, float);
void nk_value_color_byte(struct nk_context*, const char *prefix, struct nk_color);
void nk_value_color_float(struct nk_context*, const char *prefix, struct nk_color);
void nk_value_color_hex(struct nk_context*, const char *prefix, struct nk_color);

Image Widget

void nk_image(struct nk_context*, struct nk_image);
void nk_image_color(struct nk_context*, struct nk_image, struct nk_color);

Image Construction

struct nk_image nk_image_handle(nk_handle);
struct nk_image nk_image_ptr(void*);
struct nk_image nk_image_id(int);
nk_bool         nk_image_is_subimage(const struct nk_image *img);
struct nk_image nk_subimage_ptr(void*, nk_ushort w, nk_ushort h, struct nk_rect sub_region);
struct nk_image nk_subimage_id(int, nk_ushort w, nk_ushort h, struct nk_rect sub_region);
struct nk_image nk_subimage_handle(nk_handle, nk_ushort w, nk_ushort h, struct nk_rect sub_region);

Nine-Slice

struct nk_nine_slice nk_nine_slice_handle(nk_handle, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b);
struct nk_nine_slice nk_nine_slice_ptr(void*, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b);
struct nk_nine_slice nk_nine_slice_id(int, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b);
int                  nk_nine_slice_is_sub9slice(const struct nk_nine_slice *img);
struct nk_nine_slice nk_sub9slice_ptr(void*, nk_ushort w, nk_ushort h, struct nk_rect sub_region, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b);
struct nk_nine_slice nk_sub9slice_id(int, nk_ushort w, nk_ushort h, struct nk_rect sub_region, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b);
struct nk_nine_slice nk_sub9slice_handle(nk_handle, nk_ushort w, nk_ushort h, struct nk_rect sub_region, nk_ushort l, nk_ushort t, nk_ushort r, nk_ushort b);

Buttons

nk_bool nk_button_text(struct nk_context*, const char *title, int len);
nk_bool nk_button_label(struct nk_context*, const char *title);
nk_bool nk_button_color(struct nk_context*, struct nk_color);
nk_bool nk_button_symbol(struct nk_context*, enum nk_symbol_type);
nk_bool nk_button_image(struct nk_context*, struct nk_image img);
nk_bool nk_button_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags text_alignment);
nk_bool nk_button_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags alignment);
nk_bool nk_button_image_label(struct nk_context*, struct nk_image img, const char*, nk_flags text_alignment);
nk_bool nk_button_image_text(struct nk_context*, struct nk_image img, const char*, int, nk_flags alignment);

Styled Buttons

nk_bool nk_button_text_styled(struct nk_context*, const struct nk_style_button*, const char *title, int len);
nk_bool nk_button_label_styled(struct nk_context*, const struct nk_style_button*, const char *title);
nk_bool nk_button_symbol_styled(struct nk_context*, const struct nk_style_button*, enum nk_symbol_type);
nk_bool nk_button_image_styled(struct nk_context*, const struct nk_style_button*, struct nk_image img);
nk_bool nk_button_symbol_text_styled(struct nk_context*, const struct nk_style_button*, enum nk_symbol_type, const char*, int, nk_flags alignment);
nk_bool nk_button_symbol_label_styled(struct nk_context *ctx, const struct nk_style_button *style, enum nk_symbol_type symbol, const char *title, nk_flags align);
nk_bool nk_button_image_label_styled(struct nk_context*, const struct nk_style_button*, struct nk_image img, const char*, nk_flags text_alignment);
nk_bool nk_button_image_text_styled(struct nk_context*, const struct nk_style_button*, struct nk_image img, const char*, int, nk_flags alignment);

Button Behavior

void    nk_button_set_behavior(struct nk_context*, enum nk_button_behavior);
nk_bool nk_button_push_behavior(struct nk_context*, enum nk_button_behavior);
nk_bool nk_button_pop_behavior(struct nk_context*);

Symbol Types

enum nk_symbol_type {
    NK_SYMBOL_NONE, NK_SYMBOL_X, NK_SYMBOL_UNDERSCORE,
    NK_SYMBOL_CIRCLE_SOLID, NK_SYMBOL_CIRCLE_OUTLINE,
    NK_SYMBOL_RECT_SOLID, NK_SYMBOL_RECT_OUTLINE,
    NK_SYMBOL_TRIANGLE_UP, NK_SYMBOL_TRIANGLE_DOWN,
    NK_SYMBOL_TRIANGLE_LEFT, NK_SYMBOL_TRIANGLE_RIGHT,
    NK_SYMBOL_PLUS, NK_SYMBOL_MINUS,
    NK_SYMBOL_TRIANGLE_UP_OUTLINE, NK_SYMBOL_TRIANGLE_DOWN_OUTLINE,
    NK_SYMBOL_TRIANGLE_LEFT_OUTLINE, NK_SYMBOL_TRIANGLE_RIGHT_OUTLINE,
    NK_SYMBOL_MAX
};

Checkbox

nk_bool nk_checkbox_label(struct nk_context*, const char*, nk_bool *active);
nk_bool nk_checkbox_label_align(struct nk_context *ctx, const char *label, nk_bool *active, nk_flags widget_alignment, nk_flags text_alignment);
nk_bool nk_checkbox_text(struct nk_context*, const char*, int, nk_bool *active);
nk_bool nk_checkbox_text_align(struct nk_context *ctx, const char *text, int len, nk_bool *active, nk_flags widget_alignment, nk_flags text_alignment);
nk_bool nk_checkbox_flags_label(struct nk_context*, const char*, unsigned int *flags, unsigned int value);
nk_bool nk_checkbox_flags_text(struct nk_context*, const char*, int, unsigned int *flags, unsigned int value);

Radio / Option

nk_bool nk_radio_label(struct nk_context*, const char*, nk_bool *active);
nk_bool nk_radio_label_align(struct nk_context *ctx, const char *label, nk_bool *active, nk_flags widget_alignment, nk_flags text_alignment);
nk_bool nk_radio_text(struct nk_context*, const char*, int, nk_bool *active);
nk_bool nk_radio_text_align(struct nk_context *ctx, const char *text, int len, nk_bool *active, nk_flags widget_alignment, nk_flags text_alignment);
nk_bool nk_option_label(struct nk_context*, const char*, nk_bool active);
nk_bool nk_option_label_align(struct nk_context *ctx, const char *label, nk_bool active, nk_flags widget_alignment, nk_flags text_alignment);
nk_bool nk_option_text(struct nk_context*, const char*, int, nk_bool active);
nk_bool nk_option_text_align(struct nk_context *ctx, const char *text, int len, nk_bool is_active, nk_flags widget_alignment, nk_flags text_alignment);

Selectable

// mutable (pointer to value)
nk_bool nk_selectable_label(struct nk_context*, const char*, nk_flags align, nk_bool *value);
nk_bool nk_selectable_text(struct nk_context*, const char*, int, nk_flags align, nk_bool *value);
nk_bool nk_selectable_image_label(struct nk_context*, struct nk_image, const char*, nk_flags align, nk_bool *value);
nk_bool nk_selectable_image_text(struct nk_context*, struct nk_image, const char*, int, nk_flags align, nk_bool *value);
nk_bool nk_selectable_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags align, nk_bool *value);
nk_bool nk_selectable_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags align, nk_bool *value);

// immutable (value by copy, returns new state)
nk_bool nk_select_label(struct nk_context*, const char*, nk_flags align, nk_bool value);
nk_bool nk_select_text(struct nk_context*, const char*, int, nk_flags align, nk_bool value);
nk_bool nk_select_image_label(struct nk_context*, struct nk_image, const char*, nk_flags align, nk_bool value);
nk_bool nk_select_image_text(struct nk_context*, struct nk_image, const char*, int, nk_flags align, nk_bool value);
nk_bool nk_select_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags align, nk_bool value);
nk_bool nk_select_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags align, nk_bool value);

Slider

nk_bool nk_slider_float(struct nk_context*, float min, float *val, float max, float step);
nk_bool nk_slider_int(struct nk_context*, int min, int *val, int max, int step);

Progress Bar

nk_bool nk_progress(struct nk_context*, nk_size *cur, nk_size max, nk_bool modifyable);
nk_size nk_prog(struct nk_context*, nk_size cur, nk_size max, nk_bool modifyable);

Property (Drag + Increment)

// mutable (pointer to val)
nk_bool nk_property_int(struct nk_context*, const char *name, int min, int *val, int max, int step, float inc_per_pixel);
nk_bool nk_property_float(struct nk_context*, const char *name, float min, float *val, float max, float step, float inc_per_pixel);
nk_bool nk_property_double(struct nk_context*, const char *name, double min, double *val, double max, double step, float inc_per_pixel);

// immutable (returns new value)
int    nk_propertyi(struct nk_context*, const char *name, int min, int val, int max, int step, float inc_per_pixel);
float  nk_propertyf(struct nk_context*, const char *name, float min, float val, float max, float step, float inc_per_pixel);
double nk_propertyd(struct nk_context*, const char *name, double min, double val, double max, double step, float inc_per_pixel);

Color Picker

struct nk_colorf nk_color_picker(struct nk_context*, struct nk_colorf, enum nk_color_format);
nk_bool          nk_color_pick(struct nk_context*, struct nk_colorf*, enum nk_color_format);

Edit (Text Input)

Edit Flags

enum nk_edit_flags {
    NK_EDIT_DEFAULT = 0, NK_EDIT_READ_ONLY, NK_EDIT_AUTO_SELECT,
    NK_EDIT_SIG_ENTER, NK_EDIT_ALLOW_TAB, NK_EDIT_NO_CURSOR,
    NK_EDIT_SELECTABLE, NK_EDIT_CLIPBOARD, NK_EDIT_CTRL_ENTER_NEWLINE,
    NK_EDIT_NO_HORIZONTAL_SCROLL, NK_EDIT_ALWAYS_INSERT_MODE,
    NK_EDIT_MULTILINE, NK_EDIT_GOTO_END_ON_ACTIVATE
};
enum nk_edit_types {
    NK_EDIT_SIMPLE, NK_EDIT_FIELD, NK_EDIT_BOX, NK_EDIT_EDITOR
};
enum nk_edit_events {
    NK_EDIT_ACTIVE, NK_EDIT_INACTIVE, NK_EDIT_ACTIVATED,
    NK_EDIT_DEACTIVATED, NK_EDIT_COMMITED
};

Edit Functions

nk_flags nk_edit_string(struct nk_context*, nk_flags, char *buffer, int *len, int max, nk_plugin_filter);
nk_flags nk_edit_string_zero_terminated(struct nk_context*, nk_flags, char *buffer, int max, nk_plugin_filter);
nk_flags nk_edit_buffer(struct nk_context*, nk_flags, struct nk_text_edit*, nk_plugin_filter);
void     nk_edit_focus(struct nk_context*, nk_flags flags);
void     nk_edit_unfocus(struct nk_context*);

Text Edit (Low-Level)

void    nk_textedit_init_default(struct nk_text_edit*);
void    nk_textedit_init(struct nk_text_edit*, const struct nk_allocator*, nk_size size);
void    nk_textedit_init_fixed(struct nk_text_edit*, void *memory, nk_size size);
void    nk_textedit_free(struct nk_text_edit*);
void    nk_textedit_text(struct nk_text_edit*, const char*, int total_len);
void    nk_textedit_delete(struct nk_text_edit*, int where, int len);
void    nk_textedit_delete_selection(struct nk_text_edit*);
void    nk_textedit_select_all(struct nk_text_edit*);
nk_bool nk_textedit_cut(struct nk_text_edit*);
nk_bool nk_textedit_paste(struct nk_text_edit*, char const*, int len);
void    nk_textedit_undo(struct nk_text_edit*);
void    nk_textedit_redo(struct nk_text_edit*);

Filters

nk_bool nk_filter_default(const struct nk_text_edit*, nk_rune unicode);
nk_bool nk_filter_ascii(const struct nk_text_edit*, nk_rune unicode);
nk_bool nk_filter_float(const struct nk_text_edit*, nk_rune unicode);
nk_bool nk_filter_decimal(const struct nk_text_edit*, nk_rune unicode);
nk_bool nk_filter_hex(const struct nk_text_edit*, nk_rune unicode);
nk_bool nk_filter_oct(const struct nk_text_edit*, nk_rune unicode);
nk_bool nk_filter_binary(const struct nk_text_edit*, nk_rune unicode);

Chart

nk_bool  nk_chart_begin(struct nk_context*, enum nk_chart_type, int num, float min, float max);
nk_bool  nk_chart_begin_colored(struct nk_context*, enum nk_chart_type, struct nk_color, struct nk_color active, int num, float min, float max);
void     nk_chart_add_slot(struct nk_context *ctx, const enum nk_chart_type, int count, float min_value, float max_value);
void     nk_chart_add_slot_colored(struct nk_context *ctx, const enum nk_chart_type, struct nk_color, struct nk_color active, int count, float min_value, float max_value);
nk_flags nk_chart_push(struct nk_context*, float);
nk_flags nk_chart_push_slot(struct nk_context*, float, int);
void     nk_chart_end(struct nk_context*);
void     nk_plot(struct nk_context*, enum nk_chart_type, const float *values, int count, int offset);
void     nk_plot_function(struct nk_context*, enum nk_chart_type, void *userdata, float(*value_getter)(void* user, int index), int count, int offset);

Popup

nk_bool nk_popup_begin(struct nk_context*, enum nk_popup_type, const char*, nk_flags, struct nk_rect bounds);
void    nk_popup_close(struct nk_context*);
void    nk_popup_end(struct nk_context*);
void    nk_popup_get_scroll(const struct nk_context*, nk_uint *offset_x, nk_uint *offset_y);
void    nk_popup_set_scroll(struct nk_context*, nk_uint offset_x, nk_uint offset_y);

Combo (Dropdown)

Simple (returns selected index)

int nk_combo(struct nk_context*, const char *const *items, int count, int selected, int item_height, struct nk_vec2 size);
int nk_combo_separator(struct nk_context*, const char *items_separated_by_separator, int separator, int selected, int count, int item_height, struct nk_vec2 size);
int nk_combo_string(struct nk_context*, const char *items_separated_by_zeros, int selected, int count, int item_height, struct nk_vec2 size);
int nk_combo_callback(struct nk_context*, void(*item_getter)(void*, int, const char**), void *userdata, int selected, int count, int item_height, struct nk_vec2 size);

Combobox (mutable selected)

nk_bool nk_combobox(struct nk_context*, const char *const *items, int count, int *selected, int item_height, struct nk_vec2 size);
nk_bool nk_combobox_string(struct nk_context*, const char *items_separated_by_zeros, int *selected, int count, int item_height, struct nk_vec2 size);
nk_bool nk_combobox_separator(struct nk_context*, const char *items_separated_by_separator, int separator, int *selected, int count, int item_height, struct nk_vec2 size);
nk_bool nk_combobox_callback(struct nk_context*, void(*item_getter)(void*, int, const char**), void*, int *selected, int count, int item_height, struct nk_vec2 size);

Abstract Combo (custom content)

nk_bool nk_combo_begin_text(struct nk_context*, const char *selected, int, struct nk_vec2 size);
nk_bool nk_combo_begin_label(struct nk_context*, const char *selected, struct nk_vec2 size);
nk_bool nk_combo_begin_color(struct nk_context*, struct nk_color color, struct nk_vec2 size);
nk_bool nk_combo_begin_symbol(struct nk_context*, enum nk_symbol_type, struct nk_vec2 size);
nk_bool nk_combo_begin_symbol_label(struct nk_context*, const char *selected, enum nk_symbol_type, struct nk_vec2 size);
nk_bool nk_combo_begin_symbol_text(struct nk_context*, const char *selected, int, enum nk_symbol_type, struct nk_vec2 size);
nk_bool nk_combo_begin_image(struct nk_context*, struct nk_image img, struct nk_vec2 size);
nk_bool nk_combo_begin_image_label(struct nk_context*, const char *selected, struct nk_image, struct nk_vec2 size);
nk_bool nk_combo_begin_image_text(struct nk_context*, const char *selected, int, struct nk_image, struct nk_vec2 size);
nk_bool nk_combo_item_label(struct nk_context*, const char*, nk_flags alignment);
nk_bool nk_combo_item_text(struct nk_context*, const char*, int, nk_flags alignment);
nk_bool nk_combo_item_image_label(struct nk_context*, struct nk_image, const char*, nk_flags alignment);
nk_bool nk_combo_item_image_text(struct nk_context*, struct nk_image, const char*, int, nk_flags alignment);
nk_bool nk_combo_item_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags alignment);
nk_bool nk_combo_item_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags alignment);
void    nk_combo_close(struct nk_context*);
void    nk_combo_end(struct nk_context*);

Contextual (Right-Click Menu)

nk_bool nk_contextual_begin(struct nk_context*, nk_flags, struct nk_vec2, struct nk_rect trigger_bounds);
nk_bool nk_contextual_item_text(struct nk_context*, const char*, int, nk_flags align);
nk_bool nk_contextual_item_label(struct nk_context*, const char*, nk_flags align);
nk_bool nk_contextual_item_image_label(struct nk_context*, struct nk_image, const char*, nk_flags alignment);
nk_bool nk_contextual_item_image_text(struct nk_context*, struct nk_image, const char*, int len, nk_flags alignment);
nk_bool nk_contextual_item_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags alignment);
nk_bool nk_contextual_item_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags alignment);
void    nk_contextual_close(struct nk_context*);
void    nk_contextual_end(struct nk_context*);

Tooltip

void    nk_tooltip(struct nk_context*, const char*);
void    nk_tooltip_offset(struct nk_context *ctx, const char *text, enum nk_tooltip_pos position, struct nk_vec2 offset);
void    nk_tooltipf(struct nk_context*, const char*, ...);
void    nk_tooltipfv(struct nk_context*, const char*, va_list);
void    nk_tooltipf_offset(struct nk_context*, enum nk_tooltip_pos, struct nk_vec2, const char*, ...);
void    nk_tooltipfv_offset(struct nk_context*, enum nk_tooltip_pos, struct nk_vec2, const char*, va_list);
nk_bool nk_tooltip_begin(struct nk_context*, float width);
nk_bool nk_tooltip_begin_offset(struct nk_context*, float, enum nk_tooltip_pos, struct nk_vec2);
void    nk_tooltip_end(struct nk_context*);

Menubar / Menu

void nk_menubar_begin(struct nk_context*);
void nk_menubar_end(struct nk_context*);

nk_bool nk_menu_begin_text(struct nk_context*, const char *title, int title_len, nk_flags align, struct nk_vec2 size);
nk_bool nk_menu_begin_label(struct nk_context*, const char*, nk_flags align, struct nk_vec2 size);
nk_bool nk_menu_begin_image(struct nk_context*, const char*, struct nk_image, struct nk_vec2 size);
nk_bool nk_menu_begin_image_text(struct nk_context*, const char*, int, nk_flags align, struct nk_image, struct nk_vec2 size);
nk_bool nk_menu_begin_image_label(struct nk_context*, const char*, nk_flags align, struct nk_image, struct nk_vec2 size);
nk_bool nk_menu_begin_symbol(struct nk_context*, const char*, enum nk_symbol_type, struct nk_vec2 size);
nk_bool nk_menu_begin_symbol_text(struct nk_context*, const char*, int, nk_flags align, enum nk_symbol_type, struct nk_vec2 size);
nk_bool nk_menu_begin_symbol_label(struct nk_context*, const char*, nk_flags align, enum nk_symbol_type, struct nk_vec2 size);
nk_bool nk_menu_item_text(struct nk_context*, const char*, int, nk_flags align);
nk_bool nk_menu_item_label(struct nk_context*, const char*, nk_flags alignment);
nk_bool nk_menu_item_image_label(struct nk_context*, struct nk_image, const char*, nk_flags alignment);
nk_bool nk_menu_item_image_text(struct nk_context*, struct nk_image, const char*, int len, nk_flags alignment);
nk_bool nk_menu_item_symbol_text(struct nk_context*, enum nk_symbol_type, const char*, int, nk_flags alignment);
nk_bool nk_menu_item_symbol_label(struct nk_context*, enum nk_symbol_type, const char*, nk_flags alignment);
void    nk_menu_close(struct nk_context*);
void    nk_menu_end(struct nk_context*);

Horizontal Rule

void nk_rule_horizontal(struct nk_context *ctx, struct nk_color color, nk_bool rounding);

Style

Global Style

void        nk_style_default(struct nk_context*);
void        nk_style_from_table(struct nk_context*, const struct nk_color*);
void        nk_style_load_cursor(struct nk_context*, enum nk_style_cursor, const struct nk_cursor*);
void        nk_style_load_all_cursors(struct nk_context*, const struct nk_cursor*);
const char* nk_style_get_color_by_name(enum nk_style_colors);
void        nk_style_set_font(struct nk_context*, const struct nk_user_font*);
nk_bool     nk_style_set_cursor(struct nk_context*, enum nk_style_cursor);
void        nk_style_show_cursor(struct nk_context*);
void        nk_style_hide_cursor(struct nk_context*);

Style Stack (Push / Pop)

nk_bool nk_style_push_font(struct nk_context*, const struct nk_user_font*);
nk_bool nk_style_push_float(struct nk_context*, float*, float);
nk_bool nk_style_push_vec2(struct nk_context*, struct nk_vec2*, struct nk_vec2);
nk_bool nk_style_push_style_item(struct nk_context*, struct nk_style_item*, struct nk_style_item);
nk_bool nk_style_push_flags(struct nk_context*, nk_flags*, nk_flags);
nk_bool nk_style_push_color(struct nk_context*, struct nk_color*, struct nk_color);

nk_bool nk_style_pop_font(struct nk_context*);
nk_bool nk_style_pop_float(struct nk_context*);
nk_bool nk_style_pop_vec2(struct nk_context*);
nk_bool nk_style_pop_style_item(struct nk_context*);
nk_bool nk_style_pop_flags(struct nk_context*);
nk_bool nk_style_pop_color(struct nk_context*);

Style Item Construction

struct nk_style_item nk_style_item_color(struct nk_color);
struct nk_style_item nk_style_item_image(struct nk_image img);
struct nk_style_item nk_style_item_nine_slice(struct nk_nine_slice slice);
struct nk_style_item nk_style_item_hide(void);

Color Construction

RGB

struct nk_color nk_rgb(int r, int g, int b);
struct nk_color nk_rgb_iv(const int *rgb);
struct nk_color nk_rgb_bv(const nk_byte *rgb);
struct nk_color nk_rgb_f(float r, float g, float b);
struct nk_color nk_rgb_fv(const float *rgb);
struct nk_color nk_rgb_cf(struct nk_colorf c);
struct nk_color nk_rgb_hex(const char *rgb);
struct nk_color nk_rgb_factor(struct nk_color col, float factor);

RGBA

struct nk_color nk_rgba(int r, int g, int b, int a);
struct nk_color nk_rgba_u32(nk_uint);
struct nk_color nk_rgba_iv(const int *rgba);
struct nk_color nk_rgba_bv(const nk_byte *rgba);
struct nk_color nk_rgba_f(float r, float g, float b, float a);
struct nk_color nk_rgba_fv(const float *rgba);
struct nk_color nk_rgba_cf(struct nk_colorf c);
struct nk_color nk_rgba_hex(const char *rgb);

HSV / HSVA

struct nk_color nk_hsv(int h, int s, int v);
struct nk_color nk_hsv_iv(const int *hsv);
struct nk_color nk_hsv_bv(const nk_byte *hsv);
struct nk_color nk_hsv_f(float h, float s, float v);
struct nk_color nk_hsv_fv(const float *hsv);

struct nk_color  nk_hsva(int h, int s, int v, int a);
struct nk_color  nk_hsva_iv(const int *hsva);
struct nk_color  nk_hsva_bv(const nk_byte *hsva);
struct nk_color  nk_hsva_f(float h, float s, float v, float a);
struct nk_color  nk_hsva_fv(const float *hsva);
struct nk_colorf nk_hsva_colorf(float h, float s, float v, float a);
struct nk_colorf nk_hsva_colorfv(const float *c);

Color Decomposition

void           nk_color_f(float *r, float *g, float *b, float *a, struct nk_color);
void           nk_color_fv(float *rgba_out, struct nk_color);
struct nk_colorf nk_color_cf(struct nk_color);
void           nk_color_d(double *r, double *g, double *b, double *a, struct nk_color);
void           nk_color_dv(double *rgba_out, struct nk_color);
nk_uint        nk_color_u32(struct nk_color);
void           nk_color_hex_rgba(char *output, struct nk_color);
void           nk_color_hex_rgb(char *output, struct nk_color);

Color to HSV

void nk_color_hsv_i(int *out_h, int *out_s, int *out_v, struct nk_color);
void nk_color_hsv_b(nk_byte *out_h, nk_byte *out_s, nk_byte *out_v, struct nk_color);
void nk_color_hsv_iv(int *hsv_out, struct nk_color);
void nk_color_hsv_bv(nk_byte *hsv_out, struct nk_color);
void nk_color_hsv_f(float *out_h, float *out_s, float *out_v, struct nk_color);
void nk_color_hsv_fv(float *hsv_out, struct nk_color);
void nk_color_hsva_i(int *h, int *s, int *v, int *a, struct nk_color);
void nk_color_hsva_b(nk_byte *h, nk_byte *s, nk_byte *v, nk_byte *a, struct nk_color);
void nk_color_hsva_iv(int *hsva_out, struct nk_color);
void nk_color_hsva_bv(nk_byte *hsva_out, struct nk_color);
void nk_color_hsva_f(float *out_h, float *out_s, float *out_v, float *out_a, struct nk_color);
void nk_color_hsva_fv(float *hsva_out, struct nk_color);

void nk_colorf_hsva_f(float *out_h, float *out_s, float *out_v, float *out_a, struct nk_colorf in);
void nk_colorf_hsva_fv(float *hsva, struct nk_colorf in);

Custom Drawing (Command Buffer)

Stroke (Outline)

void nk_stroke_line(struct nk_command_buffer *b, float x0, float y0, float x1, float y1, float line_thickness, struct nk_color);
void nk_stroke_curve(struct nk_command_buffer*, float, float, float, float, float, float, float, float, float line_thickness, struct nk_color);
void nk_stroke_rect(struct nk_command_buffer*, struct nk_rect, float rounding, float line_thickness, struct nk_color);
void nk_stroke_circle(struct nk_command_buffer*, struct nk_rect, float line_thickness, struct nk_color);
void nk_stroke_arc(struct nk_command_buffer*, float cx, float cy, float radius, float a_min, float a_max, float line_thickness, struct nk_color);
void nk_stroke_triangle(struct nk_command_buffer*, float, float, float, float, float, float, float line_thickness, struct nk_color);
void nk_stroke_polyline(struct nk_command_buffer*, const float *points, int point_count, float line_thickness, struct nk_color col);
void nk_stroke_polygon(struct nk_command_buffer*, const float *points, int point_count, float line_thickness, struct nk_color);

Fill (Solid)

void nk_fill_rect(struct nk_command_buffer*, struct nk_rect, float rounding, struct nk_color);
void nk_fill_rect_multi_color(struct nk_command_buffer*, struct nk_rect, struct nk_color left, struct nk_color top, struct nk_color right, struct nk_color bottom);
void nk_fill_circle(struct nk_command_buffer*, struct nk_rect, struct nk_color);
void nk_fill_arc(struct nk_command_buffer*, float cx, float cy, float radius, float a_min, float a_max, struct nk_color);
void nk_fill_triangle(struct nk_command_buffer*, float x0, float y0, float x1, float y1, float x2, float y2, struct nk_color);
void nk_fill_polygon(struct nk_command_buffer*, const float *points, int point_count, struct nk_color);

Draw Image / Text

void nk_draw_image(struct nk_command_buffer*, struct nk_rect, const struct nk_image*, struct nk_color);
void nk_draw_nine_slice(struct nk_command_buffer*, struct nk_rect, const struct nk_nine_slice*, struct nk_color);
void nk_draw_text(struct nk_command_buffer*, struct nk_rect, const char *text, int len, const struct nk_user_font*, struct nk_color bg, struct nk_color fg);

Draw List (Vertex Buffer Level)

Setup

void nk_draw_list_init(struct nk_draw_list*);
void nk_draw_list_setup(struct nk_draw_list*, const struct nk_convert_config*, struct nk_buffer *cmds, struct nk_buffer *vertices, struct nk_buffer *elements, enum nk_anti_aliasing line_aa, enum nk_anti_aliasing shape_aa);

Iteration

const struct nk_draw_command* nk__draw_list_begin(const struct nk_draw_list*, const struct nk_buffer*);
const struct nk_draw_command* nk__draw_list_next(const struct nk_draw_command*, const struct nk_buffer*, const struct nk_draw_list*);
const struct nk_draw_command* nk__draw_list_end(const struct nk_draw_list*, const struct nk_buffer*);

Path

void nk_draw_list_path_clear(struct nk_draw_list*);
void nk_draw_list_path_line_to(struct nk_draw_list*, struct nk_vec2 pos);
void nk_draw_list_path_arc_to_fast(struct nk_draw_list*, struct nk_vec2 center, float radius, int a_min, int a_max);
void nk_draw_list_path_arc_to(struct nk_draw_list*, struct nk_vec2 center, float radius, float a_min, float a_max, unsigned int segments);
void nk_draw_list_path_rect_to(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, float rounding);
void nk_draw_list_path_curve_to(struct nk_draw_list*, struct nk_vec2 p2, struct nk_vec2 p3, struct nk_vec2 p4, unsigned int num_segments);
void nk_draw_list_path_fill(struct nk_draw_list*, struct nk_color);
void nk_draw_list_path_stroke(struct nk_draw_list*, struct nk_color, enum nk_draw_list_stroke closed, float thickness);

Draw List Primitives

void nk_draw_list_stroke_line(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_color, float thickness);
void nk_draw_list_stroke_rect(struct nk_draw_list*, struct nk_rect rect, struct nk_color, float rounding, float thickness);
void nk_draw_list_stroke_triangle(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_vec2 c, struct nk_color, float thickness);
void nk_draw_list_stroke_circle(struct nk_draw_list*, struct nk_vec2 center, float radius, struct nk_color, unsigned int segs, float thickness);
void nk_draw_list_stroke_curve(struct nk_draw_list*, struct nk_vec2 p0, struct nk_vec2 cp0, struct nk_vec2 cp1, struct nk_vec2 p1, struct nk_color, unsigned int segments, float thickness);
void nk_draw_list_stroke_poly_line(struct nk_draw_list*, const struct nk_vec2 *pnts, const unsigned int cnt, struct nk_color, enum nk_draw_list_stroke, float thickness, enum nk_anti_aliasing);

void nk_draw_list_fill_rect(struct nk_draw_list*, struct nk_rect rect, struct nk_color, float rounding);
void nk_draw_list_fill_rect_multi_color(struct nk_draw_list*, struct nk_rect rect, struct nk_color left, struct nk_color top, struct nk_color right, struct nk_color bottom);
void nk_draw_list_fill_triangle(struct nk_draw_list*, struct nk_vec2 a, struct nk_vec2 b, struct nk_vec2 c, struct nk_color);
void nk_draw_list_fill_circle(struct nk_draw_list*, struct nk_vec2 center, float radius, struct nk_color col, unsigned int segs);
void nk_draw_list_fill_poly_convex(struct nk_draw_list*, const struct nk_vec2 *points, const unsigned int count, struct nk_color, enum nk_anti_aliasing);

void nk_draw_list_add_image(struct nk_draw_list*, struct nk_image texture, struct nk_rect rect, struct nk_color);
void nk_draw_list_add_text(struct nk_draw_list*, const struct nk_user_font*, struct nk_rect, const char *text, int len, float font_height, struct nk_color);
void nk_draw_list_push_userdata(struct nk_draw_list*, nk_handle userdata);

Font Atlas

struct nk_font_config nk_font_config(float pixel_height);

void nk_font_atlas_init_default(struct nk_font_atlas*);
void nk_font_atlas_init(struct nk_font_atlas*, const struct nk_allocator*);
void nk_font_atlas_init_custom(struct nk_font_atlas*, const struct nk_allocator *persistent, const struct nk_allocator *transient);
void nk_font_atlas_begin(struct nk_font_atlas*);

struct nk_font* nk_font_atlas_add(struct nk_font_atlas*, const struct nk_font_config*);
struct nk_font* nk_font_atlas_add_default(struct nk_font_atlas*, float height, const struct nk_font_config*);
struct nk_font* nk_font_atlas_add_from_memory(struct nk_font_atlas *atlas, void *memory, nk_size size, float height, const struct nk_font_config *config);
struct nk_font* nk_font_atlas_add_from_file(struct nk_font_atlas *atlas, const char *file_path, float height, const struct nk_font_config*);
struct nk_font* nk_font_atlas_add_compressed(struct nk_font_atlas*, void *memory, nk_size size, float height, const struct nk_font_config*);
struct nk_font* nk_font_atlas_add_compressed_base85(struct nk_font_atlas*, const char *data, float height, const struct nk_font_config *config);

const void* nk_font_atlas_bake(struct nk_font_atlas*, int *width, int *height, enum nk_font_atlas_format);
void nk_font_atlas_end(struct nk_font_atlas*, nk_handle tex, struct nk_draw_null_texture*);
void nk_font_atlas_cleanup(struct nk_font_atlas *atlas);
void nk_font_atlas_clear(struct nk_font_atlas*);

const struct nk_font_glyph* nk_font_find_glyph(const struct nk_font*, nk_rune unicode);

Buffer

void        nk_buffer_init_default(struct nk_buffer*);
void        nk_buffer_init(struct nk_buffer*, const struct nk_allocator*, nk_size size);
void        nk_buffer_init_fixed(struct nk_buffer*, void *memory, nk_size size);
void        nk_buffer_info(struct nk_memory_status*, const struct nk_buffer*);
void        nk_buffer_push(struct nk_buffer*, enum nk_buffer_allocation_type type, const void *memory, nk_size size, nk_size align);
void        nk_buffer_mark(struct nk_buffer*, enum nk_buffer_allocation_type type);
void        nk_buffer_reset(struct nk_buffer*, enum nk_buffer_allocation_type type);
void        nk_buffer_clear(struct nk_buffer*);
void        nk_buffer_free(struct nk_buffer*);
void*       nk_buffer_memory(struct nk_buffer*);
const void* nk_buffer_memory_const(const struct nk_buffer*);
nk_size     nk_buffer_total(const struct nk_buffer*);

String (nk_str)

void nk_str_init_default(struct nk_str*);
void nk_str_init(struct nk_str*, const struct nk_allocator*, nk_size size);
void nk_str_init_fixed(struct nk_str*, void *memory, nk_size size);
void nk_str_clear(struct nk_str*);
void nk_str_free(struct nk_str*);

int nk_str_append_text_char(struct nk_str*, const char*, int);
int nk_str_append_str_char(struct nk_str*, const char*);
int nk_str_append_text_utf8(struct nk_str*, const char*, int);
int nk_str_append_str_utf8(struct nk_str*, const char*);
int nk_str_append_text_runes(struct nk_str*, const nk_rune*, int);
int nk_str_append_str_runes(struct nk_str*, const nk_rune*);

int nk_str_insert_at_char(struct nk_str*, int pos, const char*, int);
int nk_str_insert_at_rune(struct nk_str*, int pos, const char*, int);
int nk_str_insert_text_char(struct nk_str*, int pos, const char*, int);
int nk_str_insert_str_char(struct nk_str*, int pos, const char*);
int nk_str_insert_text_utf8(struct nk_str*, int pos, const char*, int);
int nk_str_insert_str_utf8(struct nk_str*, int pos, const char*);
int nk_str_insert_text_runes(struct nk_str*, int pos, const nk_rune*, int);
int nk_str_insert_str_runes(struct nk_str*, int pos, const nk_rune*);

void nk_str_remove_chars(struct nk_str*, int len);
void nk_str_remove_runes(struct nk_str *str, int len);
void nk_str_delete_chars(struct nk_str*, int pos, int len);
void nk_str_delete_runes(struct nk_str*, int pos, int len);

char*       nk_str_at_char(struct nk_str*, int pos);
char*       nk_str_at_rune(struct nk_str*, int pos, nk_rune *unicode, int *len);
nk_rune     nk_str_rune_at(const struct nk_str*, int pos);
const char* nk_str_at_char_const(const struct nk_str*, int pos);
const char* nk_str_at_const(const struct nk_str*, int pos, nk_rune *unicode, int *len);
char*       nk_str_get(struct nk_str*);
const char* nk_str_get_const(const struct nk_str*);
int         nk_str_len(struct nk_str*);
int         nk_str_len_char(struct nk_str*);