Blob Blame Raw
#pragma once

#ifndef TPARAMCHANGE_INCLUDED
#define TPARAMCHANGE_INCLUDED

// TnzCore includes
#include "tcommon.h"

#undef DVAPI
#undef DVVAR
#ifdef TPARAM_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 TParam;

//===========================================================

//*****************************************************************************************
//    TParamChange  declaration
//*****************************************************************************************

class DVAPI TParamChange
{
public:
	TParam *m_param; //!< (not owned) The parameter being changed

	double m_firstAffectedFrame,
		m_lastAffectedFrame; //!< First and last frames affected by the change

	bool m_keyframeChanged; //!< Whether a keyframe has been altered by the change
	bool m_dragging;		//!< Whether the change is about a mouse being dragged
	bool m_undoing;			//!< Whether the change is happening within an undo operation

	static double m_minFrame;
	static double m_maxFrame;

public:
	TParamChange(TParam *param,
				 double firstAffectedFrame, double lastAffectedFrame,
				 bool keyframeChanged, bool dragging, bool undoing);

	virtual ~TParamChange() {}
};

//*****************************************************************************************
//    TParamObserver  definition
//*****************************************************************************************

class DVAPI TParamObserver
{
public:
	virtual ~TParamObserver() {}

	virtual void onChange(const TParamChange &) = 0;
};

#endif // TPARAMCHANGE_INCLUDED