Added a separate property to enable mipmapping on QSGPaintedItem.

Don't use QSGItem's smooth property for that anymore.
This commit is contained in:
Yoann Lopes 2011-05-10 12:11:24 +02:00
parent 21deca53df
commit b909a2433e
3 changed files with 41 additions and 1 deletions

View File

@ -103,6 +103,8 @@ QSGPaintedItemPrivate::QSGPaintedItemPrivate()
, geometryDirty(false)
, contentsDirty(false)
, opaquePainting(false)
, antialiasing(false)
, mipmap(false)
{
}
@ -225,6 +227,40 @@ void QSGPaintedItem::setAntialiasing(bool enable)
update();
}
/*!
Returns true if mipmaps are enabled; otherwise, false is returned.
By default, mipmapping is not enabled.
\sa setMipmap()
*/
bool QSGPaintedItem::mipmap() const
{
Q_D(const QSGPaintedItem);
return d->mipmap;
}
/*!
If \a enable is true, mipmapping is enabled on the associated texture.
Mipmapping increases rendering speed and reduces aliasing artifacts when the item is
scaled down.
By default, mipmapping is not enabled.
\sa mipmap()
*/
void QSGPaintedItem::setMipmap(bool enable)
{
Q_D(QSGPaintedItem);
if (d->mipmap == enable)
return;
d->mipmap = enable;
update();
}
/*!
This function returns the outer bounds of the item as a rectangle; all painting must be
restricted to inside an item's bounding rect.
@ -416,7 +452,7 @@ QSGNode *QSGPaintedItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *
node->setSize(QSize(qRound(br.width()), qRound(br.height())));
node->setSmoothPainting(d->antialiasing);
node->setLinearFiltering(d->smooth);
node->setMipmapping(d->smooth);
node->setMipmapping(d->mipmap);
node->setOpaquePainting(d->opaquePainting);
node->setFillColor(d->fillColor);
node->setContentsScale(d->contentsScale);

View File

@ -75,6 +75,9 @@ public:
bool antialiasing() const;
void setAntialiasing(bool enable);
bool mipmap() const;
void setMipmap(bool enable);
QRectF contentsBoundingRect() const;
QSize contentsSize() const;

View File

@ -63,6 +63,7 @@ public:
bool contentsDirty : 1;
bool opaquePainting: 1;
bool antialiasing: 1;
bool mipmap: 1;
};
QT_END_NAMESPACE