Mercurial > hg > svgui
diff layer/Colour3DPlotLayer.cpp @ 1220:2954e9952b78
Fix #1781 Running CQ Chromagram spits out stacks of "bin index out of range" warnings
author | Chris Cannam |
---|---|
date | Thu, 26 Jan 2017 10:41:50 +0000 |
parents | a1ee3108d1d3 |
children | eaab8bab3522 |
line wrap: on
line diff
--- a/layer/Colour3DPlotLayer.cpp Mon Jan 16 10:00:19 2017 +0000 +++ b/layer/Colour3DPlotLayer.cpp Thu Jan 26 10:41:50 2017 +0000 @@ -761,11 +761,15 @@ getDisplayExtents(mn, mx); double h = v->getPaintHeight(); if (m_binScale == BinScale::Linear) { - bin = mn + ((h - y) * (mx - mn)) / h; + // Arrange that the first bin (mn) appears as the exact result + // for the first pixel (which is pixel h-1) and the first + // out-of-range bin (mx) would appear as the exact result for + // the first out-of-range pixel (which would be pixel -1) + bin = mn + ((h - y - 1) * (mx - mn)) / h; } else { double logmin = mn + 1, logmax = mx + 1; LogRange::mapRange(logmin, logmax); - bin = LogRange::unmap(logmin + ((h - y) * (logmax - logmin)) / h) - 1; + bin = LogRange::unmap(logmin + ((h - y - 1) * (logmax - logmin)) / h) - 1; } return bin; }