Mercurial > mm7
changeset 1149:05b30ed00d7c
sub_451007_scale_image_bicubic cleanup - changing if+dowhile pair to for
author | Grumpy7 |
---|---|
date | Sun, 02 Jun 2013 05:22:35 +0200 |
parents | ee6bccef32e8 |
children | 354ec6263123 |
files | mm7_2.cpp |
diffstat | 1 files changed, 53 insertions(+), 64 deletions(-) [+] |
line wrap: on
line diff
--- a/mm7_2.cpp Sun Jun 02 05:01:51 2013 +0200 +++ b/mm7_2.cpp Sun Jun 02 05:22:35 2013 +0200 @@ -2168,7 +2168,6 @@ int a10, int a11) { int result; // eax@1 - int v14; // ecx@10 float v17; // ST3C_4@12 float v18; // ST38_4@12 unsigned int v19; // esi@12 @@ -2224,69 +2223,59 @@ return result; do { - v14 = 0; - if ( dstWidth > 0 ) - { - do - { - a6s = (double)v14 / (double)dstWidth * (double)srcWidth; - widthRatio = bankersRounding(a6s); - a6t = (double)(v14 + 1) / (double)dstWidth * (double)srcWidth; - widthRatioPlusOne = bankersRounding(a6t); - v17 = (double)v231 / (double)dstHeight * (double)srcHeight; - heightRatio = bankersRounding(v17); - v18 = (double)(v231 + 1) / (double)dstHeight * (double)srcHeight; - heightRatioPlusOne = bankersRounding(v18); - v251 = 0; - v19 = (heightRatioPlusOne - heightRatio) * (widthRatioPlusOne - widthRatio); - v252 = 0; - a6b = 0; - v240 = 0i64; - if ( heightRatio < heightRatioPlusOne ) - { - v160 = heightRatioPlusOne - heightRatio; - v175 = (unsigned short*)((char *)pSrc + field_0_bits * (widthRatio + srcPitch * heightRatio)); - do - { - int ratioDiff = widthRatioPlusOne - widthRatio; - for(int i = 0; i < ratioDiff; i++) - { - if(field0value == 32) - v21 = _450FB1((int)v175[i]); - else if(field0value == 16) - v21 = _450FB1((_WORD)v175[i]); - else - v21 = _450FB1((unsigned __int8)v175[i]); - v240 += ((unsigned int)v21 >> 24); - a6b += BYTE2(v21); - v252 += BYTE1(v21); - v251 += (unsigned __int8)v21; - } - if(field0value == 32) - v175 += 2 * srcPitch; - else if(field0value == 16) - v175 += srcPitch; - else - v175 = (unsigned short*)((char *)v175 + 2 * srcPitch); - --v160; - } - while ( v160 ); - } - v22 = (unsigned int)v240 / ((heightRatioPlusOne - heightRatio) * (widthRatioPlusOne - widthRatio)); - if ( v19 ) - { - a6b /= v19; - v252 /= v19; - v251 /= v19; - } - if ( v22 != 255 ) - v22 &= 0x7FFFFFFFu; - v23 = _450F55(v251 | ((v252 | ((a6b | (v22 << 8)) << 8)) << 8)); - *(_DWORD *)v193 = v23; - v193 = (unsigned __int16 *)((char *)v193 + field_20_bits); - ++v14; - } - while ( v14 < dstWidth ); + for (int counter = 0; counter < dstWidth; counter++) + { + a6s = (double)counter / (double)dstWidth * (double)srcWidth; + widthRatio = bankersRounding(a6s); + a6t = (double)(counter + 1) / (double)dstWidth * (double)srcWidth; + widthRatioPlusOne = bankersRounding(a6t); + v17 = (double)v231 / (double)dstHeight * (double)srcHeight; + heightRatio = bankersRounding(v17); + v18 = (double)(v231 + 1) / (double)dstHeight * (double)srcHeight; + heightRatioPlusOne = bankersRounding(v18); + v251 = 0; + v19 = (heightRatioPlusOne - heightRatio) * (widthRatioPlusOne - widthRatio); + v252 = 0; + a6b = 0; + v240 = 0i64; + + v175 = (unsigned short*)((char *)pSrc + field_0_bits * (widthRatio + srcPitch * heightRatio)); + for (int heightDiff = 0; heightDiff < heightRatioPlusOne - heightRatio; heightDiff++) + { + int ratioDiff = widthRatioPlusOne - widthRatio; + for(int i = 0; i < ratioDiff; i++) + { + if(field0value == 32) + v21 = _450FB1((int)v175[i]); + else if(field0value == 16) + v21 = _450FB1((_WORD)v175[i]); + else + v21 = _450FB1((unsigned __int8)v175[i]); + v240 += ((unsigned int)v21 >> 24); + a6b += BYTE2(v21); + v252 += BYTE1(v21); + v251 += (unsigned __int8)v21; + } + if(field0value == 32) + v175 += 2 * srcPitch; + else if(field0value == 16) + v175 += srcPitch; + else + v175 = (unsigned short*)((char *)v175 + 2 * srcPitch); + } + v22 = (unsigned int)v240 / ((heightRatioPlusOne - heightRatio) * (widthRatioPlusOne - widthRatio)); + assert(v19 < 2); + if ( v19 ) + { + a6b /= v19; + v252 /= v19; + v251 /= v19; + } + if ( v22 != 255 ) + v22 &= 0x7FFFFFFFu; + v23 = _450F55(v251 | ((v252 | ((a6b | (v22 << 8)) << 8)) << 8)); + *(_DWORD *)v193 = v23; + v193 = (unsigned __int16 *)((char *)v193 + field_20_bits); } v193 = (unsigned __int16 *)((char *)v193 + field_20_bits * (dstPitch - dstWidth)); ++v231;