X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/e747d464704a12e7eaa69d4613d87fd59634fb31..4404768ce6bb07bf2784da7806444acd462c3a33:/lib/gui/epixmap.cpp diff --git a/lib/gui/epixmap.cpp b/lib/gui/epixmap.cpp index ca3e4562..3e396c98 100644 --- a/lib/gui/epixmap.cpp +++ b/lib/gui/epixmap.cpp @@ -2,26 +2,41 @@ #include #include -ePixmap::ePixmap(eWidget *parent): eWidget(parent) +ePixmap::ePixmap(eWidget *parent) + :eWidget(parent), m_alphatest(false) { } +void ePixmap::setAlphatest(bool alphatest) +{ + m_alphatest = alphatest; + setTransparent(alphatest); +} + void ePixmap::setPixmap(gPixmap *pixmap) { m_pixmap = pixmap; event(evtChangedPixmap); } +void ePixmap::setPixmap(ePtr &pixmap) +{ + m_pixmap = pixmap; + event(evtChangedPixmap); +} + void ePixmap::setPixmapFromFile(const char *filename) { - // use direct filename for absolute path or relative to enigma2 DATADIR otherwise - if (filename[0] == '/') - loadPNG(m_pixmap, filename); - else - loadPNG(m_pixmap, strcat(DATADIR "/enigma2/", filename)); - - // TODO - getDesktop()->makeCompatiblePixmap(*m_pixmap); + loadPNG(m_pixmap, filename); + + if (!m_pixmap) + { + eDebug("ePixmap::setPixmapFromFile: loadPNG failed"); + return; + } + + // TODO: This only works for desktop 0 + getDesktop(0)->makeCompatiblePixmap(*m_pixmap); event(evtChangedPixmap); } @@ -39,7 +54,7 @@ int ePixmap::event(int event, void *data, void *data2) gPainter &painter = *(gPainter*)data2; if (m_pixmap) - painter.blit(m_pixmap, ePoint(0, 0)); + painter.blit(m_pixmap, ePoint(0, 0), eRect(), m_alphatest?gPainter::BT_ALPHATEST:0); return 0; }