aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/context2d/qquickcontext2dtexture.cpp
diff options
context:
space:
mode:
authorCharles Yin <charles.yin@nokia.com>2012-08-27 11:36:42 +1000
committerQt by Nokia <qt-info@nokia.com>2012-08-28 01:14:17 +0200
commit373b8f06fa331c61efd9ba5075844df60a6a4412 (patch)
treeded52a0b1dc83a88242d02c7a74edbfcdfa18330 /src/quick/items/context2d/qquickcontext2dtexture.cpp
parente52d50fd7746c4d906b4886e437dc96a5c783950 (diff)
Use the new antialiasing property for canvas painting
Change-Id: I76f21d055696978f2f6936006eea038dd73cce6c Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'src/quick/items/context2d/qquickcontext2dtexture.cpp')
-rw-r--r--src/quick/items/context2d/qquickcontext2dtexture.cpp27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/quick/items/context2d/qquickcontext2dtexture.cpp b/src/quick/items/context2d/qquickcontext2dtexture.cpp
index a315d30f8f..169c03b7b9 100644
--- a/src/quick/items/context2d/qquickcontext2dtexture.cpp
+++ b/src/quick/items/context2d/qquickcontext2dtexture.cpp
@@ -93,7 +93,8 @@ QQuickContext2DTexture::QQuickContext2DTexture()
, m_dirtyCanvas(false)
, m_canvasWindowChanged(false)
, m_dirtyTexture(false)
- , m_smooth(false)
+ , m_smooth(true)
+ , m_antialiasing(false)
, m_tiledCanvas(false)
, m_painting(false)
{
@@ -141,6 +142,11 @@ void QQuickContext2DTexture::setSmooth(bool smooth)
m_smooth = smooth;
}
+void QQuickContext2DTexture::setAntialiasing(bool antialiasing)
+{
+ m_antialiasing = antialiasing;
+}
+
void QQuickContext2DTexture::setItem(QQuickCanvasItem* item)
{
m_item = item;
@@ -174,7 +180,7 @@ bool QQuickContext2DTexture::setDirtyRect(const QRect &r)
return doDirty;
}
-void QQuickContext2DTexture::canvasChanged(const QSize& canvasSize, const QSize& tileSize, const QRect& canvasWindow, const QRect& dirtyRect, bool smooth)
+void QQuickContext2DTexture::canvasChanged(const QSize& canvasSize, const QSize& tileSize, const QRect& canvasWindow, const QRect& dirtyRect, bool smooth, bool antialiasing)
{
QSize ts = tileSize;
if (ts.width() > canvasSize.width())
@@ -198,6 +204,7 @@ void QQuickContext2DTexture::canvasChanged(const QSize& canvasSize, const QSize&
setDirtyRect(dirtyRect);
setSmooth(smooth);
+ setAntialiasing(antialiasing);
}
void QQuickContext2DTexture::paintWithoutTiles(QQuickContext2DCommandBuffer *ccb)
@@ -213,12 +220,16 @@ void QQuickContext2DTexture::paintWithoutTiles(QQuickContext2DCommandBuffer *ccb
QPainter p;
p.begin(device);
+ if (m_antialiasing)
+ p.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing | QPainter::TextAntialiasing, true);
+ else
+ p.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing | QPainter::TextAntialiasing, false);
+
if (m_smooth)
- p.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing
- | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
+ p.setRenderHint(QPainter::SmoothPixmapTransform, true);
else
- p.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing
- | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform, false);
+ p.setRenderHint(QPainter::SmoothPixmapTransform, false);
+
p.setCompositionMode(QPainter::CompositionMode_SourceOver);
ccb->replay(&p, m_state);
@@ -262,7 +273,7 @@ void QQuickContext2DTexture::paint(QQuickContext2DCommandBuffer *ccb)
QQuickContext2D::State oldState = m_state;
foreach (QQuickContext2DTile* tile, m_tiles) {
if (tile->dirty()) {
- ccb->replay(tile->createPainter(m_smooth), oldState);
+ ccb->replay(tile->createPainter(m_smooth, m_antialiasing), oldState);
tile->drawFinished();
tile->markDirty(false);
}
@@ -444,7 +455,7 @@ bool QQuickContext2DFBOTexture::doMultisampling() const
extensionsChecked = true;
}
- return multisamplingSupported && m_smooth;
+ return multisamplingSupported && m_antialiasing;
}
void QQuickContext2DFBOTexture::grabImage(const QRectF& rf)