1 2 // Copyright Mateusz Muszyński 2018. 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 module bindbc.nuklear.types; 8 9 enum NuklearSupport { 10 noLibrary, 11 badLibrary, 12 Nuklear4, 13 } 14 15 version (NK_ALL) 16 { 17 version = NK_INCLUDE_FIXED_TYPES; 18 version = NK_INCLUDE_DEFAULT_ALLOCATOR; 19 version = NK_INCLUDE_STANDARD_IO; 20 version = NK_INCLUDE_STANDARD_VARARGS; 21 version = NK_INCLUDE_VERTEX_BUFFER_OUTPUT; 22 version = NK_INCLUDE_FONT_BAKING; 23 version = NK_INCLUDE_DEFAULT_FONT; 24 version = NK_INCLUDE_COMMAND_USERDATA; 25 version = NK_BUTTON_TRIGGER_ON_RELEASE; 26 version = NK_ZERO_COMMAND_MEMORY; 27 version = NK_UINT_DRAW_INDEX; 28 } 29 30 enum NK_UNDEFINED = -1.0f; 31 enum NK_UTF_INVALID = 0xFFFD; 32 enum NK_UTF_SIZE = 4; 33 enum NK_INPUT_MAX = 16; 34 enum NK_MAX_NUMBER_BUFFER = 64; 35 enum NK_SCROLLBAR_HIDING_TIMEOUT = 4.0f; 36 37 pragma(inline, true) { 38 auto NK_FLAG(T)(T x) { return 1 << x; } 39 auto NK_MAX(T)(T a, T b) {return a < b? b:a;} 40 } 41 42 import core.stdc.stdint; 43 alias nk_char = byte; 44 alias nk_uchar = ubyte; 45 alias nk_byte = ubyte; 46 alias nk_short = short; 47 alias nk_ushort = ushort; 48 alias nk_int = int; 49 alias nk_uint = uint; 50 alias nk_size = size_t; 51 alias nk_ptr = size_t; 52 53 alias nk_hash = ulong; 54 alias nk_flags = uint; 55 alias nk_rune = uint; 56 alias nk_float = float; 57 58 enum { nk_false, nk_true } 59 struct nk_color { nk_byte r,g,b,a; } 60 struct nk_colorf { float r,g,b,a; } 61 struct nk_vec2 { float x,y; } 62 struct nk_vec2i { short x, y; } 63 struct nk_rect { float x,y,w,h; } 64 struct nk_recti { short x,y,w,h; } 65 alias nk_glyph = char[NK_UTF_SIZE]; 66 union nk_handle { void *ptr; int id; } 67 struct nk_image { nk_handle handle; short w,h; short[4] region; } 68 struct nk_cursor { nk_image img; nk_vec2 size, offset; } 69 struct nk_scroll { ushort x, y; } 70 71 enum nk_heading { NK_UP, NK_RIGHT, NK_DOWN, NK_LEFT }; 72 enum nk_button_behavior { NK_BUTTON_DEFAULT, NK_BUTTON_REPEATER }; 73 enum nk_modify { NK_FIXED = nk_false, NK_MODIFIABLE = nk_true }; 74 enum nk_orientation { NK_VERTICAL, NK_HORIZONTAL }; 75 enum nk_collapse_states { NK_MINIMIZED = nk_false, NK_MAXIMIZED = nk_true }; 76 enum nk_show_states { NK_HIDDEN = nk_false, NK_SHOWN = nk_true }; 77 enum nk_chart_type { NK_CHART_LINES, NK_CHART_COLUMN, NK_CHART_MAX }; 78 enum nk_chart_event { NK_CHART_HOVERING = 0x01, NK_CHART_CLICKED = 0x02 }; 79 enum nk_color_format { NK_RGB, NK_RGBA }; 80 enum nk_popup_type { NK_POPUP_STATIC, NK_POPUP_DYNAMIC }; 81 enum nk_layout_format { NK_DYNAMIC, NK_STATIC }; 82 enum nk_tree_type { NK_TREE_NODE, NK_TREE_TAB }; 83 84 extern(C) @nogc nothrow { 85 alias nk_plugin_alloc = void* function(nk_handle, void *old, nk_size); 86 alias nk_plugin_free = void function(nk_handle, void *old); 87 alias nk_plugin_filter = int function(const(nk_text_edit)*, nk_rune unicode); 88 alias nk_plugin_paste = void function(nk_handle, nk_text_edit*); 89 alias nk_plugin_copy = void function(nk_handle, const(char)*, int len); 90 } 91 92 struct nk_allocator { 93 nk_handle userdata; 94 nk_plugin_alloc alloc; 95 nk_plugin_free free; 96 } 97 98 enum nk_symbol_type { 99 NK_SYMBOL_NONE, 100 NK_SYMBOL_X, 101 NK_SYMBOL_UNDERSCORE, 102 NK_SYMBOL_CIRCLE_SOLID, 103 NK_SYMBOL_CIRCLE_OUTLINE, 104 NK_SYMBOL_RECT_SOLID, 105 NK_SYMBOL_RECT_OUTLINE, 106 NK_SYMBOL_TRIANGLE_UP, 107 NK_SYMBOL_TRIANGLE_DOWN, 108 NK_SYMBOL_TRIANGLE_LEFT, 109 NK_SYMBOL_TRIANGLE_RIGHT, 110 NK_SYMBOL_PLUS, 111 NK_SYMBOL_MINUS, 112 NK_SYMBOL_MAX 113 } 114 115 // INPUT 116 117 enum nk_keys { 118 NK_KEY_NONE, 119 NK_KEY_SHIFT, 120 NK_KEY_CTRL, 121 NK_KEY_DEL, 122 NK_KEY_ENTER, 123 NK_KEY_TAB, 124 NK_KEY_BACKSPACE, 125 NK_KEY_COPY, 126 NK_KEY_CUT, 127 NK_KEY_PASTE, 128 NK_KEY_UP, 129 NK_KEY_DOWN, 130 NK_KEY_LEFT, 131 NK_KEY_RIGHT, 132 /* Shortcuts: text field */ 133 NK_KEY_TEXT_INSERT_MODE, 134 NK_KEY_TEXT_REPLACE_MODE, 135 NK_KEY_TEXT_RESET_MODE, 136 NK_KEY_TEXT_LINE_START, 137 NK_KEY_TEXT_LINE_END, 138 NK_KEY_TEXT_START, 139 NK_KEY_TEXT_END, 140 NK_KEY_TEXT_UNDO, 141 NK_KEY_TEXT_REDO, 142 NK_KEY_TEXT_SELECT_ALL, 143 NK_KEY_TEXT_WORD_LEFT, 144 NK_KEY_TEXT_WORD_RIGHT, 145 /* Shortcuts: scrollbar */ 146 NK_KEY_SCROLL_START, 147 NK_KEY_SCROLL_END, 148 NK_KEY_SCROLL_DOWN, 149 NK_KEY_SCROLL_UP, 150 NK_KEY_MAX 151 } 152 153 enum nk_buttons { 154 NK_BUTTON_LEFT, 155 NK_BUTTON_MIDDLE, 156 NK_BUTTON_RIGHT, 157 NK_BUTTON_DOUBLE, 158 NK_BUTTON_MAX 159 } 160 161 // DRAWING 162 163 enum nk_anti_aliasing { NK_ANTI_ALIASING_OFF, NK_ANTI_ALIASING_ON }; 164 165 enum nk_convert_result { 166 NK_CONVERT_SUCCESS = 0, 167 NK_CONVERT_INVALID_PARAM = 1, 168 NK_CONVERT_COMMAND_BUFFER_FULL = NK_FLAG(1), 169 NK_CONVERT_VERTEX_BUFFER_FULL = NK_FLAG(2), 170 NK_CONVERT_ELEMENT_BUFFER_FULL = NK_FLAG(3) 171 } 172 173 struct nk_draw_null_texture { 174 nk_handle texture; /* texture handle to a texture with a white pixel */ 175 nk_vec2 uv; /* coordinates to a white pixel in the texture */ 176 } 177 178 struct nk_convert_config { 179 float global_alpha; /* global alpha value */ 180 nk_anti_aliasing line_AA; /* line anti-aliasing flag can be turned off if you are tight on memory */ 181 nk_anti_aliasing shape_AA; /* shape anti-aliasing flag can be turned off if you are tight on memory */ 182 uint circle_segment_count; /* number of segments used for circles: default to 22 */ 183 uint arc_segment_count; /* number of segments used for arcs: default to 22 */ 184 uint curve_segment_count; /* number of segments used for curves: default to 22 */ 185 nk_draw_null_texture null_; /* handle to texture with a white pixel for shape drawing */ 186 const(nk_draw_vertex_layout_element) *vertex_layout; /* describes the vertex output format and packing */ 187 nk_size vertex_size; /* sizeof one vertex for vertex packing */ 188 nk_size vertex_alignment; /* vertex alignment: Can be obtained by NK_ALIGNOF */ 189 } 190 191 // WINDOW 192 193 enum nk_panel_flags { 194 NK_WINDOW_BORDER = NK_FLAG(0), 195 NK_WINDOW_MOVABLE = NK_FLAG(1), 196 NK_WINDOW_SCALABLE = NK_FLAG(2), 197 NK_WINDOW_CLOSABLE = NK_FLAG(3), 198 NK_WINDOW_MINIMIZABLE = NK_FLAG(4), 199 NK_WINDOW_NO_SCROLLBAR = NK_FLAG(5), 200 NK_WINDOW_TITLE = NK_FLAG(6), 201 NK_WINDOW_SCROLL_AUTO_HIDE = NK_FLAG(7), 202 NK_WINDOW_BACKGROUND = NK_FLAG(8), 203 NK_WINDOW_SCALE_LEFT = NK_FLAG(9), 204 NK_WINDOW_NO_INPUT = NK_FLAG(10) 205 } 206 207 // LIST VIEW 208 209 struct nk_list_view { 210 /* public: */ 211 int begin, end, count; 212 /* private: */ 213 int total_height; 214 nk_context *ctx; 215 nk_uint *scroll_pointer; 216 nk_uint scroll_value; 217 } 218 219 // WIDGET 220 221 enum nk_widget_layout_states { 222 NK_WIDGET_INVALID, /* The widget cannot be seen and is completely out of view */ 223 NK_WIDGET_VALID, /* The widget is completely inside the window and can be updated and drawn */ 224 NK_WIDGET_ROM /* The widget is partially visible and cannot be updated */ 225 } 226 227 enum nk_widget_states { 228 NK_WIDGET_STATE_MODIFIED = NK_FLAG(1), 229 NK_WIDGET_STATE_INACTIVE = NK_FLAG(2), /* widget is neither active nor hovered */ 230 NK_WIDGET_STATE_ENTERED = NK_FLAG(3), /* widget has been hovered on the current frame */ 231 NK_WIDGET_STATE_HOVER = NK_FLAG(4), /* widget is being hovered */ 232 NK_WIDGET_STATE_ACTIVED = NK_FLAG(5),/* widget is currently activated */ 233 NK_WIDGET_STATE_LEFT = NK_FLAG(6), /* widget is from this frame on not hovered anymore */ 234 NK_WIDGET_STATE_HOVERED = NK_WIDGET_STATE_HOVER|NK_WIDGET_STATE_MODIFIED, /* widget is being hovered */ 235 NK_WIDGET_STATE_ACTIVE = NK_WIDGET_STATE_ACTIVED|NK_WIDGET_STATE_MODIFIED /* widget is currently activated */ 236 } 237 238 // TEXT 239 240 enum nk_text_align { 241 NK_TEXT_ALIGN_LEFT = 0x01, 242 NK_TEXT_ALIGN_CENTERED = 0x02, 243 NK_TEXT_ALIGN_RIGHT = 0x04, 244 NK_TEXT_ALIGN_TOP = 0x08, 245 NK_TEXT_ALIGN_MIDDLE = 0x10, 246 NK_TEXT_ALIGN_BOTTOM = 0x20 247 } 248 249 enum nk_text_alignment { 250 NK_TEXT_LEFT = nk_text_align.NK_TEXT_ALIGN_MIDDLE|nk_text_align.NK_TEXT_ALIGN_LEFT, 251 NK_TEXT_CENTERED = nk_text_align.NK_TEXT_ALIGN_MIDDLE|nk_text_align.NK_TEXT_ALIGN_CENTERED, 252 NK_TEXT_RIGHT = nk_text_align.NK_TEXT_ALIGN_MIDDLE|nk_text_align.NK_TEXT_ALIGN_RIGHT 253 } 254 255 // TEXT EDIT 256 257 enum nk_edit_flags { 258 NK_EDIT_DEFAULT = 0, 259 NK_EDIT_READ_ONLY = NK_FLAG(0), 260 NK_EDIT_AUTO_SELECT = NK_FLAG(1), 261 NK_EDIT_SIG_ENTER = NK_FLAG(2), 262 NK_EDIT_ALLOW_TAB = NK_FLAG(3), 263 NK_EDIT_NO_CURSOR = NK_FLAG(4), 264 NK_EDIT_SELECTABLE = NK_FLAG(5), 265 NK_EDIT_CLIPBOARD = NK_FLAG(6), 266 NK_EDIT_CTRL_ENTER_NEWLINE = NK_FLAG(7), 267 NK_EDIT_NO_HORIZONTAL_SCROLL = NK_FLAG(8), 268 NK_EDIT_ALWAYS_INSERT_MODE = NK_FLAG(9), 269 NK_EDIT_MULTILINE = NK_FLAG(10), 270 NK_EDIT_GOTO_END_ON_ACTIVATE = NK_FLAG(11) 271 } 272 273 enum nk_edit_types { 274 NK_EDIT_SIMPLE = nk_edit_flags.NK_EDIT_ALWAYS_INSERT_MODE, 275 NK_EDIT_FIELD = nk_edit_flags.NK_EDIT_ALWAYS_INSERT_MODE|nk_edit_flags.NK_EDIT_SELECTABLE|nk_edit_flags.NK_EDIT_CLIPBOARD, 276 NK_EDIT_BOX = nk_edit_flags.NK_EDIT_ALWAYS_INSERT_MODE| nk_edit_flags.NK_EDIT_SELECTABLE| nk_edit_flags.NK_EDIT_MULTILINE|nk_edit_flags.NK_EDIT_ALLOW_TAB|nk_edit_flags.NK_EDIT_CLIPBOARD, 277 NK_EDIT_EDITOR = nk_edit_flags.NK_EDIT_SELECTABLE|nk_edit_flags.NK_EDIT_MULTILINE|nk_edit_flags.NK_EDIT_ALLOW_TAB| nk_edit_flags.NK_EDIT_CLIPBOARD 278 } 279 280 enum nk_edit_events { 281 NK_EDIT_ACTIVE = NK_FLAG(0), /* edit widget is currently being modified */ 282 NK_EDIT_INACTIVE = NK_FLAG(1), /* edit widget is not active and is not being modified */ 283 NK_EDIT_ACTIVATED = NK_FLAG(2), /* edit widget went from state inactive to state active */ 284 NK_EDIT_DEACTIVATED = NK_FLAG(3), /* edit widget went from state active to state inactive */ 285 NK_EDIT_COMMITED = NK_FLAG(4) /* edit widget has received an enter and lost focus */ 286 } 287 288 // STYLE 289 290 enum nk_style_colors { 291 NK_COLOR_TEXT, 292 NK_COLOR_WINDOW, 293 NK_COLOR_HEADER, 294 NK_COLOR_BORDER, 295 NK_COLOR_BUTTON, 296 NK_COLOR_BUTTON_HOVER, 297 NK_COLOR_BUTTON_ACTIVE, 298 NK_COLOR_TOGGLE, 299 NK_COLOR_TOGGLE_HOVER, 300 NK_COLOR_TOGGLE_CURSOR, 301 NK_COLOR_SELECT, 302 NK_COLOR_SELECT_ACTIVE, 303 NK_COLOR_SLIDER, 304 NK_COLOR_SLIDER_CURSOR, 305 NK_COLOR_SLIDER_CURSOR_HOVER, 306 NK_COLOR_SLIDER_CURSOR_ACTIVE, 307 NK_COLOR_PROPERTY, 308 NK_COLOR_EDIT, 309 NK_COLOR_EDIT_CURSOR, 310 NK_COLOR_COMBO, 311 NK_COLOR_CHART, 312 NK_COLOR_CHART_COLOR, 313 NK_COLOR_CHART_COLOR_HIGHLIGHT, 314 NK_COLOR_SCROLLBAR, 315 NK_COLOR_SCROLLBAR_CURSOR, 316 NK_COLOR_SCROLLBAR_CURSOR_HOVER, 317 NK_COLOR_SCROLLBAR_CURSOR_ACTIVE, 318 NK_COLOR_TAB_HEADER, 319 NK_COLOR_COUNT 320 } 321 322 enum nk_style_cursor { 323 NK_CURSOR_ARROW, 324 NK_CURSOR_TEXT, 325 NK_CURSOR_MOVE, 326 NK_CURSOR_RESIZE_VERTICAL, 327 NK_CURSOR_RESIZE_HORIZONTAL, 328 NK_CURSOR_RESIZE_TOP_LEFT_DOWN_RIGHT, 329 NK_CURSOR_RESIZE_TOP_RIGHT_DOWN_LEFT, 330 NK_CURSOR_COUNT 331 } 332 333 // FONT 334 335 version(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) 336 { 337 struct nk_user_font_glyph { 338 nk_vec2[2] uv; 339 /* texture coordinates */ 340 nk_vec2 offset; 341 /* offset between top left and glyph */ 342 float width, height; 343 /* size of the glyph */ 344 float xadvance; 345 /* offset to the next glyph */ 346 } 347 } 348 else version(NK_INCLUDE_SOFTWARE_FONT) 349 { 350 struct nk_user_font_glyph { 351 nk_vec2[2] uv; 352 /* texture coordinates */ 353 nk_vec2 offset; 354 /* offset between top left and glyph */ 355 float width, height; 356 /* size of the glyph */ 357 float xadvance; 358 /* offset to the next glyph */ 359 } 360 } 361 else 362 { 363 struct nk_user_font_glyph; 364 } 365 366 extern(C) @nogc nothrow { 367 alias nk_text_width_f = float function(nk_handle, float h, const(char)*, int len); 368 alias nk_query_font_glyph_f = void function (nk_handle handle, float font_height, nk_user_font_glyph *glyph, nk_rune codepoint, nk_rune next_codepoint); 369 } 370 371 struct nk_user_font { 372 nk_handle userdata; 373 /* user provided font handle */ 374 float height; 375 /* max height of the font */ 376 nk_text_width_f width; 377 /* font string width in pixel callback */ 378 version(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) { 379 nk_query_font_glyph_f query; 380 /* font glyph callback to query drawing info */ 381 nk_handle texture; 382 /* texture handle to the used font atlas or texture */ 383 } 384 } 385 386 version(NK_INCLUDE_FONT_BAKING) 387 { 388 enum nk_font_coord_type { 389 NK_COORD_UV, /* texture coordinates inside font glyphs are clamped between 0-1 */ 390 NK_COORD_PIXEL /* texture coordinates inside font glyphs are in absolute pixel */ 391 } 392 393 struct nk_baked_font { 394 float height; 395 /* height of the font */ 396 float ascent, descent; 397 /* font glyphs ascent and descent */ 398 nk_rune glyph_offset; 399 /* glyph array offset inside the font glyph baking output array */ 400 nk_rune glyph_count; 401 /* number of glyphs of this font inside the glyph baking array output */ 402 const(nk_rune) *ranges; 403 /* font codepoint ranges as pairs of (from/to) and 0 as last element */ 404 } 405 406 struct nk_font_config { 407 nk_font_config *next; 408 /* NOTE: only used internally */ 409 void *ttf_blob; 410 /* pointer to loaded TTF file memory block. 411 * NOTE: not needed for nk_font_atlas_add_from_memory and nk_font_atlas_add_from_file. */ 412 nk_size ttf_size; 413 /* size of the loaded TTF file memory block 414 * NOTE: not needed for nk_font_atlas_add_from_memory and nk_font_atlas_add_from_file. */ 415 416 ubyte ttf_data_owned_by_atlas; 417 /* used inside font atlas: default to: 0*/ 418 ubyte merge_mode; 419 /* merges this font into the last font */ 420 ubyte pixel_snap; 421 /* align every character to pixel boundary (if true set oversample (1,1)) */ 422 ubyte oversample_v, oversample_h; 423 /* rasterize at hight quality for sub-pixel position */ 424 ubyte[3] padding; 425 426 float size; 427 /* baked pixel height of the font */ 428 nk_font_coord_type coord_type; 429 /* texture coordinate format with either pixel or UV coordinates */ 430 nk_vec2 spacing; 431 /* extra pixel spacing between glyphs */ 432 const(nk_rune) *range; 433 /* list of unicode ranges (2 values per range, zero terminated) */ 434 nk_baked_font *font; 435 /* font to setup in the baking process: NOTE: not needed for font atlas */ 436 nk_rune fallback_glyph; 437 /* fallback glyph to use if a given rune is not found */ 438 nk_font_config *n; 439 nk_font_config *p; 440 } 441 442 struct nk_font_glyph { 443 nk_rune codepoint; 444 float xadvance; 445 float x0, y0, x1, y1, w, h; 446 float u0, v0, u1, v1; 447 } 448 449 struct nk_font { 450 nk_font *next; 451 nk_user_font handle; 452 nk_baked_font info; 453 float scale; 454 nk_font_glyph *glyphs; 455 const(nk_font_glyph) *fallback; 456 nk_rune fallback_codepoint; 457 nk_handle texture; 458 nk_font_config *config; 459 } 460 461 enum nk_font_atlas_format { 462 NK_FONT_ATLAS_ALPHA8, 463 NK_FONT_ATLAS_RGBA32 464 } 465 466 struct nk_font_atlas { 467 void *pixel; 468 int tex_width; 469 int tex_height; 470 471 nk_allocator permanent; 472 nk_allocator temporary; 473 474 nk_recti custom; 475 nk_cursor[nk_style_cursor.NK_CURSOR_COUNT] cursors; 476 477 int glyph_count; 478 nk_font_glyph *glyphs; 479 nk_font *default_font; 480 nk_font *fonts; 481 nk_font_config *config; 482 int font_num; 483 } 484 } 485 486 // MEMORY BUFFER 487 488 struct nk_memory_status { 489 void *memory; 490 uint type; 491 nk_size size; 492 nk_size allocated; 493 nk_size needed; 494 nk_size calls; 495 } 496 497 enum nk_allocation_type { 498 NK_BUFFER_FIXED, 499 NK_BUFFER_DYNAMIC 500 } 501 502 enum nk_buffer_allocation_type { 503 NK_BUFFER_FRONT, 504 NK_BUFFER_BACK, 505 NK_BUFFER_MAX 506 } 507 508 struct nk_buffer_marker { 509 int active; 510 nk_size offset; 511 } 512 513 struct nk_memory { void *ptr; nk_size size; } 514 515 struct nk_buffer { 516 nk_buffer_marker[nk_buffer_allocation_type.NK_BUFFER_MAX] marker; 517 /* buffer marker to free a buffer to a certain offset */ 518 nk_allocator pool; 519 /* allocator callback for dynamic buffers */ 520 nk_allocation_type type; 521 /* memory management type */ 522 nk_memory memory; 523 /* memory and size of the current memory block */ 524 float grow_factor; 525 /* growing factor for dynamic memory management */ 526 nk_size allocated; 527 /* total amount of memory allocated */ 528 nk_size needed; 529 /* totally consumed memory given that enough memory is present */ 530 nk_size calls; 531 /* number of allocation calls */ 532 nk_size size; 533 /* current size of the buffer */ 534 }; 535 536 // STRING 537 538 struct nk_str { 539 nk_buffer buffer; 540 int len; /* in codepoints/runes/glyphs */ 541 } 542 543 // TEXT EDITOR 544 545 enum NK_TEXTEDIT_UNDOSTATECOUNT = 99; 546 enum NK_TEXTEDIT_UNDOCHARCOUNT = 999; 547 548 struct nk_clipboard { 549 nk_handle userdata; 550 nk_plugin_paste paste; 551 nk_plugin_copy copy; 552 } 553 554 struct nk_text_undo_record { 555 int where; 556 short insert_length; 557 short delete_length; 558 short char_storage; 559 } 560 561 struct nk_text_undo_state { 562 nk_text_undo_record[NK_TEXTEDIT_UNDOSTATECOUNT] undo_rec; 563 nk_rune[NK_TEXTEDIT_UNDOCHARCOUNT] undo_char; 564 short undo_point; 565 short redo_point; 566 short undo_char_point; 567 short redo_char_point; 568 } 569 570 enum nk_text_edit_type { 571 NK_TEXT_EDIT_SINGLE_LINE, 572 NK_TEXT_EDIT_MULTI_LINE 573 } 574 575 enum nk_text_edit_mode { 576 NK_TEXT_EDIT_MODE_VIEW, 577 NK_TEXT_EDIT_MODE_INSERT, 578 NK_TEXT_EDIT_MODE_REPLACE 579 } 580 581 struct nk_text_edit { 582 nk_clipboard clip; 583 nk_str string; 584 nk_plugin_filter filter; 585 nk_vec2 scrollbar; 586 587 int cursor; 588 int select_start; 589 int select_end; 590 ubyte mode; 591 ubyte cursor_at_end_of_line; 592 ubyte initialized; 593 ubyte has_preferred_x; 594 ubyte single_line; 595 ubyte active; 596 ubyte padding1; 597 float preferred_x; 598 nk_text_undo_state undo; 599 } 600 601 // DRAWING 602 603 enum nk_command_type { 604 NK_COMMAND_NOP, 605 NK_COMMAND_SCISSOR, 606 NK_COMMAND_LINE, 607 NK_COMMAND_CURVE, 608 NK_COMMAND_RECT, 609 NK_COMMAND_RECT_FILLED, 610 NK_COMMAND_RECT_MULTI_COLOR, 611 NK_COMMAND_CIRCLE, 612 NK_COMMAND_CIRCLE_FILLED, 613 NK_COMMAND_ARC, 614 NK_COMMAND_ARC_FILLED, 615 NK_COMMAND_TRIANGLE, 616 NK_COMMAND_TRIANGLE_FILLED, 617 NK_COMMAND_POLYGON, 618 NK_COMMAND_POLYGON_FILLED, 619 NK_COMMAND_POLYLINE, 620 NK_COMMAND_TEXT, 621 NK_COMMAND_IMAGE, 622 NK_COMMAND_CUSTOM 623 } 624 625 /* command base and header of every command inside the buffer */ 626 struct nk_command { 627 nk_command_type type; 628 nk_size next; 629 version(NK_INCLUDE_COMMAND_USERDATA){ 630 nk_handle userdata; 631 } 632 } 633 634 struct nk_command_scissor { 635 nk_command header; 636 short x, y; 637 ushort w, h; 638 } 639 640 struct nk_command_line { 641 nk_command header; 642 ushort line_thickness; 643 nk_vec2i begin; 644 nk_vec2i end; 645 nk_color color; 646 } 647 648 struct nk_command_curve { 649 nk_command header; 650 ushort line_thickness; 651 nk_vec2i begin; 652 nk_vec2i end; 653 nk_vec2i[2] ctrl; 654 nk_color color; 655 } 656 657 struct nk_command_rect { 658 nk_command header; 659 ushort rounding; 660 ushort line_thickness; 661 short x, y; 662 ushort w, h; 663 nk_color color; 664 } 665 666 struct nk_command_rect_filled { 667 nk_command header; 668 ushort rounding; 669 short x, y; 670 ushort w, h; 671 nk_color color; 672 } 673 674 struct nk_command_rect_multi_color { 675 nk_command header; 676 short x, y; 677 ushort w, h; 678 nk_color left; 679 nk_color top; 680 nk_color bottom; 681 nk_color right; 682 } 683 684 struct nk_command_triangle { 685 nk_command header; 686 ushort line_thickness; 687 nk_vec2i a; 688 nk_vec2i b; 689 nk_vec2i c; 690 nk_color color; 691 } 692 693 struct nk_command_triangle_filled { 694 nk_command header; 695 nk_vec2i a; 696 nk_vec2i b; 697 nk_vec2i c; 698 nk_color color; 699 } 700 701 struct nk_command_circle { 702 nk_command header; 703 short x, y; 704 ushort line_thickness; 705 ushort w, h; 706 nk_color color; 707 } 708 709 struct nk_command_circle_filled { 710 nk_command header; 711 short x, y; 712 ushort w, h; 713 nk_color color; 714 } 715 716 struct nk_command_arc { 717 nk_command header; 718 short cx, cy; 719 ushort r; 720 ushort line_thickness; 721 float[2] a; 722 nk_color color; 723 } 724 725 struct nk_command_arc_filled { 726 nk_command header; 727 short cx, cy; 728 ushort r; 729 float[2] a; 730 nk_color color; 731 } 732 733 struct nk_command_polygon { 734 nk_command header; 735 nk_color color; 736 ushort line_thickness; 737 ushort point_count; 738 nk_vec2i[1] points; 739 } 740 741 struct nk_command_polygon_filled { 742 nk_command header; 743 nk_color color; 744 ushort point_count; 745 nk_vec2i[1] points; 746 } 747 748 struct nk_command_polyline { 749 nk_command header; 750 nk_color color; 751 ushort line_thickness; 752 ushort point_count; 753 nk_vec2i[1] points; 754 } 755 756 struct nk_command_image { 757 nk_command header; 758 short x, y; 759 ushort w, h; 760 nk_image img; 761 nk_color col; 762 } 763 764 extern(C) @nogc nothrow { 765 alias nk_command_custom_callback = void function(void *canvas, short x,short y, ushort w, ushort h, nk_handle callback_data); 766 } 767 768 struct nk_command_custom { 769 nk_command header; 770 short x, y; 771 ushort w, h; 772 nk_handle callback_data; 773 nk_command_custom_callback callback; 774 } 775 776 struct nk_command_text { 777 nk_command header; 778 const(nk_user_font) *font; 779 nk_color background; 780 nk_color foreground; 781 short x, y; 782 ushort w, h; 783 float height; 784 int length; 785 char[1] string; 786 } 787 788 enum nk_command_clipping { 789 NK_CLIPPING_OFF = nk_false, 790 NK_CLIPPING_ON = nk_true 791 } 792 793 struct nk_command_buffer { 794 nk_buffer *base; 795 nk_rect clip; 796 int use_clipping; 797 nk_handle userdata; 798 nk_size begin, end, last; 799 } 800 801 // INPUT 802 803 struct nk_mouse_button { 804 int down; 805 uint clicked; 806 nk_vec2 clicked_pos; 807 } 808 809 struct nk_mouse { 810 nk_mouse_button[nk_buttons.NK_BUTTON_MAX] buttons; 811 nk_vec2 pos; 812 nk_vec2 prev; 813 nk_vec2 delta; 814 nk_vec2 scroll_delta; 815 ubyte grab; 816 ubyte grabbed; 817 ubyte ungrab; 818 } 819 820 struct nk_key { 821 int down; 822 uint clicked; 823 } 824 825 struct nk_keyboard { 826 nk_key[nk_keys.NK_KEY_MAX] keys; 827 char[NK_INPUT_MAX] text; 828 int text_len; 829 } 830 831 struct nk_input { 832 nk_keyboard keyboard; 833 nk_mouse mouse; 834 } 835 836 // DRAW LIST 837 838 version(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) 839 { 840 version(NK_UINT_DRAW_INDEX) 841 { 842 alias nk_draw_index = nk_uint; 843 } 844 else 845 { 846 alias nk_draw_index = nk_ushort; 847 } 848 849 enum nk_draw_list_stroke { 850 NK_STROKE_OPEN = nk_false, 851 /* build up path has no connection back to the beginning */ 852 NK_STROKE_CLOSED = nk_true 853 /* build up path has a connection back to the beginning */ 854 } 855 856 enum nk_draw_vertex_layout_attribute { 857 NK_VERTEX_POSITION, 858 NK_VERTEX_COLOR, 859 NK_VERTEX_TEXCOORD, 860 NK_VERTEX_ATTRIBUTE_COUNT 861 } 862 863 enum nk_draw_vertex_layout_format { 864 NK_FORMAT_SCHAR, 865 NK_FORMAT_SSHORT, 866 NK_FORMAT_SINT, 867 NK_FORMAT_UCHAR, 868 NK_FORMAT_USHORT, 869 NK_FORMAT_UINT, 870 NK_FORMAT_FLOAT, 871 NK_FORMAT_DOUBLE, 872 873 NK_FORMAT_COLOR_BEGIN, 874 NK_FORMAT_R8G8B8 = NK_FORMAT_COLOR_BEGIN, 875 NK_FORMAT_R16G15B16, 876 NK_FORMAT_R32G32B32, 877 878 NK_FORMAT_R8G8B8A8, 879 NK_FORMAT_B8G8R8A8, 880 NK_FORMAT_R16G15B16A16, 881 NK_FORMAT_R32G32B32A32, 882 NK_FORMAT_R32G32B32A32_FLOAT, 883 NK_FORMAT_R32G32B32A32_DOUBLE, 884 885 NK_FORMAT_RGB32, 886 NK_FORMAT_RGBA32, 887 NK_FORMAT_COLOR_END = NK_FORMAT_RGBA32, 888 NK_FORMAT_COUNT 889 } 890 891 struct nk_draw_vertex_layout_element { 892 nk_draw_vertex_layout_attribute attribute; 893 nk_draw_vertex_layout_format format; 894 nk_size offset; 895 } 896 897 const(nk_draw_vertex_layout_element) NK_VERTEX_LAYOUT_END = { nk_draw_vertex_layout_attribute.NK_VERTEX_ATTRIBUTE_COUNT,nk_draw_vertex_layout_format.NK_FORMAT_COUNT,0 }; 898 899 struct nk_draw_command { 900 uint elem_count; 901 /* number of elements in the current draw batch */ 902 nk_rect clip_rect; 903 /* current screen clipping rectangle */ 904 nk_handle texture; 905 /* current texture to set */ 906 version(NK_INCLUDE_COMMAND_USERDATA) 907 { 908 nk_handle userdata; 909 } 910 } 911 912 struct nk_draw_list { 913 nk_rect clip_rect; 914 nk_vec2[12] circle_vtx; 915 nk_convert_config config; 916 917 nk_buffer *buffer; 918 nk_buffer *vertices; 919 nk_buffer *elements; 920 921 uint element_count; 922 uint vertex_count; 923 uint cmd_count; 924 nk_size cmd_offset; 925 926 uint path_count; 927 uint path_offset; 928 929 nk_anti_aliasing line_AA; 930 nk_anti_aliasing shape_AA; 931 932 version(NK_INCLUDE_COMMAND_USERDATA) 933 { 934 nk_handle userdata; 935 } 936 } 937 } 938 else 939 { 940 struct nk_draw_vertex_layout_element; 941 } 942 943 // GUI 944 945 enum nk_style_item_type { 946 NK_STYLE_ITEM_COLOR, 947 NK_STYLE_ITEM_IMAGE 948 } 949 950 union nk_style_item_data { 951 nk_image image; 952 nk_color color; 953 } 954 955 struct nk_style_item { 956 nk_style_item_type type; 957 nk_style_item_data data; 958 }; 959 960 struct nk_style_text { 961 nk_color color; 962 nk_vec2 padding; 963 } 964 965 extern(C) @nogc nothrow { 966 alias draw_begin_fn = void function(nk_command_buffer*, nk_handle userdata); 967 alias draw_end_fn = void function(nk_command_buffer*, nk_handle userdata); 968 } 969 970 struct nk_style_button { 971 /* background */ 972 nk_style_item normal; 973 nk_style_item hover; 974 nk_style_item active; 975 nk_color border_color; 976 977 /* text */ 978 nk_color text_background; 979 nk_color text_normal; 980 nk_color text_hover; 981 nk_color text_active; 982 nk_flags text_alignment; 983 984 /* properties */ 985 float border; 986 float rounding; 987 nk_vec2 padding; 988 nk_vec2 image_padding; 989 nk_vec2 touch_padding; 990 991 /* optional user callbacks */ 992 nk_handle userdata; 993 draw_begin_fn draw_begin; 994 draw_end_fn draw_end; 995 } 996 997 struct nk_style_toggle { 998 /* background */ 999 nk_style_item normal; 1000 nk_style_item hover; 1001 nk_style_item active; 1002 nk_color border_color; 1003 1004 /* cursor */ 1005 nk_style_item cursor_normal; 1006 nk_style_item cursor_hover; 1007 1008 /* text */ 1009 nk_color text_normal; 1010 nk_color text_hover; 1011 nk_color text_active; 1012 nk_color text_background; 1013 nk_flags text_alignment; 1014 1015 /* properties */ 1016 nk_vec2 padding; 1017 nk_vec2 touch_padding; 1018 float spacing; 1019 float border; 1020 1021 /* optional user callbacks */ 1022 nk_handle userdata; 1023 draw_begin_fn draw_begin; 1024 draw_end_fn draw_end; 1025 } 1026 1027 struct nk_style_selectable { 1028 /* background (inactive) */ 1029 nk_style_item normal; 1030 nk_style_item hover; 1031 nk_style_item pressed; 1032 1033 /* background (active) */ 1034 nk_style_item normal_active; 1035 nk_style_item hover_active; 1036 nk_style_item pressed_active; 1037 1038 /* text color (inactive) */ 1039 nk_color text_normal; 1040 nk_color text_hover; 1041 nk_color text_pressed; 1042 1043 /* text color (active) */ 1044 nk_color text_normal_active; 1045 nk_color text_hover_active; 1046 nk_color text_pressed_active; 1047 nk_color text_background; 1048 nk_flags text_alignment; 1049 1050 /* properties */ 1051 float rounding; 1052 nk_vec2 padding; 1053 nk_vec2 touch_padding; 1054 nk_vec2 image_padding; 1055 1056 /* optional user callbacks */ 1057 nk_handle userdata; 1058 draw_begin_fn draw_begin; 1059 draw_end_fn draw_end; 1060 } 1061 1062 struct nk_style_slider { 1063 /* background */ 1064 nk_style_item normal; 1065 nk_style_item hover; 1066 nk_style_item active; 1067 nk_color border_color; 1068 1069 /* background bar */ 1070 nk_color bar_normal; 1071 nk_color bar_hover; 1072 nk_color bar_active; 1073 nk_color bar_filled; 1074 1075 /* cursor */ 1076 nk_style_item cursor_normal; 1077 nk_style_item cursor_hover; 1078 nk_style_item cursor_active; 1079 1080 /* properties */ 1081 float border; 1082 float rounding; 1083 float bar_height; 1084 nk_vec2 padding; 1085 nk_vec2 spacing; 1086 nk_vec2 cursor_size; 1087 1088 /* optional buttons */ 1089 int show_buttons; 1090 nk_style_button inc_button; 1091 nk_style_button dec_button; 1092 nk_symbol_type inc_symbol; 1093 nk_symbol_type dec_symbol; 1094 1095 /* optional user callbacks */ 1096 nk_handle userdata; 1097 draw_begin_fn draw_begin; 1098 draw_end_fn draw_end; 1099 } 1100 1101 struct nk_style_progress { 1102 /* background */ 1103 nk_style_item normal; 1104 nk_style_item hover; 1105 nk_style_item active; 1106 nk_color border_color; 1107 1108 /* cursor */ 1109 nk_style_item cursor_normal; 1110 nk_style_item cursor_hover; 1111 nk_style_item cursor_active; 1112 nk_color cursor_border_color; 1113 1114 /* properties */ 1115 float rounding; 1116 float border; 1117 float cursor_border; 1118 float cursor_rounding; 1119 nk_vec2 padding; 1120 1121 /* optional user callbacks */ 1122 nk_handle userdata; 1123 draw_begin_fn draw_begin; 1124 draw_end_fn draw_end; 1125 } 1126 1127 struct nk_style_scrollbar { 1128 /* background */ 1129 nk_style_item normal; 1130 nk_style_item hover; 1131 nk_style_item active; 1132 nk_color border_color; 1133 1134 /* cursor */ 1135 nk_style_item cursor_normal; 1136 nk_style_item cursor_hover; 1137 nk_style_item cursor_active; 1138 nk_color cursor_border_color; 1139 1140 /* properties */ 1141 float border; 1142 float rounding; 1143 float border_cursor; 1144 float rounding_cursor; 1145 nk_vec2 padding; 1146 1147 /* optional buttons */ 1148 int show_buttons; 1149 nk_style_button inc_button; 1150 nk_style_button dec_button; 1151 nk_symbol_type inc_symbol; 1152 nk_symbol_type dec_symbol; 1153 1154 /* optional user callbacks */ 1155 nk_handle userdata; 1156 draw_begin_fn draw_begin; 1157 draw_end_fn draw_end; 1158 } 1159 1160 struct nk_style_edit { 1161 /* background */ 1162 nk_style_item normal; 1163 nk_style_item hover; 1164 nk_style_item active; 1165 nk_color border_color; 1166 nk_style_scrollbar scrollbar; 1167 1168 /* cursor */ 1169 nk_color cursor_normal; 1170 nk_color cursor_hover; 1171 nk_color cursor_text_normal; 1172 nk_color cursor_text_hover; 1173 1174 /* text (unselected) */ 1175 nk_color text_normal; 1176 nk_color text_hover; 1177 nk_color text_active; 1178 1179 /* text (selected) */ 1180 nk_color selected_normal; 1181 nk_color selected_hover; 1182 nk_color selected_text_normal; 1183 nk_color selected_text_hover; 1184 1185 /* properties */ 1186 float border; 1187 float rounding; 1188 float cursor_size; 1189 nk_vec2 scrollbar_size; 1190 nk_vec2 padding; 1191 float row_padding; 1192 } 1193 1194 struct nk_style_property { 1195 /* background */ 1196 nk_style_item normal; 1197 nk_style_item hover; 1198 nk_style_item active; 1199 nk_color border_color; 1200 1201 /* text */ 1202 nk_color label_normal; 1203 nk_color label_hover; 1204 nk_color label_active; 1205 1206 /* symbols */ 1207 nk_symbol_type sym_left; 1208 nk_symbol_type sym_right; 1209 1210 /* properties */ 1211 float border; 1212 float rounding; 1213 nk_vec2 padding; 1214 1215 nk_style_edit edit; 1216 nk_style_button inc_button; 1217 nk_style_button dec_button; 1218 1219 /* optional user callbacks */ 1220 nk_handle userdata; 1221 draw_begin_fn draw_begin; 1222 draw_end_fn draw_end; 1223 } 1224 1225 struct nk_style_chart { 1226 /* colors */ 1227 nk_style_item background; 1228 nk_color border_color; 1229 nk_color selected_color; 1230 nk_color color; 1231 1232 /* properties */ 1233 float border; 1234 float rounding; 1235 nk_vec2 padding; 1236 } 1237 1238 struct nk_style_combo { 1239 /* background */ 1240 nk_style_item normal; 1241 nk_style_item hover; 1242 nk_style_item active; 1243 nk_color border_color; 1244 1245 /* label */ 1246 nk_color label_normal; 1247 nk_color label_hover; 1248 nk_color label_active; 1249 1250 /* symbol */ 1251 nk_color symbol_normal; 1252 nk_color symbol_hover; 1253 nk_color symbol_active; 1254 1255 /* button */ 1256 nk_style_button button; 1257 nk_symbol_type sym_normal; 1258 nk_symbol_type sym_hover; 1259 nk_symbol_type sym_active; 1260 1261 /* properties */ 1262 float border; 1263 float rounding; 1264 nk_vec2 content_padding; 1265 nk_vec2 button_padding; 1266 nk_vec2 spacing; 1267 } 1268 1269 struct nk_style_tab { 1270 /* background */ 1271 nk_style_item background; 1272 nk_color border_color; 1273 nk_color text; 1274 1275 /* button */ 1276 nk_style_button tab_maximize_button; 1277 nk_style_button tab_minimize_button; 1278 nk_style_button node_maximize_button; 1279 nk_style_button node_minimize_button; 1280 nk_symbol_type sym_minimize; 1281 nk_symbol_type sym_maximize; 1282 1283 /* properties */ 1284 float border; 1285 float rounding; 1286 float indent; 1287 nk_vec2 padding; 1288 nk_vec2 spacing; 1289 } 1290 1291 enum nk_style_header_align { 1292 NK_HEADER_LEFT, 1293 NK_HEADER_RIGHT 1294 } 1295 struct nk_style_window_header { 1296 /* background */ 1297 nk_style_item normal; 1298 nk_style_item hover; 1299 nk_style_item active; 1300 1301 /* button */ 1302 nk_style_button close_button; 1303 nk_style_button minimize_button; 1304 nk_symbol_type close_symbol; 1305 nk_symbol_type minimize_symbol; 1306 nk_symbol_type maximize_symbol; 1307 1308 /* title */ 1309 nk_color label_normal; 1310 nk_color label_hover; 1311 nk_color label_active; 1312 1313 /* properties */ 1314 nk_style_header_align align_; 1315 nk_vec2 padding; 1316 nk_vec2 label_padding; 1317 nk_vec2 spacing; 1318 } 1319 1320 struct nk_style_window { 1321 nk_style_window_header header; 1322 nk_style_item fixed_background; 1323 nk_color background; 1324 1325 nk_color border_color; 1326 nk_color popup_border_color; 1327 nk_color combo_border_color; 1328 nk_color contextual_border_color; 1329 nk_color menu_border_color; 1330 nk_color group_border_color; 1331 nk_color tooltip_border_color; 1332 nk_style_item scaler; 1333 1334 float border; 1335 float combo_border; 1336 float contextual_border; 1337 float menu_border; 1338 float group_border; 1339 float tooltip_border; 1340 float popup_border; 1341 float min_row_height_padding; 1342 1343 float rounding; 1344 nk_vec2 spacing; 1345 nk_vec2 scrollbar_size; 1346 nk_vec2 min_size; 1347 1348 nk_vec2 padding; 1349 nk_vec2 group_padding; 1350 nk_vec2 popup_padding; 1351 nk_vec2 combo_padding; 1352 nk_vec2 contextual_padding; 1353 nk_vec2 menu_padding; 1354 nk_vec2 tooltip_padding; 1355 } 1356 1357 struct nk_style { 1358 const(nk_user_font) *font; 1359 const(nk_cursor)*[nk_style_cursor.NK_CURSOR_COUNT] cursors; 1360 const(nk_cursor) *cursor_active; 1361 nk_cursor *cursor_last; 1362 int cursor_visible; 1363 1364 nk_style_text text; 1365 nk_style_button button; 1366 nk_style_button contextual_button; 1367 nk_style_button menu_button; 1368 nk_style_toggle option; 1369 nk_style_toggle checkbox; 1370 nk_style_selectable selectable; 1371 nk_style_slider slider; 1372 nk_style_progress progress; 1373 nk_style_property property; 1374 nk_style_edit edit; 1375 nk_style_chart chart; 1376 nk_style_scrollbar scrollh; 1377 nk_style_scrollbar scrollv; 1378 nk_style_tab tab; 1379 nk_style_combo combo; 1380 nk_style_window window; 1381 } 1382 1383 // PANEL 1384 1385 enum NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS = 16; 1386 enum NK_CHART_MAX_SLOT = 4; 1387 1388 enum nk_panel_type { 1389 NK_PANEL_NONE = 0, 1390 NK_PANEL_WINDOW = NK_FLAG(0), 1391 NK_PANEL_GROUP = NK_FLAG(1), 1392 NK_PANEL_POPUP = NK_FLAG(2), 1393 NK_PANEL_CONTEXTUAL = NK_FLAG(4), 1394 NK_PANEL_COMBO = NK_FLAG(5), 1395 NK_PANEL_MENU = NK_FLAG(6), 1396 NK_PANEL_TOOLTIP = NK_FLAG(7) 1397 } 1398 1399 enum nk_panel_set { 1400 NK_PANEL_SET_NONBLOCK = nk_panel_type.NK_PANEL_CONTEXTUAL| nk_panel_type.NK_PANEL_COMBO| nk_panel_type.NK_PANEL_MENU| nk_panel_type.NK_PANEL_TOOLTIP, 1401 NK_PANEL_SET_POPUP = NK_PANEL_SET_NONBLOCK| cast(nk_panel_set)nk_panel_type.NK_PANEL_POPUP, 1402 NK_PANEL_SET_SUB = NK_PANEL_SET_POPUP| cast(nk_panel_set)nk_panel_type.NK_PANEL_GROUP 1403 } 1404 1405 struct nk_chart_slot { 1406 nk_chart_type type; 1407 nk_color color; 1408 nk_color highlight; 1409 float min, max, range; 1410 int count; 1411 nk_vec2 last; 1412 int index; 1413 } 1414 1415 struct nk_chart { 1416 int slot; 1417 float x, y, w, h; 1418 nk_chart_slot[NK_CHART_MAX_SLOT] slots; 1419 } 1420 1421 enum nk_panel_row_layout_type { 1422 NK_LAYOUT_DYNAMIC_FIXED = 0, 1423 NK_LAYOUT_DYNAMIC_ROW, 1424 NK_LAYOUT_DYNAMIC_FREE, 1425 NK_LAYOUT_DYNAMIC, 1426 NK_LAYOUT_STATIC_FIXED, 1427 NK_LAYOUT_STATIC_ROW, 1428 NK_LAYOUT_STATIC_FREE, 1429 NK_LAYOUT_STATIC, 1430 NK_LAYOUT_TEMPLATE, 1431 NK_LAYOUT_COUNT 1432 } 1433 1434 struct nk_row_layout { 1435 nk_panel_row_layout_type type; 1436 int index; 1437 float height; 1438 float min_height; 1439 int columns; 1440 const(float) *ratio; 1441 float item_width; 1442 float item_height; 1443 float item_offset; 1444 float filled; 1445 nk_rect item; 1446 int tree_depth; 1447 float[NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS] templates; 1448 } 1449 1450 struct nk_popup_buffer { 1451 nk_size begin; 1452 nk_size parent; 1453 nk_size last; 1454 nk_size end; 1455 int active; 1456 } 1457 1458 struct nk_menu_state { 1459 float x, y, w, h; 1460 nk_scroll offset; 1461 } 1462 1463 struct nk_panel { 1464 nk_panel_type type; 1465 nk_flags flags; 1466 nk_rect bounds; 1467 nk_uint *offset_x; 1468 nk_uint *offset_y; 1469 float at_x, at_y, max_x; 1470 float footer_height; 1471 float header_height; 1472 float border; 1473 uint has_scrolling; 1474 nk_rect clip; 1475 nk_menu_state menu; 1476 nk_row_layout row; 1477 nk_chart chart; 1478 nk_command_buffer *buffer; 1479 nk_panel *parent; 1480 } 1481 1482 // WINDOW 1483 1484 enum NK_WINDOW_MAX_NAME = 64; 1485 1486 enum nk_window_flags { 1487 NK_WINDOW_PRIVATE = NK_FLAG(11), 1488 NK_WINDOW_DYNAMIC = NK_WINDOW_PRIVATE, 1489 /* special window type growing up in height while being filled to a certain maximum height */ 1490 NK_WINDOW_ROM = NK_FLAG(12), 1491 /* sets window widgets into a read only mode and does not allow input changes */ 1492 NK_WINDOW_NOT_INTERACTIVE = NK_WINDOW_ROM|cast(nk_window_flags)nk_panel_flags.NK_WINDOW_NO_INPUT, 1493 /* prevents all interaction caused by input to either window or widgets inside */ 1494 NK_WINDOW_HIDDEN = NK_FLAG(13), 1495 /* Hides window and stops any window interaction and drawing */ 1496 NK_WINDOW_CLOSED = NK_FLAG(14), 1497 /* Directly closes and frees the window at the end of the frame */ 1498 NK_WINDOW_MINIMIZED = NK_FLAG(15), 1499 /* marks the window as minimized */ 1500 NK_WINDOW_REMOVE_ROM = NK_FLAG(16) 1501 /* Removes read only mode at the end of the window */ 1502 } 1503 1504 struct nk_popup_state { 1505 nk_window *win; 1506 nk_panel_type type; 1507 nk_popup_buffer buf; 1508 nk_hash name; 1509 int active; 1510 uint combo_count; 1511 uint con_count, con_old; 1512 uint active_con; 1513 nk_rect header; 1514 } 1515 1516 struct nk_edit_state { 1517 nk_hash name; 1518 uint seq; 1519 uint old; 1520 int active, prev; 1521 int cursor; 1522 int sel_start; 1523 int sel_end; 1524 nk_scroll scrollbar; 1525 ubyte mode; 1526 ubyte single_line; 1527 } 1528 1529 struct nk_property_state { 1530 int active, prev; 1531 char[NK_MAX_NUMBER_BUFFER] buffer; 1532 int length; 1533 int cursor; 1534 int select_start; 1535 int select_end; 1536 nk_hash name; 1537 uint seq; 1538 uint old; 1539 int state; 1540 } 1541 1542 struct nk_window { 1543 uint seq; 1544 nk_hash name; 1545 char[NK_WINDOW_MAX_NAME] name_string; 1546 nk_flags flags; 1547 1548 nk_rect bounds; 1549 nk_scroll scrollbar; 1550 nk_command_buffer buffer; 1551 nk_panel *layout; 1552 float scrollbar_hiding_timer; 1553 1554 /* persistent widget state */ 1555 nk_property_state property; 1556 nk_popup_state popup; 1557 nk_edit_state edit; 1558 uint scrolled; 1559 1560 nk_table *tables; 1561 uint table_count; 1562 1563 /* window list hooks */ 1564 nk_window *next; 1565 nk_window *prev; 1566 nk_window *parent; 1567 } 1568 1569 // STACK 1570 1571 enum NK_BUTTON_BEHAVIOR_STACK_SIZE = 8; 1572 enum NK_FONT_STACK_SIZE = 8; 1573 enum NK_STYLE_ITEM_STACK_SIZE = 16; 1574 enum NK_FLOAT_STACK_SIZE = 32; 1575 enum NK_VECTOR_STACK_SIZE = 16; 1576 enum NK_FLAGS_STACK_SIZE = 32; 1577 enum NK_COLOR_STACK_SIZE = 32; 1578 1579 template NK_CONFIGURATION_STACK_TYPE(string prefix, string name, string type) 1580 { 1581 const char[] NK_CONFIGURATION_STACK_TYPE = "struct nk_config_stack_"~name~"_element {"~ 1582 prefix ~ "_"~type~" *address;" ~ 1583 prefix ~ "_"~type~" old_value;"~ 1584 "}"; 1585 } 1586 1587 template NK_CONFIG_STACK(string type, string size) 1588 { 1589 const char[] NK_CONFIG_STACK = "struct nk_config_stack_"~type~" {"~ 1590 "int head;"~ 1591 "nk_config_stack_"~type~"_element["~size~"] elements;"~ 1592 "}"; 1593 } 1594 1595 mixin(NK_CONFIGURATION_STACK_TYPE!("nk", "style_item", "style_item")); 1596 mixin(NK_CONFIGURATION_STACK_TYPE!("nk" ,"float", "float")); 1597 mixin(NK_CONFIGURATION_STACK_TYPE!("nk", "vec2", "vec2")); 1598 mixin(NK_CONFIGURATION_STACK_TYPE!("nk" ,"flags", "flags")); 1599 mixin(NK_CONFIGURATION_STACK_TYPE!("nk", "color", "color")); 1600 mixin(NK_CONFIGURATION_STACK_TYPE!("nk", "user_font", "user_font*")); 1601 mixin(NK_CONFIGURATION_STACK_TYPE!("nk", "button_behavior", "button_behavior")); 1602 1603 mixin(NK_CONFIG_STACK!("style_item", "NK_STYLE_ITEM_STACK_SIZE")); 1604 mixin(NK_CONFIG_STACK!("float", "NK_FLOAT_STACK_SIZE")); 1605 mixin(NK_CONFIG_STACK!("vec2", "NK_VECTOR_STACK_SIZE")); 1606 mixin(NK_CONFIG_STACK!("flags", "NK_FLAGS_STACK_SIZE")); 1607 mixin(NK_CONFIG_STACK!("color", "NK_COLOR_STACK_SIZE")); 1608 mixin(NK_CONFIG_STACK!("user_font", "NK_FONT_STACK_SIZE")); 1609 mixin(NK_CONFIG_STACK!("button_behavior", "NK_BUTTON_BEHAVIOR_STACK_SIZE")); 1610 1611 struct nk_configuration_stacks { 1612 nk_config_stack_style_item style_items; 1613 nk_config_stack_float floats; 1614 nk_config_stack_vec2 vectors; 1615 nk_config_stack_flags flags; 1616 nk_config_stack_color colors; 1617 nk_config_stack_user_font fonts; 1618 nk_config_stack_button_behavior button_behaviors; 1619 } 1620 1621 // CONTEXT 1622 1623 enum NK_VALUE_PAGE_CAPACITY = (NK_MAX(nk_window.sizeof,nk_panel.sizeof) / nk_uint.sizeof) / 2; 1624 1625 struct nk_table { 1626 uint seq; 1627 uint size; 1628 nk_hash[NK_VALUE_PAGE_CAPACITY] keys; 1629 nk_uint[NK_VALUE_PAGE_CAPACITY] values; 1630 nk_table *next; 1631 nk_table *prev; 1632 } 1633 1634 union nk_page_data { 1635 nk_table tbl; 1636 nk_panel pan; 1637 nk_window win; 1638 } 1639 1640 struct nk_page_element { 1641 nk_page_data data; 1642 nk_page_element *next; 1643 nk_page_element *prev; 1644 } 1645 1646 struct nk_page { 1647 uint size; 1648 nk_page *next; 1649 nk_page_element[1] win; 1650 } 1651 1652 struct nk_pool { 1653 nk_allocator alloc; 1654 nk_allocation_type type; 1655 uint page_count; 1656 nk_page *pages; 1657 nk_page_element *freelist; 1658 uint capacity; 1659 nk_size size; 1660 nk_size cap; 1661 } 1662 1663 struct nk_context { 1664 /* public: can be accessed freely */ 1665 nk_input input; 1666 nk_style style; 1667 nk_buffer memory; 1668 nk_clipboard clip; 1669 nk_flags last_widget_state; 1670 nk_button_behavior button_behavior; 1671 nk_configuration_stacks stacks; 1672 float delta_time_seconds; 1673 1674 /* private: 1675 should only be accessed if you 1676 know what you are doing */ 1677 version(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) 1678 { 1679 nk_draw_list draw_list; 1680 } 1681 version(NK_INCLUDE_COMMAND_USERDATA) 1682 { 1683 nk_handle userdata; 1684 } 1685 /* text editor objects are quite big because of an internal 1686 * undo/redo stack. Therefore it does not make sense to have one for 1687 * each window for temporary use cases, so I only provide *one* instance 1688 * for all windows. This works because the content is cleared anyway */ 1689 nk_text_edit text_edit; 1690 /* draw buffer used for overlay drawing operation like cursor */ 1691 nk_command_buffer overlay; 1692 1693 /* windows */ 1694 int build; 1695 int use_pool; 1696 nk_pool pool; 1697 nk_window *begin; 1698 nk_window *end; 1699 nk_window *active; 1700 nk_window *current; 1701 nk_page_element *freelist; 1702 uint count; 1703 uint seq; 1704 } 1705 1706 enum { 1707 NK_UP = nk_heading.NK_UP, 1708 NK_RIGHT = nk_heading.NK_RIGHT, 1709 NK_DOWN = nk_heading.NK_DOWN, 1710 NK_LEFT = nk_heading.NK_LEFT, 1711 NK_BUTTON_DEFAULT = nk_button_behavior.NK_BUTTON_DEFAULT, 1712 NK_BUTTON_REPEATER = nk_button_behavior.NK_BUTTON_REPEATER, 1713 NK_FIXED = nk_modify.NK_FIXED, 1714 NK_MODIFIABLE = nk_modify.NK_MODIFIABLE, 1715 NK_VERTICAL = nk_orientation.NK_VERTICAL, 1716 NK_HORIZONTAL = nk_orientation.NK_HORIZONTAL, 1717 NK_MINIMIZED = nk_collapse_states.NK_MINIMIZED, 1718 NK_MAXIMIZED = nk_collapse_states.NK_MAXIMIZED, 1719 NK_HIDDEN = nk_show_states.NK_HIDDEN, 1720 NK_SHOWN = nk_show_states.NK_SHOWN, 1721 NK_CHART_LINES = nk_chart_type.NK_CHART_LINES, 1722 NK_CHART_COLUMN = nk_chart_type.NK_CHART_COLUMN, 1723 NK_CHART_MAX = nk_chart_type.NK_CHART_MAX, 1724 NK_CHART_HOVERING = nk_chart_event.NK_CHART_HOVERING, 1725 NK_CHART_CLICKED = nk_chart_event.NK_CHART_CLICKED, 1726 NK_RGB = nk_color_format.NK_RGB, 1727 NK_RGBA = nk_color_format.NK_RGBA, 1728 NK_POPUP_STATIC = nk_popup_type.NK_POPUP_STATIC, 1729 NK_POPUP_DYNAMIC = nk_popup_type.NK_POPUP_DYNAMIC, 1730 NK_DYNAMIC = nk_layout_format.NK_DYNAMIC, 1731 NK_STATIC = nk_layout_format.NK_STATIC, 1732 NK_TREE_NODE = nk_tree_type.NK_TREE_NODE, 1733 NK_TREE_TAB = nk_tree_type.NK_TREE_TAB, 1734 NK_ANTI_ALIASING_OFF = nk_anti_aliasing.NK_ANTI_ALIASING_OFF, 1735 NK_ANTI_ALIASING_ON = nk_anti_aliasing.NK_ANTI_ALIASING_ON, 1736 NK_SYMBOL_NONE = nk_symbol_type.NK_SYMBOL_NONE, 1737 NK_SYMBOL_X = nk_symbol_type.NK_SYMBOL_X, 1738 NK_SYMBOL_UNDERSCORE = nk_symbol_type.NK_SYMBOL_UNDERSCORE, 1739 NK_SYMBOL_CIRCLE_SOLID = nk_symbol_type.NK_SYMBOL_CIRCLE_SOLID, 1740 NK_SYMBOL_CIRCLE_OUTLINE = nk_symbol_type.NK_SYMBOL_CIRCLE_OUTLINE, 1741 NK_SYMBOL_RECT_SOLID = nk_symbol_type.NK_SYMBOL_RECT_SOLID, 1742 NK_SYMBOL_RECT_OUTLINE = nk_symbol_type.NK_SYMBOL_RECT_OUTLINE, 1743 NK_SYMBOL_TRIANGLE_UP = nk_symbol_type.NK_SYMBOL_TRIANGLE_UP, 1744 NK_SYMBOL_TRIANGLE_DOWN = nk_symbol_type.NK_SYMBOL_TRIANGLE_DOWN, 1745 NK_SYMBOL_TRIANGLE_LEFT = nk_symbol_type.NK_SYMBOL_TRIANGLE_LEFT, 1746 NK_SYMBOL_TRIANGLE_RIGHT = nk_symbol_type.NK_SYMBOL_TRIANGLE_RIGHT, 1747 NK_SYMBOL_PLUS = nk_symbol_type.NK_SYMBOL_PLUS, 1748 NK_SYMBOL_MINUS = nk_symbol_type.NK_SYMBOL_MINUS, 1749 NK_SYMBOL_MAX = nk_symbol_type.NK_SYMBOL_MAX, 1750 NK_KEY_NONE = nk_keys.NK_KEY_NONE, 1751 NK_KEY_SHIFT = nk_keys.NK_KEY_SHIFT, 1752 NK_KEY_CTRL = nk_keys.NK_KEY_CTRL, 1753 NK_KEY_DEL = nk_keys.NK_KEY_DEL, 1754 NK_KEY_ENTER = nk_keys.NK_KEY_ENTER, 1755 NK_KEY_TAB = nk_keys.NK_KEY_TAB, 1756 NK_KEY_BACKSPACE = nk_keys.NK_KEY_BACKSPACE, 1757 NK_KEY_COPY = nk_keys.NK_KEY_COPY, 1758 NK_KEY_CUT = nk_keys.NK_KEY_CUT, 1759 NK_KEY_PASTE = nk_keys.NK_KEY_PASTE, 1760 NK_KEY_UP = nk_keys.NK_KEY_UP, 1761 NK_KEY_DOWN = nk_keys.NK_KEY_DOWN, 1762 NK_KEY_LEFT = nk_keys.NK_KEY_LEFT, 1763 NK_KEY_RIGHT = nk_keys.NK_KEY_RIGHT, 1764 NK_KEY_TEXT_INSERT_MODE = nk_keys.NK_KEY_TEXT_INSERT_MODE, 1765 NK_KEY_TEXT_REPLACE_MODE = nk_keys.NK_KEY_TEXT_REPLACE_MODE, 1766 NK_KEY_TEXT_RESET_MODE = nk_keys.NK_KEY_TEXT_RESET_MODE, 1767 NK_KEY_TEXT_LINE_START = nk_keys.NK_KEY_TEXT_LINE_START, 1768 NK_KEY_TEXT_LINE_END = nk_keys.NK_KEY_TEXT_LINE_END, 1769 NK_KEY_TEXT_START = nk_keys.NK_KEY_TEXT_START, 1770 NK_KEY_TEXT_END = nk_keys.NK_KEY_TEXT_END, 1771 NK_KEY_TEXT_UNDO = nk_keys.NK_KEY_TEXT_UNDO, 1772 NK_KEY_TEXT_REDO = nk_keys.NK_KEY_TEXT_REDO, 1773 NK_KEY_TEXT_SELECT_ALL = nk_keys.NK_KEY_TEXT_SELECT_ALL, 1774 NK_KEY_TEXT_WORD_LEFT = nk_keys.NK_KEY_TEXT_WORD_LEFT, 1775 NK_KEY_TEXT_WORD_RIGHT = nk_keys.NK_KEY_TEXT_WORD_RIGHT, 1776 NK_KEY_SCROLL_START = nk_keys.NK_KEY_SCROLL_START, 1777 NK_KEY_SCROLL_END = nk_keys.NK_KEY_SCROLL_END, 1778 NK_KEY_SCROLL_DOWN = nk_keys.NK_KEY_SCROLL_DOWN, 1779 NK_KEY_SCROLL_UP = nk_keys.NK_KEY_SCROLL_UP, 1780 NK_KEY_MAX = nk_keys.NK_KEY_MAX, 1781 NK_BUTTON_LEFT = nk_buttons.NK_BUTTON_LEFT, 1782 NK_BUTTON_MIDDLE = nk_buttons.NK_BUTTON_MIDDLE, 1783 NK_BUTTON_RIGHT = nk_buttons.NK_BUTTON_RIGHT, 1784 NK_BUTTON_DOUBLE = nk_buttons.NK_BUTTON_DOUBLE, 1785 NK_BUTTON_MAX = nk_buttons.NK_BUTTON_MAX, 1786 NK_CONVERT_SUCCESS = nk_convert_result.NK_CONVERT_SUCCESS, 1787 NK_CONVERT_INVALID_PARAM = nk_convert_result.NK_CONVERT_INVALID_PARAM, 1788 NK_CONVERT_COMMAND_BUFFER_FULL = nk_convert_result.NK_CONVERT_COMMAND_BUFFER_FULL, 1789 NK_CONVERT_VERTEX_BUFFER_FULL = nk_convert_result.NK_CONVERT_VERTEX_BUFFER_FULL, 1790 NK_CONVERT_ELEMENT_BUFFER_FULL = nk_convert_result.NK_CONVERT_ELEMENT_BUFFER_FULL, 1791 NK_WINDOW_BORDER = nk_panel_flags.NK_WINDOW_BORDER, 1792 NK_WINDOW_MOVABLE = nk_panel_flags.NK_WINDOW_MOVABLE, 1793 NK_WINDOW_SCALABLE = nk_panel_flags.NK_WINDOW_SCALABLE, 1794 NK_WINDOW_CLOSABLE = nk_panel_flags.NK_WINDOW_CLOSABLE, 1795 NK_WINDOW_MINIMIZABLE = nk_panel_flags.NK_WINDOW_MINIMIZABLE, 1796 NK_WINDOW_NO_SCROLLBAR = nk_panel_flags.NK_WINDOW_NO_SCROLLBAR, 1797 NK_WINDOW_TITLE = nk_panel_flags.NK_WINDOW_TITLE, 1798 NK_WINDOW_SCROLL_AUTO_HIDE = nk_panel_flags.NK_WINDOW_SCROLL_AUTO_HIDE, 1799 NK_WINDOW_BACKGROUND = nk_panel_flags.NK_WINDOW_BACKGROUND, 1800 NK_WINDOW_SCALE_LEFT = nk_panel_flags.NK_WINDOW_SCALE_LEFT, 1801 NK_WINDOW_NO_INPUT = nk_panel_flags.NK_WINDOW_NO_INPUT, 1802 NK_WIDGET_INVALID = nk_widget_layout_states.NK_WIDGET_INVALID, 1803 NK_WIDGET_VALID = nk_widget_layout_states.NK_WIDGET_VALID, 1804 NK_WIDGET_ROM = nk_widget_layout_states.NK_WIDGET_ROM, 1805 NK_WIDGET_STATE_MODIFIED = nk_widget_states.NK_WIDGET_STATE_MODIFIED, 1806 NK_WIDGET_STATE_INACTIVE = nk_widget_states.NK_WIDGET_STATE_INACTIVE, 1807 NK_WIDGET_STATE_ENTERED = nk_widget_states.NK_WIDGET_STATE_ENTERED, 1808 NK_WIDGET_STATE_HOVER = nk_widget_states.NK_WIDGET_STATE_HOVER, 1809 NK_WIDGET_STATE_ACTIVED = nk_widget_states.NK_WIDGET_STATE_ACTIVED, 1810 NK_WIDGET_STATE_LEFT = nk_widget_states.NK_WIDGET_STATE_LEFT, 1811 NK_WIDGET_STATE_HOVERED = nk_widget_states.NK_WIDGET_STATE_HOVERED, 1812 NK_WIDGET_STATE_ACTIVE = nk_widget_states.NK_WIDGET_STATE_ACTIVE, 1813 NK_TEXT_ALIGN_LEFT = nk_text_align.NK_TEXT_ALIGN_LEFT, 1814 NK_TEXT_ALIGN_CENTERED = nk_text_align.NK_TEXT_ALIGN_CENTERED, 1815 NK_TEXT_ALIGN_RIGHT = nk_text_align.NK_TEXT_ALIGN_RIGHT, 1816 NK_TEXT_ALIGN_TOP = nk_text_align.NK_TEXT_ALIGN_TOP, 1817 NK_TEXT_ALIGN_MIDDLE = nk_text_align.NK_TEXT_ALIGN_MIDDLE, 1818 NK_TEXT_ALIGN_BOTTOM = nk_text_align.NK_TEXT_ALIGN_BOTTOM, 1819 NK_TEXT_LEFT = nk_text_alignment.NK_TEXT_LEFT, 1820 NK_TEXT_CENTERED = nk_text_alignment.NK_TEXT_CENTERED, 1821 NK_TEXT_RIGHT = nk_text_alignment.NK_TEXT_RIGHT, 1822 NK_EDIT_DEFAULT = nk_edit_flags.NK_EDIT_DEFAULT, 1823 NK_EDIT_READ_ONLY = nk_edit_flags.NK_EDIT_READ_ONLY, 1824 NK_EDIT_AUTO_SELECT = nk_edit_flags.NK_EDIT_AUTO_SELECT, 1825 NK_EDIT_SIG_ENTER = nk_edit_flags.NK_EDIT_SIG_ENTER, 1826 NK_EDIT_ALLOW_TAB = nk_edit_flags.NK_EDIT_ALLOW_TAB, 1827 NK_EDIT_NO_CURSOR = nk_edit_flags.NK_EDIT_NO_CURSOR, 1828 NK_EDIT_SELECTABLE = nk_edit_flags.NK_EDIT_SELECTABLE, 1829 NK_EDIT_CLIPBOARD = nk_edit_flags.NK_EDIT_CLIPBOARD, 1830 NK_EDIT_CTRL_ENTER_NEWLINE = nk_edit_flags.NK_EDIT_CTRL_ENTER_NEWLINE, 1831 NK_EDIT_NO_HORIZONTAL_SCROLL = nk_edit_flags.NK_EDIT_NO_HORIZONTAL_SCROLL, 1832 NK_EDIT_ALWAYS_INSERT_MODE = nk_edit_flags.NK_EDIT_ALWAYS_INSERT_MODE, 1833 NK_EDIT_MULTILINE = nk_edit_flags.NK_EDIT_MULTILINE, 1834 NK_EDIT_GOTO_END_ON_ACTIVATE = nk_edit_flags.NK_EDIT_GOTO_END_ON_ACTIVATE, 1835 NK_EDIT_SIMPLE = nk_edit_types.NK_EDIT_SIMPLE, 1836 NK_EDIT_FIELD = nk_edit_types.NK_EDIT_FIELD, 1837 NK_EDIT_BOX = nk_edit_types.NK_EDIT_BOX, 1838 NK_EDIT_EDITOR = nk_edit_types.NK_EDIT_EDITOR, 1839 NK_EDIT_ACTIVE = nk_edit_events.NK_EDIT_ACTIVE, 1840 NK_EDIT_INACTIVE = nk_edit_events.NK_EDIT_INACTIVE, 1841 NK_EDIT_ACTIVATED = nk_edit_events.NK_EDIT_ACTIVATED, 1842 NK_EDIT_DEACTIVATED = nk_edit_events.NK_EDIT_DEACTIVATED, 1843 NK_EDIT_COMMITED = nk_edit_events.NK_EDIT_COMMITED, 1844 NK_COLOR_TEXT = nk_style_colors.NK_COLOR_TEXT, 1845 NK_COLOR_WINDOW = nk_style_colors.NK_COLOR_WINDOW, 1846 NK_COLOR_HEADER = nk_style_colors.NK_COLOR_HEADER, 1847 NK_COLOR_BORDER = nk_style_colors.NK_COLOR_BORDER, 1848 NK_COLOR_BUTTON = nk_style_colors.NK_COLOR_BUTTON, 1849 NK_COLOR_BUTTON_HOVER = nk_style_colors.NK_COLOR_BUTTON_HOVER, 1850 NK_COLOR_BUTTON_ACTIVE = nk_style_colors.NK_COLOR_BUTTON_ACTIVE, 1851 NK_COLOR_TOGGLE = nk_style_colors.NK_COLOR_TOGGLE, 1852 NK_COLOR_TOGGLE_HOVER = nk_style_colors.NK_COLOR_TOGGLE_HOVER, 1853 NK_COLOR_TOGGLE_CURSOR = nk_style_colors.NK_COLOR_TOGGLE_CURSOR, 1854 NK_COLOR_SELECT = nk_style_colors.NK_COLOR_SELECT, 1855 NK_COLOR_SELECT_ACTIVE = nk_style_colors.NK_COLOR_SELECT_ACTIVE, 1856 NK_COLOR_SLIDER = nk_style_colors.NK_COLOR_SLIDER, 1857 NK_COLOR_SLIDER_CURSOR = nk_style_colors.NK_COLOR_SLIDER_CURSOR, 1858 NK_COLOR_SLIDER_CURSOR_HOVER = nk_style_colors.NK_COLOR_SLIDER_CURSOR_HOVER, 1859 NK_COLOR_SLIDER_CURSOR_ACTIVE = nk_style_colors.NK_COLOR_SLIDER_CURSOR_ACTIVE, 1860 NK_COLOR_PROPERTY = nk_style_colors.NK_COLOR_PROPERTY, 1861 NK_COLOR_EDIT = nk_style_colors.NK_COLOR_EDIT, 1862 NK_COLOR_EDIT_CURSOR = nk_style_colors.NK_COLOR_EDIT_CURSOR, 1863 NK_COLOR_COMBO = nk_style_colors.NK_COLOR_COMBO, 1864 NK_COLOR_CHART = nk_style_colors.NK_COLOR_CHART, 1865 NK_COLOR_CHART_COLOR = nk_style_colors.NK_COLOR_CHART_COLOR, 1866 NK_COLOR_CHART_COLOR_HIGHLIGHT = nk_style_colors.NK_COLOR_CHART_COLOR_HIGHLIGHT, 1867 NK_COLOR_SCROLLBAR = nk_style_colors.NK_COLOR_SCROLLBAR, 1868 NK_COLOR_SCROLLBAR_CURSOR = nk_style_colors.NK_COLOR_SCROLLBAR_CURSOR, 1869 NK_COLOR_SCROLLBAR_CURSOR_HOVER = nk_style_colors.NK_COLOR_SCROLLBAR_CURSOR_HOVER, 1870 NK_COLOR_SCROLLBAR_CURSOR_ACTIVE = nk_style_colors.NK_COLOR_SCROLLBAR_CURSOR_ACTIVE, 1871 NK_COLOR_TAB_HEADER = nk_style_colors.NK_COLOR_TAB_HEADER, 1872 NK_COLOR_COUNT = nk_style_colors.NK_COLOR_COUNT, 1873 NK_CURSOR_ARROW = nk_style_cursor.NK_CURSOR_ARROW, 1874 NK_CURSOR_TEXT = nk_style_cursor.NK_CURSOR_TEXT, 1875 NK_CURSOR_MOVE = nk_style_cursor.NK_CURSOR_MOVE, 1876 NK_CURSOR_RESIZE_VERTICAL = nk_style_cursor.NK_CURSOR_RESIZE_VERTICAL, 1877 NK_CURSOR_RESIZE_HORIZONTAL = nk_style_cursor.NK_CURSOR_RESIZE_HORIZONTAL, 1878 NK_CURSOR_RESIZE_TOP_LEFT_DOWN_RIGHT = nk_style_cursor.NK_CURSOR_RESIZE_TOP_LEFT_DOWN_RIGHT, 1879 NK_CURSOR_RESIZE_TOP_RIGHT_DOWN_LEFT = nk_style_cursor.NK_CURSOR_RESIZE_TOP_RIGHT_DOWN_LEFT, 1880 NK_CURSOR_COUNT = nk_style_cursor.NK_CURSOR_COUNT, 1881 NK_BUFFER_FIXED = nk_allocation_type.NK_BUFFER_FIXED, 1882 NK_BUFFER_DYNAMIC = nk_allocation_type.NK_BUFFER_DYNAMIC, 1883 NK_BUFFER_FRONT = nk_buffer_allocation_type.NK_BUFFER_FRONT, 1884 NK_BUFFER_BACK = nk_buffer_allocation_type.NK_BUFFER_BACK, 1885 NK_BUFFER_MAX = nk_buffer_allocation_type.NK_BUFFER_MAX, 1886 NK_TEXT_EDIT_SINGLE_LINE = nk_text_edit_type.NK_TEXT_EDIT_SINGLE_LINE, 1887 NK_TEXT_EDIT_MULTI_LINE = nk_text_edit_type.NK_TEXT_EDIT_MULTI_LINE, 1888 NK_TEXT_EDIT_MODE_VIEW = nk_text_edit_mode.NK_TEXT_EDIT_MODE_VIEW, 1889 NK_TEXT_EDIT_MODE_INSERT = nk_text_edit_mode.NK_TEXT_EDIT_MODE_INSERT, 1890 NK_TEXT_EDIT_MODE_REPLACE = nk_text_edit_mode.NK_TEXT_EDIT_MODE_REPLACE, 1891 NK_COMMAND_NOP = nk_command_type.NK_COMMAND_NOP, 1892 NK_COMMAND_SCISSOR = nk_command_type.NK_COMMAND_SCISSOR, 1893 NK_COMMAND_LINE = nk_command_type.NK_COMMAND_LINE, 1894 NK_COMMAND_CURVE = nk_command_type.NK_COMMAND_CURVE, 1895 NK_COMMAND_RECT = nk_command_type.NK_COMMAND_RECT, 1896 NK_COMMAND_RECT_FILLED = nk_command_type.NK_COMMAND_RECT_FILLED, 1897 NK_COMMAND_RECT_MULTI_COLOR = nk_command_type.NK_COMMAND_RECT_MULTI_COLOR, 1898 NK_COMMAND_CIRCLE = nk_command_type.NK_COMMAND_CIRCLE, 1899 NK_COMMAND_CIRCLE_FILLED = nk_command_type.NK_COMMAND_CIRCLE_FILLED, 1900 NK_COMMAND_ARC = nk_command_type.NK_COMMAND_ARC, 1901 NK_COMMAND_ARC_FILLED = nk_command_type.NK_COMMAND_ARC_FILLED, 1902 NK_COMMAND_TRIANGLE = nk_command_type.NK_COMMAND_TRIANGLE, 1903 NK_COMMAND_TRIANGLE_FILLED = nk_command_type.NK_COMMAND_TRIANGLE_FILLED, 1904 NK_COMMAND_POLYGON = nk_command_type.NK_COMMAND_POLYGON, 1905 NK_COMMAND_POLYGON_FILLED = nk_command_type.NK_COMMAND_POLYGON_FILLED, 1906 NK_COMMAND_POLYLINE = nk_command_type.NK_COMMAND_POLYLINE, 1907 NK_COMMAND_TEXT = nk_command_type.NK_COMMAND_TEXT, 1908 NK_COMMAND_IMAGE = nk_command_type.NK_COMMAND_IMAGE, 1909 NK_COMMAND_CUSTOM = nk_command_type.NK_COMMAND_CUSTOM, 1910 NK_CLIPPING_OFF = nk_command_clipping.NK_CLIPPING_OFF, 1911 NK_CLIPPING_ON = nk_command_clipping.NK_CLIPPING_ON, 1912 NK_STYLE_ITEM_COLOR = nk_style_item_type.NK_STYLE_ITEM_COLOR, 1913 NK_STYLE_ITEM_IMAGE = nk_style_item_type.NK_STYLE_ITEM_IMAGE, 1914 NK_HEADER_LEFT = nk_style_header_align.NK_HEADER_LEFT, 1915 NK_HEADER_RIGHT = nk_style_header_align.NK_HEADER_RIGHT, 1916 NK_PANEL_NONE = nk_panel_type.NK_PANEL_NONE, 1917 NK_PANEL_WINDOW = nk_panel_type.NK_PANEL_WINDOW, 1918 NK_PANEL_GROUP = nk_panel_type.NK_PANEL_GROUP, 1919 NK_PANEL_POPUP = nk_panel_type.NK_PANEL_POPUP, 1920 NK_PANEL_CONTEXTUAL = nk_panel_type.NK_PANEL_CONTEXTUAL, 1921 NK_PANEL_COMBO = nk_panel_type.NK_PANEL_COMBO, 1922 NK_PANEL_MENU = nk_panel_type.NK_PANEL_MENU, 1923 NK_PANEL_TOOLTIP = nk_panel_type.NK_PANEL_TOOLTIP, 1924 NK_PANEL_SET_NONBLOCK = nk_panel_set.NK_PANEL_SET_NONBLOCK, 1925 NK_PANEL_SET_POPUP = nk_panel_set.NK_PANEL_SET_POPUP, 1926 NK_PANEL_SET_SUB = nk_panel_set.NK_PANEL_SET_SUB, 1927 NK_LAYOUT_DYNAMIC_FIXED = nk_panel_row_layout_type.NK_LAYOUT_DYNAMIC_FIXED, 1928 NK_LAYOUT_DYNAMIC_ROW = nk_panel_row_layout_type.NK_LAYOUT_DYNAMIC_ROW, 1929 NK_LAYOUT_DYNAMIC_FREE = nk_panel_row_layout_type.NK_LAYOUT_DYNAMIC_FREE, 1930 NK_LAYOUT_DYNAMIC = nk_panel_row_layout_type.NK_LAYOUT_DYNAMIC, 1931 NK_LAYOUT_STATIC_FIXED = nk_panel_row_layout_type.NK_LAYOUT_STATIC_FIXED, 1932 NK_LAYOUT_STATIC_ROW = nk_panel_row_layout_type.NK_LAYOUT_STATIC_ROW, 1933 NK_LAYOUT_STATIC_FREE = nk_panel_row_layout_type.NK_LAYOUT_STATIC_FREE, 1934 NK_LAYOUT_STATIC = nk_panel_row_layout_type.NK_LAYOUT_STATIC, 1935 NK_LAYOUT_TEMPLATE = nk_panel_row_layout_type.NK_LAYOUT_TEMPLATE, 1936 NK_LAYOUT_COUNT = nk_panel_row_layout_type.NK_LAYOUT_COUNT, 1937 NK_WINDOW_PRIVATE = nk_window_flags.NK_WINDOW_PRIVATE, 1938 NK_WINDOW_DYNAMIC = nk_window_flags.NK_WINDOW_DYNAMIC, 1939 NK_WINDOW_ROM = nk_window_flags.NK_WINDOW_ROM, 1940 NK_WINDOW_NOT_INTERACTIVE = nk_window_flags.NK_WINDOW_NOT_INTERACTIVE, 1941 NK_WINDOW_HIDDEN = nk_window_flags.NK_WINDOW_HIDDEN, 1942 NK_WINDOW_CLOSED = nk_window_flags.NK_WINDOW_CLOSED, 1943 NK_WINDOW_MINIMIZED = nk_window_flags.NK_WINDOW_MINIMIZED, 1944 NK_WINDOW_REMOVE_ROM = nk_window_flags.NK_WINDOW_REMOVE_ROM 1945 } 1946 1947 version(NK_INCLUDE_FONT_BAKING) 1948 { 1949 enum NK_COORD_UV = nk_font_coord_type.NK_COORD_UV; 1950 enum NK_COORD_PIXEL = nk_font_coord_type.NK_COORD_PIXEL; 1951 enum NK_FONT_ATLAS_ALPHA8 = nk_font_atlas_format.NK_FONT_ATLAS_ALPHA8; 1952 enum NK_FONT_ATLAS_RGBA32 = nk_font_atlas_format.NK_FONT_ATLAS_RGBA32; 1953 } 1954 1955 version(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) 1956 { 1957 enum NK_STROKE_OPEN = nk_draw_list_stroke.NK_STROKE_OPEN; 1958 enum NK_STROKE_CLOSED = nk_draw_list_stroke.NK_STROKE_CLOSED; 1959 enum NK_VERTEX_POSITION = nk_draw_vertex_layout_attribute.NK_VERTEX_POSITION; 1960 enum NK_VERTEX_COLOR = nk_draw_vertex_layout_attribute.NK_VERTEX_COLOR; 1961 enum NK_VERTEX_TEXCOORD = nk_draw_vertex_layout_attribute.NK_VERTEX_TEXCOORD; 1962 enum NK_VERTEX_ATTRIBUTE_COUNT = nk_draw_vertex_layout_attribute.NK_VERTEX_ATTRIBUTE_COUNT; 1963 enum NK_FORMAT_SCHAR = nk_draw_vertex_layout_format.NK_FORMAT_SCHAR; 1964 enum NK_FORMAT_SSHORT = nk_draw_vertex_layout_format.NK_FORMAT_SSHORT; 1965 enum NK_FORMAT_SINT = nk_draw_vertex_layout_format.NK_FORMAT_SINT; 1966 enum NK_FORMAT_UCHAR = nk_draw_vertex_layout_format.NK_FORMAT_UCHAR; 1967 enum NK_FORMAT_USHORT = nk_draw_vertex_layout_format.NK_FORMAT_USHORT; 1968 enum NK_FORMAT_UINT = nk_draw_vertex_layout_format.NK_FORMAT_UINT; 1969 enum NK_FORMAT_FLOAT = nk_draw_vertex_layout_format.NK_FORMAT_FLOAT; 1970 enum NK_FORMAT_DOUBLE = nk_draw_vertex_layout_format.NK_FORMAT_DOUBLE; 1971 enum NK_FORMAT_COLOR_BEGIN = nk_draw_vertex_layout_format.NK_FORMAT_COLOR_BEGIN; 1972 enum NK_FORMAT_R8G8B8 = nk_draw_vertex_layout_format.NK_FORMAT_R8G8B8; 1973 enum NK_FORMAT_R16G15B16 = nk_draw_vertex_layout_format.NK_FORMAT_R16G15B16; 1974 enum NK_FORMAT_R32G32B32 = nk_draw_vertex_layout_format.NK_FORMAT_R32G32B32; 1975 enum NK_FORMAT_R8G8B8A8 = nk_draw_vertex_layout_format.NK_FORMAT_R8G8B8A8; 1976 enum NK_FORMAT_B8G8R8A8 = nk_draw_vertex_layout_format.NK_FORMAT_B8G8R8A8; 1977 enum NK_FORMAT_R16G15B16A16 = nk_draw_vertex_layout_format.NK_FORMAT_R16G15B16A16; 1978 enum NK_FORMAT_R32G32B32A32 = nk_draw_vertex_layout_format.NK_FORMAT_R32G32B32A32; 1979 enum NK_FORMAT_R32G32B32A32_FLOAT = nk_draw_vertex_layout_format.NK_FORMAT_R32G32B32A32_FLOAT; 1980 enum NK_FORMAT_R32G32B32A32_DOUBLE = nk_draw_vertex_layout_format.NK_FORMAT_R32G32B32A32_DOUBLE; 1981 enum NK_FORMAT_RGB32 = nk_draw_vertex_layout_format.NK_FORMAT_RGB32; 1982 enum NK_FORMAT_RGBA32 = nk_draw_vertex_layout_format.NK_FORMAT_RGBA32; 1983 enum NK_FORMAT_COLOR_END = nk_draw_vertex_layout_format.NK_FORMAT_COLOR_END; 1984 enum NK_FORMAT_COUNT = nk_draw_vertex_layout_format.NK_FORMAT_COUNT; 1985 }