tahoma2d/toonz/sources/common/tparam/tdoubleparamrelayproperty.cpp

94 lines
2.7 KiB
C++
Raw Normal View History

2016-03-19 06:57:51 +13:00
#include "tdoubleparamrelayproperty.h"
//*****************************************************************************
// TDoubleParamRelayProperty implementation
//*****************************************************************************
2016-06-15 18:43:10 +12:00
TDoubleParamRelayProperty::TDoubleParamRelayProperty(const std::string &name,
TDoubleParamP param)
: TProperty(name), m_frame() {
if (param) setParam(param);
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
TDoubleParamRelayProperty::~TDoubleParamRelayProperty() {
if (m_param) m_param->removeObserver(this);
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
TDoubleParamRelayProperty::TDoubleParamRelayProperty(
const TDoubleParamRelayProperty &other)
: TProperty(other), m_param(other.m_param), m_frame(other.m_frame) {
if (m_param) m_param->addObserver(this);
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
TDoubleParamRelayProperty &TDoubleParamRelayProperty::operator=(
const TDoubleParamRelayProperty &other) {
TProperty::operator=(other);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
if (m_param) m_param->removeObserver(this);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
m_param = other.m_param;
m_frame = other.m_frame;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
if (m_param) m_param->addObserver(this);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
return *this;
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
TProperty *TDoubleParamRelayProperty::clone() const {
return new TDoubleParamRelayProperty(*this);
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
std::string TDoubleParamRelayProperty::getValueAsString() {
return m_param ? std::to_string(m_param->getValue(m_frame)) : "";
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
void TDoubleParamRelayProperty::setParam(const TDoubleParamP &param) {
if (m_param == param) return;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
if (m_param) m_param->removeObserver(this);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
m_param = param;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
if (param) param->addObserver(this);
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
void TDoubleParamRelayProperty::setValue(double v) {
if (m_param) m_param->setValue(m_frame, v);
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
double TDoubleParamRelayProperty::getValue() const {
return m_param ? m_param->getValue(m_frame) : 0.0;
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
void TDoubleParamRelayProperty::accept(TProperty::Visitor &v) {
if (TDoubleParamRelayProperty::Visitor *vv =
dynamic_cast<TDoubleParamRelayProperty::Visitor *>(&v))
vv->visit(this);
2016-03-19 06:57:51 +13:00
}
//-------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
void TDoubleParamRelayProperty::onChange(const TParamChange &) {
notifyListeners();
2016-03-19 06:57:51 +13:00
}