istereo2

annotate src/ui.cc @ 14:018f997dc646

button done
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 29 Sep 2015 01:11:54 +0300
parents ea928c313344
children 7bd4264bf74a
rev   line source
nuclear@7 1 #include <stdio.h>
nuclear@6 2 #include "ui.h"
nuclear@6 3 #include "goatkit/goatkit.h"
nuclear@6 4 #include "opengl.h"
nuclear@9 5 #include "sanegl.h"
nuclear@6 6 #include "sdr.h"
nuclear@6 7
nuclear@13 8 using namespace goatkit;
nuclear@13 9
nuclear@13 10 static void done_bn_handler(Widget *w, const Event &ev, void *cls)
nuclear@13 11 {
nuclear@13 12 printf("done\n");
nuclear@13 13 }
nuclear@13 14
nuclear@6 15 static goatkit::Screen scr;
nuclear@13 16 static float aspect;
nuclear@6 17 static int width, height;
nuclear@14 18 static int virt_width, virt_height;
nuclear@6 19
nuclear@6 20 extern unsigned int prog_color, prog_ui;
nuclear@6 21
nuclear@6 22 int ui_init(void)
nuclear@6 23 {
nuclear@14 24 float xpos = 100;
nuclear@14 25 float ypos = 50;
nuclear@14 26 float vsep = 50;
nuclear@6 27
nuclear@13 28 /*goatkit::Label *label = new goatkit::Label;
nuclear@13 29 label->set_position(xpos, ypos);
nuclear@14 30 label->set_size(20, 20);
nuclear@6 31 label->set_text("Stereoscopic rendering");
nuclear@13 32 scr.add_widget(label);*/
nuclear@13 33
nuclear@13 34 goatkit::Button *button = new goatkit::Button;
nuclear@13 35 button->set_position(xpos, ypos);
nuclear@14 36 button->set_size(80, 30);
nuclear@13 37 button->set_text("Done");
nuclear@13 38 button->set_callback(goatkit::EV_CLICK, done_bn_handler);
nuclear@13 39 scr.add_widget(button);
nuclear@6 40
nuclear@6 41 /*
nuclear@6 42 goatkit::TextBox *text = new goatkit::TextBox;
nuclear@6 43 text->set_position(300, ypos += vsep);
nuclear@6 44 text->set_size(200, 30);
nuclear@6 45 text->set_text("foo");
nuclear@6 46 text->set_callback(goatkit::EV_CHANGE, callback);
nuclear@6 47 scr.add_widget(text);
nuclear@6 48
nuclear@6 49 goatkit::CheckBox *cbox = new goatkit::CheckBox;
nuclear@6 50 cbox->set_position(300, ypos += vsep);
nuclear@6 51 cbox->set_size(200, 20);
nuclear@6 52 cbox->set_text("a checkbox!");
nuclear@6 53 cbox->set_callback(goatkit::EV_CHANGE, callback);
nuclear@6 54 scr.add_widget(cbox);
nuclear@6 55
nuclear@6 56 goatkit::Slider *slider = new goatkit::Slider;
nuclear@6 57 slider->set_position(300, ypos += vsep);
nuclear@6 58 slider->set_size(200, 40);
nuclear@6 59 slider->set_callback(goatkit::EV_CHANGE, callback);
nuclear@6 60 slider->set_continuous_change(false);
nuclear@6 61 slider->set_range(0, 100.0);
nuclear@6 62 scr.add_widget(slider);
nuclear@6 63
nuclear@6 64 goatkit::Slider *intslider = new goatkit::Slider;
nuclear@6 65 intslider->set_position(300, ypos += vsep);
nuclear@6 66 intslider->set_size(200, 40);
nuclear@6 67 intslider->set_callback(goatkit::EV_CHANGE, callback);
nuclear@6 68 intslider->set_continuous_change(false);
nuclear@6 69 intslider->set_range(0, 100.0);
nuclear@6 70 intslider->set_step(10);
nuclear@6 71 scr.add_widget(intslider);
nuclear@6 72 */
nuclear@6 73
nuclear@6 74 scr.show();
nuclear@6 75
nuclear@6 76 // load the theme
nuclear@6 77 //goatkit::add_theme_path("themes/simple");
nuclear@6 78
nuclear@11 79 if(!(goatkit::theme = goatkit::get_theme("istereo"))) {
nuclear@7 80 return -1;
nuclear@7 81 }
nuclear@6 82
nuclear@6 83 return 0;
nuclear@6 84 }
nuclear@6 85
nuclear@6 86 void ui_shutdown(void)
nuclear@6 87 {
nuclear@6 88 }
nuclear@6 89
nuclear@6 90 void ui_reshape(int x, int y)
nuclear@6 91 {
nuclear@6 92 width = x;
nuclear@6 93 height = y;
nuclear@13 94 aspect = (float)width / (float)height;
nuclear@14 95
nuclear@14 96 virt_width = 500.0 * aspect;
nuclear@14 97 virt_height = 500.0;
nuclear@6 98 }
nuclear@6 99
nuclear@6 100 void ui_draw(void)
nuclear@6 101 {
nuclear@6 102 bind_program(prog_ui);
nuclear@6 103
nuclear@6 104 gl_matrix_mode(GL_PROJECTION);
nuclear@6 105 gl_push_matrix();
nuclear@6 106 gl_load_identity();
nuclear@14 107 gl_ortho(0, virt_width, 0, virt_height, -1, 1);
nuclear@6 108 gl_matrix_mode(GL_MODELVIEW);
nuclear@6 109 gl_push_matrix();
nuclear@6 110 gl_load_identity();
nuclear@6 111
nuclear@6 112 glDisable(GL_CULL_FACE);
nuclear@6 113 glDisable(GL_DEPTH_TEST);
nuclear@7 114 glEnable(GL_BLEND);
nuclear@7 115 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
nuclear@6 116
nuclear@7 117 set_uniform_float4(prog_ui, "ucolor", 0, 0, 0, 0.5);
nuclear@7 118
nuclear@7 119 gl_begin(GL_QUADS);
nuclear@7 120 //gl_color4f(0, 0, 0, 0.5);
nuclear@6 121 gl_vertex3f(0, 0, 0);
nuclear@14 122 gl_vertex3f(0, virt_height, 0);
nuclear@14 123 gl_vertex3f(virt_width, virt_height, 0);
nuclear@14 124 gl_vertex3f(virt_width, 0, 0);
nuclear@6 125 gl_end();
nuclear@6 126
nuclear@6 127 scr.draw();
nuclear@6 128
nuclear@7 129 glDisable(GL_BLEND);
nuclear@6 130 glEnable(GL_CULL_FACE);
nuclear@6 131 glEnable(GL_DEPTH_TEST);
nuclear@6 132
nuclear@6 133
nuclear@6 134 gl_matrix_mode(GL_PROJECTION);
nuclear@6 135 gl_pop_matrix();
nuclear@6 136 gl_matrix_mode(GL_MODELVIEW);
nuclear@6 137 gl_pop_matrix();
nuclear@6 138 }
nuclear@6 139
nuclear@6 140 void ui_button(int bn, int press, int x, int y)
nuclear@6 141 {
nuclear@14 142 float normx = virt_width * (float)x / (float)width;
nuclear@14 143 float normy = virt_height - virt_height * (float)y / (float)height;
nuclear@13 144
nuclear@13 145 scr.sysev_mouse_button(bn, press != 0, normx, normy);
nuclear@6 146 }
nuclear@6 147
nuclear@6 148 void ui_motion(int x, int y)
nuclear@6 149 {
nuclear@14 150 float normx = virt_width * (float)x / (float)width;
nuclear@14 151 float normy = virt_height - virt_height * (float)y / (float)height;
nuclear@13 152
nuclear@13 153 scr.sysev_mouse_motion(normx, normy);
nuclear@9 154 }