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
Toshihiro Shimizu 890ddd
class FxsData : public DvMimeData
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	QList<TFxP> m_fxs;
Toshihiro Shimizu 890ddd
	QMap<TFx *, bool> m_visitedFxs;
Toshihiro Shimizu 890ddd
	QMap<TFx *, int> m_zeraryFxColumnSize;
Toshihiro Shimizu 890ddd
	QList<TXshColumnP> m_columns;
Toshihiro Shimizu 890ddd
	bool m_connected;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Toshihiro Shimizu 890ddd
	FxsData();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	FxsData *clone() const;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//! Set the FxsData. FxsData<-QList<TFxP>
Toshihiro Shimizu 890ddd
	void setFxs(const QList<TFxP> &selectedFxs, const QList<Link> &selectedLinks, const QList<int> &columnIndexes, TXsheet *xsh);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//! Get the FxsData. FxsData->QList<TFxP>
Toshihiro Shimizu 890ddd
	void getFxs(QList<TFxP> &selectedFxs, QMap<TFx *, int> &zeraryFxColumnSize, QList<TXshColumnP> &columns) const;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	//! Return true if copied fxs makes a connected graph.
Toshihiro Shimizu 890ddd
	bool isConnected() const { return m_connected; }
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Toshihiro Shimizu 890ddd
	void checkConnectivity();
Toshihiro Shimizu 890ddd
	void visitFx(TFx *fx);
Toshihiro Shimizu 890ddd
	bool areLinked(TFx *outFx, TFx *inFx);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif // FXDATA_H