Fix bilinear sampling of more than 8x rotated transforms
The check for 8x zoom was inverted and checked for 1/8x zoom. Change-Id: I45156db709bab6b702769c2a70d4d2af51b5533a Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This commit is contained in:
parent
1155ca10f8
commit
94b83ae142
@ -2231,7 +2231,7 @@ static const uint * QT_FASTCALL fetchTransformedBilinearARGB32PM(uint *buffer, c
|
||||
}
|
||||
}
|
||||
} else { //rotation
|
||||
if (std::abs(data->m11) > 8 || std::abs(data->m22) > 8) {
|
||||
if (std::abs(data->m11) < (1./8.) || std::abs(data->m22) < (1./8.)) {
|
||||
//if we are zooming more than 8 times, we use 8bit precision for the position.
|
||||
while (b < end) {
|
||||
int x1 = (fx >> 16);
|
||||
@ -2717,7 +2717,7 @@ static const uint *QT_FASTCALL fetchTransformedBilinear(uint *buffer, const Oper
|
||||
layout->convertToARGB32PM(buf1, buf1, len * 2, clut, 0);
|
||||
layout->convertToARGB32PM(buf2, buf2, len * 2, clut, 0);
|
||||
|
||||
if (std::abs(data->m11) > 8 || std::abs(data->m22) > 8) {
|
||||
if (std::abs(data->m11) < (1./8.) || std::abs(data->m22) < (1./8.)) {
|
||||
//if we are zooming more than 8 times, we use 8bit precision for the position.
|
||||
for (int i = 0; i < len; ++i) {
|
||||
int distx = (fracX & 0x0000ffff) >> 8;
|
||||
|
@ -22,9 +22,10 @@ end_block
|
||||
resetMatrix
|
||||
|
||||
translate 340 120
|
||||
setRenderHint SmoothPixmapTransformation
|
||||
repeat_block drawing
|
||||
|
||||
resetMatrix
|
||||
|
||||
drawText 50 240 "Normal X form"
|
||||
drawText 270 240 "Smooth xform"
|
||||
drawText 50 240 "Normal Xform"
|
||||
drawText 270 240 "Smooth Xform"
|
||||
|
8
tests/auto/other/lancelot/scripts/pixmap_rotation2.qps
Normal file
8
tests/auto/other/lancelot/scripts/pixmap_rotation2.qps
Normal file
@ -0,0 +1,8 @@
|
||||
# Version: 1
|
||||
# CheckVsReference: 1%
|
||||
|
||||
setRenderHint SmoothPixmapTransformation
|
||||
translate 400 -120
|
||||
rotate 45
|
||||
scale 400 400
|
||||
drawImage solid2x2.png 0 0
|
Loading…
Reference in New Issue
Block a user