const Point2DArray &PointGraph::getProcessedData() const { if(m_dataProcessed) { return m_processedData; } if(getParam().m_rollAvgSize <= 1) { m_processedData = m_pointArray; } else { m_processedData.clear(); QueueList<double> queue; double sum = 0; const size_t maxQueueSize = getParam().m_rollAvgSize; const size_t n = m_pointArray.size(); for(size_t i = 0; i < n; i++) { if(queue.size() == maxQueueSize) { sum -= queue.get(); } queue.put(m_pointArray[i].y); sum += m_pointArray[i].y; m_processedData.add(Point2D(m_pointArray[i].x,sum / queue.size())); } } m_dataProcessed = true; return m_processedData; }