27#include "kis_canvas_controller.h"
28#include "kis_canvas_subject.h"
31#include "kis_strategy_move.h"
32#include "kis_undo_adapter.h"
34KisStrategyMove::KisStrategyMove()
44KisStrategyMove::~KisStrategyMove()
60void KisStrategyMove::startDrag(
const TQPoint& pos)
68 if (!(img = m_subject->currentImg()))
71 dev = img->activeLayer();
73 if (!dev || !dev->visible())
77 m_dragStart.setX(pos.x());
78 m_dragStart.setY(pos.y());
79 m_layerStart.setX(dev->x());
80 m_layerStart.setY(dev->y());
81 m_layerPosition = m_layerStart;
85void KisStrategyMove::drag(
const TQPoint& original)
89 if (m_subject && m_dragging) {
90 KisImageSP img = m_subject->currentImg();
93 if (img && (dev = img->activeLayer())) {
94 TQPoint pos = original;
99 dev->setX(dev->x() + pos.x());
100 dev->setY(dev->y() + pos.y());
101 rc = rc.unite(dev->extent());
103 m_layerPosition = TQPoint(dev->x(), dev->y());
104 m_dragStart = original;
111void KisStrategyMove::endDrag(
const TQPoint& pos,
bool undo)
113 if (m_subject && m_dragging) {
114 KisImageSP img = m_subject->currentImg();
117 if (img && (dev = img->activeLayer())) {
121 if (undo && img->undo()) {
122 KCommand *cmd = dev->moveCommand(m_layerStart, m_layerPosition);
125 KisUndoAdapter *adapter = img->undoAdapter();
127 adapter->addCommand(cmd);
137void KisStrategyMove::simpleMove(
const TQPoint& pt1,
const TQPoint& pt2)
143void KisStrategyMove::simpleMove(TQ_INT32 x1, TQ_INT32 y1, TQ_INT32 x2, TQ_INT32 y2)
145 startDrag(TQPoint(x1, y1));
146 endDrag(TQPoint(x2, y2));
KisCanvasSubject is part of the Observer pattern.
virtual KisCanvasController * canvasController() const =0