Disable antialiased clipping when painting images
It shouldn't be needed and produces tiling gaps Change-Id: I3c7bbc91e5e618bdb111ddf18412acac253f2c6e Task-number: QTBUG-71322 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
This commit is contained in:
parent
0e87966c8f
commit
04af30c91a
|
@ -99,13 +99,6 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin
|
|||
xTarget.resize(columns + 1);
|
||||
yTarget.resize(rows + 1);
|
||||
|
||||
bool oldAA = painter->testRenderHint(QPainter::Antialiasing);
|
||||
if (painter->paintEngine()->type() != QPaintEngine::OpenGL
|
||||
&& painter->paintEngine()->type() != QPaintEngine::OpenGL2
|
||||
&& oldAA && painter->combinedTransform().type() != QTransform::TxNone) {
|
||||
painter->setRenderHint(QPainter::Antialiasing, false);
|
||||
}
|
||||
|
||||
xTarget[0] = targetRect.left();
|
||||
xTarget[1] = targetCenterLeft;
|
||||
xTarget[columns - 1] = targetCenterRight;
|
||||
|
@ -311,9 +304,6 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin
|
|||
painter->drawPixmapFragments(opaqueData.data(), opaqueData.size(), pixmap, QPainter::OpaqueHint);
|
||||
if (translucentData.size())
|
||||
painter->drawPixmapFragments(translucentData.data(), translucentData.size(), pixmap);
|
||||
|
||||
if (oldAA)
|
||||
painter->setRenderHint(QPainter::Antialiasing, true);
|
||||
}
|
||||
|
||||
} // QSGSoftwareHelpers namespace
|
||||
|
@ -464,6 +454,8 @@ static Qt::TileRule getTileRule(qreal factor)
|
|||
void QSGSoftwareInternalImageNode::paint(QPainter *painter)
|
||||
{
|
||||
painter->setRenderHint(QPainter::SmoothPixmapTransform, m_smooth);
|
||||
// Disable antialiased clipping. It causes transformed tiles to have gaps.
|
||||
painter->setRenderHint(QPainter::Antialiasing, false);
|
||||
|
||||
const QPixmap &pm = m_mirror || m_textureIsLayer ? m_cachedMirroredPixmap : pixmap();
|
||||
|
||||
|
@ -494,6 +486,7 @@ void QSGSoftwareInternalImageNode::paint(QPainter *painter)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
QRectF QSGSoftwareInternalImageNode::rect() const
|
||||
{
|
||||
return m_targetRect;
|
||||
|
|
|
@ -99,6 +99,8 @@ void QSGSoftwareImageNode::paint(QPainter *painter)
|
|||
updateCachedMirroredPixmap();
|
||||
|
||||
painter->setRenderHint(QPainter::SmoothPixmapTransform, (m_filtering == QSGTexture::Linear));
|
||||
// Disable antialiased clipping. It causes transformed tiles to have gaps.
|
||||
painter->setRenderHint(QPainter::Antialiasing, false);
|
||||
|
||||
if (!m_cachedPixmap.isNull()) {
|
||||
painter->drawPixmap(m_rect, m_cachedPixmap, m_sourceRect);
|
||||
|
@ -194,6 +196,9 @@ void QSGSoftwareNinePatchNode::update()
|
|||
|
||||
void QSGSoftwareNinePatchNode::paint(QPainter *painter)
|
||||
{
|
||||
// Disable antialiased clipping. It causes transformed tiles to have gaps.
|
||||
painter->setRenderHint(QPainter::Antialiasing, false);
|
||||
|
||||
if (m_margins.isNull())
|
||||
painter->drawPixmap(m_bounds, m_pixmap, QRectF(0, 0, m_pixmap.width(), m_pixmap.height()));
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue