|
|
|
@ -1,7 +1,7 @@ |
|
|
|
|
/*
|
|
|
|
|
* Nuklear - v1.32.0 - public domain |
|
|
|
|
* no warrenty implied; use at your own risk. |
|
|
|
|
* authored from 2015-2016 by Micha Mettke |
|
|
|
|
* authored from 2015-2017 by Micha Mettke |
|
|
|
|
*/ |
|
|
|
|
/*
|
|
|
|
|
* ============================================================== |
|
|
|
@ -24,7 +24,7 @@ NK_API void nk_glfw3_font_stash_begin(struct nk_font_atlas **atl |
|
|
|
|
NK_API void nk_glfw3_font_stash_end(void); |
|
|
|
|
|
|
|
|
|
NK_API void nk_glfw3_new_frame(void); |
|
|
|
|
NK_API void nk_glfw3_render(enum nk_anti_aliasing , int max_vertex_buffer, int max_element_buffer); |
|
|
|
|
NK_API void nk_glfw3_render(enum nk_anti_aliasing); |
|
|
|
|
NK_API void nk_glfw3_shutdown(void); |
|
|
|
|
|
|
|
|
|
NK_API void nk_glfw3_char_callback(GLFWwindow *win, unsigned int codepoint); |
|
|
|
@ -44,6 +44,12 @@ NK_API void nk_gflw3_scroll_callback(GLFWwindow *win, double xof |
|
|
|
|
#ifndef NK_GLFW_TEXT_MAX |
|
|
|
|
#define NK_GLFW_TEXT_MAX 256 |
|
|
|
|
#endif |
|
|
|
|
#ifndef NK_GLFW_DOUBLE_CLICK_LO |
|
|
|
|
#define NK_GLFW_DOUBLE_CLICK_LO 0.02 |
|
|
|
|
#endif |
|
|
|
|
#ifndef NK_GLFW_DOUBLE_CLICK_HI |
|
|
|
|
#define NK_GLFW_DOUBLE_CLICK_HI 0.2 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
struct nk_glfw_device { |
|
|
|
|
struct nk_buffer cmds; |
|
|
|
@ -67,7 +73,8 @@ static struct nk_glfw { |
|
|
|
|
struct nk_vec2 fb_scale; |
|
|
|
|
unsigned int text[NK_GLFW_TEXT_MAX]; |
|
|
|
|
int text_len; |
|
|
|
|
float scroll; |
|
|
|
|
struct nk_vec2 scroll; |
|
|
|
|
double last_button_click; |
|
|
|
|
} glfw; |
|
|
|
|
|
|
|
|
|
NK_INTERN void |
|
|
|
@ -83,7 +90,7 @@ nk_glfw3_device_upload_atlas(const void *image, int width, int height) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
NK_API void |
|
|
|
|
nk_glfw3_render(enum nk_anti_aliasing AA, int max_vertex_buffer, int max_element_buffer) |
|
|
|
|
nk_glfw3_render(enum nk_anti_aliasing AA) |
|
|
|
|
{ |
|
|
|
|
/* setup global state */ |
|
|
|
|
struct nk_glfw_device *dev = &glfw.ogl; |
|
|
|
@ -200,7 +207,22 @@ NK_API void |
|
|
|
|
nk_gflw3_scroll_callback(GLFWwindow *win, double xoff, double yoff) |
|
|
|
|
{ |
|
|
|
|
(void)win; (void)xoff; |
|
|
|
|
glfw.scroll += (float)yoff; |
|
|
|
|
glfw.scroll.x += (float)xoff; |
|
|
|
|
glfw.scroll.y += (float)yoff; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
NK_API void |
|
|
|
|
nk_glfw3_mouse_button_callback(GLFWwindow* window, int button, int action, int mods) |
|
|
|
|
{ |
|
|
|
|
double x, y; |
|
|
|
|
if (button != GLFW_MOUSE_BUTTON_LEFT) return; |
|
|
|
|
glfwGetCursorPos(window, &x, &y); |
|
|
|
|
if (action == GLFW_PRESS) { |
|
|
|
|
double dt = glfwGetTime() - glfw.last_button_click; |
|
|
|
|
if (dt > NK_GLFW_DOUBLE_CLICK_LO && dt < NK_GLFW_DOUBLE_CLICK_HI) |
|
|
|
|
nk_input_button(&glfw.ctx, NK_BUTTON_DOUBLE, (int)x, (int)y, nk_true); |
|
|
|
|
glfw.last_button_click = glfwGetTime(); |
|
|
|
|
} else nk_input_button(&glfw.ctx, NK_BUTTON_DOUBLE, (int)x, (int)y, nk_false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
NK_INTERN void |
|
|
|
@ -232,8 +254,8 @@ nk_glfw3_init(GLFWwindow *win, enum nk_glfw_init_state init_state) |
|
|
|
|
if (init_state == NK_GLFW3_INSTALL_CALLBACKS) { |
|
|
|
|
glfwSetScrollCallback(win, nk_gflw3_scroll_callback); |
|
|
|
|
glfwSetCharCallback(win, nk_glfw3_char_callback); |
|
|
|
|
glfwSetMouseButtonCallback(win, nk_glfw3_mouse_button_callback); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
nk_init_default(&glfw.ctx, 0); |
|
|
|
|
glfw.ctx.clip.copy = nk_glfw3_clipbard_copy; |
|
|
|
|
glfw.ctx.clip.paste = nk_glfw3_clipbard_paste; |
|
|
|
@ -333,7 +355,7 @@ nk_glfw3_new_frame(void) |
|
|
|
|
nk_input_scroll(ctx, glfw.scroll); |
|
|
|
|
nk_input_end(&glfw.ctx); |
|
|
|
|
glfw.text_len = 0; |
|
|
|
|
glfw.scroll = 0; |
|
|
|
|
glfw.scroll = nk_vec2(0,0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
NK_API |
|
|
|
|