void
JXFloatInput::SetLimits
	(
	const JFloat minValue,
	const JFloat maxValue
	)
{
	assert( minValue < maxValue );
	SetLowerLimit(minValue);
	SetUpperLimit(maxValue);
}
void FloatLimitCtrl::SetUpperLimit(const TimeValue& in_t, float in_upperLimit)
{
	DbgAssert(m_pfloatBlock);
	m_pfloatBlock->SetValue(pb_upper_limit, in_t, in_upperLimit);
	float lowerLimit = GetLowerLimit(in_t);
	if (lowerLimit > in_upperLimit)
		SetLowerLimit(in_t, in_upperLimit);
	// Also check for padding overlap.
	if (IsUpperLimitActive() && IsLowerLimitActive()) {
		float range = GetUpperLimit(in_t) - GetLowerLimit(in_t);
		float lowPadding = GetLowerWidth(in_t);
		float upPadding = GetUpperWidth(in_t);
		// In case of overlap, modify the upper limit padding
		if (upPadding + lowPadding > range) {
			if (upPadding > range) {
				m_pfloatBlock->SetValue(pb_upper_smoothing, in_t, range);
				upPadding = range;
			}
			SetUpperWidth(in_t, range - upPadding);
		}
	}
}
void FloatLimitCtrl::SetLowerLimit(const TimeValue& in_t, void *in_val)
{
	if (in_val)
		SetLowerLimit(in_t, *static_cast<float *>(in_val));
}