-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathNuklear.Input.cs
194 lines (158 loc) · 9.42 KB
/
Nuklear.Input.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
using System;
using System.Runtime.InteropServices;
using nk_glyph = System.Int32;
namespace NuklearSharp
{
public 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
}
public enum nk_buttons {
NK_BUTTON_LEFT,
NK_BUTTON_MIDDLE,
NK_BUTTON_RIGHT,
NK_BUTTON_DOUBLE,
NK_BUTTON_MAX
}
[StructLayout(LayoutKind.Sequential)]
public struct nk_mouse_button {
public int down;
public uint clicked;
public nk_vec2 clicked_pos;
}
[StructLayout(LayoutKind.Sequential)]
public struct nk_mouse {
/* fixed nk_mouse_button buttons[(int)(nk_buttons.NK_BUTTON_MAX)]; */
public nk_mouse_button buttonLeft;
public nk_mouse_button buttonMiddle;
public nk_mouse_button buttonRight;
public nk_mouse_button buttonDouble;
public nk_vec2 pos;
public nk_vec2 prev;
public nk_vec2 delta;
public nk_vec2 scroll_delta;
public byte grab;
public byte grabbed;
public byte ungrab;
}
[StructLayout(LayoutKind.Sequential)]
public struct nk_key {
public int down;
public uint clicked;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct nk_keyboard {
public fixed uint keysCastTwoOfMeToOneNkKey[2 * (int)(nk_keys.NK_KEY_MAX)];
public fixed byte text[16];
public int text_len;
}
[StructLayout(LayoutKind.Sequential)]
public struct nk_input {
public nk_keyboard keyboard;
public nk_mouse mouse;
}
public static unsafe partial class NuklearNative
{
private delegate void nk_input_begin_t(nk_context* context);
private static nk_input_begin_t _nk_input_begin = LoadFunction<nk_input_begin_t>("nk_input_begin");
public static void nk_input_begin(nk_context* context) => _nk_input_begin(context);
private delegate void nk_input_motion_t(nk_context* context, int x, int y);
private static nk_input_motion_t _nk_input_motion = LoadFunction<nk_input_motion_t>("nk_input_motion");
public static void nk_input_motion(nk_context* context, int x, int y) => _nk_input_motion(context, x, y);
private delegate void nk_input_key_t(nk_context* context, nk_keys keys, int down);
private static nk_input_key_t _nk_input_key = LoadFunction<nk_input_key_t>("nk_input_key");
public static void nk_input_key(nk_context* context, nk_keys keys, int down) => _nk_input_key(context, keys, down);
private delegate void nk_input_button_t(nk_context* context, nk_buttons buttons, int x, int y, int down);
private static nk_input_button_t _nk_input_button = LoadFunction<nk_input_button_t>("nk_input_button");
public static void nk_input_button(nk_context* context, nk_buttons buttons, int x, int y, int down) => _nk_input_button(context, buttons, x, y, down);
private delegate void nk_input_scroll_t(nk_context* context, nk_vec2 val);
private static nk_input_scroll_t _nk_input_scroll = LoadFunction<nk_input_scroll_t>("nk_input_scroll");
public static void nk_input_scroll(nk_context* context, nk_vec2 val) => _nk_input_scroll(context, val);
private delegate void nk_input_char_t(nk_context* context, byte c);
private static nk_input_char_t _nk_input_char = LFT<nk_input_char_t>();
public static void nk_input_char(nk_context* context, byte c) => _nk_input_char(context, c);
private delegate void nk_input_glyph_t(nk_context* context, nk_glyph glyph);
private static nk_input_glyph_t _nk_input_glyph = LFT<nk_input_glyph_t>();
public static void nk_input_glyph(nk_context* context, nk_glyph glyph) => _nk_input_glyph(context, glyph);
private delegate void nk_input_unicode_t(nk_context* context, uint rune);
private static nk_input_unicode_t _nk_input_unicode = LFT<nk_input_unicode_t>();
public static void nk_input_unicode(nk_context* context, uint rune) => _nk_input_unicode(context, rune);
private delegate void nk_input_end_t(nk_context* context);
private static nk_input_end_t _nk_input_end = LFT<nk_input_end_t>();
public static void nk_input_end(nk_context* context) => _nk_input_end(context);
private delegate int nk_input_has_mouse_click_t(nk_input* inp, nk_buttons buttons);
private delegate int nk_input_has_mouse_click_in_rect_t(nk_input* inp, nk_buttons buttons, nk_rect r);
private delegate int nk_input_has_mouse_click_down_in_rect_t(nk_input* inp, nk_buttons buttons, nk_rect r, int down);
private delegate int nk_input_is_mouse_click_in_rect_t(nk_input* inp, nk_buttons buttons, nk_rect r);
private delegate int nk_input_is_mouse_click_down_in_rect_t(nk_input* inp, nk_buttons id, nk_rect b, int down);
private delegate int nk_input_any_mouse_click_in_rect_t(nk_input* inp, nk_rect r);
private delegate int nk_input_is_mouse_prev_hovering_rect_t(nk_input* inp, nk_rect r);
private delegate int nk_input_is_mouse_hovering_rect_t(nk_input* inp, nk_rect r);
private delegate int nk_input_mouse_clicked_t(nk_input* inp, nk_buttons buttons, nk_rect r);
private delegate int nk_input_is_mouse_down_t(nk_input* inp, nk_buttons buttons);
private delegate int nk_input_is_mouse_pressed_t(nk_input* inp, nk_buttons buttons);
private delegate int nk_input_is_mouse_released_t(nk_input* inp, nk_buttons buttons);
private delegate int nk_input_is_key_pressed_t(nk_input* inp, nk_keys keys);
private delegate int nk_input_is_key_released_t(nk_input* inp, nk_keys keys);
private delegate int nk_input_is_key_down_t(nk_input* inp, nk_keys keys);
private static nk_input_has_mouse_click_t _nk_input_has_mouse_click = LFT<nk_input_has_mouse_click_t>();
private static nk_input_has_mouse_click_in_rect_t _nk_input_has_mouse_click_in_rect = LFT<nk_input_has_mouse_click_in_rect_t>();
private static nk_input_has_mouse_click_down_in_rect_t _nk_input_has_mouse_click_down_in_rect = LFT<nk_input_has_mouse_click_down_in_rect_t>();
private static nk_input_is_mouse_click_in_rect_t _nk_input_is_mouse_click_in_rect = LFT<nk_input_is_mouse_click_in_rect_t>();
private static nk_input_is_mouse_click_down_in_rect_t _nk_input_is_mouse_click_down_in_rect = LFT<nk_input_is_mouse_click_down_in_rect_t>();
private static nk_input_any_mouse_click_in_rect_t _nk_input_any_mouse_click_in_rect = LFT<nk_input_any_mouse_click_in_rect_t>();
private static nk_input_is_mouse_prev_hovering_rect_t _nk_input_is_mouse_prev_hovering_rect = LFT<nk_input_is_mouse_prev_hovering_rect_t>();
private static nk_input_is_mouse_hovering_rect_t _nk_input_is_mouse_hovering_rect = LFT<nk_input_is_mouse_hovering_rect_t>();
private static nk_input_mouse_clicked_t _nk_input_mouse_clicked = LFT<nk_input_mouse_clicked_t>();
private static nk_input_is_mouse_down_t _nk_input_is_mouse_down = LFT<nk_input_is_mouse_down_t>();
private static nk_input_is_mouse_pressed_t _nk_input_is_mouse_pressed = LFT<nk_input_is_mouse_pressed_t>();
private static nk_input_is_mouse_released_t _nk_input_is_mouse_released = LFT<nk_input_is_mouse_released_t>();
private static nk_input_is_key_pressed_t _nk_input_is_key_pressed = LFT<nk_input_is_key_pressed_t>();
private static nk_input_is_key_released_t _nk_input_is_key_released = LFT<nk_input_is_key_released_t>();
private static nk_input_is_key_down_t _nk_input_is_key_down = LFT<nk_input_is_key_down_t>();
public static int nk_input_has_mouse_click(nk_input* inp, nk_buttons buttons) => _nk_input_has_mouse_click(inp, buttons);
public static int nk_input_has_mouse_click_in_rect(nk_input* inp, nk_buttons buttons, nk_rect r) => _nk_input_has_mouse_click_in_rect(inp, buttons, r);
public static int nk_input_has_mouse_click_down_in_rect(nk_input* inp, nk_buttons buttons, nk_rect r, int down) => _nk_input_has_mouse_click_down_in_rect(inp, buttons, r, down);
public static int nk_input_is_mouse_click_in_rect(nk_input* inp, nk_buttons buttons, nk_rect r) => _nk_input_is_mouse_click_in_rect(inp, buttons, r);
public static int nk_input_is_mouse_click_down_in_rect(nk_input* inp, nk_buttons id, nk_rect b, int down) => _nk_input_is_mouse_click_down_in_rect(inp, id, b, down);
public static int nk_input_any_mouse_click_in_rect(nk_input* inp, nk_rect r) => _nk_input_any_mouse_click_in_rect(inp, r);
public static int nk_input_is_mouse_prev_hovering_rect(nk_input* inp, nk_rect r) => _nk_input_is_mouse_prev_hovering_rect(inp, r);
public static int nk_input_is_mouse_hovering_rect(nk_input* inp, nk_rect r) => _nk_input_is_mouse_hovering_rect(inp, r);
public static int nk_input_mouse_clicked(nk_input* inp, nk_buttons buttons, nk_rect r) => _nk_input_mouse_clicked(inp, buttons, r);
public static int nk_input_is_mouse_down(nk_input* inp, nk_buttons buttons) => _nk_input_is_mouse_down(inp, buttons);
public static int nk_input_is_mouse_pressed(nk_input* inp, nk_buttons buttons) => _nk_input_is_mouse_pressed(inp, buttons);
public static int nk_input_is_mouse_released(nk_input* inp, nk_buttons buttons) => _nk_input_is_mouse_released(inp, buttons);
public static int nk_input_is_key_pressed(nk_input* inp, nk_keys keys) => _nk_input_is_key_pressed(inp, keys);
public static int nk_input_is_key_released(nk_input* inp, nk_keys keys) => _nk_input_is_key_released(inp, keys);
public static int nk_input_is_key_down(nk_input* inp, nk_keys keys) => _nk_input_is_key_down(inp, keys);
}
}