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.macros; 8 9 import bindbc.nuklear.types; 10 import bindbc.nuklear.binddynamic; 11 import bindbc.nuklear.bindstatic; 12 13 version (NK_ALL) 14 { 15 version = NK_INCLUDE_FIXED_TYPES; 16 version = NK_INCLUDE_DEFAULT_ALLOCATOR; 17 version = NK_INCLUDE_STANDARD_IO; 18 version = NK_INCLUDE_STANDARD_VARARGS; 19 version = NK_INCLUDE_VERTEX_BUFFER_OUTPUT; 20 version = NK_INCLUDE_FONT_BAKING; 21 version = NK_INCLUDE_DEFAULT_FONT; 22 version = NK_INCLUDE_COMMAND_USERDATA; 23 version = NK_BUTTON_TRIGGER_ON_RELEASE; 24 version = NK_ZERO_COMMAND_MEMORY; 25 version = NK_UINT_DRAW_INDEX; 26 } 27 28 @nogc nothrow { 29 30 alias nk_command_delegate = void delegate(const(nk_command)*); 31 version(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) 32 { 33 alias nk_draw_command_delegate = void delegate(const(nk_draw_command)*); 34 } 35 36 pragma(inline, true) { 37 void nk_foreach(nk_context* ctx, nk_command_delegate block) { 38 for (auto c = nk__begin(ctx); c != null; c = nk__next(ctx, c)) { 39 block(c); 40 } 41 } 42 43 version(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) { 44 void nk_draw_foreach(nk_context *ctx, const(nk_buffer) *b, nk_draw_command_delegate block) { 45 for (auto c = nk__draw_begin(ctx, b); c != null; c = nk__draw_next(c, b, ctx)) { 46 block(c); 47 } 48 } 49 } 50 51 auto nk_tree_push(size_t line = __LINE__)(nk_context *ctx, nk_tree_type type, const(char) *title, nk_collapse_states state) { 52 return nk_tree_push_hashed(ctx, type, title, state, null, 0, line); 53 } 54 55 auto nk_tree_push_id(nk_context *ctx, nk_tree_type type, const(char) *title, nk_collapse_states state, int id) { 56 return nk_tree_push_hashed(ctx, type, title, state, null, 0, id); 57 } 58 59 auto nk_tree_image_push(size_t line = __LINE__)(nk_context *ctx, nk_tree_type type, nk_image img, const(char) *title, nk_collapse_states state) { 60 return nk_tree_image_push_hashed(ctx, type, img, title, state, null,0, line); 61 } 62 auto nk_tree_image_push_id(nk_context *ctx, nk_tree_type type, nk_image img, const(char) *title, nk_collapse_states state, int id) { 63 return nk_tree_image_push_hashed(ctx, type, img, title, state, null, 0, id); 64 } 65 66 auto nk_tree_element_push(size_t line = __LINE__)(nk_context *ctx, nk_tree_type type, const(char) *title, nk_collapse_states state, int* selected) { 67 return nk_tree_element_push_hashed(ctx, type, title, state, selected, null, 0,line); 68 } 69 auto nk_tree_element_push_id(nk_context *ctx, nk_tree_type type, const(char) *title, nk_collapse_states state, int* selected, int id) { 70 return nk_tree_element_push_hashed(ctx, type, title, state, selected, null, 0,id); 71 } 72 73 version(NK_INCLUDE_VERTEX_BUFFER_OUTPUT) { 74 void nk_draw_list_foreach(const(nk_draw_list) *can, const(nk_buffer) *b, nk_draw_command_delegate block) { 75 for (auto c = nk__draw_list_begin(can, b); c != null; c = nk__draw_list_next(c, b, can)) { 76 block(c); 77 } 78 } 79 } 80 } 81 }