diff --git a/spectrogramplot.cpp b/spectrogramplot.cpp index 41f5585..9c9031b 100644 --- a/spectrogramplot.cpp +++ b/spectrogramplot.cpp @@ -105,9 +105,15 @@ void SpectrogramPlot::paintMid(QPainter &painter, QRect &rect, range_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(); } }