12 , m_preferredRenderTarget(QQuickPaintedItem::Image)
15 , m_dirtyContents(
false)
16 , m_opaquePainting(
false)
17 , m_linear_filtering(
false)
19 , m_smoothPainting(
false)
20 , m_fastFBOResizing(
false)
21 , m_fillColor(Qt::transparent)
22 , m_contentsScale(1.0)
23 , m_dirtyGeometry(
false)
25 setMaterial((QSGMaterial*)1);
26 setGeometry((QSGGeometry*)1);
138void QSGSoftwarePainterNode::paint(QPainter *painter)
140 bool before = painter->testRenderHint(QPainter::SmoothPixmapTransform);
141 painter->setRenderHint(QPainter::SmoothPixmapTransform, m_linear_filtering);
142 painter->drawPixmap(0, 0, m_size.width(), m_size.height(), m_pixmap);
143 painter->setRenderHint(QPainter::SmoothPixmapTransform, before);
146void QSGSoftwarePainterNode::paint()
148 QRect dirtyRect = m_dirtyRect.isNull() ? QRect(0, 0, m_size.width(), m_size.height()) : m_dirtyRect;
152 painter.begin(&m_pixmap);
153 if (m_smoothPainting) {
154 painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
159 if (m_contentsScale == 1) {
160 qreal scaleX = m_textureSize.width() / (qreal) m_size.width();
161 qreal scaleY = m_textureSize.height() / (qreal) m_size.height();
162 painter.scale(scaleX, scaleY);
163 clipRect = dirtyRect;
165 painter.scale(m_contentsScale, m_contentsScale);
167 QRect sclip(qFloor(dirtyRect.x()/m_contentsScale),
168 qFloor(dirtyRect.y()/m_contentsScale),
169 qCeil(dirtyRect.width()/m_contentsScale+dirtyRect.x()/m_contentsScale-qFloor(dirtyRect.x()/m_contentsScale)),
170 qCeil(dirtyRect.height()/m_contentsScale+dirtyRect.y()/m_contentsScale-qFloor(dirtyRect.y()/m_contentsScale)));
175 if (!m_dirtyRect.isNull())
176 painter.setClipRect(clipRect);
178 painter.setCompositionMode(QPainter::CompositionMode_Source);
179 painter.fillRect(clipRect, m_fillColor);
180 painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
182 m_item->paint(&painter);
185 m_dirtyRect = QRect();