Blob Blame History Raw


#ifndef TXSHLEVELCOLUMN_INCLUDED
#define TXSHLEVELCOLUMN_INCLUDED

#include "toonz/txshcolumn.h"

#undef DVAPI
#undef DVVAR
#ifdef TOONZLIB_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif

//=============================================================================
//forward declarations
class TLevelColumnFx;
class TXshCell;

//=============================================================================
//!The TXshLevelColumn class provides a column of levels in xsheet and allows its management.
/*!Inherits \b TXshCellColumn.
\n The class defines column of levels getLevelColumn(), more than \b TXshCellColumn has
   a pointer to \b TLevelColumnFx getLevelColumnFx() and a \b string to identify icon.
   The string is an icon identification helpful to level icon management, getIcon()
   updateIcon().
*/
//=============================================================================

class DVAPI TXshLevelColumn : public TXshCellColumn
{
	PERSIST_DECLARATION(TXshLevelColumn)
	TLevelColumnFx *m_fx;
	std::string m_iconId;

	bool m_iconVisible;

public:
	bool isIconVisible() { return m_iconVisible; }
	void setIconVisible(bool visible)
	{
		m_iconVisible = visible;
	}

	/*!
    Constructs a TXshLevelColumn with default value.
  */
	TXshLevelColumn();
	/*!
    Destroys the TXshLevelColumn object.
  */
	~TXshLevelColumn();

	TXshColumn::ColumnType getColumnType() const;

	/*!
    Return true if \b cell is empty or level of \b cell isn't a \b TXshZeraryFxLevel.
  */
	bool canSetCell(const TXshCell &cell) const;

	/*!
    Return \b TXshLevelColumn.
  */
	TXshLevelColumn *getLevelColumn() { return this; }

	/*!
    Clone column and return a pointer to the new \b TXshColumn cloned.
  */
	TXshColumn *clone() const;

	void loadData(TIStream &is);
	void saveData(TOStream &os);

	/*!
    Return a pointer to \b TLevelColumnFx \b m_fx.
  */
	TLevelColumnFx *getLevelColumnFx() const;

	/*!
    Return \b TFx.
  */
	TFx *getFx() const;

private:
	// not implemented
	TXshLevelColumn(const TXshLevelColumn &);
	TXshLevelColumn &operator=(const TXshLevelColumn &);
};

#ifdef _WIN32
template class DV_EXPORT_API TSmartPointerT<TXshLevelColumn>;
#endif

typedef TSmartPointerT<TXshLevelColumn> TXshLevelColumnP;

#endif