#include #include #include #include #include #include #include using namespace psemek; struct ui_example : app::app { ui_example() : app("UI example", 1) { element_factory.set_font(ui::make_default_9x12_font()); auto screen = element_factory.make_screen(); screen->add(element_factory.make_button(), ui::screen::x_policy::center, ui::screen::y_policy::center); ui_controller.set_root(std::move(screen)); } void on_resize(int width, int height) override { app::on_resize(width, height); ui_controller.reshape({{{0, width}, {0, height}}}); } void on_mouse_move(int x, int y, int dx, int dy) override { app::on_mouse_move(x, y, dx, dy); ui_controller.event(ui::mouse_move{{x, y}}); } void on_left_button_down() override { app::on_left_button_down(); ui_controller.event(ui::mouse_click{ui::mouse_button::left, true}); } void on_left_button_up() override { app::on_left_button_up(); ui_controller.event(ui::mouse_click{ui::mouse_button::left, false}); } void present() override; ui::controller ui_controller; ui::default_element_factory element_factory; }; void ui_example::present() { gl::ClearColor(0.8f, 0.8f, 0.8f, 1.f); gl::Clear(gl::COLOR_BUFFER_BIT); gfx::render_target rt; rt.framebuffer = &gfx::framebuffer::null(); rt.draw_buffer = gl::BACK_LEFT; rt.viewport = {{{0, width()}, {0, height()}}}; ui_controller.render(rt); } int main() { return app::main(); }