File indexing completed on 2024-06-23 04:28:04
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __MOVE_SELECTION_STROKE_STRATEGY_H 0008 #define __MOVE_SELECTION_STROKE_STRATEGY_H 0009 0010 #include "kis_stroke_strategy_undo_command_based.h" 0011 #include "kis_types.h" 0012 #include "kis_selection.h" 0013 #include "kis_paint_layer.h" 0014 0015 class KisPostExecutionUndoAdapter; 0016 class KisUpdatesFacade; 0017 0018 0019 class MoveSelectionStrokeStrategy : public QObject, public KisStrokeStrategyUndoCommandBased 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 struct ShowSelectionData : public KisStrokeJobData 0025 { 0026 ShowSelectionData(bool _showSelection) 0027 : KisStrokeJobData(), 0028 showSelection(_showSelection) 0029 {} 0030 0031 KisStrokeJobData* createLodClone(int levelOfDetail) override; 0032 0033 bool showSelection = false; 0034 0035 protected: 0036 ShowSelectionData(const ShowSelectionData &rhs, int levelOfDetail); 0037 }; 0038 0039 public: 0040 MoveSelectionStrokeStrategy(KisPaintLayerSP paintLayer, 0041 KisSelectionSP selection, 0042 KisUpdatesFacade *updatesFacade, 0043 KisStrokeUndoFacade *undoFacade); 0044 0045 void initStrokeCallback() override; 0046 void finishStrokeCallback() override; 0047 void cancelStrokeCallback() override; 0048 void doStrokeCallback(KisStrokeJobData *data) override; 0049 0050 Q_SIGNALS: 0051 void sigHandlesRectCalculated(const QRect &handlesRect); 0052 void sigStrokeStartedEmpty(); 0053 0054 private: 0055 MoveSelectionStrokeStrategy(const MoveSelectionStrokeStrategy &rhs); 0056 0057 KisStrokeStrategy* createLodClone(int levelOfDetail) override; 0058 0059 private: 0060 KisPaintLayerSP m_paintLayer; 0061 KisSelectionSP m_selection; 0062 KisUpdatesFacade *m_updatesFacade; 0063 QPoint m_finalOffset; 0064 QPoint m_initialDeviceOffset; 0065 QPoint m_initialSelectionOffset; 0066 }; 0067 0068 #endif /* __MOVE_SELECTION_STROKE_STRATEGY_H */