openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
ewidget.h
Go to the documentation of this file.
1 #ifndef __lib_gui_ewidget_h
2 #define __lib_gui_ewidget_h
3 
4 #include <lib/gdi/grc.h> /* for gRegion */
5 #include <lib/base/eptrlist.h> /* for eSmartPtrList */
6 #include <lib/gui/ewindowstyle.h> /* for eWindowStyle */
8 
9 #define MAX_LAYER 16
10 
11 class eWidgetDesktop;
12 
13 class eWidget
14 {
15  friend class eWidgetDesktop;
16 public:
17  eWidget(eWidget *parent);
18  virtual ~eWidget();
19 
20  void move(ePoint pos);
21  void resize(eSize size);
22 
23  ePoint position() const { return m_position; }
24  eSize size() const { return m_size; }
25  eSize csize() const { return m_client_size; }
26 
27  void invalidate(const gRegion &region = gRegion::invalidRegion());
28 
29  /* the window were to attach childs to. Normally, this
30  is "this", but it can be overridden in case a widget
31  has a "client area", which is implemented as a child
32  widget. eWindow overrides this, for example. */
33  virtual eWidget *child() { return this; }
34 
35  eWidget *getParent() { return m_parent; }
36 
37  void show();
38  void hide();
39 
40  void raise();
41  void lower();
42 
43  void destruct();
44 
45  SWIG_VOID(int) getStyle(ePtr<eWindowStyle> &SWIG_NAMED_OUTPUT(style)) { if (!m_style) return 1; style = m_style; return 0; }
46  void setStyle(eWindowStyle *style) { m_style = style; }
47 
48  void setBackgroundColor(const gRGB &col);
49  void clearBackgroundColor();
50 
51  void setZPosition(int z);
52  void setTransparent(int transp);
53 
54  /* untested code */
55  int isVisible() { return (m_vis & wVisShow) && ((!m_parent) || m_parent->isVisible()); }
56  /* ... */
57 
58  int isLowered() { return (m_lowered > 0); }
59 
60  int isTransparent() { return m_vis & wVisTransparent; }
61 
63 
65 private:
66  eWidgetDesktop *m_desktop;
67 
68  enum {
69  wVisShow = 1,
70  wVisTransparent = 2,
71  };
72 
73  int m_vis;
74 
75  int m_layer;
76 
77  ePtrList<eWidget> m_childs;
78  ePoint m_position;
79  eSize m_size, m_client_size;
80  /* will be accounted when there's a client offset */
81  eSize m_client_offset;
82  eWidget *m_parent;
83 
84  ePtr<eWindowStyle> m_style;
85 
86  void insertIntoParent();
87  void doPaint(gPainter &painter, const gRegion &region, int layer);
88  void recalcClipRegionsWhenVisible();
89 
90  void parentRemoved();
91 
92  gRGB m_background_color;
93  int m_have_background_color;
94 
95  eWidget *m_current_focus, *m_focus_owner;
96 
97  int m_z_position;
98  int m_lowered;
99  int m_notify_child_on_position_change;
100 protected:
101  void mayKillFocus();
102 public:
103 
104  // all in local space!
107 
109  {
114 
116 
118  evtWillChangePosition, /* new size is eRect *data */
120 
122 
125 
127  };
128  virtual int event(int event, void *data = 0, void *data2 = 0);
129  void setFocus(eWidget *focus);
130 
131  /* enable this if you need the absolute position of the widget */
132  void setPositionNotifyChild(int n) { m_notify_child_on_position_change = 1; }
133 
134  void notifyShowHide();
135 };
136 
137 extern eWidgetDesktop *getDesktop(int which);
138 
139 #endif
ucs4_t int n
Definition: big5.h:4148
Definition: epoint.h:9
Definition: esize.h:8
Definition: ewidgetanimation.h:10
Definition: ewidgetdesktop.h:32
Definition: ewidget.h:14
void hide()
Definition: ewidget.cpp:154
void clearBackgroundColor()
Definition: ewidget.cpp:216
void move(ePoint pos)
Definition: ewidget.cpp:28
void destruct()
Definition: ewidget.cpp:203
void invalidate(const gRegion &region=gRegion::invalidRegion())
Definition: ewidget.cpp:74
gRegion m_clip_region
Definition: ewidget.h:105
virtual int event(int event, void *data=0, void *data2=0)
Definition: ewidget.cpp:356
void lower()
Definition: ewidget.cpp:197
void notifyShowHide()
Definition: ewidget.cpp:422
eSize size() const
Definition: ewidget.h:24
ePoint position() const
Definition: ewidget.h:23
gRegion m_visible_region
Definition: ewidget.h:105
void mayKillFocus()
Definition: ewidget.cpp:265
gRegion m_visible_with_childs
Definition: ewidget.h:105
ePoint getAbsolutePosition()
Definition: ewidget.cpp:242
void setStyle(eWindowStyle *style)
Definition: ewidget.h:46
virtual eWidget * child()
Definition: ewidget.h:33
eSize csize() const
Definition: ewidget.h:25
int isTransparent()
Definition: ewidget.h:60
eWidgetEvent
Definition: ewidget.h:109
@ evtParentVisibilityChanged
Definition: ewidget.h:117
@ evtUserWidget
Definition: ewidget.h:126
@ evtAction
Definition: ewidget.h:121
@ evtPaint
Definition: ewidget.h:110
@ evtParentChangedPosition
Definition: ewidget.h:115
@ evtFocusGot
Definition: ewidget.h:123
@ evtChangedPosition
Definition: ewidget.h:112
@ evtFocusLost
Definition: ewidget.h:124
@ evtWillChangePosition
Definition: ewidget.h:118
@ evtKey
Definition: ewidget.h:111
@ evtWillChangeSize
Definition: ewidget.h:119
@ evtChangedSize
Definition: ewidget.h:113
int isLowered()
Definition: ewidget.h:58
void resize(eSize size)
Definition: ewidget.cpp:48
eWidgetAnimation m_animation
Definition: ewidget.h:64
virtual ~eWidget()
Definition: ewidget.cpp:273
struct eWidgetDesktopCompBuffer * m_comp_buffer[MAX_LAYER]
Definition: ewidget.h:106
void setPositionNotifyChild(int n)
Definition: ewidget.h:132
void setZPosition(int z)
Definition: ewidget.cpp:221
SWIG_VOID(int) getStyle(ePtr< eWindowStyle > &SWIG_NAMED_OUTPUT(style))
Definition: ewidget.h:45
void setFocus(eWidget *focus)
Definition: ewidget.cpp:412
void show()
Definition: ewidget.cpp:114
int isVisible()
Definition: ewidget.h:55
eWidget(eWidget *parent)
Definition: ewidget.cpp:6
eWidget * getParent()
Definition: ewidget.h:35
void setBackgroundColor(const gRGB &col)
Definition: ewidget.cpp:210
void setTransparent(int transp)
Definition: ewidget.cpp:230
Definition: ewindowstyle.h:46
Definition: grc.h:239
Definition: region.h:9
static gRegion invalidRegion()
Definition: region.h:99
#define MAX_LAYER
Definition: ewidget.h:9
eWidgetDesktop * getDesktop(int which)
Definition: enigma.cpp:429
unsigned char data[256]
Definition: hdmi_cec.h:2
pos
Definition: enigma_py_patcher.py:16
Definition: ewidgetdesktop.h:22
Definition: gpixmap.h:14
#define SWIG_NAMED_OUTPUT(x)
Definition: swig.h:21