nuclear@6: #include "ui.h" nuclear@6: #include "goatkit/goatkit.h" nuclear@6: #include "opengl.h" nuclear@6: #include "sdr.h" nuclear@6: nuclear@6: static goatkit::Screen scr; nuclear@6: static int width, height; nuclear@6: nuclear@6: extern unsigned int prog_color, prog_ui; nuclear@6: nuclear@6: int ui_init(void) nuclear@6: { nuclear@6: float ypos = 0; nuclear@6: float vsep = 0.1; nuclear@6: nuclear@6: goatkit::Label *label = new goatkit::Label; nuclear@6: label->set_position(0.5, ypos += vsep); nuclear@6: label->set_size(0.1, 0.1); nuclear@6: label->set_text("Stereoscopic rendering"); nuclear@6: scr.add_widget(label); nuclear@6: nuclear@6: /* nuclear@6: goatkit::Button *button = new goatkit::Button; nuclear@6: button->set_position(300, ypos += vsep); nuclear@6: button->set_size(200, 40); nuclear@6: button->set_text("a button!"); nuclear@6: button->set_callback(goatkit::EV_CLICK, callback); nuclear@6: scr.add_widget(button); 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@6: //goatkit::theme = new goatkit::Theme; nuclear@6: //goatkit::theme->load("simple"); 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@6: } nuclear@6: nuclear@6: void ui_draw(void) nuclear@6: { nuclear@6: float aspect = (float)width / (float)height; 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@6: gl_scalef(2.0 / aspect, 2.0, 1); nuclear@6: gl_translatef(-1, -1, 0); nuclear@6: gl_scalef(1, -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@6: nuclear@6: /*gl_begin(GL_QUADS); nuclear@6: gl_color3f(1, 0, 0); nuclear@6: gl_vertex3f(0, 0, 0); nuclear@6: gl_vertex3f(0, 0.5, 0); nuclear@6: gl_vertex3f(0.5 * aspect, 0.5, 0); nuclear@6: gl_vertex3f(0.5 * aspect, 0, 0); nuclear@6: gl_end(); nuclear@6: */ nuclear@6: nuclear@6: scr.draw(); nuclear@6: 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@6: scr.sysev_mouse_button(bn, press != 0, (float)x / (float)width, 1.0 - (float)y / (float)height); nuclear@6: } nuclear@6: nuclear@6: void ui_motion(int x, int y) nuclear@6: { nuclear@6: scr.sysev_mouse_motion((float)x / (float)width, 1.0 - (float)y / (float)height); nuclear@6: }