From 0e44c3b18a8e48f8684f1d3036437288f10b0808 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 29 Jul 2021 04:23:36 +0300 Subject: [PATCH] avoid branch in qt_xForm_helper() function Signed-off-by: Ivailo Monev --- src/gui/image/qimage.cpp | 130 +++++++++++++++++++++++------------------------ 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index 15cbf340a..31719d377 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -4096,78 +4096,78 @@ bool qt_xForm_helper(const QTransform &trueMat, int xoffset, int type, int depth trigx = m21ydx; trigy = m22ydy; uchar *maxp = dptr + dbpl; - if (depth != 1) { - switch (depth) { - case 8: { - // 8 bpp transform - while (dptr < maxp) { - if (trigx < maxws && trigy < maxhs) - *dptr = *(sptr+sbpl*(trigy>>12)+(trigx>>12)); - trigx += m11; - trigy += m12; - dptr++; - } - break; - } - case 16: { - // 16 bpp transform - while (dptr < maxp) { - if (trigx < maxws && trigy < maxhs) - *((ushort*)dptr) = *((ushort *)(sptr+sbpl*(trigy>>12) + - ((trigx>>12)<<1))); - trigx += m11; - trigy += m12; - dptr++; - dptr++; + switch (depth) { + case 1: { + switch (type) { + case QT_XFORM_TYPE_MSBFIRST: { + while (dptr < maxp) { + IWX_MSB(128); + IWX_MSB(64); + IWX_MSB(32); + IWX_MSB(16); + IWX_MSB(8); + IWX_MSB(4); + IWX_MSB(2); + IWX_MSB(1); + dptr++; + } + break; } - break; - } - case 32: { - // 32 bpp transform - while (dptr < maxp) { - if (trigx < maxws && trigy < maxhs) - *((uint*)dptr) = *((uint *)(sptr+sbpl*(trigy>>12) + - ((trigx>>12)<<2))); - trigx += m11; - trigy += m12; - dptr += 4; + case QT_XFORM_TYPE_LSBFIRST: { + while (dptr < maxp) { + IWX_LSB(1); + IWX_LSB(2); + IWX_LSB(4); + IWX_LSB(8); + IWX_LSB(16); + IWX_LSB(32); + IWX_LSB(64); + IWX_LSB(128); + dptr++; + } + break; } - break; } - default: { - return false; + break; + } + case 8: { + // 8 bpp transform + while (dptr < maxp) { + if (trigx < maxws && trigy < maxhs) + *dptr = *(sptr+sbpl*(trigy>>12)+(trigx>>12)); + trigx += m11; + trigy += m12; + dptr++; } + break; } - } else { - switch (type) { - case QT_XFORM_TYPE_MSBFIRST: { - while (dptr < maxp) { - IWX_MSB(128); - IWX_MSB(64); - IWX_MSB(32); - IWX_MSB(16); - IWX_MSB(8); - IWX_MSB(4); - IWX_MSB(2); - IWX_MSB(1); - dptr++; - } - break; + case 16: { + // 16 bpp transform + while (dptr < maxp) { + if (trigx < maxws && trigy < maxhs) + *((ushort*)dptr) = *((ushort *)(sptr+sbpl*(trigy>>12) + + ((trigx>>12)<<1))); + trigx += m11; + trigy += m12; + dptr++; + dptr++; } - case QT_XFORM_TYPE_LSBFIRST: { - while (dptr < maxp) { - IWX_LSB(1); - IWX_LSB(2); - IWX_LSB(4); - IWX_LSB(8); - IWX_LSB(16); - IWX_LSB(32); - IWX_LSB(64); - IWX_LSB(128); - dptr++; - } - break; + break; + } + case 32: { + // 32 bpp transform + while (dptr < maxp) { + if (trigx < maxws && trigy < maxhs) + *((uint*)dptr) = *((uint *)(sptr+sbpl*(trigy>>12) + + ((trigx>>12)<<2))); + trigx += m11; + trigy += m12; + dptr += 4; } + break; + } + default: { + return false; } } m21ydx += m21; -- 2.11.0