nuclear@7: #include nuclear@6: #include "ui.h" nuclear@6: #include "goatkit/goatkit.h" nuclear@6: #include "opengl.h" nuclear@9: #include "sanegl.h" nuclear@6: #include "sdr.h" nuclear@6: nuclear@13: using namespace goatkit; nuclear@13: nuclear@13: static void done_bn_handler(Widget *w, const Event &ev, void *cls) nuclear@13: { nuclear@13: printf("done\n"); nuclear@13: } nuclear@13: nuclear@6: static goatkit::Screen scr; nuclear@13: static float aspect; nuclear@6: static int width, height; nuclear@14: static int virt_width, virt_height; nuclear@6: nuclear@6: extern unsigned int prog_color, prog_ui; nuclear@6: nuclear@6: int ui_init(void) nuclear@6: { nuclear@14: float xpos = 100; nuclear@14: float ypos = 50; nuclear@14: float vsep = 50; nuclear@6: nuclear@13: /*goatkit::Label *label = new goatkit::Label; nuclear@13: label->set_position(xpos, ypos); nuclear@14: label->set_size(20, 20); nuclear@6: label->set_text("Stereoscopic rendering"); nuclear@13: scr.add_widget(label);*/ nuclear@13: nuclear@13: goatkit::Button *button = new goatkit::Button; nuclear@13: button->set_position(xpos, ypos); nuclear@14: button->set_size(80, 30); nuclear@13: button->set_text("Done"); nuclear@13: button->set_callback(goatkit::EV_CLICK, done_bn_handler); nuclear@13: scr.add_widget(button); nuclear@6: nuclear@6: /* nuclear@6: goatkit::TextBox *text = new goatkit::TextBox; nuclear@6: text->set_position(300, ypos += vsep); nuclear@6: text->set_size(200, 30); nuclear@6: text->set_text("foo"); nuclear@6: text->set_callback(goatkit::EV_CHANGE, callback); nuclear@6: scr.add_widget(text); nuclear@6: nuclear@6: goatkit::CheckBox *cbox = new goatkit::CheckBox; nuclear@6: cbox->set_position(300, ypos += vsep); nuclear@6: cbox->set_size(200, 20); nuclear@6: cbox->set_text("a checkbox!"); nuclear@6: cbox->set_callback(goatkit::EV_CHANGE, callback); nuclear@6: scr.add_widget(cbox); nuclear@6: nuclear@6: goatkit::Slider *slider = new goatkit::Slider; nuclear@6: slider->set_position(300, ypos += vsep); nuclear@6: slider->set_size(200, 40); nuclear@6: slider->set_callback(goatkit::EV_CHANGE, callback); nuclear@6: slider->set_continuous_change(false); nuclear@6: slider->set_range(0, 100.0); nuclear@6: scr.add_widget(slider); nuclear@6: nuclear@6: goatkit::Slider *intslider = new goatkit::Slider; nuclear@6: intslider->set_position(300, ypos += vsep); nuclear@6: intslider->set_size(200, 40); nuclear@6: intslider->set_callback(goatkit::EV_CHANGE, callback); nuclear@6: intslider->set_continuous_change(false); nuclear@6: intslider->set_range(0, 100.0); nuclear@6: intslider->set_step(10); nuclear@6: scr.add_widget(intslider); nuclear@6: */ nuclear@6: nuclear@6: scr.show(); nuclear@6: nuclear@6: // load the theme nuclear@6: //goatkit::add_theme_path("themes/simple"); nuclear@6: nuclear@11: if(!(goatkit::theme = goatkit::get_theme("istereo"))) { nuclear@7: return -1; nuclear@7: } nuclear@6: nuclear@6: return 0; nuclear@6: } nuclear@6: nuclear@6: void ui_shutdown(void) nuclear@6: { nuclear@6: } nuclear@6: nuclear@6: void ui_reshape(int x, int y) nuclear@6: { nuclear@6: width = x; nuclear@6: height = y; nuclear@13: aspect = (float)width / (float)height; nuclear@14: nuclear@14: virt_width = 500.0 * aspect; nuclear@14: virt_height = 500.0; nuclear@6: } nuclear@6: nuclear@6: void ui_draw(void) nuclear@6: { nuclear@6: bind_program(prog_ui); nuclear@6: nuclear@6: gl_matrix_mode(GL_PROJECTION); nuclear@6: gl_push_matrix(); nuclear@6: gl_load_identity(); nuclear@14: gl_ortho(0, virt_width, 0, virt_height, -1, 1); nuclear@6: gl_matrix_mode(GL_MODELVIEW); nuclear@6: gl_push_matrix(); nuclear@6: gl_load_identity(); nuclear@6: nuclear@6: glDisable(GL_CULL_FACE); nuclear@6: glDisable(GL_DEPTH_TEST); nuclear@7: glEnable(GL_BLEND); nuclear@7: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); nuclear@6: nuclear@7: set_uniform_float4(prog_ui, "ucolor", 0, 0, 0, 0.5); nuclear@7: nuclear@7: gl_begin(GL_QUADS); nuclear@7: //gl_color4f(0, 0, 0, 0.5); nuclear@6: gl_vertex3f(0, 0, 0); nuclear@14: gl_vertex3f(0, virt_height, 0); nuclear@14: gl_vertex3f(virt_width, virt_height, 0); nuclear@14: gl_vertex3f(virt_width, 0, 0); nuclear@6: gl_end(); nuclear@6: nuclear@6: scr.draw(); nuclear@6: nuclear@7: glDisable(GL_BLEND); nuclear@6: glEnable(GL_CULL_FACE); nuclear@6: glEnable(GL_DEPTH_TEST); nuclear@6: nuclear@6: nuclear@6: gl_matrix_mode(GL_PROJECTION); nuclear@6: gl_pop_matrix(); nuclear@6: gl_matrix_mode(GL_MODELVIEW); nuclear@6: gl_pop_matrix(); nuclear@6: } nuclear@6: nuclear@6: void ui_button(int bn, int press, int x, int y) nuclear@6: { nuclear@14: float normx = virt_width * (float)x / (float)width; nuclear@14: float normy = virt_height - virt_height * (float)y / (float)height; nuclear@13: nuclear@13: scr.sysev_mouse_button(bn, press != 0, normx, normy); nuclear@6: } nuclear@6: nuclear@6: void ui_motion(int x, int y) nuclear@6: { nuclear@14: float normx = virt_width * (float)x / (float)width; nuclear@14: float normy = virt_height - virt_height * (float)y / (float)height; nuclear@13: nuclear@13: scr.sysev_mouse_motion(normx, normy); nuclear@9: }