Blob Blame Raw


#ifndef TOBJECTHANDLE_H
#define TOBJECTHANDLE_H

#include <QObject>

#include "toonz/tstageobjectid.h"
#include "tcommon.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

class TVectorImage;
class TStageObjectSpline;

//=============================================================================
// TObjectHandle
//-----------------------------------------------------------------------------
/*!
  Mantiene un riferimento ad un particolare oggetto (da editare)
  L'oggetto e' una objectId : puo' essere il tavolo, la camera, una colonna o una
  pegbar propriamente detta.
  Puo' anche essere la spline associata all'oggetto
*/

class DVAPI TObjectHandle : public QObject
{
	Q_OBJECT

	TStageObjectId m_objectId;
	bool m_isSpline;
	TVectorImage *m_splineImage;
	TStageObjectSpline *m_currentSpline;

public:
	TObjectHandle();
	~TObjectHandle();

	TStageObjectId getObjectId();
	void setObjectId(TStageObjectId objectId);

	void notifyObjectIdChanged(bool isDragging) { emit objectChanged(isDragging); }
	void notifyObjectIdSwitched() { emit objectSwitched(); }

	bool isSpline() const { return m_isSpline; }
	void setIsSpline(bool isSpline);

	TVectorImage *getSplineImage() const { return m_splineImage; }
	void setSplineObject(TStageObjectSpline *splineObject);

signals:
	void objectSwitched();
	void objectChanged(bool isDragging);
	void splineChanged();

public slots:
	void commitSplineChanges();
};

#endif //TOBJECTHANDLE_H