46 : urg_(
mUdf(T),
mUdf(T)) { setRange(l,
true); }
77 udfstart_ =
mIsUdf(rg_.start); udfstop_ =
mIsUdf(rg_.stop);
78 udfustart_ =
mIsUdf(urg_.start); udfustop_ =
mIsUdf(urg_.stop);
79 if ( !udfstart_ && !udfustart_ && urg_.start <= rg_.start )
80 { urg_.start =
mUdf(T); udfustart_ =
true; }
81 if ( !udfstop_ && !udfustop_ && urg_.stop >= rg_.stop )
82 { urg_.stop =
mUdf(T); udfustop_ =
true; }
98 else if ( v < urg_.start )
100 const T w = rg_.start - urg_.start;
101 v = rg_.start - ((w*w) / (v + w - urg_.start));
111 else if ( v > urg_.stop )
113 const T w = rg_.stop - urg_.stop;
114 v = rg_.stop - ((w*w) / (v + w - urg_.stop));
#define mIsUdf(val)
Use mIsUdf to check for undefinedness of simple types.
Definition: undefval.h:285
bool udfustop_
Definition: squeezing.h:64
void setUntouchedRange(T u0, T u1)
Definition: squeezing.h:51
Interval of values.
Definition: commontypes.h:27
void setRange(const Interval< T > &, bool lim)
Definition: squeezing.h:70
bool udfstop_
Definition: squeezing.h:63
void setUntouchedRange(const Interval< T > &r)
Definition: squeezing.h:47
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
Interval< T > rg_
Definition: squeezing.h:61
Fits values into a pre-defined range.
Definition: squeezing.h:41
T stop
Definition: ranges.h:91
const Interval< T > & range(bool lim) const
Definition: squeezing.h:56
DataSqueezer(const Interval< T > &l)
Definition: squeezing.h:45
DataSqueezer(T l0, T l1)
Definition: squeezing.h:49
T start
Definition: ranges.h:90
T value(T) const
Definition: squeezing.h:87
virtual void sort(bool asc=true)
Definition: ranges.h:584
#define mClass(module)
Definition: commondefs.h:161
Interval< T > urg_
Definition: squeezing.h:62