Mercurial > hg > svgui
diff layer/TimeValueLayer.cpp @ 721:15b5c679b909 tonioni
Fix for treating zeros as gaps
author | Chris Cannam |
---|---|
date | Thu, 30 Jan 2014 17:33:18 +0000 |
parents | 137d3ff48f73 |
children | 1640a7c753cc |
line wrap: on
line diff
--- a/layer/TimeValueLayer.cpp Tue Jan 28 18:33:44 2014 +0000 +++ b/layer/TimeValueLayer.cpp Thu Jan 30 17:33:18 2014 +0000 @@ -972,7 +972,7 @@ i != points.end(); ++i) { if (m_derivative && i == points.begin()) continue; - + const SparseTimeValueModel::Point &p(*i); float value = p.value; @@ -987,6 +987,10 @@ bool gap = false; if (m_plotStyle == PlotDiscreteCurves) { + if (value == 0.0) { + // Treat zeros as gaps + continue; + } gap = (p.frame > prevFrame && (p.frame - prevFrame >= m_model->getResolution() * 2)); } @@ -1000,6 +1004,7 @@ } bool haveNext = false; + float nvalue = 0.f; int nf = v->getModelsEndFrame(); int nx = v->getXForFrame(nf); int ny = y; @@ -1009,7 +1014,7 @@ if (j != points.end()) { const SparseTimeValueModel::Point &q(*j); - float nvalue = q.value; + nvalue = q.value; if (m_derivative) nvalue -= p.value; nf = q.frame; nx = v->getXForFrame(nf); @@ -1116,7 +1121,9 @@ float y1 = ny; if (m_plotStyle == PlotDiscreteCurves) { - bool nextGap = nf - p.frame >= m_model->getResolution() * 2; + bool nextGap = + (nvalue == 0.0) || + (nf - p.frame >= m_model->getResolution() * 2); if (nextGap) { x1 = x0; y1 = y0;