From 34d336d2c8e99b15045cd1ef7d40cbee4c0f18bb Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Wed, 3 Jun 2009 14:56:04 +0200 Subject: [PATCH] experimental scaling for pixmaps, requires more work (surface is likely not an accel-surface) --- lib/gui/epixmap.cpp | 16 ++++++++++++++-- lib/gui/epixmap.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/gui/epixmap.cpp b/lib/gui/epixmap.cpp index 84fec323..f20c1a9f 100644 --- a/lib/gui/epixmap.cpp +++ b/lib/gui/epixmap.cpp @@ -3,7 +3,7 @@ #include ePixmap::ePixmap(eWidget *parent) - :eWidget(parent), m_alphatest(false) + :eWidget(parent), m_alphatest(false), m_scale(false) { } @@ -13,6 +13,15 @@ void ePixmap::setAlphatest(int alphatest) setTransparent(alphatest); } +void ePixmap::setScale(int scale) +{ + if (m_scale != scale) + { + m_scale = scale; + invalidate(); + } +} + void ePixmap::setPixmap(gPixmap *pixmap) { m_pixmap = pixmap; @@ -76,7 +85,10 @@ int ePixmap::event(int event, void *data, void *data2) flags = gPainter::BT_ALPHATEST; else if (m_alphatest == 2) flags = gPainter::BT_ALPHABLEND; - painter.blit(m_pixmap, ePoint(0, 0), eRect(), flags); + 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; diff --git a/lib/gui/epixmap.h b/lib/gui/epixmap.h index 1c4a97c8..6280fb34 100644 --- a/lib/gui/epixmap.h +++ b/lib/gui/epixmap.h @@ -6,6 +6,7 @@ class ePixmap: public eWidget { int m_alphatest; + int m_scale; public: ePixmap(eWidget *parent); @@ -13,6 +14,7 @@ public: void setPixmap(ePtr &pixmap); void setPixmapFromFile(const char *filename); void setAlphatest(int alphatest); /* 1 for alphatest, 2 for alphablend */ + void setScale(int scale); protected: ePtr m_pixmap; int event(int event, void *data=0, void *data2=0); -- 2.30.2