QtGui: use new QRegion::begin()/end() instead of rect()
Saves ~1100b in text size on optimized GCC 5.3 Linux AMD64 builds. Change-Id: I928be44314dde06d5fdd2486a3417870bda64af4 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>bb10
parent
d8f0a8a8a4
commit
79cbff60dd
|
|
@ -298,10 +298,8 @@ QRectF QBlittablePlatformPixmap::clipAndTransformRect(const QRectF &rect) const
|
|||
if (clipData->hasRectClip) {
|
||||
transformationRect &= clipData->clipRect;
|
||||
} else if (clipData->hasRegionClip) {
|
||||
const QVector<QRect> rects = clipData->clipRegion.rects();
|
||||
for (int i = 0; i < rects.size(); i++) {
|
||||
transformationRect &= rects.at(i);
|
||||
}
|
||||
for (const QRect &rect : clipData->clipRegion)
|
||||
transformationRect &= rect;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -382,8 +382,7 @@ inline QRegion fromNativeLocalRegion(const QRegion &pixelRegion, const QWindow *
|
|||
|
||||
qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
QRegion pointRegion;
|
||||
const auto rects = pixelRegion.rects();
|
||||
for (const QRect &rect : rects) {
|
||||
for (const QRect &rect : pixelRegion) {
|
||||
pointRegion += QRect(fromNative(rect.topLeft(), scaleFactor),
|
||||
fromNative(rect.size(), scaleFactor));
|
||||
}
|
||||
|
|
@ -399,7 +398,7 @@ inline QRegion fromNativeLocalExposedRegion(const QRegion &pixelRegion, const QW
|
|||
|
||||
const qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
QRegion pointRegion;
|
||||
foreach (const QRect &rect, pixelRegion.rects()) {
|
||||
for (const QRect &rect : pixelRegion) {
|
||||
const QPointF topLeftP = QPointF(rect.topLeft()) / scaleFactor;
|
||||
const QPointF bottomRightP = QPointF(rect.bottomRight()) / scaleFactor;
|
||||
pointRegion += QRect(QPoint(qFloor(topLeftP.x()), qFloor(topLeftP.y())),
|
||||
|
|
@ -415,8 +414,7 @@ inline QRegion toNativeLocalRegion(const QRegion &pointRegion, const QWindow *wi
|
|||
|
||||
qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
QRegion pixelRegon;
|
||||
const auto rects = pointRegion.rects();
|
||||
for (const QRect &rect : rects) {
|
||||
for (const QRect &rect : pointRegion) {
|
||||
pixelRegon += QRect(toNative(rect.topLeft(), scaleFactor),
|
||||
toNative(rect.size(), scaleFactor));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1012,11 +1012,11 @@ void QOpenGL2PaintEngineExPrivate::fillStencilWithVertexArray(const float *data,
|
|||
funcs.glStencilMask(0xff); // Enable stencil writes
|
||||
|
||||
if (dirtyStencilRegion.intersects(currentScissorBounds)) {
|
||||
QVector<QRect> clearRegion = dirtyStencilRegion.intersected(currentScissorBounds).rects();
|
||||
const QRegion clearRegion = dirtyStencilRegion.intersected(currentScissorBounds);
|
||||
funcs.glClearStencil(0); // Clear to zero
|
||||
for (int i = 0; i < clearRegion.size(); ++i) {
|
||||
for (const QRect &rect : clearRegion) {
|
||||
#ifndef QT_GL_NO_SCISSOR_TEST
|
||||
setScissor(clearRegion.at(i));
|
||||
setScissor(rect);
|
||||
#endif
|
||||
funcs.glClear(GL_STENCIL_BUFFER_BIT);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -374,9 +374,8 @@ void QBlitterPaintEnginePrivate::fillRect(const QRectF &rect, const QColor &colo
|
|||
else
|
||||
pmData->blittable()->fillRect(targetRect & clipData->clipRect, color);
|
||||
} else if (clipData->hasRegionClip) {
|
||||
QVector<QRect> rects = clipData->clipRegion.rects();
|
||||
for (int i = 0; i < rects.size(); ++i) {
|
||||
QRect intersectRect = rects.at(i).intersected(targetRect.toRect());
|
||||
for (const QRect &rect : clipData->clipRegion) {
|
||||
QRect intersectRect = rect.intersected(targetRect.toRect());
|
||||
if (!intersectRect.isEmpty()) {
|
||||
unlock();
|
||||
if (alpha)
|
||||
|
|
@ -609,10 +608,8 @@ void QBlitterPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
|
|||
}
|
||||
} else if (clipData->hasRegionClip) {
|
||||
QRect unclippedTargetRect(x, y, blitWidth, blitHeight);
|
||||
const QVector<QRect> intersectedRects = clipData->clipRegion.intersected(unclippedTargetRect).rects();
|
||||
const int intersectedSize = intersectedRects.size();
|
||||
for (int i = 0; i < intersectedSize; ++i) {
|
||||
const QRect &targetRect = intersectedRects.at(i);
|
||||
const QRegion targetRegion = clipData->clipRegion.intersected(unclippedTargetRect);
|
||||
for (const QRect &targetRect : targetRegion) {
|
||||
if (!targetRect.isValid() || targetRect.isEmpty())
|
||||
continue;
|
||||
int tmpSrcX = srcX + (targetRect.x() - x);
|
||||
|
|
@ -686,9 +683,8 @@ void QBlitterPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const Q
|
|||
if (clipData->hasRectClip) {
|
||||
d->clipAndDrawPixmap(clipData->clipRect, targetRect, pm, sr, canDrawOpacity);
|
||||
} else if (clipData->hasRegionClip) {
|
||||
QVector<QRect>rects = clipData->clipRegion.rects();
|
||||
for (int i = 0; i<rects.size(); ++i)
|
||||
d->clipAndDrawPixmap(rects.at(i), targetRect, pm, sr, canDrawOpacity);
|
||||
for (const QRect &rect : clipData->clipRegion)
|
||||
d->clipAndDrawPixmap(rect, targetRect, pm, sr, canDrawOpacity);
|
||||
}
|
||||
} else {
|
||||
QRectF deviceRect(0, 0, paintDevice()->width(), paintDevice()->height());
|
||||
|
|
|
|||
|
|
@ -3893,7 +3893,7 @@ void QClipData::setClipRect(const QRect &rect)
|
|||
void QClipData::setClipRegion(const QRegion ®ion)
|
||||
{
|
||||
if (region.rectCount() == 1) {
|
||||
setClipRect(region.rects().at(0));
|
||||
setClipRect(*region.begin());
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2835,7 +2835,7 @@ void QPainter::setClipRegion(const QRegion &r, Qt::ClipOperation op)
|
|||
QRect rect = r.boundingRect();
|
||||
if (qt_show_painter_debug_output)
|
||||
printf("QPainter::setClipRegion(), size=%d, [%d,%d,%d,%d]\n",
|
||||
r.rects().size(), rect.x(), rect.y(), rect.width(), rect.height());
|
||||
r.rectCount(), rect.x(), rect.y(), rect.width(), rect.height());
|
||||
#endif
|
||||
if (!d->engine) {
|
||||
qWarning("QPainter::setClipRegion: Painter not active");
|
||||
|
|
|
|||
|
|
@ -1294,10 +1294,9 @@ void QPainterPath::addRegion(const QRegion ®ion)
|
|||
ensureData();
|
||||
detach();
|
||||
|
||||
QVector<QRect> rects = region.rects();
|
||||
d_func()->elements.reserve(rects.size() * 5);
|
||||
for (int i=0; i<rects.size(); ++i)
|
||||
addRect(rects.at(i));
|
||||
d_func()->elements.reserve(region.rectCount() * 5);
|
||||
for (const QRect &rect : region)
|
||||
addRect(rect);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1078,9 +1078,8 @@ void QPdfEngine::updateState(const QPaintEngineState &state)
|
|||
} else if (flags & DirtyClipRegion) {
|
||||
d->clipEnabled = true;
|
||||
QPainterPath path;
|
||||
QVector<QRect> rects = state.clipRegion().rects();
|
||||
for (int i = 0; i < rects.size(); ++i)
|
||||
path.addRect(rects.at(i));
|
||||
for (const QRect &rect : state.clipRegion())
|
||||
path.addRect(rect);
|
||||
updateClipPath(path, state.clipOperation());
|
||||
flags |= DirtyClipPath;
|
||||
} else if (flags & DirtyClipEnabled) {
|
||||
|
|
|
|||
|
|
@ -250,9 +250,8 @@ static QRegion deviceRegion(const QRegion ®ion, QWindow *window, const QPoint
|
|||
return region;
|
||||
|
||||
QVector<QRect> rects;
|
||||
const QVector<QRect> regionRects = region.rects();
|
||||
rects.reserve(regionRects.count());
|
||||
for (const QRect &rect : regionRects)
|
||||
rects.reserve(region.rectCount());
|
||||
for (const QRect &rect : region)
|
||||
rects.append(deviceRect(rect.translated(offset), window));
|
||||
|
||||
QRegion deviceRegion;
|
||||
|
|
|
|||
Loading…
Reference in New Issue