gameui

view include/widget.h @ 5:5a84873185ff

rudimentary theme plugin system and other minor fixes
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 22 Mar 2014 01:50:01 +0200
parents e0916bb20b7f
children
line source
1 #ifndef GOATKIT_WIDGET_H_
2 #define GOATKIT_WIDGET_H_
4 #include "vec.h"
5 #include "event.h"
7 namespace goatkit {
9 struct BBox {
10 Vec2 bmin, bmax;
11 };
13 struct WidgetImpl;
15 class Widget {
16 private:
17 WidgetImpl *widget;
19 public:
20 Widget();
21 virtual ~Widget();
23 virtual const char *get_type_name() const;
25 virtual void show();
26 virtual void hide();
27 virtual float get_visibility() const;
28 virtual bool is_visible() const;
30 virtual void activate();
31 virtual void deactivate();
32 virtual float get_active() const;
33 virtual bool is_active() const;
35 virtual void press();
36 virtual void release();
37 virtual float get_pressed() const;
38 virtual bool is_pressed() const;
40 virtual void mousein();
41 virtual void mouseout();
42 virtual float get_under_mouse() const;
43 virtual bool is_under_mouse() const;
45 virtual void set_position(float x, float y);
46 virtual void set_position(const Vec2 &pos);
47 virtual const Vec2 &get_position() const;
49 virtual void set_size(float x, float y);
50 virtual void set_size(const Vec2 &size);
51 virtual const Vec2 get_size() const;
53 virtual const BBox &get_box() const;
55 virtual bool hit_test(const Vec2 &pt) const;
57 virtual void draw() const;
59 // low level events
60 virtual void on_mouse_button(const ButtonEvent &ev);
61 virtual void on_mouse_motion(const MotionEvent &ev);
62 virtual void on_mouse_focus(const FocusEvent &ev);
63 virtual void on_key(const KeyEvent &ev);
65 // high level events
66 virtual void on_click();
67 virtual void on_double_click();
68 virtual void on_change();
69 //virtual void on_drag_move(int bn, const Vec2 &pt);
70 //virtual void on_drag_release(int bn, const Vec2 &pt);
72 // event dispatcher
73 virtual void handle_event(const Event &ev);
74 };
76 }
78 #endif // GOATKIT_WIDGET_H_