ca3e456275de817cebab05c99da3d227bd663d61
[enigma2.git] / lib / gui / epixmap.cpp
1 #include <lib/gui/epixmap.h>
2 #include <lib/gdi/epng.h>
3 #include <lib/gui/ewidgetdesktop.h>
4
5 ePixmap::ePixmap(eWidget *parent): eWidget(parent)
6 {
7 }
8
9 void ePixmap::setPixmap(gPixmap *pixmap)
10 {
11         m_pixmap = pixmap;
12         event(evtChangedPixmap);
13 }
14
15 void ePixmap::setPixmapFromFile(const char *filename)
16 {
17         // use direct filename for absolute path or relative to enigma2 DATADIR otherwise
18         if (filename[0] == '/')
19                 loadPNG(m_pixmap, filename);
20         else
21                 loadPNG(m_pixmap, strcat(DATADIR "/enigma2/", filename));
22                 
23                 // TODO
24         getDesktop()->makeCompatiblePixmap(*m_pixmap);
25         event(evtChangedPixmap);
26 }
27
28 int ePixmap::event(int event, void *data, void *data2)
29 {
30         switch (event)
31         {
32         case evtPaint:
33         {
34                 ePtr<eWindowStyle> style;
35                 
36                 getStyle(style);
37                 
38 //              eWidget::event(event, data, data2);
39                 
40                 gPainter &painter = *(gPainter*)data2;
41                 if (m_pixmap)
42                         painter.blit(m_pixmap, ePoint(0, 0));
43                 
44                 return 0;
45         }
46         case evtChangedPixmap:
47                 invalidate();
48                 return 0;
49         default:
50                 return eWidget::event(event, data, data2);
51         }
52 }