1 /++
2 + Machine generated D bindings for Sokol library.
3 + 
4 +     Generated on: 2025-07-06 12:35:39
5 + 
6 +     Source header: sokol_nuklear.h
7 +     Module: sokol.nuklear
8 + 
9 +     Do not edit manually; regenerate using gen_d.py.
10 +/
11 module sokol.nuklear;
12 import sg = sokol.gfx;
13 import sapp = sokol.app;
14 
15 /++ Nuklear external type declarations +/
16 extern(C) struct NkContext;
17 extern(C) union NkHandle {
18     void* ptr;
19     int id;
20 }
21 alias NkFlags = uint;
22 alias nk_plugin_filter = extern(C) int function(const(NkContext)*, NkHandle, int*, int) @system @nogc nothrow;
23 enum invalid_id = 0;
24 /++
25 + snk_image_t
26 + 
27 +     A combined image-sampler pair used to inject custom images and samplers into Nuklear
28 + 
29 +     Create with snk_make_image(), and convert to an nk_handle via snk_nkhandle().
30 +/
31 extern(C) struct Image {
32     uint id = 0;
33 }
34 /++
35 + snk_image_desc_t
36 + 
37 +     Descriptor struct for snk_make_image(). You must provide
38 +     at least an sg_image handle. Keeping the sg_sampler handle
39 +     zero-initialized will select the builtin default sampler
40 +     which uses linear filtering.
41 +/
42 extern(C) struct ImageDesc {
43     sg.Image image = {};
44     sg.Sampler sampler = {};
45 }
46 enum LogItem {
47     Ok,
48     Malloc_failed,
49     Image_pool_exhausted,
50 }
51 /++
52 + snk_allocator_t
53 + 
54 +     Used in snk_desc_t to provide custom memory-alloc and -free functions
55 +     to sokol_nuklear.h. If memory management should be overridden, both the
56 +     alloc_fn and free_fn function must be provided (e.g. it's not valid to
57 +     override one function but not the other).
58 +/
59 extern(C) struct Allocator {
60     extern(C) void* function(size_t, void*) alloc_fn = null;
61     extern(C) void function(void*, void*) free_fn = null;
62     void* user_data = null;
63 }
64 /++
65 + snk_logger
66 + 
67 +     Used in snk_desc_t to provide a logging function. Please be aware
68 +     that without logging function, sokol-nuklear will be completely
69 +     silent, e.g. it will not report errors, warnings and
70 +     validation layer messages. For maximum error verbosity,
71 +     compile in debug mode (e.g. NDEBUG *not* defined) and install
72 +     a logger (for instance the standard logging function from sokol_log.h).
73 +/
74 extern(C) struct Logger {
75     extern(C) void function(const(char)*, uint, uint, const(char)*, uint, const(char)*, void*) func = null;
76     void* user_data = null;
77 }
78 extern(C) struct Desc {
79     int max_vertices = 0;
80     int image_pool_size = 0;
81     sg.PixelFormat color_format = sg.PixelFormat.Default;
82     sg.PixelFormat depth_format = sg.PixelFormat.Default;
83     int sample_count = 0;
84     float dpi_scale = 0.0f;
85     bool no_default_font = false;
86     bool enable_set_mouse_cursor = false;
87     Allocator allocator = {};
88     Logger logger = {};
89 }
90 extern(C) void snk_setup(const Desc* desc) @system @nogc nothrow pure;
91 void setup(scope ref Desc desc) @trusted @nogc nothrow pure {
92     snk_setup(&desc);
93 }
94 extern(C) void* snk_new_frame() @system @nogc nothrow pure;
95 void* newFrame() @trusted @nogc nothrow pure {
96     return snk_new_frame();
97 }
98 extern(C) void snk_render(int width, int height) @system @nogc nothrow pure;
99 void render(int width, int height) @trusted @nogc nothrow pure {
100     snk_render(width, height);
101 }
102 extern(C) Image snk_make_image(const ImageDesc* desc) @system @nogc nothrow pure;
103 Image makeImage(scope ref ImageDesc desc) @trusted @nogc nothrow pure {
104     return snk_make_image(&desc);
105 }
106 extern(C) void snk_destroy_image(Image img) @system @nogc nothrow pure;
107 void destroyImage(Image img) @trusted @nogc nothrow pure {
108     snk_destroy_image(img);
109 }
110 extern(C) ImageDesc snk_query_image_desc(Image img) @system @nogc nothrow pure;
111 ImageDesc queryImageDesc(Image img) @trusted @nogc nothrow pure {
112     return snk_query_image_desc(img);
113 }
114 extern(C) NkHandle snk_nkhandle(Image img) @system @nogc nothrow pure;
115 NkHandle nkhandle(Image img) @trusted @nogc nothrow pure {
116     return snk_nkhandle(img);
117 }
118 extern(C) Image snk_image_from_nkhandle(NkHandle handle) @system @nogc nothrow pure;
119 Image imageFromNkhandle(NkHandle handle) @trusted @nogc nothrow pure {
120     return snk_image_from_nkhandle(handle);
121 }
122 extern(C) bool snk_handle_event(const sapp.Event* ev) @system @nogc nothrow pure;
123 bool handleEvent(scope ref sapp.Event ev) @trusted @nogc nothrow pure {
124     return snk_handle_event(&ev);
125 }
126 extern(C) NkFlags snk_edit_string(void* ctx, NkFlags flags, char* memory, int* len, int max, nk_plugin_filter filter) @system @nogc nothrow pure;
127 NkFlags editString(void* ctx, NkFlags flags, char* memory, int* len, int max, nk_plugin_filter filter) @trusted @nogc nothrow pure {
128     return snk_edit_string(ctx, flags, memory, len, max, filter);
129 }
130 extern(C) void snk_shutdown() @system @nogc nothrow pure;
131 void shutdown() @trusted @nogc nothrow pure {
132     snk_shutdown();
133 }