void TestKoIntegerMaths::UINT8Tests() { QCOMPARE((int)UINT8_MULT(0, 255), 0); QCOMPARE((int)UINT8_MULT(255, 255), 255); QCOMPARE((int)UINT8_MULT(128, 255), 128); QCOMPARE((int)UINT8_MULT(255, 128), 128); QCOMPARE((int)UINT8_MULT(1, 255), 1); QCOMPARE((int)UINT8_MULT(1, 127), 0); QCOMPARE((int)UINT8_MULT(64, 128), 32); QCOMPARE((int)UINT8_DIVIDE(255, 255), 255); QCOMPARE((int)UINT8_DIVIDE(64, 128), 128); QCOMPARE((int)UINT8_DIVIDE(1, 64), 4); QCOMPARE((int)UINT8_DIVIDE(0, 1), 0); for (int i = 0; i < 256; i++) { QCOMPARE((int)UINT8_BLEND(255, 0, i), i ); } for (int i = 0; i < 256; i++) { QCOMPARE((int)UINT8_BLEND(0, 255, i), int( 255 - i) ); } for (int i = 0; i < 256; i++) { QVERIFY( qAbs(int(UINT8_BLEND(0, i, 128)) - int(i*(255 - 128) / 255.0 + 0.5)) <= 1 ); } QCOMPARE((int)UINT8_BLEND(255, 128, 128), 192); QCOMPARE((int)UINT8_BLEND(128, 64, 255), 128); }
void transform(const quint8 *src, quint8 *dst, qint32 nPixels) const override { while (nPixels > 0) { *dst = UINT8_MULT(src[0], src[1]); src += 2; dst ++; nPixels --; } }