Exemplo n.º 1
0
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;
        }
    }
}
Exemplo n.º 2
0
//-----------------------------------------------------------------------------
// 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("};");
	}
}