diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2009-04-27 04:33:07 (GMT) |
---|---|---|
committer | Michael Brasser <michael.brasser@nokia.com> | 2009-04-27 04:33:07 (GMT) |
commit | 7e3aee5b4f50733fa8d88def28b4fce78070f9e2 (patch) | |
tree | 0e3b3f26ebc7a38d47f2f057572b5a7367ac90a4 /src/declarative/fx | |
parent | c818abd743a6877aa27ded1a01d5f8fd498cc116 (diff) | |
download | Qt-7e3aee5b4f50733fa8d88def28b4fce78070f9e2.zip Qt-7e3aee5b4f50733fa8d88def28b4fce78070f9e2.tar.gz Qt-7e3aee5b4f50733fa8d88def28b4fce78070f9e2.tar.bz2 |
Add 'smooth' property to BlendedImage.
Diffstat (limited to 'src/declarative/fx')
-rw-r--r-- | src/declarative/fx/qfxblendedimage.cpp | 37 | ||||
-rw-r--r-- | src/declarative/fx/qfxblendedimage.h | 6 |
2 files changed, 42 insertions, 1 deletions
diff --git a/src/declarative/fx/qfxblendedimage.cpp b/src/declarative/fx/qfxblendedimage.cpp index b5d9a9a..b5b7bb3 100644 --- a/src/declarative/fx/qfxblendedimage.cpp +++ b/src/declarative/fx/qfxblendedimage.cpp @@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE secondary image. */ QFxBlendedImage::QFxBlendedImage(QFxItem *parent) -: QFxItem(parent), _blend(0), dirty(false) +: QFxItem(parent), _blend(0), _smooth(false), dirty(false) { #if defined(QFX_RENDER_OPENGL2) setOptions(HasContents); @@ -154,16 +154,51 @@ void QFxBlendedImage::setBlend(qreal b) update(); } +/*! + \qmlproperty bool BlendedImage::smooth + + Set this property if you want the image to be smoothly filtered when scaled or + transformed. Smooth filtering gives better visual quality, but is slower. If + the BlendedImage is displayed at its natural size, this property has no visual or + performance effect. + + \note Generally scaling artifacts are only visible if the image is stationary on + the screen. A common pattern when animating an image is to disable smooth + filtering at the beginning of the animation and reenable it at the conclusion. + */ +bool QFxBlendedImage::smoothTransform() const +{ + return _smooth; +} + +void QFxBlendedImage::setSmoothTransform(bool s) +{ + if(_smooth == s) + return; + _smooth = s; + update(); +} + #if defined(QFX_RENDER_QPAINTER) void QFxBlendedImage::paintContents(QPainter &p) { if (primSrc.isNull() && secSrc.isNull()) return; + + if(_smooth) { + p.save(); + p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, _smooth); + } + if (_blend < 0.75) p.drawImage(0, 0, primPix); else p.drawImage(0, 0, secPix); + + if(_smooth) { + p.restore(); + } } #elif defined(QFX_RENDER_OPENGL2) diff --git a/src/declarative/fx/qfxblendedimage.h b/src/declarative/fx/qfxblendedimage.h index 96d3135..5cc0238 100644 --- a/src/declarative/fx/qfxblendedimage.h +++ b/src/declarative/fx/qfxblendedimage.h @@ -60,17 +60,22 @@ class QFxBlendedImage : public QFxItem Q_PROPERTY(QString primaryUrl READ primaryUrl WRITE setPrimaryUrl) Q_PROPERTY(QString secondaryUrl READ secondaryUrl WRITE setSecondaryUrl) Q_PROPERTY(qreal blend READ blend WRITE setBlend) + Q_PROPERTY(bool smooth READ smoothTransform WRITE setSmoothTransform) public: QFxBlendedImage(QFxItem *parent=0); QString primaryUrl() const; void setPrimaryUrl(const QString &); + QString secondaryUrl() const; void setSecondaryUrl(const QString &); qreal blend() const; void setBlend(qreal); + bool smoothTransform() const; + void setSmoothTransform(bool); + #if defined(QFX_RENDER_QPAINTER) void paintContents(QPainter &painter); #elif defined(QFX_RENDER_OPENGL2) @@ -88,6 +93,7 @@ private: QUrl secUrl; qreal _blend; + bool _smooth; bool dirty; #if defined(QFX_RENDER_OPENGL2) GLTexture prim; |