19#include "kis_global.h"
21#include "kis_tileddatamanager.h"
23#include "kis_transaction.h"
24#include "kis_memento.h"
25#include "kis_paint_device.h"
28class KisTransactionPrivate {
31 KisPaintDeviceSP m_device;
32 KisMementoSP m_memento;
36KisTransaction::KisTransaction(
const TQString& name, KisPaintDeviceSP device)
38 m_private =
new KisTransactionPrivate;
40 m_private->m_name = name;
41 m_private->m_device = device;
42 m_private->m_memento = device->getMemento();
45KisTransaction::~KisTransaction()
47 if (m_private->m_memento) {
49 m_private->m_memento->setInvalid();
54void KisTransaction::execute()
56 Q_ASSERT(m_private->m_memento != 0);
58 m_private->m_device->rollforward(m_private->m_memento);
61 TQ_INT32 x, y, width, height;
62 m_private->m_memento->extent(x,y,width,height);
63 rc.setRect(x + m_private->m_device->getX(), y + m_private->m_device->getY(), width, height);
65 KisLayerSP l = m_private->m_device->parentLayer();
66 if (l) l->setDirty(rc);
69void KisTransaction::unexecute()
71 Q_ASSERT(m_private->m_memento != 0);
72 m_private->m_device->rollback(m_private->m_memento);
75 TQ_INT32 x, y, width, height;
76 m_private->m_memento->extent(x,y,width,height);
77 rc.setRect(x + m_private->m_device->getX(), y + m_private->m_device->getY(), width, height);
79 KisLayerSP l = m_private->m_device->parentLayer();
80 if (l) l->setDirty(rc);
84void KisTransaction::unexecuteNoUpdate()
86 Q_ASSERT(m_private->m_memento != 0);
88 m_private->m_device->rollback(m_private->m_memento);
91TQString KisTransaction::name()
const
93 return m_private->m_name;