/** * @author Edouard DUPIN * * @copyright 2010, Edouard DUPIN, all right reserved * * @license APACHE-2 (see license file) */ #include #include #include #undef __class__ #define __class__ "DisplayFrequency" appl::widget::DisplayFrequency::DisplayFrequency() : m_autoDisplay(false), m_minVal(-1.0f), m_maxVal(1.0f) { addObjectType("appl::widget::DisplayFrequency"); } void appl::widget::DisplayFrequency::init() { ewol::Widget::init(); markToRedraw(); ToggleAuto(); } appl::widget::DisplayFrequency::~DisplayFrequency() { } void appl::widget::DisplayFrequency::setValue(const std::vector& _data) { m_data = _data; markToRedraw(); } void appl::widget::DisplayFrequency::ToggleAuto() { if (m_autoDisplay == false) { periodicCallEnable(); m_autoDisplay = true; } else { periodicCallDisable(); m_autoDisplay = false; } } void appl::widget::DisplayFrequency::onDraw() { m_draw.draw(); } void appl::widget::DisplayFrequency::onRegenerateDisplay() { //!< Check if we really need to redraw the display, if not needed, we redraw the previous data ... if (needRedraw() == false) { return; } // remove previous data m_draw.clear(); // set background m_draw.setColor(etk::color::black); m_draw.setPos(vec2(0,0)); m_draw.rectangleWidth(m_size); if (m_data.size() == 0) { return; } // set all the line: m_draw.setColor(etk::color::white); m_draw.setThickness(1); float origin = m_size.y()*0.5f; float ratioY = m_size.y() / (m_maxVal - m_minVal); float stepX = m_size.x() / (float)m_data.size(); m_draw.setPos(vec2(0, origin + ratioY*m_data[0])); float baseX = 0; for (size_t iii=1; iii 50) { m_data.erase(m_data.begin()); } m_data.push_back(etk::tool::frand(m_minVal, m_maxVal)); } markToRedraw(); }