// // // C++ Implementation: Sonogram // // Description: // // // Author: Melchior FRANZ , (C) 2004 // // Copyright: See COPYING file that comes with this distribution // // #include "sonogram.h" #include const char* Sonogram::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Sonogram"); Sonogram::Sonogram(QWidget *parent) : Analyzer::Base(parent) { } Sonogram::~Sonogram() { } void Sonogram::resizeEvent(QResizeEvent *e) { QWidget::resizeEvent(e); canvas_ = QPixmap(size()); canvas_.fill(palette().color(QPalette::Background)); } void Sonogram::analyze(QPainter& p, const Scope &s) { int x = width() - 1; QColor c; QPainter canvas_painter(&canvas_); canvas_painter.drawPixmap(0, 0, canvas_, 1, 0, x, -1); Scope::const_iterator it = s.begin(), end = s.end(); for (int y = height() - 1; y;) { if (it >= end || *it < .005) c = palette().color(QPalette::Background); else if (*it < .05) c.setHsv(95, 255, 255 - int(*it * 4000.0)); else if (*it < 1.0) c.setHsv(95 - int(*it * 90.0), 255, 255); else c = Qt::red; canvas_painter.setPen(c); canvas_painter.drawPoint(x, y--); if (it < end) ++it; } canvas_painter.end(); p.drawPixmap(0, 0, canvas_); } void Sonogram::demo(QPainter& p) { analyze(p, Scope(m_lastScope.size(), 0)); }