1 #pragma once
2 
3 #ifndef FXDATA_H
4 #define FXDATA_H
5 
6 // TnzBase includes
7 #include "tfx.h"
8 
9 // TnzLib includes
10 #include "toonz/fxcommand.h"
11 #include "toonz/txshcolumn.h"
12 #include "toonz/tcolumnfx.h"
13 
14 // TnzQt includes
15 #include "toonzqt/dvmimedata.h"
16 
17 // Qt includes
18 #include <QList>
19 #include <QPair>
20 
21 using namespace TFxCommand;
22 
23 //**********************************************************************
24 //    FxsData  declaration
25 //**********************************************************************
26 
27 class FxsData final : public DvMimeData {
28   QList<TFxP> m_fxs;
29   QMap<TFx *, bool> m_visitedFxs;
30   QMap<TFx *, int> m_zeraryFxColumnSize;
31   QList<TXshColumnP> m_columns;
32   bool m_connected;
33 
34 public:
35   FxsData();
36 
37   FxsData *clone() const override;
38 
39   //! Set the FxsData. FxsData<-QList<TFxP>
40   void setFxs(const QList<TFxP> &selectedFxs, const QList<Link> &selectedLinks,
41               const QList<int> &columnIndexes, TXsheet *xsh);
42 
43   //! Get the FxsData. FxsData->QList<TFxP>
44   void getFxs(QList<TFxP> &selectedFxs, QMap<TFx *, int> &zeraryFxColumnSize,
45               QList<TXshColumnP> &columns) const;
46 
47   //! Return true if copied fxs makes a connected graph.
isConnected()48   bool isConnected() const { return m_connected; }
49 
50 private:
51   void checkConnectivity();
52   void visitFx(TFx *fx);
53   bool areLinked(TFx *outFx, TFx *inFx);
54 };
55 
56 #endif  // FXDATA_H
57