]> git.tdb.fi Git - libs/gltk.git/blob - source/widget.h
Initial revision
[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         bool button_press(int, int, unsigned);
26         bool button_release(int, int, unsigned);
27         bool pointer_motion(int, int);
28 protected:
29         const Resources &res;
30         Geometry geom;
31         std::string style_name;
32         const Style *style;
33         State state;
34
35         Widget(const Resources &);
36         virtual const char *get_class() const { return "widget"; }
37         void update_style();
38         virtual void render_part(const Part &) const;
39         void render_graphic(const Part &) const;
40         void render_text(const Part &, const std::string &) const;
41         virtual void on_button_press(int, int, unsigned) { }
42         virtual void on_button_release(int, int, unsigned) { }
43         virtual void on_pointer_motion(int, int, unsigned) { }
44         virtual void on_pointer_enter() { }
45         virtual void on_pointer_leave() { }
46 };
47
48 } // namespace GLtk
49 } // namespace Msp
50
51 #endif