]> git.tdb.fi Git - libs/gltk.git/blob - source/widget.h
Rework event passing system to allow for pointer grabs
[libs/gltk.git] / source / widget.h
1 #ifndef MSP_GLTK_WIDGET_H_
2 #define MSP_GLTK_WIDGET_H_
3
4 #include <string>
5 #include "geometry.h"
6 #include "state.h"
7
8 namespace Msp {
9 namespace GLtk {
10
11 class Part;
12 class Resources;
13 class Style;
14
15 class Widget
16 {
17 public:
18         virtual ~Widget() { }
19         void set_position(int, int);
20         void set_size(unsigned, unsigned);
21         void set_geometry(const Geometry &);
22         void set_style(const std::string &);
23         const Geometry &get_geometry() const { return geom; }
24         void render() const;
25         virtual void button_press(int, int, unsigned) { }
26         virtual void button_release(int, int, unsigned) { }
27         virtual void pointer_motion(int, int) { }
28         virtual void pointer_enter() { }
29         virtual void pointer_leave() { }
30 protected:
31         const Resources &res;
32         Geometry geom;
33         std::string style_name;
34         const Style *style;
35         State state;
36
37         Widget(const Resources &);
38         virtual const char *get_class() const { return "widget"; }
39         void update_style();
40         virtual void render_part(const Part &) const;
41         void render_graphic(const Part &) const;
42         void render_text(const Part &, const std::string &) const;
43 };
44
45 } // namespace GLtk
46 } // namespace Msp
47
48 #endif