mirror of
https://github.com/miek/inspectrum.git
synced 2026-03-07 00:37:05 +01:00
Draw some simple time axis labels
This commit is contained in:
@@ -133,6 +133,8 @@ void Spectrogram::paintEvent(QPaintEvent *event)
|
||||
painter.drawPixmap(QRect(0, rect.y(), fftSize, height), pixmap);
|
||||
|
||||
free(line);
|
||||
|
||||
paintTimeAxis(&painter, rect);
|
||||
}
|
||||
|
||||
qDebug() << "Paint: " << timer.elapsed() << "ms";
|
||||
@@ -162,6 +164,24 @@ void Spectrogram::getLine(float *dest, int y)
|
||||
}
|
||||
}
|
||||
|
||||
void Spectrogram::paintTimeAxis(QPainter *painter, QRect rect)
|
||||
{
|
||||
// Round up for firstLine and round each to nearest linesPerGraduation
|
||||
int firstLine = ((rect.y() + linesPerGraduation - 1) / linesPerGraduation) * linesPerGraduation;
|
||||
int lastLine = ((rect.y() + rect.height()) / linesPerGraduation) * linesPerGraduation;
|
||||
|
||||
painter->save();
|
||||
QPen pen(Qt::white, 1, Qt::SolidLine);
|
||||
painter->setPen(pen);
|
||||
QFontMetrics fm(painter->font());
|
||||
int textOffset = fm.ascent() / 2 - 1;
|
||||
for (int line = firstLine; line <= lastLine; line += linesPerGraduation) {
|
||||
painter->drawLine(0, line, 10, line);
|
||||
painter->drawText(12, line + textOffset, sampleToTime(lineToSample(line)));
|
||||
}
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
void Spectrogram::setSampleRate(int rate)
|
||||
{
|
||||
sampleRate = rate;
|
||||
@@ -212,3 +232,12 @@ int Spectrogram::getStride()
|
||||
{
|
||||
return fftSize / pow(2, zoomLevel);
|
||||
}
|
||||
|
||||
off_t Spectrogram::lineToSample(int line) {
|
||||
return line * getStride();
|
||||
}
|
||||
|
||||
QString Spectrogram::sampleToTime(off_t sample)
|
||||
{
|
||||
return QString::number((float)sample / sampleRate).append("s");
|
||||
}
|
||||
Reference in New Issue
Block a user