spectrogram: Fix caching/tileIDs

This commit is contained in:
Mike Walters
2016-03-03 23:54:59 +00:00
parent bf2cb29573
commit d989579d62

View File

@@ -105,9 +105,15 @@ void SpectrogramPlot::paintMid(QPainter &painter, QRect &rect, range_t<off_t> sa
if (!inputSource || inputSource->count() == 0)
return;
off_t sampleOffset = sampleRange.minimum % getStride();
off_t tileID = sampleRange.minimum - sampleOffset;
int xoffset = sampleOffset / fftSize;
for (int x = rect.left(); x < rect.right(); x += linesPerTile()) {
QPixmap *tile = getPixmapTile(sampleRange.minimum + x * getStride());
painter.drawPixmap(QRect(x, rect.y(), linesPerTile(), fftSize), *tile);
QPixmap *tile = getPixmapTile(tileID);
// TODO: don't draw past rect.right()
painter.drawPixmap(QRect(x, rect.y(), linesPerTile() - xoffset, fftSize), *tile, QRect(xoffset, 0, linesPerTile() - xoffset, fftSize));
xoffset = 0;
tileID += getStride() * linesPerTile();
}
}