Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tdoubleparamrelayproperty.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//*****************************************************************************
Toshihiro Shimizu 890ddd
//    TDoubleParamRelayProperty  implementation
Toshihiro Shimizu 890ddd
//*****************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TDoubleParamRelayProperty::TDoubleParamRelayProperty(const std::string &name, TDoubleParamP param)
Toshihiro Shimizu 890ddd
	: TProperty(name), m_frame()
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	if (param)
Toshihiro Shimizu 890ddd
		setParam(param);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TDoubleParamRelayProperty::~TDoubleParamRelayProperty()
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	if (m_param)
Toshihiro Shimizu 890ddd
		m_param->removeObserver(this);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TDoubleParamRelayProperty::TDoubleParamRelayProperty(const TDoubleParamRelayProperty &other)
Toshihiro Shimizu 890ddd
	: TProperty(other), m_param(other.m_param), m_frame(other.m_frame)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	if (m_param)
Toshihiro Shimizu 890ddd
		m_param->addObserver(this);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TDoubleParamRelayProperty &TDoubleParamRelayProperty::operator=(const TDoubleParamRelayProperty &other)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	TProperty::operator=(other);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	if (m_param)
Toshihiro Shimizu 890ddd
		m_param->removeObserver(this);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	m_param = other.m_param;
Toshihiro Shimizu 890ddd
	m_frame = other.m_frame;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	if (m_param)
Toshihiro Shimizu 890ddd
		m_param->addObserver(this);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	return *this;
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TProperty *TDoubleParamRelayProperty::clone() const
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	return new TDoubleParamRelayProperty(*this);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
std::string TDoubleParamRelayProperty::getValueAsString()
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	return m_param ? toString(m_param->getValue(m_frame)) : "";
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
void TDoubleParamRelayProperty::setParam(const TDoubleParamP ¶m)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	if (m_param == param)
Toshihiro Shimizu 890ddd
		return;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	if (m_param)
Toshihiro Shimizu 890ddd
		m_param->removeObserver(this);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	m_param = param;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
	if (param)
Toshihiro Shimizu 890ddd
		param->addObserver(this);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
void TDoubleParamRelayProperty::setValue(double v)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	if (m_param)
Toshihiro Shimizu 890ddd
		m_param->setValue(m_frame, v);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
double TDoubleParamRelayProperty::getValue() const
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	return m_param ? m_param->getValue(m_frame) : 0.0;
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
void TDoubleParamRelayProperty::accept(TProperty::Visitor &v)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	if (TDoubleParamRelayProperty::Visitor *vv = dynamic_cast<tdoubleparamrelayproperty::visitor *="">(&v))</tdoubleparamrelayproperty::visitor>
Toshihiro Shimizu 890ddd
		vv->visit(this);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
void TDoubleParamRelayProperty::onChange(const TParamChange &)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	notifyListeners();
Toshihiro Shimizu 890ddd
}