0fa704c303418c27186acc88e1739cc4f98643ad
[enigma2.git] / lib / gui / epositiongauge.h
1 #ifndef __lib_gui_epositiongauge_h
2 #define __lib_gui_epositiongauge_h
3
4 #include <lib/gui/ewidget.h>
5 #include <set>
6
7 typedef long long pts_t;
8
9 class ePixmap;
10
11 class ePositionGauge: public eWidget
12 {
13 public:
14         ePositionGauge(eWidget *parent);
15         ~ePositionGauge();
16         void setLength(const pts_t &len);
17         void setPosition(const pts_t &pos);
18         
19         void setInColor(const gRGB &color); /* foreground? */
20         void setPointer(gPixmap *pixmap, const ePoint &center);
21         
22         void setInOutList(PyObject *list);
23 #ifndef SWIG
24 protected:
25         int event(int event, void *data=0, void *data2=0);
26 private:
27         void updatePosition();
28         enum ePositionGaugeEvent
29         {
30                 evtChangedPosition = evtUserWidget
31         };
32         ePixmap *m_point_widget;
33         ePoint m_point_center;
34         
35         pts_t m_position, m_length;
36         int m_pos;
37
38                 /* TODO: this is duplicated code from lib/service/servicedvb.h */
39         struct cueEntry
40         {
41                 pts_t where;
42                 unsigned int what;
43                 
44                 bool operator < (const struct cueEntry &o) const
45                 {
46                         return what < o.what;
47                 }
48                 cueEntry(const pts_t &where, unsigned int what) :
49                         where(where), what(what)
50                 {
51                 }
52         };
53         
54         std::multiset<cueEntry> m_cue_entries;
55         int scale(const pts_t &val);
56 #endif
57 };
58
59 #endif