Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef FXDATA_H
Toshihiro Shimizu 890ddd
#define FXDATA_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// TnzBase includes
Toshihiro Shimizu 890ddd
#include "tfx.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// TnzLib includes
Toshihiro Shimizu 890ddd
#include "toonz/fxcommand.h"
Toshihiro Shimizu 890ddd
#include "toonz/txshcolumn.h"
Toshihiro Shimizu 890ddd
#include "toonz/tcolumnfx.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// TnzQt includes
Toshihiro Shimizu 890ddd
#include "toonzqt/dvmimedata.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// Qt includes
Toshihiro Shimizu 890ddd
#include <QList>
Toshihiro Shimizu 890ddd
#include <QPair>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
using namespace TFxCommand;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//**********************************************************************
Toshihiro Shimizu 890ddd
//    FxsData  declaration
Toshihiro Shimizu 890ddd
//**********************************************************************
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class FxsData final : public DvMimeData {
Shinya Kitaoka 120a6e
  QList<TFxP> m_fxs;
Shinya Kitaoka 120a6e
  QMap<TFx *, bool> m_visitedFxs;
Shinya Kitaoka 120a6e
  QMap<TFx *, int> m_zeraryFxColumnSize;
Shinya Kitaoka 120a6e
  QList<TXshColumnP> m_columns;
Shinya Kitaoka 120a6e
  bool m_connected;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  FxsData();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  FxsData *clone() const override;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  //! Set the FxsData. FxsData<-QList<TFxP>
Shinya Kitaoka 120a6e
  void setFxs(const QList<TFxP> &selectedFxs, const QList<Link> &selectedLinks,
Shinya Kitaoka 120a6e
              const QList<int> &columnIndexes, TXsheet *xsh);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  //! Get the FxsData. FxsData->QList<TFxP>
Shinya Kitaoka 120a6e
  void getFxs(QList<TFxP> &selectedFxs, QMap<TFx *, int> &zeraryFxColumnSize,
Shinya Kitaoka 120a6e
              QList<TXshColumnP> &columns) const;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  //! Return true if copied fxs makes a connected graph.
Shinya Kitaoka 120a6e
  bool isConnected() const { return m_connected; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 120a6e
  void checkConnectivity();
Shinya Kitaoka 120a6e
  void visitFx(TFx *fx);
Shinya Kitaoka 120a6e
  bool areLinked(TFx *outFx, TFx *inFx);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
#endif  // FXDATA_H