53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
|
#include "gtl_math_min.h"
|
||
|
|
||
|
namespace gtl
|
||
|
{
|
||
|
namespace math
|
||
|
{
|
||
|
min::min(gtl::analog_data *data)
|
||
|
: analog_value(data)
|
||
|
{
|
||
|
_name = "min";
|
||
|
}
|
||
|
|
||
|
void min::before_copying_data(std::vector<qreal>::iterator begin, std::vector<qreal>::iterator end)
|
||
|
{
|
||
|
std::set<std::vector<qreal>::iterator>::iterator iter_remove_begin = _mins.lower_bound(begin);
|
||
|
std::set<std::vector<qreal>::iterator>::iterator iter_remove_end = _mins.lower_bound(end);
|
||
|
|
||
|
_mins.erase(iter_remove_begin, iter_remove_end);
|
||
|
}
|
||
|
|
||
|
void min::after_copying_data(std::vector<qreal>::iterator begin, std::vector<qreal>::iterator end)
|
||
|
{
|
||
|
_mins.insert(std::min_element(begin, end));
|
||
|
}
|
||
|
|
||
|
void min::set_time(qreal value)
|
||
|
{
|
||
|
analog_value::set_time(value);
|
||
|
_mins.clear();
|
||
|
}
|
||
|
|
||
|
void min::data_changed()
|
||
|
{
|
||
|
analog_value::data_changed();
|
||
|
|
||
|
if(_mins.size())
|
||
|
{
|
||
|
qreal min = **_mins.begin();
|
||
|
|
||
|
for(std::set<std::vector<qreal>::iterator>::iterator it = _mins.begin(); it != _mins.end(); ++it)
|
||
|
{
|
||
|
if(**it > min)
|
||
|
min = **it;
|
||
|
}
|
||
|
|
||
|
_value = min;
|
||
|
|
||
|
emit value_changed();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|