void TestKoIntegerMaths::UINT16Tests() { QCOMPARE((int)UINT16_MULT(0, 65535), 0); QCOMPARE((int)UINT16_MULT(65535, 65535), 65535); QCOMPARE((int)UINT16_MULT(32768, 65535), 32768); QCOMPARE((int)UINT16_MULT(65535, 32768), 32768); QCOMPARE((int)UINT16_MULT(1, 65535), 1); QCOMPARE((int)UINT16_MULT(1, 32767), 0); QCOMPARE((int)UINT16_MULT(16384, 32768), 8192); QCOMPARE((int)UINT16_DIVIDE(65535, 65535), 65535); QCOMPARE((int)UINT16_DIVIDE(16384, 32768), 32768); QCOMPARE((int)UINT16_DIVIDE(1, 16384), 4); QCOMPARE((int)UINT16_DIVIDE(0, 1), 0); QCOMPARE((int)UINT16_BLEND(65535, 0, 0), 0); // All these tests gave off-by one errors that apparently aren't // errors. // So -- are we officially expecting 32767 instead of 32768 and // 49151 instead of 49152 here? QCOMPARE((int)UINT16_BLEND(65535, 0, 32768), 32767); QCOMPARE((int)UINT16_BLEND(65535, 32768, 32768), 49151); QCOMPARE((int)UINT16_BLEND(32768, 16384, 65535), 32767); }
void KoColorConversionToAlphaTransformation::transform(const quint8 *src, quint8 *dst, qint32 nPixels) const { quint16 data[4]; qint32 size = srcColorSpace()->pixelSize(); while (nPixels > 0) { srcColorSpace()->toLabA16(src, (quint8*)data, 1); *dst = UINT16_TO_UINT8(UINT16_MULT(data[0], data[3])); // L * A src += size; dst ++; nPixels --; } }