int main(int argc, char** argv) { GLFWwindow* window; struct nk_context* nk; struct nk_font_atlas* atlas; glfwSetErrorCallback(error_callback); if (!glfwInit()) exit(EXIT_FAILURE); glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); window = glfwCreateWindow(400, 400, "Opacity", NULL, NULL); if (!window) { glfwTerminate(); exit(EXIT_FAILURE); } glfwMakeContextCurrent(window); gladLoadGL(glfwGetProcAddress); glfwSwapInterval(1); nk = nk_glfw3_init(window, NK_GLFW3_INSTALL_CALLBACKS); nk_glfw3_font_stash_begin(&atlas); nk_glfw3_font_stash_end(); while (!glfwWindowShouldClose(window)) { int width, height; struct nk_rect area; glfwGetWindowSize(window, &width, &height); area = nk_rect(0.f, 0.f, (float) width, (float) height); glClear(GL_COLOR_BUFFER_BIT); nk_glfw3_new_frame(); if (nk_begin(nk, "", area, 0)) { float opacity = glfwGetWindowOpacity(window); nk_layout_row_dynamic(nk, 30, 2); if (nk_slider_float(nk, 0.f, &opacity, 1.f, 0.001f)) glfwSetWindowOpacity(window, opacity); nk_labelf(nk, NK_TEXT_LEFT, "%0.3f", opacity); } nk_end(nk); nk_glfw3_render(NK_ANTI_ALIASING_ON); glfwSwapBuffers(window); glfwWaitEventsTimeout(1.0); } nk_glfw3_shutdown(); glfwTerminate(); exit(EXIT_SUCCESS); }
int main(int argc, char** argv) { GLFWmonitor* monitor = NULL; GLFWwindow* window; GLFWgammaramp orig_ramp; struct nk_context* nk; struct nk_font_atlas* atlas; float gamma_value = 1.f; glfwSetErrorCallback(error_callback); if (!glfwInit()) exit(EXIT_FAILURE); monitor = glfwGetPrimaryMonitor(); window = glfwCreateWindow(800, 400, "Gamma Test", NULL, NULL); if (!window) { glfwTerminate(); exit(EXIT_FAILURE); } { const GLFWgammaramp* ramp = glfwGetGammaRamp(monitor); const size_t array_size = ramp->size * sizeof(short); orig_ramp.size = ramp->size; orig_ramp.red = malloc(array_size); orig_ramp.green = malloc(array_size); orig_ramp.blue = malloc(array_size); memcpy(orig_ramp.red, ramp->red, array_size); memcpy(orig_ramp.green, ramp->green, array_size); memcpy(orig_ramp.blue, ramp->blue, array_size); } glfwMakeContextCurrent(window); gladLoadGLLoader((GLADloadproc) glfwGetProcAddress); glfwSwapInterval(1); nk = nk_glfw3_init(window, NK_GLFW3_INSTALL_CALLBACKS); nk_glfw3_font_stash_begin(&atlas); nk_glfw3_font_stash_end(); glfwSetKeyCallback(window, key_callback); while (!glfwWindowShouldClose(window)) { int width, height; struct nk_rect area; glfwGetWindowSize(window, &width, &height); area = nk_rect(0.f, 0.f, (float) width, (float) height); nk_window_set_bounds(nk, "", area); glClear(GL_COLOR_BUFFER_BIT); nk_glfw3_new_frame(); if (nk_begin(nk, "", area, 0)) { const GLFWgammaramp* ramp; nk_layout_row_dynamic(nk, 30, 3); if (nk_slider_float(nk, 0.1f, &gamma_value, 5.f, 0.1f)) glfwSetGamma(monitor, gamma_value); nk_labelf(nk, NK_TEXT_LEFT, "%0.1f", gamma_value); if (nk_button_label(nk, "Revert")) glfwSetGammaRamp(monitor, &orig_ramp); ramp = glfwGetGammaRamp(monitor); nk_layout_row_dynamic(nk, height - 60.f, 3); chart_ramp_array(nk, nk_rgb(255, 0, 0), ramp->size, ramp->red); chart_ramp_array(nk, nk_rgb(0, 255, 0), ramp->size, ramp->green); chart_ramp_array(nk, nk_rgb(0, 0, 255), ramp->size, ramp->blue); } nk_end(nk); nk_glfw3_render(NK_ANTI_ALIASING_ON); glfwSwapBuffers(window); glfwWaitEventsTimeout(1.0); } free(orig_ramp.red); free(orig_ramp.green); free(orig_ramp.blue); nk_glfw3_shutdown(); glfwTerminate(); exit(EXIT_SUCCESS); }