nuclear@0: #ifndef GAMEUI_WIDGET_H_ nuclear@0: #define GAMEUI_WIDGET_H_ nuclear@0: nuclear@0: namespace gameui { nuclear@0: nuclear@0: class Vec2 { nuclear@0: public: nuclear@0: float x, y; nuclear@0: nuclear@0: Vec2() : x(0), y(0) {} nuclear@0: Vec2(float xx, float yy) : x(xx), y(yy) {} nuclear@0: }; nuclear@0: nuclear@0: class BBox { nuclear@0: public: nuclear@0: Vec2 bmin, bmax; nuclear@0: }; nuclear@0: nuclear@0: class WidgetImpl; nuclear@0: nuclear@0: class Widget { nuclear@0: private: nuclear@0: WidgetImpl *impl; nuclear@0: nuclear@0: public: nuclear@0: enum VisState { nuclear@0: VST_HIDDEN, nuclear@0: VST_EASEIN, nuclear@0: VST_VISIBLE, nuclear@0: VST_EASEOUT nuclear@0: }; nuclear@0: enum ActiveState { nuclear@0: AST_INACTIVE, nuclear@0: AST_EASEIN, nuclear@0: AST_ACTIVE, nuclear@0: AST_EASEOUT nuclear@0: }; nuclear@0: nuclear@0: Widget(); nuclear@0: virtual ~Widget(); nuclear@0: nuclear@0: virtual void show(); nuclear@0: virtual void hide(); nuclear@0: virtual float get_visibility() const; nuclear@0: nuclear@0: virtual void activate(); nuclear@0: virtual void deactivate(); nuclear@0: virtual float get_active() const; nuclear@0: nuclear@0: virtual const BBox &get_box() const; nuclear@0: virtual const Vec2 &get_position() const; nuclear@0: virtual const Vec2 &get_size() const; nuclear@0: nuclear@0: virtual bool hit_test(const Vec2 &pt) const; nuclear@0: nuclear@0: virtual void draw() const = 0; nuclear@0: }; nuclear@0: nuclear@0: long get_cur_time(); nuclear@0: nuclear@0: } nuclear@0: nuclear@0: #endif // GAMEUI_WIDGET_H_