vrshoot
diff src/screen.cc @ 0:b2f14e535253
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 01 Feb 2014 19:58:19 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/screen.cc Sat Feb 01 19:58:19 2014 +0200 1.3 @@ -0,0 +1,116 @@ 1.4 +#include <vector> 1.5 +#include "opengl.h" 1.6 +#include "screen.h" 1.7 +#include "logger.h" 1.8 +#include "unistate.h" 1.9 + 1.10 +static std::vector<Screen*> scrstack; 1.11 + 1.12 +void push_screen(Screen *screen) 1.13 +{ 1.14 + Screen *prev = current_screen(); 1.15 + if(prev) { 1.16 + prev->stop(); 1.17 + } 1.18 + 1.19 + scrstack.push_back(screen); 1.20 + screen->start(); 1.21 +} 1.22 + 1.23 +Screen *pop_screen() 1.24 +{ 1.25 + if(scrstack.empty()) { 1.26 + error_log("trying to pop a screen, but the stack is empty!\n"); 1.27 + return 0; 1.28 + } 1.29 + Screen *res = scrstack.back(); 1.30 + scrstack.pop_back(); 1.31 + 1.32 + res->stop(); 1.33 + 1.34 + Screen *next = current_screen(); 1.35 + if(next) { 1.36 + next->start(); 1.37 + } 1.38 + return res; 1.39 +} 1.40 + 1.41 +Screen *current_screen() 1.42 +{ 1.43 + if(scrstack.empty()) { 1.44 + return 0; 1.45 + } 1.46 + return scrstack.back(); 1.47 +} 1.48 + 1.49 +Screen *previous_screen() 1.50 +{ 1.51 + int sz = scrstack.size(); 1.52 + if(sz < 2) { 1.53 + return 0; 1.54 + } 1.55 + return scrstack[sz - 2]; 1.56 +} 1.57 + 1.58 +Screen::~Screen() 1.59 +{ 1.60 +} 1.61 + 1.62 +const char *Screen::get_name() const 1.63 +{ 1.64 + return "Screen"; 1.65 +} 1.66 + 1.67 +bool Screen::init() 1.68 +{ 1.69 + return true; 1.70 +} 1.71 + 1.72 +void Screen::cleanup() 1.73 +{ 1.74 +} 1.75 + 1.76 +void Screen::start() 1.77 +{ 1.78 +} 1.79 + 1.80 +void Screen::stop() 1.81 +{ 1.82 +} 1.83 + 1.84 +long Screen::redisplay_interval() const 1.85 +{ 1.86 + return 0; // don't redisplay implicitly by default 1.87 +} 1.88 + 1.89 +void Screen::update(unsigned long tmsec) 1.90 +{ 1.91 +} 1.92 + 1.93 +void Screen::pre_draw() const 1.94 +{ 1.95 +} 1.96 + 1.97 +void Screen::display() const 1.98 +{ 1.99 +} 1.100 + 1.101 +void Screen::post_draw() const 1.102 +{ 1.103 +} 1.104 + 1.105 +void Screen::keyboard(int key, bool pressed) 1.106 +{ 1.107 +} 1.108 + 1.109 +void Screen::motion(int x, int y, bool pressed) 1.110 +{ 1.111 +} 1.112 + 1.113 +void Screen::button(int bn, bool pressed, int x, int y) 1.114 +{ 1.115 +} 1.116 + 1.117 +void Screen::reshape(int x, int y) 1.118 +{ 1.119 +}