void KisConvolutionPainterTest::testAsymmConvolutionImp(QBitArray channelFlags) { qreal offset = 0.0; qreal factor = 1.0; Eigen::Matrix<qreal, 3, 3> filter = initAsymmFilter(offset, factor); QRect imageRect; int pixelSize = -1; QByteArray initialData; KisPaintDeviceSP dev = initAsymTestDevice(imageRect, pixelSize, initialData); KisConvolutionKernelSP kernel = KisConvolutionKernel::fromMatrix(filter, offset, factor); KisConvolutionPainter gc(dev); gc.beginTransaction(); gc.setChannelFlags(channelFlags); QRect filterRect = imageRect.adjusted(1,1,-1,-1); gc.applyMatrix(kernel, dev, filterRect.topLeft(), filterRect.topLeft(), filterRect.size()); gc.deleteTransaction(); QByteArray resultData(initialData.size(), 0); dev->readBytes((quint8*)resultData.data(), imageRect); QRect filteredRect = imageRect.adjusted(1, 1, -1, -1); quint8 *srcPtr = (quint8*) initialData.data(); quint8 *resPtr = (quint8*) resultData.data(); for(int row = 0; row < imageRect.height(); row++) { for(int col = 0; col < imageRect.width(); col++) { bool isFiltered = filteredRect.contains(col, row); int pixelValue = 8 + row * imageRect.width() + col; KoColor filteredPixel(QColor(pixelValue, pixelValue, pixelValue, 255), dev->colorSpace()); KoColor resultPixel(dev->colorSpace()); for(int j = 0; j < pixelSize; j++) { resultPixel.data()[j] = isFiltered && channelFlags[j] ? filteredPixel.data()[j] : srcPtr[j]; } if(memcmp(resPtr, resultPixel.data(), pixelSize)) { printPixel("Actual: ", pixelSize, resPtr); printPixel("Expected:", pixelSize, resultPixel.data()); QFAIL("Failed to filter area"); } srcPtr += pixelSize; resPtr += pixelSize; } } }
//----------------------------------------------------------------------------- // Implements Max7456::printCharacterToSerial //----------------------------------------------------------------------------- void Max7456::printCharacterToSerial(const charact array, bool img) { if(img) { CARACT car ; car = Max7456::byteArray2CARACT(array); Serial.println("------------"); for(int i = 0 ; i < 18 ; i++) { for(int j = 0 ; j < 3 ; j++) { printPixel(car.line[i].pixels[j].pix0); printPixel(car.line[i].pixels[j].pix1); printPixel(car.line[i].pixels[j].pix2); printPixel(car.line[i].pixels[j].pix3); } Serial.println(""); } Serial.println("------------"); } else { Serial.print("{"); for(unsigned int i = 0 ; i < 53 ; i++) { Serial.print("0x"); Serial.print(String(array[i],HEX)); Serial.print(", "); } Serial.print("0x"); Serial.print(String(array[53],HEX)); Serial.println("};"); } }