X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/0fc6d5202a304e9521159340a1fc0fa98b344b37..34d336d2c8e99b15045cd1ef7d40cbee4c0f18bb:/lib/gui/epixmap.cpp diff --git a/lib/gui/epixmap.cpp b/lib/gui/epixmap.cpp index 69da944c..f20c1a9f 100644 --- a/lib/gui/epixmap.cpp +++ b/lib/gui/epixmap.cpp @@ -3,16 +3,25 @@ #include ePixmap::ePixmap(eWidget *parent) - :eWidget(parent), m_alphatest(false) + :eWidget(parent), m_alphatest(false), m_scale(false) { } -void ePixmap::setAlphatest(bool alphatest) +void ePixmap::setAlphatest(int alphatest) { m_alphatest = alphatest; setTransparent(alphatest); } +void ePixmap::setScale(int scale) +{ + if (m_scale != scale) + { + m_scale = scale; + invalidate(); + } +} + void ePixmap::setPixmap(gPixmap *pixmap) { m_pixmap = pixmap; @@ -62,14 +71,26 @@ int ePixmap::event(int event, void *data, void *data2) getStyle(style); // we don't clear the background before because of performance reasons. -// when the pixmap is too small to fix the whole widget area, the widget is +// when the pixmap is too small to fit the whole widget area, the widget is // transparent anyway, so the background is already painted. // eWidget::event(event, data, data2); - + gPainter &painter = *(gPainter*)data2; if (m_pixmap) - painter.blit(m_pixmap, ePoint(0, 0), eRect(), m_alphatest?gPainter::BT_ALPHATEST:0); - + { + int flags = 0; + if (m_alphatest == 0) + flags = 0; + else if (m_alphatest == 1) + flags = gPainter::BT_ALPHATEST; + else if (m_alphatest == 2) + flags = gPainter::BT_ALPHABLEND; + if (m_scale) + painter.blitScale(m_pixmap, eRect(ePoint(0, 0), size()), eRect(), flags); + else + painter.blit(m_pixmap, ePoint(0, 0), eRect(), flags); + } + return 0; } case evtChangedPixmap: