本文整理汇总了C++中KisPaintDeviceSP::fill方法的典型用法代码示例。如果您正苦于以下问题:C++ KisPaintDeviceSP::fill方法的具体用法?C++ KisPaintDeviceSP::fill怎么用?C++ KisPaintDeviceSP::fill使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KisPaintDeviceSP
的用法示例。
在下文中一共展示了KisPaintDeviceSP::fill方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testRedo
void KisTransactionTest::testRedo()
{
KisSurrogateUndoAdapter undoAdapter;
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP dev = new KisPaintDevice(cs);
quint8* pixel = new quint8[cs->pixelSize()];
cs->fromQColor(Qt::white, pixel);
dev->fill(0, 0, 512, 512, pixel);
cs->fromQColor(Qt::black, pixel);
dev->fill(512, 0, 512, 512, pixel);
QColor c1, c2;
dev->pixel(5, 5, &c1);
dev->pixel(517, 5, &c2);
QVERIFY(c1 == Qt::white);
QVERIFY(c2 == Qt::black);
KisTransaction transaction(kundo2_noi18n("mirror"), dev, 0);
KisTransformWorker::mirrorX(dev);
transaction.commit(&undoAdapter);
dev->pixel(5, 5, &c1);
dev->pixel(517, 5, &c2);
QVERIFY(c1 == Qt::black);
QVERIFY(c2 == Qt::white);
undoAdapter.undo();
dev->pixel(5, 5, &c1);
dev->pixel(517, 5, &c2);
QVERIFY(c1 == Qt::white);
QVERIFY(c2 == Qt::black);
undoAdapter.redo();
dev->pixel(5, 5, &c1);
dev->pixel(517, 5, &c2);
QVERIFY(c1 == Qt::black);
QVERIFY(c2 == Qt::white);
}
示例2: testRoundTrip
void KisClipboardTest::testRoundTrip()
{
const KoColorSpace *cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP dev = new KisPaintDevice(cs);
KisPaintDeviceSP newDev;
QPoint errorPoint;
QRect fillRect(10,10,20,20);
KoColor pixel(Qt::red, cs);
dev->fill(fillRect.x(),fillRect.y(),
fillRect.width(), fillRect.height(), pixel.data());
QCOMPARE(dev->exactBounds(), fillRect);
KisClipboard::instance()->setClip(dev, QPoint());
newDev = KisClipboard::instance()->clip(QPoint());
QCOMPARE(newDev->exactBounds().size(), fillRect.size());
newDev->setX(dev->x());
newDev->setY(dev->y());
QVERIFY(TestUtil::comparePaintDevices(errorPoint, dev, newDev));
QPoint offset(100,100);
dev->setX(offset.x());
dev->setY(offset.y());
QCOMPARE(dev->exactBounds(), fillRect.translated(offset));
KisClipboard::instance()->setClip(dev, QPoint());
newDev = KisClipboard::instance()->clip(QPoint());
QCOMPARE(newDev->exactBounds().size(), fillRect.translated(offset).size());
newDev->setX(dev->x());
newDev->setY(dev->y());
QVERIFY(TestUtil::comparePaintDevices(errorPoint, dev, newDev));
}
示例3: testBltPerformance
void KisFixedPaintDeviceTest::testBltPerformance()
{
QImage image(QString(FILES_DATA_DIR) + QDir::separator() + "hakonepa_transparent.png");
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisFixedPaintDeviceSP fdev = new KisFixedPaintDevice(cs);
fdev->convertFromQImage(image, 0);
KisPaintDeviceSP dev = new KisPaintDevice(cs);
dev->fill(0, 0, 640, 441, KoColor(Qt::white, cs).data());
QTime t;
t.start();
int x;
for (x = 0; x < 1000; ++x) {
KisPainter gc(dev);
gc.bltFixed(QPoint(0, 0), fdev, image.rect());
}
qDebug() << x
<< "blits"
<< " done in "
<< t.elapsed()
<< "ms";
}
示例4: testApplication
void KisThreadedApplicatorTest::testApplication()
{
const KoColorSpace * colorSpace = KoColorSpaceRegistry::instance()->rgb8();
TestJobFactory factory;
TestUtil::TestProgressBar bar;
KoProgressUpdater updater(&bar);
KisPaintDeviceSP test = new KisPaintDevice(colorSpace);
quint8 *bytes = test->colorSpace()->allocPixelBuffer(1);
memset(bytes, 128, test->colorSpace()->pixelSize());
test->fill(0, 0, 1000, 1000, bytes);
KisTransaction transaction("", test);
KisThreadedApplicator applicator(test, QRect(0, 0, 1000, 1000), &factory, &updater);
applicator.execute();
KisRectConstIteratorPixel it = test->createRectConstIterator(0, 0, 1000, 1000);
while (!it.isDone()) {
QCOMPARE((int)it.rawData()[0], (int)255);
QCOMPARE((int)it.rawData()[1], (int)255);
QCOMPARE((int)it.rawData()[2], (int)255);
QCOMPARE((int)it.rawData()[3], (int)255);
++it;
}
}
示例5: testOldDataApiAfterCopy
void KisFilterTest::testOldDataApiAfterCopy()
{
QRect updateRect(0,0,63,63);
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
quint8 *whitePixel = new quint8[cs->pixelSize()];
cs->fromQColor(Qt::white, whitePixel);
cs->setOpacity(whitePixel, OPACITY_OPAQUE_U8, 1);
KisPaintDeviceSP tmp = new KisPaintDevice(cs);
KisPaintDeviceSP src = new KisPaintDevice(cs);
src->fill(0, 0, 50, 50, whitePixel);
/**
* Make a full copy here to catch the bug.
* Buggy memento manager would make a commit
* that is not good.
*/
KisPaintDeviceSP dst = new KisPaintDevice(*src);
/**
* This would write go to a new revision in a buggy
* memento manager
*/
dst->clear(updateRect);
KisFilterSP f = KisFilterRegistry::instance()->value("invert");
Q_ASSERT(f);
KisFilterConfiguration * kfc = f->defaultConfiguration(0);
Q_ASSERT(kfc);
/**
* This filter reads from oldRawData, so if we have some
* weirdness with transactions it will read from old and non-cleared
* version of the device and we will see a black square instead
* of empty device in tmp
*/
f->process(dst, tmp, 0, updateRect, kfc);
/**
* In theory, both devices: dst and tmp must be empty by now
*/
KisPaintDeviceSP reference = new KisPaintDevice(cs);
QImage refImage = reference->convertToQImage(0,0,0,63,63);
QImage dstImage = dst->convertToQImage(0,0,0,63,63);
QImage tmpImage = tmp->convertToQImage(0,0,0,63,63);
QPoint pt;
QVERIFY(TestUtil::compareQImages(pt, refImage, dstImage));
QVERIFY(TestUtil::compareQImages(pt, refImage, tmpImage));
}
示例6: testGeometry
void KisPaintDeviceTest::testGeometry()
{
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP dev = new KisPaintDevice(cs);
quint8* pixel = new quint8[cs->pixelSize()];
cs->fromQColor(Qt::white, pixel);
dev->fill(0, 0, 512, 512, pixel);
QCOMPARE(dev->exactBounds(), QRect(0, 0, 512, 512));
QCOMPARE(dev->extent(), QRect(0, 0, 512, 512));
dev->move(10, 10);
QCOMPARE(dev->exactBounds(), QRect(10, 10, 512, 512));
QCOMPARE(dev->extent(), QRect(10, 10, 512, 512));
dev->crop(50, 50, 50, 50);
QCOMPARE(dev->exactBounds(), QRect(50, 50, 50, 50));
QCOMPARE(dev->extent(), QRect(10, 10, 128, 128));
QColor c;
dev->clear(QRect(50, 50, 50, 50));
dev->pixel(80, 80, &c);
QVERIFY(c.alpha() == OPACITY_TRANSPARENT_U8);
dev->fill(0, 0, 512, 512, pixel);
dev->pixel(80, 80, &c);
QVERIFY(c == Qt::white);
QVERIFY(c.alpha() == OPACITY_OPAQUE_U8);
dev->clear();
dev->pixel(80, 80, &c);
QVERIFY(c.alpha() == OPACITY_TRANSPARENT_U8);
QVERIFY(dev->extent().isEmpty());
QVERIFY(dev->exactBounds().isEmpty());
}
示例7: testRegion
void KisPaintDeviceTest::testRegion()
{
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP dev = new KisPaintDevice(cs);
quint8* whitePixel = new quint8[cs->pixelSize()];
cs->fromQColor(Qt::white, whitePixel);
dev->fill(0, 0, 10, 10, whitePixel);
dev->fill(70, 70, 10, 10, whitePixel);
dev->fill(129, 0, 10, 10, whitePixel);
dev->fill(0, 1030, 10, 10, whitePixel);
QRegion referenceRegion;
referenceRegion += QRect(0,0,64,64);
referenceRegion += QRect(64,64,64,64);
referenceRegion += QRect(128,0,64,64);
referenceRegion += QRect(0,1024,64,64);
QCOMPARE(dev->exactBounds(), QRect(0,0,139,1040));
QCOMPARE(dev->region(), referenceRegion);
}
示例8: testMaskGeneration
void KisAutoBrushTest::testMaskGeneration()
{
KisCircleMaskGenerator* circle = new KisCircleMaskGenerator(10, 1.0, 1.0, 1.0, 2, false);
KisBrushSP a = new KisAutoBrush(circle, 0.0, 0.0);
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintInformation info(QPointF(100.0, 100.0), 0.5);
// check masking an existing paint device
KisFixedPaintDeviceSP fdev = new KisFixedPaintDevice(cs);
fdev->setRect(QRect(0, 0, 100, 100));
fdev->initialize();
cs->setOpacity(fdev->data(), OPACITY_OPAQUE_U8, 100 * 100);
QPoint errpoint;
QImage result(QString(FILES_DATA_DIR) + QDir::separator() + "result_autobrush_1.png");
QImage image = fdev->convertToQImage(0);
if (!TestUtil::compareQImages(errpoint, image, result)) {
image.save("kis_autobrush_test_1.png");
QFAIL(QString("Failed to create identical image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toLatin1());
}
// Check creating a mask dab with a single color
fdev = new KisFixedPaintDevice(cs);
a->mask(fdev, KoColor(Qt::black, cs), KisDabShape(), info);
result = QImage(QString(FILES_DATA_DIR) + QDir::separator() + "result_autobrush_3.png");
image = fdev->convertToQImage(0);
if (!TestUtil::compareQImages(errpoint, image, result)) {
image.save("kis_autobrush_test_3.png");
QFAIL(QString("Failed to create identical image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toLatin1());
}
// Check creating a mask dab with a color taken from a paint device
KoColor red(Qt::red, cs);
cs->setOpacity(red.data(), quint8(128), 1);
KisPaintDeviceSP dev = new KisPaintDevice(cs);
dev->fill(0, 0, 100, 100, red.data());
fdev = new KisFixedPaintDevice(cs);
a->mask(fdev, dev, KisDabShape(), info);
result = QImage(QString(FILES_DATA_DIR) + QDir::separator() + "result_autobrush_4.png");
image = fdev->convertToQImage(0);
if (!TestUtil::compareQImages(errpoint, image, result)) {
image.save("kis_autobrush_test_4.png");
QFAIL(QString("Failed to create identical image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toLatin1());
}
}
示例9: testCopyMasking
//#define SAVE_OUTPUT_IMAGES
void KisAutoBrushTest::testCopyMasking()
{
int w = 64;
int h = 64;
int x = 0;
int y = 0;
QRect rc(x, y, w, h);
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KoColor black(Qt::black, cs);
KoColor red(Qt::red, cs);
KisPaintDeviceSP tempDev = new KisPaintDevice(cs);
tempDev->fill(0, 0, w, h, red.data());
#ifdef SAVE_OUTPUT_IMAGES
tempDev->convertToQImage(0).save("tempDev.png");
#endif
KisCircleMaskGenerator * mask = new KisCircleMaskGenerator(w, 1.0, 0.5, 0.5, 2, true);
KisAutoBrush brush(mask, 0, 0);
KisFixedPaintDeviceSP maskDab = new KisFixedPaintDevice(cs);
brush.mask(maskDab, black, KisDabShape(), KisPaintInformation());
maskDab->convertTo(KoColorSpaceRegistry::instance()->alpha8());
#ifdef SAVE_OUTPUT_IMAGES
maskDab->convertToQImage(0, 0, 0, 64, 64).save("maskDab.png");
#endif
QCOMPARE(tempDev->exactBounds(), rc);
QCOMPARE(maskDab->bounds(), rc);
KisFixedPaintDeviceSP dev2fixed = new KisFixedPaintDevice(cs);
dev2fixed->setRect(rc);
dev2fixed->initialize();
tempDev->readBytes(dev2fixed->data(), rc);
dev2fixed->convertToQImage(0).save("converted-tempDev-to-fixed.png");
KisPaintDeviceSP dev = new KisPaintDevice(cs);
KisPainter painter(dev);
painter.setCompositeOp(COMPOSITE_COPY);
painter.bltFixedWithFixedSelection(x, y, dev2fixed, maskDab, 0, 0, 0, 0, rc.width(), rc.height());
//painter.bitBltWithFixedSelection(x, y, tempDev, maskDab, 0, 0, 0, 0, rc.width(), rc.height());
#ifdef SAVE_OUTPUT_IMAGES
dev->convertToQImage(0).save("final.png");
#endif
}
示例10: testCaching
void KisPaintDeviceTest::testCaching()
{
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP dev = new KisPaintDevice(cs);
quint8* whitePixel = new quint8[cs->pixelSize()];
cs->fromQColor(Qt::white, whitePixel);
quint8* blackPixel = new quint8[cs->pixelSize()];
cs->fromQColor(Qt::black, blackPixel);
dev->fill(0, 0, 512, 512, whitePixel);
QImage thumb1 = dev->createThumbnail(50, 50);
QRect exactBounds1 = dev->exactBounds();
dev->fill(0, 0, 768, 768, blackPixel);
QImage thumb2 = dev->createThumbnail(50, 50);
QRect exactBounds2 = dev->exactBounds();
dev->move(10, 10);
QImage thumb3 = dev->createThumbnail(50, 50);
QRect exactBounds3 = dev->exactBounds();
dev->crop(50, 50, 50, 50);
QImage thumb4 = dev->createThumbnail(50, 50);
QRect exactBounds4 = dev->exactBounds();
QVERIFY(thumb1 != thumb2);
QVERIFY(thumb2 == thumb3); // Cache miss, but image is the same
QVERIFY(thumb3 != thumb4);
QVERIFY(thumb4 != thumb1);
QCOMPARE(exactBounds1, QRect(0,0,512,512));
QCOMPARE(exactBounds2, QRect(0,0,768,768));
QCOMPARE(exactBounds3, QRect(10,10,768,768));
QCOMPARE(exactBounds4, QRect(50,50,50,50));
}
示例11: testTranslate
void KisPaintDeviceTest::testTranslate()
{
QRect fillRect(0,0,64,64);
quint8 fillPixel[4]={255,255,255,255};
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP device = new KisPaintDevice(cs);
device->fill(fillRect.left(), fillRect.top(),
fillRect.width(), fillRect.height(),fillPixel);
device->setX(-10);
device->setY(10);
QCOMPARE(device->exactBounds(), QRect(-10,10,64,64));
QCOMPARE(device->extent(), QRect(-10,10,64,64));
}
示例12: testCrop
void KisPaintDeviceTest::testCrop()
{
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP dev = new KisPaintDevice(cs);
quint8* pixel = new quint8[cs->pixelSize()];
cs->fromQColor(Qt::white, pixel);
dev->fill(-14, 8, 433, 512, pixel);
QVERIFY(dev->exactBounds() == QRect(-14, 8, 433, 512));
// Crop inside
dev->crop(50, 50, 150, 150);
QVERIFY(dev->exactBounds() == QRect(50, 50, 150, 150));
// Crop outside, pd should not grow
dev->crop(0, 0, 1000, 1000);
QVERIFY(dev->exactBounds() == QRect(50, 50, 150, 150));
}
示例13: testExactBoundsWeirdNullAlphaCase
void KisPaintDeviceTest::testExactBoundsWeirdNullAlphaCase()
{
const KoColorSpace *cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP dev = new KisPaintDevice(cs);
QVERIFY(dev->exactBounds().isEmpty());
dev->fill(QRect(10,10,10,10), KoColor(Qt::white, cs));
QCOMPARE(dev->exactBounds(), QRect(10,10,10,10));
const quint8 weirdPixelData[4] = {0,10,0,0};
KoColor weirdColor(weirdPixelData, cs);
dev->setPixel(6,6,weirdColor);
// such weird pixels should not change our opinion about
// device's size
QCOMPARE(dev->exactBounds(), QRect(10,10,10,10));
}
示例14: testBlurFilterApplicationRect
void KisFilterTest::testBlurFilterApplicationRect()
{
QRect filterRect(10,10,40,40);
QRect src1Rect(5,5,50,50);
QRect src2Rect(0,0,60,60);
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
quint8 *whitePixel = new quint8[cs->pixelSize()];
cs->fromQColor(Qt::white, whitePixel);
cs->setOpacity(whitePixel, OPACITY_OPAQUE_U8, 1);
KisPaintDeviceSP src1 = new KisPaintDevice(cs);
src1->fill(src1Rect.left(),src1Rect.top(),src1Rect.width(),src1Rect.height(), whitePixel);
KisPaintDeviceSP src2 = new KisPaintDevice(cs);
src2->fill(src2Rect.left(),src2Rect.top(),src2Rect.width(),src2Rect.height(), whitePixel);
KisPaintDeviceSP dst1 = new KisPaintDevice(cs);
KisPaintDeviceSP dst2 = new KisPaintDevice(cs);
KisFilterSP f = KisFilterRegistry::instance()->value("blur");
Q_ASSERT(f);
KisFilterConfiguration * kfc = f->defaultConfiguration(0);
Q_ASSERT(kfc);
f->process(src1, dst1, 0, filterRect, kfc);
f->process(src2, dst2, 0, filterRect, kfc);
KisPaintDeviceSP reference = new KisPaintDevice(cs);
reference->fill(filterRect.left(),filterRect.top(),filterRect.width(),filterRect.height(), whitePixel);
QImage refImage = reference->convertToQImage(0,10,10,40,40);
QImage dst1Image = dst1->convertToQImage(0,10,10,40,40);
QImage dst2Image = dst2->convertToQImage(0,10,10,40,40);
//dst1Image.save("DST1.png");
//dst2Image.save("DST2.png");
QPoint pt;
QVERIFY(TestUtil::compareQImages(pt, refImage, dst1Image));
QVERIFY(TestUtil::compareQImages(pt, refImage, dst2Image));
}
示例15: testKisPaintDeviceConversion
void KisGmicBenchmarks::testKisPaintDeviceConversion()
{
gmic_image<float> gmicImage;
gmicImage.assign(m_qImage.width(),m_qImage.height(), 1,4);
// benchmark rgba2rgba
KisPaintDeviceSP result = new KisPaintDevice(m_device->colorSpace());
result->fill(QRect(0,0,m_qImage.width(),m_qImage.height()), KoColor(m_darkOrange, m_device->colorSpace()));
QBENCHMARK
{
KisGmicSimpleConvertor::convertToGmicImage(m_device, gmicImage, m_rect);
KisGmicSimpleConvertor::convertFromGmicImage(gmicImage, result, 1.0);
}
#ifdef SAVE_OUTPUT
QImage qResult = result->convertToQImage(0, 0,0, m_qImage.width(),m_qImage.height());
qResult.save("Device-Gmic-Device-new.bmp");
#endif
}