aboutsummaryrefslogtreecommitdiff
path: root/lib/gui/ewidgetdesktop.h
blob: c917e36a6f55cf294fad7598e257d64d55c775e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef __lib_gui_ewidgetdesktop_h
#define __lib_gui_ewidgetdesktop_h

#include <lib/gdi/grc.h>
#include <lib/base/eptrlist.h>

class eWidget;
class eMainloop;
class eTimer;

class eWidgetDesktop: public Object
{
public: // weil debug
	eSize m_screen_size;
	gRegion m_dirty_region;
	gRegion m_background_region;
	ePtr<gDC> m_dc;
	gRGB m_background_color;
public:
	eWidgetDesktop(eSize screen);
	~eWidgetDesktop();
	void addRootWidget(eWidget *root, int top);
	void removeRootWidget(eWidget *root);
	void recalcClipRegions();
	
	void invalidate(const gRegion &region);
	void paint();
	void setDC(gDC *dc);
	
	void setBackgroundColor(gRGB col);
	
	void setPalette(gPixmap &pm);
	
	void setRedrawTask(eMainloop &ml);
	
	void makeCompatiblePixmap(gPixmap &pm);
private:
	ePtrList<eWidget> m_root;
	void calcWidgetClipRegion(eWidget *widget, gRegion &parent_visible);
	
	eMainloop *m_mainloop;
	eTimer *m_timer;
};

#endif