nuclear@0: #ifndef SCREEN_H_ nuclear@0: #define SCREEN_H_ nuclear@0: nuclear@0: class Screen; nuclear@0: nuclear@0: void push_screen(Screen *screen); nuclear@0: Screen *pop_screen(); nuclear@0: Screen *current_screen(); nuclear@0: Screen *previous_screen(); nuclear@0: nuclear@0: nuclear@0: class Screen { nuclear@0: public: nuclear@0: virtual ~Screen(); nuclear@0: nuclear@0: virtual const char *get_name() const; nuclear@0: nuclear@0: virtual bool init(); nuclear@0: virtual void cleanup(); nuclear@0: nuclear@0: /// start will be called just before a screen is going to be activated nuclear@0: virtual void start(); nuclear@0: /// stop will be called when a screen is being deactivated nuclear@0: virtual void stop(); nuclear@0: nuclear@0: /** each Screen subclass should override this function to specify nuclear@0: * the required redisplay interval: nuclear@0: * - 0 means no implcit redisplays are to be performed. nuclear@0: * Use request_redisplay to queue up a redisplay. nuclear@0: * - Any values > 0 are treated as inter-frame intervals in milliseconds nuclear@0: * The default (if not overriden) is 0. nuclear@0: */ nuclear@0: virtual long redisplay_interval() const; nuclear@0: nuclear@0: /// update will be called every frame before display nuclear@0: virtual void update(unsigned long tmsec); nuclear@0: nuclear@0: /// pre_draw will be called before display nuclear@0: virtual void pre_draw() const; nuclear@0: /// display will be called whenever a screen needs to redraw itself nuclear@0: virtual void display() const; nuclear@0: /// post_draw will be called after display nuclear@0: virtual void post_draw() const; nuclear@0: nuclear@0: /// keyboard event nuclear@0: virtual void keyboard(int key, bool pressed); nuclear@0: /// mouse motion event nuclear@0: virtual void motion(int x, int y, bool pressed); nuclear@0: /// mouse button event nuclear@0: virtual void button(int bn, bool pressed, int x, int y); nuclear@0: /// reshape event nuclear@0: virtual void reshape(int x, int y); nuclear@0: }; nuclear@0: nuclear@0: #endif // SCREEN_H_