openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
ewidgetdesktop.h
Go to the documentation of this file.
1 #ifndef __lib_gui_ewidgetdesktop_h
2 #define __lib_gui_ewidgetdesktop_h
3 
4 #include <lib/gdi/grc.h>
5 #include <lib/base/eptrlist.h>
6 
7 class eWidget;
8 class eMainloop;
9 class eTimer;
10 
11  /* an eWidgetDesktopCompBuffer is a composition buffer. in
12  immediate composition mode, we only have one composition
13  buffer - the screen.
14  in buffered mode, we have one buffer for each widget, plus
15  the screen.
16 
17  even in buffered mode, we have a background region, because
18  a window can be arbitrary shaped. the screen size acts as a bounding
19  box in these cases. */
20 
22 {
29 };
30 
31 class eWidgetDesktop: public sigc::trackable
32 {
33 public:
34  eWidgetDesktop(eSize screen);
36  void addRootWidget(eWidget *root);
38 
39  /* try to move widget content. */
40  /* returns -1 if there's no move support. */
41  /* call this after recalcClipRegions for that widget. */
42  /* you probably want to invalidate if -1 was returned. */
43  int movedWidget(eWidget *root);
44 
46 
47  void invalidateWidgetLayer(const gRegion &region, const eWidget *widget, int layer);
48  void invalidateWidget(const gRegion &region, const eWidget *widget, int layer = -1);
49  void invalidate(const gRegion &region, const eWidget *widget = 0, int layer = -1);
50  void paintLayer(eWidget *widget, int layer);
51  void paint();
52  void setDC(gDC *dc);
53 
54  void setBackgroundColor(gRGB col);
56 
57  void setPalette(gPixmap &pm);
58 
59  void setRedrawTask(eMainloop &ml);
60 
62  void makeCompatiblePixmap(gPixmap &pm);
63 
64  enum {
67  };
68 
69  void setCompositionMode(int mode);
70 
71  int getStyleID() { return m_style_id; }
72  void setStyleID(int id) { m_style_id = id; }
73 
74  void resize(eSize size);
75  eSize size() const { return m_screen.m_screen_size; }
76  void sendShow(ePoint point, eSize size);
77  void sendHide(ePoint point, eSize size);
78  eRect bounds() const; // returns area inside margins
79  eRect margins() const { return m_margins; }
80  void setMargins(const eRect& value) { m_margins = value; }
81 private:
82  ePtrList<eWidget> m_root;
83  void calcWidgetClipRegion(eWidget *widget, gRegion &parent_visible);
84  void paintBackground(eWidgetDesktopCompBuffer *comp);
85 
86  eMainloop *m_mainloop;
87  ePtr<eTimer> m_timer;
88 
89  int m_comp_mode;
90  int m_require_redraw;
91 
92  eWidgetDesktopCompBuffer m_screen;
93 
94  void createBufferForWidget(eWidget *widget, int layer);
95  void removeBufferForWidget(eWidget *widget, int layer);
96 
97  void redrawComposition(int notifed);
98  void notify();
99 
100  void clearVisibility(eWidget *widget);
101 
102  int m_style_id;
103  eRect m_margins;
104 };
105 
106 #endif
Definition: ebase.h:187
Definition: epoint.h:9
Definition: erect.h:11
Definition: esize.h:8
Gives a callback after a specified timeout.
Definition: ebase.h:277
Definition: ewidgetdesktop.h:32
void invalidateWidgetLayer(const gRegion &region, const eWidget *widget, int layer)
Definition: ewidgetdesktop.cpp:170
void sendShow(ePoint point, eSize size)
Definition: ewidgetdesktop.cpp:532
void setMargins(const eRect &value)
Definition: ewidgetdesktop.h:80
void setStyleID(int id)
Definition: ewidgetdesktop.h:72
eRect bounds() const
Definition: ewidgetdesktop.cpp:550
void resize(eSize size)
Definition: ewidgetdesktop.cpp:522
void paintLayer(eWidget *widget, int layer)
Definition: ewidgetdesktop.cpp:295
eRect margins() const
Definition: ewidgetdesktop.h:79
void setRedrawTask(eMainloop &ml)
Definition: ewidgetdesktop.cpp:349
void invalidateWidget(const gRegion &region, const eWidget *widget, int layer=-1)
Definition: ewidgetdesktop.cpp:182
void makeCompatiblePixmap(ePtr< gPixmap > &pm)
Definition: ewidgetdesktop.cpp:364
void invalidate(const gRegion &region, const eWidget *widget=0, int layer=-1)
Definition: ewidgetdesktop.cpp:201
void removeRootWidget(eWidget *root)
Definition: ewidgetdesktop.cpp:36
void setPalette(gPixmap &pm)
Definition: ewidgetdesktop.cpp:253
eSize size() const
Definition: ewidgetdesktop.h:75
void setBackgroundColor(gRGB col)
Definition: ewidgetdesktop.cpp:240
int movedWidget(eWidget *root)
Definition: ewidgetdesktop.cpp:47
void paint()
Definition: ewidgetdesktop.cpp:308
void sendHide(ePoint point, eSize size)
Definition: ewidgetdesktop.cpp:541
eWidgetDesktop(eSize screen)
Definition: ewidgetdesktop.cpp:411
void addRootWidget(eWidget *root)
Definition: ewidgetdesktop.cpp:8
void setCompositionMode(int mode)
Definition: ewidgetdesktop.cpp:398
void recalcClipRegions(eWidget *root)
Definition: ewidgetdesktop.cpp:100
@ cmImmediate
Definition: ewidgetdesktop.h:65
@ cmBuffered
Definition: ewidgetdesktop.h:66
~eWidgetDesktop()
Definition: ewidgetdesktop.cpp:424
int getStyleID()
Definition: ewidgetdesktop.h:71
void setDC(gDC *dc)
Definition: ewidgetdesktop.cpp:342
Definition: ewidget.h:14
Definition: grc.h:330
Definition: gpixmap.h:188
Definition: region.h:9
root
Definition: MovieSelection.py:57
value
Definition: Profile.py:29
Definition: ewidgetdesktop.h:22
gRGB m_background_color
Definition: ewidgetdesktop.h:28
eSize m_screen_size
Definition: ewidgetdesktop.h:24
gRegion m_dirty_region
Definition: ewidgetdesktop.h:25
ePtr< gDC > m_dc
Definition: ewidgetdesktop.h:27
gRegion m_background_region
Definition: ewidgetdesktop.h:26
ePoint m_position
Definition: ewidgetdesktop.h:23
Definition: gpixmap.h:14
uint8_t mode
Definition: vps.cpp:40