KisPaintDeviceSP createWrapAroundPaintDevice(const KoColorSpace *cs) { struct TestingDefaultBounds : public KisDefaultBoundsBase { QRect bounds() const { return QRect(0,0,20,20); } bool wrapAroundMode() const { return true; } }; KisPaintDeviceSP dev = new KisPaintDevice(cs); KisDefaultBoundsBaseSP bounds = new TestingDefaultBounds(); dev->setDefaultBounds(bounds); return dev; }
void KisScratchPad::setupScratchPad(KisCanvasResourceProvider* resourceProvider, const QColor &defaultColor) { m_resourceProvider = resourceProvider; KisConfig cfg; setDisplayProfile(cfg.displayProfile(QApplication::desktop()->screenNumber(this))); connect(m_resourceProvider, SIGNAL(sigDisplayProfileChanged(const KoColorProfile*)), SLOT(setDisplayProfile(const KoColorProfile*))); connect(m_resourceProvider, SIGNAL(sigOnScreenResolutionChanged(qreal,qreal)), SLOT(setOnScreenResolution(qreal,qreal))); m_defaultColor = KoColor(defaultColor, KoColorSpaceRegistry::instance()->rgb8()); KisPaintDeviceSP paintDevice = new KisPaintDevice(m_defaultColor.colorSpace(), "scratchpad"); m_paintLayer = new KisPaintLayer(0, "ScratchPad", OPACITY_OPAQUE_U8, paintDevice); m_paintLayer->setGraphListener(m_nodeListener); paintDevice->setDefaultBounds(new KisScratchPadDefaultBounds(this)); fillDefault(); }
void KisTransactionTest::testUndoWithUnswitchedFrames() { KisSurrogateUndoAdapter undoAdapter; const QRect imageRect(0,0,100,100); const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8(); KisPaintDeviceSP dev = new KisPaintDevice(cs); TestUtil::TestingTimedDefaultBounds *bounds = new TestUtil::TestingTimedDefaultBounds(); dev->setDefaultBounds(bounds); KisRasterKeyframeChannel *channel = dev->createKeyframeChannel(KisKeyframeChannel::Content); QVERIFY(channel); KisPaintDeviceFramesInterface *i = dev->framesInterface(); QVERIFY(i); QCOMPARE(i->frames().size(), 1); dev->fill(QRect(10,10,20,20), KoColor(Qt::white, cs)); KIS_DUMP_DEVICE_2(dev, imageRect, "00_f0_w20", "dd"); QCOMPARE(dev->exactBounds(), QRect(10,10,20,20)); // add keyframe at position 10 channel->addKeyframe(10); // add keyframe at position 11 channel->addKeyframe(11); // add keyframe at position 12 channel->addKeyframe(12); KIS_DUMP_DEVICE_2(dev, imageRect, "01_f0_b20", "dd"); QCOMPARE(dev->exactBounds(), QRect(10,10,20,20)); { KisTransaction transaction(kundo2_noi18n("first_stroke"), dev, 0); dev->clear(); dev->fill(QRect(40,40,21,21), KoColor(Qt::red, cs)); transaction.commit(&undoAdapter); KIS_DUMP_DEVICE_2(dev, imageRect, "02_f0_b21_stroke", "dd"); QCOMPARE(dev->exactBounds(), QRect(40,40,21,21)); } // switch to frame 10 bounds->testingSetTime(10); KIS_DUMP_DEVICE_2(dev, imageRect, "03_f10_b0_switched", "dd"); QVERIFY(dev->exactBounds().isEmpty()); { KisTransaction transaction(kundo2_noi18n("second_stroke"), dev, 0); dev->fill(QRect(60,60,22,22), KoColor(Qt::green, cs)); transaction.commit(&undoAdapter); KIS_DUMP_DEVICE_2(dev, imageRect, "04_f10_b22_stroke", "dd"); QCOMPARE(dev->exactBounds(), QRect(60,60,22,22)); } undoAdapter.undo(); KIS_DUMP_DEVICE_2(dev, imageRect, "05_f10_b0_undone", "dd"); QVERIFY(dev->exactBounds().isEmpty()); bounds->testingSetTime(0); KIS_DUMP_DEVICE_2(dev, imageRect, "06_f0_b21_undone", "dd"); QCOMPARE(dev->exactBounds(), QRect(40,40,21,21)); bounds->testingSetTime(10); QVERIFY(dev->exactBounds().isEmpty()); undoAdapter.undo(); KIS_DUMP_DEVICE_2(dev, imageRect, "07_f10_b0_undone_x2", "dd"); QVERIFY(dev->exactBounds().isEmpty()); bounds->testingSetTime(0); KIS_DUMP_DEVICE_2(dev, imageRect, "08_f0_b20_undone_x2", "dd"); QCOMPARE(dev->exactBounds(), QRect(10,10,20,20)); { KisTransaction transaction(kundo2_noi18n("third_move"), dev, 0); dev->moveTo(17,17); transaction.commit(&undoAdapter); KIS_DUMP_DEVICE_2(dev, imageRect, "09_f0_o27_move", "dd"); QCOMPARE(dev->exactBounds(), QRect(27,27,20,20)); } bounds->testingSetTime(10); QVERIFY(dev->exactBounds().isEmpty()); undoAdapter.undo(); KIS_DUMP_DEVICE_2(dev, imageRect, "10_f10_b0_undone_x3", "dd"); QVERIFY(dev->exactBounds().isEmpty()); bounds->testingSetTime(0); KIS_DUMP_DEVICE_2(dev, imageRect, "11_f0_b20_undone_x3", "dd"); QCOMPARE(dev->exactBounds(), QRect(10,10,20,20)); }